1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LeadQuizForm-BNhNMPTe.js","assets/utils-BQHNewu7.js","assets/pound-sterling-C8hKarK_.js","assets/shield-check-CIfSELIm.js","assets/emails.functions-CLKd9OsD.js","assets/auth-middleware-CyhAiWJk.js","assets/refresh-cw-DpLud3Gq.js","assets/messages-square-CR68y4Wj.js","assets/search-iNieWbm1.js","assets/pen-tool-BxPfdzRQ.js","assets/scissors-X40xBgIW.js","assets/utensils-BCNSdMKZ.js","assets/building-2-CzDlgP8S.js","assets/shopping-cart-BQZtulVV.js","assets/calendar-check-C8L90GmW.js","assets/smartphone-x4YP52yP.js","assets/globe-BjVYSRhF.js","assets/tag-Bq4aJt8R.js","assets/send-rKN5e6Gs.js","assets/calendar-BQXTLDI4.js","assets/credit-card-DN2dm8cp.js","assets/camera-BnchzwfE.js","assets/rocket-CmxBMbtL.js","assets/scale-Bq7EDFn6.js","assets/zap-UClArWx0.js","assets/wallet-CBBOCR-2.js","assets/gem-BmQSYMmk.js","assets/user-D9XSxQs4.js","assets/pencil-Blo4G3Jy.js","assets/TurnstileWidget-BNB1VceC.js","assets/lead-scoring-SKXXK1k2.js","assets/leads.functions-qUOb8g-9.js","assets/arrow-left-DMNKSU9n.js","assets/arrow-right-Cbc3z9gg.js","assets/admin-l4BntlHK.js","assets/button-DAThpTKB.js","assets/input-Bl_Nn24p.js","assets/index-DcA6R3aU.js","assets/index-8G52F7qs.js","assets/index-CdjDUSRI.js","assets/index-C-qEOKGZ.js","assets/index-BQSJhIkv.js","assets/index-VZHTqlLf.js","assets/index-Apc8M3Ud.js","assets/index-Bo1-u7Me.js","assets/layout-dashboard-Bac3Y0PL.js","assets/users-CY_zjGy6.js","assets/chart-column-CzF6Xu3W.js","assets/mouse-pointer-click-SHgzw29Y.js","assets/chart-line-BpRk_dDK.js","assets/link-2-Ddbp2B5F.js","assets/bell-B2pUsEVf.js","assets/settings-C7zpP6uH.js","assets/dropdown-menu-8vHFUouv.js","assets/index-sKEimjHy.js","assets/index-CxWotelf.js","assets/chevron-right-q9MGNpw4.js","assets/circle-LdGQ7jxE.js","assets/use-admin-auth-BN3kwJzS.js","assets/loader-circle-Dp233AGK.js","assets/agencja-reklamowa-uk-BK_WmF_v.js","assets/LangProvider-XZOYIwW8.js","assets/MarketingSeoContent-CmQ59Rhc.js","assets/ServiceHero-DG2xmj6J.js","assets/IndustriesShowcase-BefcRvyH.js","assets/ReviewsSection-DB83_iTg.js","assets/use-in-view-CpTnfq7W.js","assets/HumanCTA-BvwwoAsm.js","assets/FaqSection-CsZoRdCM.js","assets/plus-DT5gKTZk.js","assets/RelatedLinksSection-CAOuQslr.js","assets/layers-Dk0pvkig.js","assets/file-search-C5tcQGfK.js","assets/LocalSeoUkBlock-B4g75_ZG.js","assets/KeywordInternalLinks-BK9uwju7.js","assets/PozycjonowanieStronUkLinks-D4GHLOh1.js","assets/UkPillarHubLinks-CZD2u0ME.js","assets/AdsUkGuidesLinks-DmQVUSjt.js","assets/ankiety-i-formularze-w-ui-zasady-tworzenia-BjSZSVYI.js","assets/LegacyPostArticle-DoMakoJE.js","assets/apple-ads-management-uk-7Qj1cxJH.js","assets/AdsSocialProof-CUQDjVA4.js","assets/AdsCampaignsLinks-vHSOeqj1.js","assets/apple-ads-setup-uk-DwGf2exT.js","assets/apple-ads-uk-D1a-T9wr.js","assets/banery-reklamowe-uk-CPSHA51o.js","assets/DesignDrukContent-XWuw2h7R.js","assets/IndustriesShowcaseDesign-ItR8IV2l.js","assets/logo-10-v3zSo16Q.js","assets/move-vIHmE7kF.js","assets/chevron-left-DlZN6WDc.js","assets/use-reduced-motion-QTwWBLcI.js","assets/ServicesSection-Dr4MgqIe.js","assets/AgencjaReklamowaUkLink-CZgU83h5.js","assets/DesignPrintRelatedLinks-C_1dVVrN.js","assets/copywriting-uk-DNLgg4vS.js","assets/GeoRegionsBlock-DUeqMqs9.js","assets/en-DKS2EUna.js","assets/filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne-BZFetxAW.js","assets/gadzety-reklamowe-uk-CAKRoLyw.js","assets/google-ads-management-uk-B9-WMb6A.js","assets/google-ads-setup-uk-CtGVHu6x.js","assets/google-ads-uk-r0HdSuH8.js","assets/grafiki-social-media-uk-CjEGl7xY.js","assets/identyfikacja-wizualna-uk-Cd6I26_w.js","assets/ile-kosztuje-pozycjonowanie-uk-cennik-2026-Bry8Vgw6.js","assets/SeoBoostRelatedLinks-BGn18-LD.js","assets/jak-uzyskac-pierwsza-strone-google-w-3-miesiace-CR6Jo_My.js","assets/kampanie-facebook-ads-BxBxYEfv.js","assets/kampanie-google-ads-NSugPDTS.js","assets/kampanie-reklamowe-facebook-Wsirwh7Z.js","assets/kampanie-reklamowe-google-adwords-B4cFBO5B.js","assets/kampanie-reklamowe-szkocja-BCFhrlzT.js","assets/kampanie-reklamowe-tiktok-DA9WbumL.js","assets/kampanie-reklamowe-uk-CppKsx_O.js","assets/AdsCityLinks-Dy0gqrL9.js","assets/kampanie-reklamowe-uk-google-ads-vs-meta-ads-Cv6JOhWc.js","assets/kampanie-reklamowe-uk-ile-kosztuja-budzet-2026-Ck4W16cL.js","assets/kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku-Cz-yCnKw.js","assets/kampanie-reklamowe-wielka-brytania-CUOX7yuE.js","assets/kampanie-reklamowe-__
1city_-BNPK92-w.js","assets/litery-3d-led-efekt-halo-czy-front-lit-D5lC3S4Z.js","assets/LedLettersClusterLinks-Cu7tdtp3.js","assets/litery-3d-swietlne-BLiSWmcS.js","assets/litery-3d-swietlne-cennik-uk-C4hfNGt3.js","assets/litery-przestrzenne-ze-stali-nierdzewnej-uk-CaDEuT_2.js","assets/microsoft-ads-management-uk-C_EHN3TG.js","assets/microsoft-ads-setup-uk-oa_ZFt_L.js","assets/microsoft-ads-uk-DIdX5gpX.js","assets/migracja-sklepu-do-uk-DdCUSc0A.js","assets/SklepyUkClusterLinks-NBa7rxEr.js","assets/obsluga-social-media-uk-D7_C5fIM.js","assets/paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel-CqBmUu77.js","assets/pl-ICPOC4M0.js","assets/podswietlany-szyld-uk-advertisement-consent-BggyjX88.js","assets/pozycjonowanie-uk-BprlqBY1.js","assets/PozycjonowanieUkInternalLinks-Dr528fzi.js","assets/minus-Wrcl2KT_.js","assets/trophy-CE71nRtB.js","assets/pozycjonowanie-uk-audyt-seo-krok-po-kroku-BP7GJF0d.js","assets/pozycjonowanie-uk-dla-polskich-firm-w-anglii-6SoDf00P.js","assets/pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac-iyKpHPFQ.js","assets/pozycjonowanie-uk-jak-wejsc-do-top-3-google-DaC8BquT.js","assets/pozycjonowanie-uk-lokalne-google-business-profile-D8nVJTd2.js","assets/pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo-DAMNnC-Q.js","assets/pozycjonowanie-wielka-brytania-BVBBUprm.js","assets/projekt-logo-uk-Dawt4Fru.js","assets/projekt-ulotki-uk-DkDxrvXw.js","assets/projekt-wizytowki-uk-KCHOCv0g.js","assets/projekty-graficzne-uk-3BAxmxW2.js","assets/rollupy-rj36PzY5.js","assets/shopify-uk-DvaMS5Of.js","assets/StronySklepyContent-BkLTeRpI.js","assets/ComparisonSection-D5pBVRNo.js","assets/PortfolioStage-B-YTgt_s.js","assets/portfolio-matt-full-3TlKKuPF.js","assets/chevron-up-CHXePw7F.js","assets/AnatomySection-DLrmuj9o.js","assets/WhatYouGetSection-DLqftCZc.js","assets/code-xml-DNXtWVZX.js","assets/sklep-b2b-uk-panel-hurtowy-sTTwPKOc.js","assets/sklep-online-uk-BT1xx0D_.js","assets/sklepy-internetowe-szkocja-CCBQxkek.js","assets/sklepy-internetowe-uk-DUseUQXO.js","assets/info-CtP7otwW.js","assets/strony-internetowe-szkocja-edynburg-glasgow-aberdeen-DkVdGP8r.js","assets/strony-internetowe-uk-ile-kosztuja-i-jak-wybrac-ulG6aVFS.js","assets/strony-internetowe-uk-wordpress-vs-nowoczesne-technologie-BKqgICrN.js","assets/strony-internetowe-__city_-CmdPu9qc.js","assets/IntroSection-De0pM5V4.js","assets/ProblemAgitation-BpgNR2GS.js","assets/PortfolioPreview-BKwrKNWH.js","assets/RelatedScottishCities-Dqvxy8Xh.js","assets/wdrozenie-sklepu-internetowego-uk-cennik-eY-fZJqX.js","assets/wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac-DLFcKbfu.js","assets/woocommerce-uk-lrQcUIWc.js","assets/woocommerce-vs-shopify-uk-CQRvfxFM.js","assets/wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac-D5XwYIJu.js","assets/wyszukiwarka-kursow-na-platformie-edukacyjnej-CaXlC2FW.js","assets/wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna-pQbbaVTy.js","assets/admin.index-DS3vsHBR.js","assets/useQuery-C_x1x8Ke.js","assets/useServerFn-DOQ-oW_R.js","assets/card-BTv6zrYr.js","assets/indexing-audit.functions-Mx-fpuzA.js","assets/badge-DFW0wiy6.js","assets/table-DSZCUM2f.js","assets/leads-C5aKbjtB.js","assets/dollar-sign-Rt6cfSvJ.js","assets/eye-Dd9Rrw8r.js","assets/generateCategoricalChart-C1qyJ7pF.js","assets/tiny-invariant-BaFNuDhB.js","assets/LineChart-Bp_GVDSD.js","assets/Line-BQ1XD5wG.js","assets/circle-alert-DwvchyVU.js","assets/admin.analytics-H5Dz0_kQ.js","assets/label-dXByDEZc.js","assets/download-DqevXwiD.js","assets/BarChart-Dh6DnSyR.js","assets/admin.automations-mMlhDkjo.js","assets/textarea-CBepWBJt.js","assets/switch-DkEksDgt.js","assets/index-BXCGGLJJ.js","assets/tabs-DvR6zHfX.js","assets/dialog-CZvv0uhT.js","assets/save-BEUyvekM.js","assets/admin.cta-conversions-tUcObntG.js","assets/ComposedChart-KFlj9DHI.js","assets/admin.gsc-Bjt_jSRe.js","assets/useMutation-BwohOxFc.js","assets/indexing-alerts.functions-CBKKaRLS.js","assets/file-exclamation-point-CXYGjaP_.js","assets/circle-x-Dvw0dn3c.js","assets/trending-down-CGNEvtvv.js","assets/triangle-alert-Co3ZZVRf.js","assets/settings-2-C-fxh20K.js","assets/external-link-CNfr88qT.js","assets/bot-B025r-Fy.js","assets/select-BJt2705C.js","assets/trash-2-Ckgw-kIC.js","assets/admin.leads-CKK9V4Jr.js","assets/dnd.esm-BP3CwrlN.js","assets/admin.login-Cf_2MQFp.js","assets/admin.meta-ads-BjW_ieN_.js","assets/meta-oauth-state-_klReulq.js","assets/meta-sync-status-DTgMlo2p.js","assets/facebook-CiEqEHm-.js","assets/key-round-CLjN0BHb.js","assets/admin.notifications-OuP1F6gO.js","assets/admin.partner-logos-CA41pOsH.js","assets/checkbox-lkaL_VJa.js","assets/PartnerLogosSlider-0WhJd8dp.js","assets/file-up-BuBjVEz_.js","assets/upload-B9GIpiO5.js","assets/admin.seo-9JrYXeDS.js","assets/twitter-CHVU5k5Z.js","assets/rotate-ccw-CpyEPOKk.js","assets/circle-play-CEkErDnQ.js","assets/admin.seo-dashboard-BlzlwQnR.js","assets/SeoAiAssistant-CyS4Si--.js","assets/admin.seo-experiments-DQDJra9c.js","assets/admin.seo-tracking-BZrJX3K_.js","assets/admin.settings-B0pjSYoV.js","assets/admin.users-CcB51dEG.js","assets/admin.utm-builder
vendor: 7,468 bytes, lines 1-2
1-PH8K_XTD.js","assets/en.index-eFh2NXBB.js","assets/en.3d-led-letters-bBJw346q.js","assets/en.contact-CDgllbkE.js","assets/languages-BPQdWDti.js","assets/en.cookies-BYDO0BMN.js","assets/LegalContactCTA-CMwnJa-k.js","assets/en.dispace-form-jXONsaDw.js","assets/en.faq-Cnwoco1K.js","assets/FaqContent-BH3Vyr2e.js","assets/en.portfolio-BVDYOB_8.js","assets/PortfolioGallery-jOfcKI-0.js","assets/en.privacy-policy-CXZJCcaR.js","assets/en.seo-__city_-DEu5QRZg.js","assets/EnCityLandingContent-D79Z0gpy.js","assets/en.terms-Bnw-h_3J.js","assets/en.web-design-__city_-EdCLrcwE.js","assets/en.website-quote-DF-EOJOh.js","assets/WycenaPage-5d3gMhvO.js","assets/pl.index-BaD4gJDY.js","assets/pl.cookies-oYThCrJK.js","assets/pl.dispace-formularz-DpYihTDk.js","assets/pl.faq-DvD7GJb1.js","assets/pl.kontakt-Zx7oeDY9.js","assets/pl.polityka-prywatnosci-YrsaMZrB.js","assets/pl.portfolio-DftbyltI.js","assets/pl.regulamin-yj-kR5_G.js","assets/pl.wycena-strony-DxuhPu2W.js","assets/admin.leads._id-DjxZLW-I.js","assets/admin.meta-ads.callback-th9PHnNT.js","assets/en.services.design-print-CVYtApSi.js","assets/en.services.marketing-seo-CGQbxdiJ.js","assets/en.services.web-shops-jKBdMaQa.js","assets/pl.oferta.design-druk-MdOjV9Da.js","assets/en.knowledge-base._kategoria.index-CqlGpJ9Y.js","assets/en.knowledge-base._kategoria.index-DRXNTSur.js","assets/en.knowledge-base._kategoria.index-BDM96BT7.js","assets/en.knowledge-base._kategoria.index-BOUkGbB6.js","assets/en.knowledge-base._kategoria._slug-ZrlSV-wq.js","assets/en.knowledge-base._kategoria._slug-C9IEdIes.js","assets/en.knowledge-base._kategoria._slug-CKUNshmK.js","assets/en.knowledge-base._kategoria._slug-BddCqKZV.js","assets/ArticleQuizPrompt-CRib9tZl.js","assets/pl.baza-wiedzy._kategoria.index-vevZqgL3.js","assets/pl.baza-wiedzy._kategoria.index-CQhXP0yA.js","assets/pl.baza-wiedzy._kategoria.index-Dm35G7Bk.js","assets/pl.baza-wiedzy._kategoria.index-DOcaIj97.js","assets/pl.baza-wiedzy._kategoria._slug-_irrPUTX.js","assets/pl.baza-wiedzy._kategoria._slug-BvOJ72n5.js","assets/pl.baza-wiedzy._kategoria._slug-D6sjegYC.js","assets/pl.baza-wiedzy._kategoria._slug-CFwGZkSQ.js"])))=>i.map(i=>d[i]); 2function AD(t,e){for(var a=0;a<e.length;a++){const i=e[a];if(typeof i!="string"&&!Array.isArray(i)){for(const r in i)if(r!=="default"&&!(r in t)){const s=Object.getOwnPropertyDescriptor(i,r);s&&Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>i[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var YX=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function y_(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var lf={exports:{}},pc={};var pv;function PD(){if(pv)return pc;pv=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function a(i,r,s){var c=null;if(s!==void 0&&(c=""+s),r.key!==void 0&&(c=""+r.key),"key"in r){s={};for(var d in r)d!=="key"&&(s[d]=r[d])}else s=r;return r=s.ref,{$$typeof:t,type:i,key:c,ref:r!==void 0?r:null,props:s}}return pc.Fragment=e,pc.jsx=a,pc.jsxs=a,pc}var hv;function CD(){return hv||(hv=1,lf.exports=PD()),lf.exports}var k=CD(),cf={exports:{}},De={};var yv;function RD(){if(yv)return De;yv=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),m=Symbol.for("react.activity"),g=Symbol.iterator;function z(C){return C===null||typeof C!="object"?null:(C=g&&C[g]||C["@@iterator"],typeof C=="function"?C:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,_={};function S(C,Y,X){this.props=C,this.context=Y,this.refs=_,this.updater=X||j}S.prototype.isReactComponent={},S.prototype.setState=function(C,Y){if(typeof C!="object"&&typeof C!="function"&&C!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,C,Y,"setState")},S.prototype.forceUpdate=function(C){this.updater.enqueueForceUpdate(this,C,"forceUpdate")};function E(){}E.prototype=S.prototype;function T(C,Y,X){this.props=C,this.context=Y,this.refs=_,this.updater=X||j}var O=T.prototype=new E;O.constructor=T,v(O,S.prototype),O.isPureReactComponent=!0;var H=Array.isArray;function U(){}var R={H:null,A:null,T:null,S:null},I=Object.prototype.hasOwnProperty;function ae(C,Y,X){var ce=X.ref;return{$$typeof:t,type:C,key:Y,ref:ce!==void 0?ce:null,props:X}}function ee(C,Y){return ae(C.type,Y,C.props)}function F(C){return typeof C=="object"&&C!==null&&C.$$typeof===t}function Z(C){var Y={"=":"=0",":":"=2"};return"$"+C.replace(/[=:]/g,function(X){return Y[X]})}var oe=/\/+/g;function me(C,Y){return typeof C=="object"&&C!==null&&C.key!=null?Z(""+C.key):Y.toString(36)}function de(C){switch(C.status){case"fulfilled":return C.value;case"rejected":throw C.reason;default:switch(typeof C.status=="string"?C.then(U,U):(C.status="pending",C.then(function(Y){C.status==="pending"&&(C.status="fulfilled",C.value=Y)},function(Y){C.status==="pending"&&(C.status="rejected",C.reason=Y)})),C.status){case"fulfilled":return C.value;case"rejected":throw C.reason}}throw C}function A(C,Y,X,ce,fe){var Ee=typeof C;(Ee==="undefined"||Ee==="boolean")&&(C=null);var xe=!1;if(C===null)xe=!0;else switch(Ee){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(C.$$typeof){case t:case e:xe=!0;break;case f:return xe=C._init,A(xe(C._payload),Y,X,ce,fe)}}if(xe)return fe=fe(C),xe=ce===""?"."+me(C,0):ce,H(fe)?(X="",xe!=null&&(X=xe.replace(oe,"$&/")+"/"),A(fe,Y,X,"",function(ka){return ka})):fe!=null&&(F(fe)&&(fe=ee(fe,X+(fe.key==null||C&&C.key===fe.key?"":(""+fe.key).replace(oe,"$&/")+"/")+xe)),Y.push(fe)),1;xe=0;var _e=ce===""?".":ce+":";if(H(C))for(var Qe=0;Qe<C.length;Qe++)ce=C[Qe],Ee=_e+me(ce,Qe),xe+=A(ce,Y,X,Ee,fe);else if(Qe=z(C),typeof Qe=="function")for(C=Qe.call(C),Qe=0;!(ce=C.next()).done;)ce=ce.value,Ee=_e+me(ce,Qe++),xe+=A(ce,Y,X,Ee,fe);else if(Ee==="object"){if(typeof C.then=="function")return A(de(C),Y,X,ce,fe);throw Y=String(C),Error("Objects are not valid as a React child (found: "+(Y==="[object Object]"?"object with keys {"+Object.keys(C).join(", ")+"}":Y)+"). If you meant to render a collection of children, use an array instead.")}return xe}function B(C,Y,X){if(C==null)return C;var ce=[],fe=0;return A(C,ce,"","",function(Ee){return Y.call(X,Ee,fe++)}),ce}function ne(C){if(C._status===-1){var Y=C._result;Y=Y(),Y.then(function(X){(C._status===0||C._status===-1)&&(C._status=1,C._result=X)},function(X){(C._status===0||C._status===-1)&&(C._status=2,C._result=X)}),C._status===-1&&(C._status=0,C._result=Y)}if(C._status===1)return C._result.default;throw C._result}var ge=typeof reportError=="function"?reportError:function(C){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var Y=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof C=="object"&&C!==null&&typeof C.message=="string"?String(C.message):String(C),error:C});if(!window.dispatchEvent(Y))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",C);return}console.error(C)}
vendor: 8,529 bytes, line 2
2,he={map:B,forEach:function(C,Y,X){B(C,function(){Y.apply(this,arguments)},X)},count:function(C){var Y=0;return B(C,function(){Y++}),Y},toArray:function(C){return B(C,function(Y){return Y})||[]},only:function(C){if(!F(C))throw Error("React.Children.only expected to receive a single React element child.");return C}};return De.Activity=m,De.Children=he,De.Component=S,De.Fragment=a,De.Profiler=r,De.PureComponent=T,De.StrictMode=i,De.Suspense=p,De.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=R,De.__COMPILER_RUNTIME={__proto__:null,c:function(C){return R.H.useMemoCache(C)}},De.cache=function(C){return function(){return C.apply(null,arguments)}},De.cacheSignal=function(){return null},De.cloneElement=function(C,Y,X){if(C==null)throw Error("The argument must be a React element, but you passed "+C+".");var ce=v({},C.props),fe=C.key;if(Y!=null)for(Ee in Y.key!==void 0&&(fe=""+Y.key),Y)!I.call(Y,Ee)||Ee==="key"||Ee==="__self"||Ee==="__source"||Ee==="ref"&&Y.ref===void 0||(ce[Ee]=Y[Ee]);var Ee=arguments.length-2;if(Ee===1)ce.children=X;else if(1<Ee){for(var xe=Array(Ee),_e=0;_e<Ee;_e++)xe[_e]=arguments[_e+2];ce.children=xe}return ae(C.type,fe,ce)},De.createContext=function(C){return C={$$typeof:c,_currentValue:C,_currentValue2:C,_threadCount:0,Provider:null,Consumer:null},C.Provider=C,C.Consumer={$$typeof:s,_context:C},C},De.createElement=function(C,Y,X){var ce,fe={},Ee=null;if(Y!=null)for(ce in Y.key!==void 0&&(Ee=""+Y.key),Y)I.call(Y,ce)&&ce!=="key"&&ce!=="__self"&&ce!=="__source"&&(fe[ce]=Y[ce]);var xe=arguments.length-2;if(xe===1)fe.children=X;else if(1<xe){for(var _e=Array(xe),Qe=0;Qe<xe;Qe++)_e[Qe]=arguments[Qe+2];fe.children=_e}if(C&&C.defaultProps)for(ce in xe=C.defaultProps,xe)fe[ce]===void 0&&(fe[ce]=xe[ce]);return ae(C,Ee,fe)},De.createRef=function(){return{current:null}},De.forwardRef=function(C){return{$$typeof:d,render:C}},De.isValidElement=F,De.lazy=function(C){return{$$typeof:f,_payload:{_status:-1,_result:C},_init:ne}},De.memo=function(C,Y){return{$$typeof:h,type:C,compare:Y===void 0?null:Y}},De.startTransition=function(C){var Y=R.T,X={};R.T=X;try{var ce=C(),fe=R.S;fe!==null&&fe(X,ce),typeof ce=="object"&&ce!==null&&typeof ce.then=="function"&&ce.then(U,ge)}catch(Ee){ge(Ee)}finally{Y!==null&&X.types!==null&&(Y.types=X.types),R.T=Y}},De.unstable_useCacheRefresh=function(){return R.H.useCacheRefresh()},De.use=function(C){return R.H.use(C)},De.useActionState=function(C,Y,X){return R.H.useActionState(C,Y,X)},De.useCallback=function(C,Y){return R.H.useCallback(C,Y)},De.useContext=function(C){return R.H.useContext(C)},De.useDebugValue=function(){},De.useDeferredValue=function(C,Y){return R.H.useDeferredValue(C,Y)},De.useEffect=function(C,Y){return R.H.useEffect(C,Y)},De.useEffectEvent=function(C){return R.H.useEffectEvent(C)},De.useId=function(){return R.H.useId()},De.useImperativeHandle=function(C,Y,X){return R.H.useImperativeHandle(C,Y,X)},De.useInsertionEffect=function(C,Y){return R.H.useInsertionEffect(C,Y)},De.useLayoutEffect=function(C,Y){return R.H.useLayoutEffect(C,Y)},De.useMemo=function(C,Y){return R.H.useMemo(C,Y)},De.useOptimistic=function(C,Y){return R.H.useOptimistic(C,Y)},De.useReducer=function(C,Y,X){return R.H.useReducer(C,Y,X)},De.useRef=function(C){return R.H.useRef(C)},De.useState=function(C){return R.H.useState(C)},De.useSyncExternalStore=function(C,Y,X){return R.H.useSyncExternalStore(C,Y,X)},De.useTransition=function(){return R.H.useTransition()},De.version="19.2.5",De}var mv;function cu(){return mv||(mv=1,cf.exports=RD()),cf.exports}var N=cu();const ue=y_(N),JX=AD({__proto__:null,default:ue},[N]);var uf={exports:{}},hc={},df={exports:{}},pf={};var fv;function DD(){return fv||(fv=1,(function(t){function e(A,B){var ne=A.length;A.push(B);e:for(;0<ne;){var ge=ne-1>>>1,he=A[ge];if(0<r(he,B))A[ge]=B,A[ne]=he,ne=ge;else break e}}function a(A){return A.length===0?null:A[0]}function i(A){if(A.length===0)return null;var B=A[0],ne=A.pop();if(ne!==B){A[0]=ne;e:for(var ge=0,he=A.length,C=he>>>1;ge<C;){var Y=2*(ge+1)-1,X=A[Y],ce=Y+1,fe=A[ce];if(0>r(X,ne))ce<he&&0>r(fe,X)?(A[ge]=fe,A[ce]=ne,ge=ce):(A[ge]=X,A[Y]=ne,ge=Y);else if(ce<he&&0>r(fe,ne))A[ge]=fe,A[ce]=ne,ge=ce;else break e}}return B}function r(A,B){var ne=A.sortIndex-B.sortIndex;return ne!==0?ne:A.id-B.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var c=Date,d=c.now();t.unstable_now=function(){return c.now()-d}}var p=[],h=[],f=1,m=null,g=3,z=!1,j=!1,v=!1,_=!1,S=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function O(A){for(var B=a(h);B!==null;){if(B.callback===null)i(h);else if(B.startTime<=A)i(h),B.sortIndex=B.expirationTime,e(p,B);else break;B=a(h)}}function H(A){if(v=!1,O(A),!j)if(a(p)!==null)j=!0,U||(U=!0,Z());else{var B=a(h);B!==null&&de(H,B.startTime-A)}}var U=!1,R=-1,I=5,ae=-1;function ee(){return _?!0:!(t.unstable_now()-ae<I)}function F(){if(_=!1,U){var A=t.unstable_now();ae=A;var B=!0;try{e:{j=!1,v&&(v=!1,E(R),R=-1),z=!0;var ne=g;try{t:{for(O(A),m=a(p);m!==null&&!(m.expirationTime>A&&ee());){var ge=m.callback;if(typeof ge=="function"){m.callback=null,g=m.priorityLevel;var he=ge(m.expirationTime<=A);if(A=t.unstable_now(),typeof he=="function"){m.callback=he,O(A),B=!0;break t}m===a(p)&&i(p),O(A)}else i(p);m=a(p)}if(m!==null)B=!0;else{var C=a(h);C!==null&&de(H,C.startTime-A),B=!1}}break e}finally{m=null,g=ne,z=!1}B=void 0}}finally{B?Z():U=!1}}}var Z;if(typeof T=="function")Z=function(){T(F)};else if(typeof MessageChannel<"u"){var oe=new MessageChannel,me=oe.port2;oe.port1.onmessage=F,Z=function(){me.postMessage(null)}}else Z=function(){S(F,0)};function de(A,B){R=S(function(){A(t.unstable_now())},B)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(A){A.callback=null},t.unstable_forceFrameRate=function(A){0>A||125<A?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):I=0<A?Math.floor(1e3/A):5},t.unstable_getCurrentPriorityLevel=function(){return g},t.unstable_next=function(A){switch(g){case 1:case 2:case 3:var B=3;break;default:B=g}var ne=g;g=B;try{return A()}finally{g=ne}},t.unstable_requestPaint=function(){_=!0},t.unstable_runWithPriority=function(A,B){switch(A){case 1:case 2:case 3:case 4:case 5:break;default:A=3}var ne=g;g=A;try{return B()}finally{g=ne}},t.unstable_scheduleCallback=function(A,B,ne){var ge=t.unstable_now();switch(typeof ne=="object"&&ne!==null?(ne=ne.delay,ne=typeof ne=="number"&&0<ne?ge+ne:ge):ne=ge,A){case 1:var he=-1;break;case 2:he=250;break;case 5:he=1073741823;break;case 4:he=1e4;break;default:he=5e3}return he=ne+he,A={id:f++,callback:B,priorityLevel:A,startTime:ne,expirationTime:he,sortIndex:-1},ne>ge?(A.sortIndex=ne,e(h,A),a(p)===null&&A===a(h)&&(v?(E(R),R=-1):v=!0,de(H,ne-ge))):(A.sortIndex=he,e(p,A),j||z||(j=!0,U||(U=!0,Z()))),A},t.unstable_shouldYield=ee,t.unstable_wrapCallback=function(A){var B=g;return function(){var ne=g;g=B;try{return A.apply(this,arguments)}finally{g=ne}}}})(pf)),pf}var wv;function OD(){return wv||(wv=1,df.exports=DD()),df.exports}var hf={exports:{}},fa={};var gv;function UD(){if(gv)return fa;gv=1;var t=cu();function e(p){var h="https://react.dev/errors/"+p;if(1<arguments.length){h+="?args[]="+encodeURIComponent(arguments[1]);for(var f=2;f<arguments.length;f++)h+="&args[]="+encodeURIComponent(arguments[f])}return"Minified React error #"+p+"; visit "+h+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function a(){}var i={d:{f:a,r:function(){throw Error(e(522))},D:a,C:a,L:a,m:a,X:a,S:a,M:a},p:0,findDOMNode:null},r=Symbol.for("react.portal");function s(p,h,f){var m=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:r,key:m==null?null:""+m,children:p,containerInfo:h,implementation:f}}var c=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(p,h){if(p==="font")return"";if(typeof h=="string")return h==="use-credentials"?h:""}return fa.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,fa.createPortal=function(p,h){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!h||h.nodeType!==1&&h.nodeType!==9&&h.nodeType!==11)throw Error(e(299));return s(p,h,null,f)}
vendor: 5,880 bytes, line 2
2,fa.flushSync=function(p){var h=c.T,f=i.p;try{if(c.T=null,i.p=2,p)return p()}finally{c.T=h,i.p=f,i.d.f()}},fa.preconnect=function(p,h){typeof p=="string"&&(h?(h=h.crossOrigin,h=typeof h=="string"?h==="use-credentials"?h:"":void 0):h=null,i.d.C(p,h))},fa.prefetchDNS=function(p){typeof p=="string"&&i.d.D(p)},fa.preinit=function(p,h){if(typeof p=="string"&&h&&typeof h.as=="string"){var f=h.as,m=d(f,h.crossOrigin),g=typeof h.integrity=="string"?h.integrity:void 0,z=typeof h.fetchPriority=="string"?h.fetchPriority:void 0;f==="style"?i.d.S(p,typeof h.precedence=="string"?h.precedence:void 0,{crossOrigin:m,integrity:g,fetchPriority:z}):f==="script"&&i.d.X(p,{crossOrigin:m,integrity:g,fetchPriority:z,nonce:typeof h.nonce=="string"?h.nonce:void 0})}},fa.preinitModule=function(p,h){if(typeof p=="string")if(typeof h=="object"&&h!==null){if(h.as==null||h.as==="script"){var f=d(h.as,h.crossOrigin);i.d.M(p,{crossOrigin:f,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0})}}else h==null&&i.d.M(p)},fa.preload=function(p,h){if(typeof p=="string"&&typeof h=="object"&&h!==null&&typeof h.as=="string"){var f=h.as,m=d(f,h.crossOrigin);i.d.L(p,f,{crossOrigin:m,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0,type:typeof h.type=="string"?h.type:void 0,fetchPriority:typeof h.fetchPriority=="string"?h.fetchPriority:void 0,referrerPolicy:typeof h.referrerPolicy=="string"?h.referrerPolicy:void 0,imageSrcSet:typeof h.imageSrcSet=="string"?h.imageSrcSet:void 0,imageSizes:typeof h.imageSizes=="string"?h.imageSizes:void 0,media:typeof h.media=="string"?h.media:void 0})}},fa.preloadModule=function(p,h){if(typeof p=="string")if(h){var f=d(h.as,h.crossOrigin);i.d.m(p,{as:typeof h.as=="string"&&h.as!=="script"?h.as:void 0,crossOrigin:f,integrity:typeof h.integrity=="string"?h.integrity:void 0})}else i.d.m(p)},fa.requestFormReset=function(p){i.d.r(p)},fa.unstable_batchedUpdates=function(p,h){return p(h)},fa.useFormState=function(p,h,f){return c.H.useFormState(p,h,f)},fa.useFormStatus=function(){return c.H.useHostTransitionStatus()},fa.version="19.2.5",fa}var kv;function m_(){if(kv)return hf.exports;kv=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),hf.exports=UD(),hf.exports}var zv;function LD(){if(zv)return hc;zv=1;var t=OD(),e=cu(),a=m_();function i(n){var o="https://react.dev/errors/"+n;if(1<arguments.length){o+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)o+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+n+"; visit "+o+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(n){return!(!n||n.nodeType!==1&&n.nodeType!==9&&n.nodeType!==11)}function s(n){var o=n,l=n;if(n.alternate)for(;o.return;)o=o.return;else{n=o;do o=n,(o.flags&4098)!==0&&(l=o.return),n=o.return;while(n)}return o.tag===3?l:null}function c(n){if(n.tag===13){var o=n.memoizedState;if(o===null&&(n=n.alternate,n!==null&&(o=n.memoizedState)),o!==null)return o.dehydrated}return null}function d(n){if(n.tag===31){var o=n.memoizedState;if(o===null&&(n=n.alternate,n!==null&&(o=n.memoizedState)),o!==null)return o.dehydrated}return null}function p(n){if(s(n)!==n)throw Error(i(188))}function h(n){var o=n.alternate;if(!o){if(o=s(n),o===null)throw Error(i(188));return o!==n?null:n}for(var l=n,u=o;;){var y=l.return;if(y===null)break;var w=y.alternate;if(w===null){if(u=y.return,u!==null){l=u;continue}break}if(y.child===w.child){for(w=y.child;w;){if(w===l)return p(y),n;if(w===u)return p(y),o;w=w.sibling}throw Error(i(188))}if(l.return!==u.return)l=y,u=w;else{for(var b=!1,x=y.child;x;){if(x===l){b=!0,l=y,u=w;break}if(x===u){b=!0,u=y,l=w;break}x=x.sibling}if(!b){for(x=w.child;x;){if(x===l){b=!0,l=w,u=y;break}if(x===u){b=!0,u=w,l=y;break}x=x.sibling}if(!b)throw Error(i(189))}}if(l.alternate!==u)throw Error(i(190))}if(l.tag!==3)throw Error(i(188));return l.stateNode.current===l?n:o}function f(n){var o=n.tag;if(o===5||o===26||o===27||o===6)return n;for(n=n.child;n!==null;){if(o=f(n),o!==null)return o;n=n.sibling}return null}var m=Object.assign,g=Symbol.for("react.element"),z=Symbol.for("react.transitional.element"),j=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),T=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),U=Symbol.for("react.suspense_list"),R=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),ae=Symbol.for("react.activity"),ee=Symbol.for("react.memo_cache_sentinel"),F=Symbol.iterator;function Z(n){return n===null||typeof n!="object"?null:(n=F&&n[F]||n["@@iterator"],typeof n=="function"?n:null)}var oe=Symbol.for("react.client.reference");function me(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===oe?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case v:return"Fragment";case S:return"Profiler";case _:return"StrictMode";case H:return"Suspense";case U:return"SuspenseList";case ae:return"Activity"}if(typeof n=="object")switch(n.$$typeof){case j:return"Portal";case T:return n.displayName||"Context";case E:return(n._context.displayName||"Context")+".Consumer";case O:var o=n.render;return n=n.displayName,n||(n=o.displayName||o.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case R:return o=n.displayName||null,o!==null?o:me(n.type)||"Memo";case I:o=n._payload,n=n._init;try{return me(n(o))}catch{}}return null}var de=Array.isArray,A=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=a.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pen
vendor: 4,217 bytes, lines 2-9
2ding:!1,data:null,method:null,action:null},ge=[],he=-1;function C(n){return{current:n}}function Y(n){0>he||(n.current=ge[he],ge[he]=null,he--)}function X(n,o){he++,ge[he]=n.current,n.current=o}var ce=C(null),fe=C(null),Ee=C(null),xe=C(null);function _e(n,o){switch(X(Ee,o),X(fe,n),X(ce,null),o.nodeType){case 9:case 11:n=(n=o.documentElement)&&(n=n.namespaceURI)?Uj(n):0;break;default:if(n=o.tagName,o=o.namespaceURI)o=Uj(o),n=Lj(o,n);else switch(n){case"svg":n=1;break;case"math":n=2;break;default:n=0}}Y(ce),X(ce,n)}function Qe(){Y(ce),Y(fe),Y(Ee)}function ka(n){n.memoizedState!==null&&X(xe,n);var o=ce.current,l=Lj(o,n.type);o!==l&&(X(fe,n),X(ce,l))}function ai(n){fe.current===n&&(Y(ce),Y(fe)),xe.current===n&&(Y(xe),lc._currentValue=ne)}var ha,ku;function zi(n){if(ha===void 0)try{throw Error()}catch(l){var o=l.stack.trim().match(/\n( *(at )?)/);ha=o&&o[1]||"",ku=-1<l.stack.indexOf(` 3 at`)?" (<anonymous>)":-1<l.stack.indexOf("@")?"@unknown:0:0":""}return` 4`+ha+n+ku}var wl=!1;function Ar(n,o){if(!n||wl)return"";wl=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(o){var te=function(){throw Error()};if(Object.defineProperty(te.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(te,[])}catch(V){var $=V}Reflect.construct(n,[],te)}else{try{te.call()}catch(V){$=V}n.call(te.prototype)}}else{try{throw Error()}catch(V){$=V}(te=n())&&typeof te.catch=="function"&&te.catch(function(){})}}catch(V){if(V&&$&&typeof V.stack=="string")return[V.stack,$.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var y=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");y&&y.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var w=u.DetermineComponentFrameRoot(),b=w[0],x=w[1];if(b&&x){var P=b.split(` 5`),M=x.split(` 6`);for(y=u=0;u<P.length&&!P[u].includes("DetermineComponentFrameRoot");)u++;for(;y<M.length&&!M[y].includes("DetermineComponentFrameRoot");)y++;if(u===P.length||y===M.length)for(u=P.length-1,y=M.length-1;1<=u&&0<=y&&P[u]!==M[y];)y--;for(;1<=u&&0<=y;u--,y--)if(P[u]!==M[y]){if(u!==1||y!==1)do if(u--,y--,0>y||P[u]!==M[y]){var J=` 7`+P[u].replace(" at new "," at ");return n.displayName&&J.includes("<anonymous>")&&(J=J.replace("<anonymous>",n.displayName)),J}while(1<=u&&0<=y);break}}}finally{wl=!1,Error.prepareStackTrace=l}return(l=n?n.displayName||n.name:"")?zi(l):""}function Bo(n,o){switch(n.tag){case 26:case 27:case 5:return zi(n.type);case 16:return zi("Lazy");case 13:return n.child!==o&&o!==null?zi("Suspense Fallback"):zi("Suspense");case 19:return zi("SuspenseList");case 0:case 15:return Ar(n.type,!1);case 11:return Ar(n.type.render,!1);case 1:return Ar(n.type,!0);case 31:return zi("Activity");default:return""}}function gl(n){try{var o="",l=null;do o+=Bo(n,l),l=n,n=n.return;while(n);return o}catch(u){return` 8Error generating stack: `+u.message+` 9`+u.stack}}var Wa=Object.prototype.hasOwnProperty,kl=t.unstable_scheduleCallback,zl=t.unstable_cancelCallback,za=t.unstable_shouldYield,In=t.unstable_requestPaint,ba=t.unstable_now,Zh=t.unstable_getCurrentPriorityLevel,$o=t.unstable_ImmediatePriority,zu=t.unstable_UserBlockingPriority,Io=t.unstable_NormalPriority,bl=t.unstable_LowPriority,on=t.unstable_IdlePriority,bu=t.log,Wn=t.unstable_setDisableYieldValue,Wo=null,ja=null;function bi(n){if(typeof bu=="function"&&Wn(n),ja&&typeof ja.setStrictMode=="function")try{ja.setStrictMode(Wo,n)}catch{}}var ya=Math.clz32?Math.clz32:Mi,Yh=Math.log,jl=Math.LN2;function Mi(n){return n>>>=0,n===0?32:31-(Yh(n)/jl|0)|0}var Pr=256,Cr=262144,Go=4194304;function Ni(n){var o=n&42;if(o!==0)return o;switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return n&261888;case 262144:case 524288:case 1048576:case 2097152:return n&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return n&62914560;case 67108864:return 67108864;
vendor: 6,609 bytes, line 9
9case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return n}}function Ce(n,o,l){var u=n.pendingLanes;if(u===0)return 0;var y=0,w=n.suspendedLanes,b=n.pingedLanes;n=n.warmLanes;var x=u&134217727;return x!==0?(u=x&~w,u!==0?y=Ni(u):(b&=x,b!==0?y=Ni(b):l||(l=x&~n,l!==0&&(y=Ni(l))))):(x=u&~w,x!==0?y=Ni(x):b!==0?y=Ni(b):l||(l=u&~n,l!==0&&(y=Ni(l)))),y===0?0:o!==0&&o!==y&&(o&w)===0&&(w=y&-y,l=o&-o,w>=l||w===32&&(l&4194048)!==0)?o:y}function vt(n,o){return(n.pendingLanes&~(n.suspendedLanes&~n.pingedLanes)&o)===0}function Jt(n,o){switch(n){case 1:case 2:case 4:case 8:case 64:return o+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ma(){var n=Go;return Go<<=1,(Go&62914560)===0&&(Go=4194304),n}function Gn(n){for(var o=[],l=0;31>l;l++)o.push(n);return o}function _t(n,o){n.pendingLanes|=o,o!==268435456&&(n.suspendedLanes=0,n.pingedLanes=0,n.warmLanes=0)}function Aa(n,o,l,u,y,w){var b=n.pendingLanes;n.pendingLanes=l,n.suspendedLanes=0,n.pingedLanes=0,n.warmLanes=0,n.expiredLanes&=l,n.entangledLanes&=l,n.errorRecoveryDisabledLanes&=l,n.shellSuspendCounter=0;var x=n.entanglements,P=n.expirationTimes,M=n.hiddenUpdates;for(l=b&~l;0<l;){var J=31-ya(l),te=1<<J;x[J]=0,P[J]=-1;var $=M[J];if($!==null)for(M[J]=null,J=0;J<$.length;J++){var V=$[J];V!==null&&(V.lane&=-536870913)}l&=~te}u!==0&&Vo(n,u,0),w!==0&&y===0&&n.tag!==0&&(n.suspendedLanes|=w&~(b&~o))}function Vo(n,o,l){n.pendingLanes|=o,n.suspendedLanes&=~o;var u=31-ya(o);n.entangledLanes|=o,n.entanglements[u]=n.entanglements[u]|1073741824|l&261930}function Pa(n,o){var l=n.entangledLanes|=o;for(n=n.entanglements;l;){var u=31-ya(l),y=1<<u;y&o|n[u]&o&&(n[u]|=o),l&=~y}}function Ca(n,o){var l=o&-o;return l=(l&42)!==0?1:Rr(l),(l&(n.suspendedLanes|o))!==0?0:l}function Rr(n){switch(n){case 2:n=1;break;case 8:n=4;break;case 32:n=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:n=128;break;case 268435456:n=134217728;break;default:n=0}return n}function ji(n){return n&=-n,2<n?8<n?(n&134217727)!==0?32:268435456:8:2}function Jh(){var n=B.p;return n!==0?n:(n=window.event,n===void 0?32:ov(n.type))}function bz(n,o){var l=B.p;try{return B.p=n,o()}finally{B.p=l}}var Vn=Math.random().toString(36).slice(2),na="__reactFiber$"+Vn,Ra="__reactProps$"+Vn,Dr="__reactContainer$"+Vn,Qh="__reactEvents$"+Vn,gC="__reactListeners$"+Vn,kC="__reactHandles$"+Vn,jz="__reactResources$"+Vn,vl="__reactMarker$"+Vn;function Xh(n){delete n[na],delete n[Ra],delete n[Qh],delete n[gC],delete n[kC]}function Or(n){var o=n[na];if(o)return o;for(var l=n.parentNode;l;){if(o=l[Dr]||l[na]){if(l=o.alternate,o.child!==null||l!==null&&l.child!==null)for(n=Wj(n);n!==null;){if(l=n[na])return l;n=Wj(n)}return o}n=l,l=n.parentNode}return null}function Ur(n){if(n=n[na]||n[Dr]){var o=n.tag;if(o===5||o===6||o===13||o===31||o===26||o===27||o===3)return n}return null}function Sl(n){var o=n.tag;if(o===5||o===26||o===27||o===6)return n.stateNode;throw Error(i(33))}function Lr(n){var o=n[jz];return o||(o=n[jz]={hoistableStyles:new Map,hoistableScripts:new Map}),o}function Qt(n){n[vl]=!0}var vz=new Set,Sz={};function Fo(n,o){Kr(n,o),Kr(n+"Capture",o)}function Kr(n,o){for(Sz[n]=o,n=0;n<o.length;n++)vz.add(o[n])}var zC=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),xz={},_z={};function bC(n){return Wa.call(_z,n)?!0:Wa.call(xz,n)?!1:zC.test(n)?_z[n]=!0:(xz[n]=!0,!1)}function ju(n,o,l){if(bC(o))if(l===null)n.removeAttribute(o);else{switch(typeof l){case"undefined":case"function":case"symbol":n.removeAttribute(o);return;case"boolean":var u=o.toLowerCase().slice(0,5);if(u!=="data-"&&u!=="aria-"){n.removeAttribute(o);return}}n.setAttribute(o,""+l)}}function vu(n,o,l){if(l===null)n.removeAttribute(o);else{switch(typeof l){case"undefined":case"function":case"symbol":case"boolean":n.removeAttribute(o);return}n.setAttribute(o,""+l)}}function rn(n,o,l,u){if(u===null)n.removeAttribute(l);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":n.removeAttribute(l);return}n.setAttributeNS(o,l,""+u)}}function ii(n){switch(typeof n){case"bigint":case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function Tz(n){var o=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(o==="checkbox"||o==="radio")}function jC(n,o,l){var u=Object.getOwnPropertyDescriptor(n.constructor.prototype,o);if(!n.hasOwnProperty(o)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var y=u.get,w=u.set;return Object.defineProperty(n,o,{configurable:!0,get:function(){return y.call(this)},set:function(b){l=""+b,w.call(this,b)}}),Object.defineProperty(n,o,{enumerable:u.enumerable}),{getValue:function(){return l},setValue:function(b){l=""+b},stopTracking:function(){n._valueTracker=null,delete n[o]}}}}function ey(n){if(!n._valueTracker){var o=Tz(n)?"checked":"value";n._valueTracker=jC(n,o,""+n[o])}}function Ez(n){if(!n)return!1;var o=n._valueTracker;if(!o)return!0;var l=o.getValue(),u="";return n&&(u=Tz(n)?n.checked?"true":"false":n.value),n=u,n!==l?(o.setValue(n),!0):!1}function Su(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}var vC=/[\n"\\]/g;function ni(n){return n.replace(vC,function(o){return"\\"+o.charCodeAt(0).toString(16)+" "})}function ty(n,o,l,u,y,w,b,x){n.name="",b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?n.type=b:n.removeAttribute("type"),o!=null?b==="number"?(o===0&&n.value===""||n.value!=o)&&(n.value=""+ii(o)):n.value!==""+ii(o)&&(n.value=""+ii(o)):b!=="submit"&&b!=="reset"||n.removeAttribute("value"),o!=null?ay(n,b,ii(o)):l!=null?ay(n,b,ii(l)):u!=null&&n.removeAttribute("value"),y==null&&w!=null&&(n.defaultChecked=!!w),y!=null&&(n.checked=y&&t
vendor: 5,691 bytes, line 9
9ypeof y!="function"&&typeof y!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?n.name=""+ii(x):n.removeAttribute("name")}function Az(n,o,l,u,y,w,b,x){if(w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(n.type=w),o!=null||l!=null){if(!(w!=="submit"&&w!=="reset"||o!=null)){ey(n);return}l=l!=null?""+ii(l):"",o=o!=null?""+ii(o):l,x||o===n.value||(n.value=o),n.defaultValue=o}u=u??y,u=typeof u!="function"&&typeof u!="symbol"&&!!u,n.checked=x?n.checked:!!u,n.defaultChecked=!!u,b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"&&(n.name=b),ey(n)}function ay(n,o,l){o==="number"&&Su(n.ownerDocument)===n||n.defaultValue===""+l||(n.defaultValue=""+l)}function Mr(n,o,l,u){if(n=n.options,o){o={};for(var y=0;y<l.length;y++)o["$"+l[y]]=!0;for(l=0;l<n.length;l++)y=o.hasOwnProperty("$"+n[l].value),n[l].selected!==y&&(n[l].selected=y),y&&u&&(n[l].defaultSelected=!0)}else{for(l=""+ii(l),o=null,y=0;y<n.length;y++){if(n[y].value===l){n[y].selected=!0,u&&(n[y].defaultSelected=!0);return}o!==null||n[y].disabled||(o=n[y])}o!==null&&(o.selected=!0)}}function Pz(n,o,l){if(o!=null&&(o=""+ii(o),o!==n.value&&(n.value=o),l==null)){n.defaultValue!==o&&(n.defaultValue=o);return}n.defaultValue=l!=null?""+ii(l):""}function Cz(n,o,l,u){if(o==null){if(u!=null){if(l!=null)throw Error(i(92));if(de(u)){if(1<u.length)throw Error(i(93));u=u[0]}l=u}l==null&&(l=""),o=l}l=ii(o),n.defaultValue=l,u=n.textContent,u===l&&u!==""&&u!==null&&(n.value=u),ey(n)}function Nr(n,o){if(o){var l=n.firstChild;if(l&&l===n.lastChild&&l.nodeType===3){l.nodeValue=o;return}}n.textContent=o}var SC=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Rz(n,o,l){var u=o.indexOf("--")===0;l==null||typeof l=="boolean"||l===""?u?n.setProperty(o,""):o==="float"?n.cssFloat="":n[o]="":u?n.setProperty(o,l):typeof l!="number"||l===0||SC.has(o)?o==="float"?n.cssFloat=l:n[o]=(""+l).trim():n[o]=l+"px"}function Dz(n,o,l){if(o!=null&&typeof o!="object")throw Error(i(62));if(n=n.style,l!=null){for(var u in l)!l.hasOwnProperty(u)||o!=null&&o.hasOwnProperty(u)||(u.indexOf("--")===0?n.setProperty(u,""):u==="float"?n.cssFloat="":n[u]="");for(var y in o)u=o[y],o.hasOwnProperty(y)&&l[y]!==u&&Rz(n,y,u)}else for(var w in o)o.hasOwnProperty(w)&&Rz(n,w,o[w])}function iy(n){if(n.indexOf("-")===-1)return!1;switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xC=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode
9-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),_C=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function xu(n){return _C.test(""+n)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":n}function sn(){}var ny=null;function oy(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var Br=null,$r=null;function Oz(n){var o=Ur(n);if(o&&(n=o.stateNode)){var l=n[Ra]||null;e:switch(n=o.stateNode,o.type){case"input":if(ty(n,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name),o=l.name,l.type==="radio"&&o!=null){for(l=n;l.parentNode;)l=l.parentNode;for(l=l.querySelectorAll('input[name="'+ni(""+o)+'"][type="radio"]'),o=0;o<l.length;o++){var u=l[o];if(u!==n&&u.form===n.form){var y=u[Ra]||null;if(!y)throw Error(i(90));ty(u,y.value,y.defaultValue,y.defaultValue,y.checked,y.defaultChecked,y.type,y.name)}}for(o=0;o<l.length;o++)u=l[o],u.form===n.form&&Ez(u)}break e;case"textarea":Pz(n,l.value,l.defaultValue);break e;case"select":o=l.value,o!=null&&Mr(n,!!l.multiple,o,!1)}}}var ry=!1;function Uz(n,o,l){if(ry)return n(o,l);ry=!0;try{var u=n(o);return u}finally{if(ry=!1,(Br!==null||$r!==null)&&(pd(),Br&&(o=Br,n=$r,$r=Br=null,Oz(o),n)))for(o=0;o<n.length;o++)Oz(n[o])}}function xl(n,o){var l=n.stateNode;if(l===null)return null;var u=l[Ra]||null;if(u===null)return null;l=u[o];e:switch(o){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(u=!u.disabled)||(n=n.type,u=!(n==="button"||n==="input"||n==="select"||n==="textarea")),n=!u;break e;default:n=!1}if(n)return null;if(l&&typeof l!="function")throw Error(i(231,o,typeof l));return l}var ln=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sy=!1;if(ln)try{var _l={};Object.defineProperty(_l,"passive",{get:function(){sy=!0}}),window.addEventListener("test",_l,_l),window.removeEventListener("test",_l,_l)}catch{sy=!1}var Fn=null,ly=null,_u=null;function Lz(){if(_u)return _u;var n,o=ly,l=o.length,u,y="value"in Fn?Fn.value:Fn.textContent,w=y.length;for(n=0;n<l&&o[n]===y[n];n++);var b=l-n;for(u=1;u<=b&&o[l-u]===y[w-u];u++);return _u=y.slice(n,1<u?1-u:void 0)}function Tu(n){var o=n.keyCode;return"charCode"in n?(n=n.charCode,n===0&&o===13&&(n=13)):n=o,n===10&&(n=13),32<=n||n===13?n:0}function Eu(){return!0}function Kz(){return!1}function Da(n){function o(l,u,y,w,b){this._reactName=l,this._targetInst=y,this.type=u,this.nativeEvent=w,this.target=b,this.currentTarget=null;for(var x in n)n.hasOwnProperty(x)&&(l=n[x],this[x]=l?l(w):w[x]);return this.isDefaultPrevented=(w.defaultPrevented!=null?w.defaultPrevented:w.returnValue===!1)?Eu:Kz,this.isPropagationStopped=Kz,this}return m(o.prototype,{preventDefault:function(){this.defaultPrevented=!0;var l=this.nativeEvent;l&&(l.preventDefault?l.preventDefault():typeof l.returnValue!="unknown"&&(l.returnValue=!1),this.isDefaultPrevented=Eu)},stopPropagation:function(){var l=this.nativeEvent;l&&(l.stopPropagation?l.stopPropagation():typeof l.cancelBubble!="unknown"&&(l.cancelBubble=!0),this.isPropagationStopped=Eu)},persist:function(){},isPersistent:Eu}),o}var Ho={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(n){return n.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Au=Da(Ho),Tl=m({},Ho,{view:0,detail:0}),TC=Da(Tl),cy,uy,El,Pu=m({},Tl,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:py,button:0,buttons:0,relatedTarget:function(n){return n.relatedTarget===void 0?n.fromElement===n.srcElement?n.toElement:n.fromElement:n.relatedTarget},movementX:function(n){return"movementX"in n?n.movementX:(n!==El&&(El&&n.type==="mousemove"?(cy=n.screenX-El.screenX,uy=n.screenY-El.screenY):uy=cy=0,El=n),cy)},movementY:function(n){return"movementY"in n?n.movementY:uy}}),Mz=Da(Pu),EC=m({},Pu,{dataTransfer:0}),AC=Da(EC),PC=m({},Tl,{relatedTarget:0}),dy=Da(PC),CC=m({},Ho,{animationName:0,elapsedTime:0,pseudoElement:0}),RC=Da(CC),DC=m({},Ho,{clipboardData:function(n){return"clipboardData"in n?n.clipboardData:window.clipboardData}}),OC=Da(DC),UC=m({},Ho,{data:0}
vendor: 1,296 bytes, line 9
9),Nz=Da(UC),LC={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},KC={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},MC={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function NC(n){var o=this.nativeEvent;return o.getModifierState?o.getModifierState(n):(n=MC[n])?!!o[n]:!1}function py(){return NC}var BC=m({},Tl,{key:function(n){if(n.key){var o=LC[n.key]||n.key;if(o!=="Unidentified")return o}return n.type==="keypress"?(n=Tu(n),n===13?"Enter":String.fromCharCode(n)):n.type==="keydown"||n.type==="keyup"?KC[n.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:py,charCode:function(n){return n.type==="keypress"?Tu(n):0},keyCode:function(n){return n.type==="keydown"||n.type==="keyup"?n.keyCode:0}
vendor: 4,811 bytes, line 9
9,which:function(n){return n.type==="keypress"?Tu(n):n.type==="keydown"||n.type==="keyup"?n.keyCode:0}}),$C=Da(BC),IC=m({},Pu,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Bz=Da(IC),WC=m({},Tl,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:py}),GC=Da(WC),VC=m({},Ho,{propertyName:0,elapsedTime:0,pseudoElement:0}),FC=Da(VC),HC=m({},Pu,{deltaX:function(n){return"deltaX"in n?n.deltaX:"wheelDeltaX"in n?-n.wheelDeltaX:0},deltaY:function(n){return"deltaY"in n?n.deltaY:"wheelDeltaY"in n?-n.wheelDeltaY:"wheelDelta"in n?-n.wheelDelta:0},deltaZ:0,deltaMode:0}),qC=Da(HC),ZC=m({},Ho,{newState:0,oldState:0}),YC=Da(ZC),JC=[9,13,27,32],hy=ln&&"CompositionEvent"in window,Al=null;ln&&"documentMode"in document&&(Al=document.documentMode);var QC=ln&&"TextEvent"in window&&!Al,$z=ln&&(!hy||Al&&8<Al&&11>=Al),Iz=" ",Wz=!1;function Gz(n,o){switch(n){case"keyup":return JC.indexOf(o.keyCode)!==-1;case"keydown":return o.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vz(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var Ir=!1;function XC(n,o){switch(n){case"compositionend":return Vz(o);case"keypress":return o.which!==32?null:(Wz=!0,Iz);case"textInput":return n=o.data,n===Iz&&Wz?null:n;default:return null}}function eR(n,o){if(Ir)return n==="compositionend"||!hy&&Gz(n,o)?(n=Lz(),_u=ly=Fn=null,Ir=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(o.ctrlKey||o.altKey||o.metaKey)||o.ctrlKey&&o.altKey){if(o.char&&1<o.char.length)return o.char;if(o.which)return String.fromCharCode(o.which)}return null;case"compositionend":return $z&&o.locale!=="ko"?null:o.data;default:return null}}var tR={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Fz(n){var o=n&&n.nodeName&&n.nodeName.toLowerCase();return o==="input"?!!tR[n.type]:o==="textarea"}function Hz(n,o,l,u){Br?$r?$r.push(u):$r=[u]:Br=u,o=kd(o,"onChange"),0<o.length&&(l=new Au("onChange","change",null,l,u),n.push({event:l,listeners:o}))}var Pl=null,Cl=null;function aR(n){Aj(n,0)}function Cu(n){var o=Sl(n);if(Ez(o))return n}function qz(n,o){if(n==="change")return o}var Zz=!1;if(ln){var yy;if(ln){var my="oninput"in document;if(!my){var Yz=document.createElement("div");Yz.setAttribute("oninput","return;"),my=typeof Yz.oninput=="function"}yy=my}else yy=!1;Zz=yy&&(!document.documentMode||9<document.documentMode)}function Jz(){Pl&&(Pl.detachEvent("onpropertychange",Qz),Cl=Pl=null)}function Qz(n){if(n.propertyName==="value"&&Cu(Cl)){var o=[];Hz(o,Cl,n,oy(n)),Uz(aR,o)}}function iR(n,o,l){n==="focusin"?(Jz(),Pl=o,Cl=l,Pl.attachEvent("onpropertychange",Qz)):n==="focusout"&&Jz()}function nR(n){if(n==="selectionchange"||n==="keyup"||n==="keydown")return Cu(Cl)}function oR(n,o){if(n==="click")return Cu(o)}function rR(n,o){if(n==="input"||n==="change")return Cu(o)}function sR(n,o){return n===o&&(n!==0||1/n===1/o)||n!==n&&o!==o}var Ga=typeof Object.is=="function"?Object.is:sR;function Rl(n,o){if(Ga(n,o))return!0;if(typeof n!="object"||n===null||typeof o!="object"||o===null)return!1;var l=Object.keys(n),u=Object.keys(o);if(l.length!==u.length)return!1;for(u=0;u<l.length;u++){var y=l[u];if(!Wa.call(o,y)||!Ga(n[y],o[y]))return!1}return!0}function Xz(n){for(;n&&n.firstChild;)n=n.firstChild;return n}function eb(n,o){var l=Xz(n);n=0;for(var u;l;){if(l.nodeType===3){if(u=n+l.textContent.length,n<=o&&u>=o)return{node:l,offset:o-n};n=u}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Xz(l)}}function tb(n,o){return n&&o?n===o?!0:n&&n.nodeType===3?!1:o&&o.nodeType===3?tb(n,o.parentNode):"contains"in n?n.contains(o):n.compareDocumentPosition?!!(n.compareDocumentPosition(o)&16):!1:!1}function ab(n){n=n!=null&&n.ownerDocument!=null&&n.ownerDocument.defaultView!=null?n.ownerDocument.defaultView:window;for(var o=Su(n.document);o instanceof n.HTMLIFrameElement;){try{var l=typeof o.contentWindow.location.href=="string"}catch{l=!1}if(l)n=o.contentWindow;else break;o=Su(n.document)}return o}function fy(n){var o=n&&n.nodeName&&n.nodeName.toLowerCase();return o&&(o==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||o==="textarea"||n.contentEditable==="true")}var lR=ln&&"documentMode"in document&&11>=document.documentMode,Wr=null,wy=null,Dl=null,gy=!1;function ib(n,o,l){var u=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;gy||Wr==null||Wr!==Su(u)||(u=Wr,"selectionStart"in u&&fy(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focu
vendor: 14,798 bytes, line 9
9sNode:u.focusNode,focusOffset:u.focusOffset}),Dl&&Rl(Dl,u)||(Dl=u,u=kd(wy,"onSelect"),0<u.length&&(o=new Au("onSelect","select",null,o,l),n.push({event:o,listeners:u}),o.target=Wr)))}function qo(n,o){var l={};return l[n.toLowerCase()]=o.toLowerCase(),l["Webkit"+n]="webkit"+o,l["Moz"+n]="moz"+o,l}var Gr={animationend:qo("Animation","AnimationEnd"),animationiteration:qo("Animation","AnimationIteration"),animationstart:qo("Animation","AnimationStart"),transitionrun:qo("Transition","TransitionRun"),transitionstart:qo("Transition","TransitionStart"),transitioncancel:qo("Transition","TransitionCancel"),transitionend:qo("Transition","TransitionEnd")},ky={},nb={};ln&&(nb=document.createElement("div").style,"AnimationEvent"in window||(delete Gr.animationend.animation,delete Gr.animationiteration.animation,delete Gr.animationstart.animation),"TransitionEvent"in window||delete Gr.transitionend.transition);function Zo(n){if(ky[n])return ky[n];if(!Gr[n])return n;var o=Gr[n],l;for(l in o)if(o.hasOwnProperty(l)&&l in nb)return ky[n]=o[l];return n}var ob=Zo("animationend"),rb=Zo("animationiteration"),sb=Zo("animationstart"),cR=Zo("transitionrun"),uR=Zo("transitionstart"),dR=Zo("transitioncancel"),lb=Zo("transitionend"),cb=new Map,zy="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");zy.push("scrollEnd");function vi(n,o){cb.set(n,o),Fo(o,[n])}var Ru=typeof reportError=="function"?reportError:function(n){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var o=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof n=="object"&&n!==null&&typeof n.message=="string"?String(n.message):String(n),error:n});if(!window.dispatchEvent(o))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",n);return}console.error(n)},oi=[],Vr=0,by=0;function Du(){for(var n=Vr,o=by=Vr=0;o<n;){var l=oi[o];oi[o++]=null;var u=oi[o];oi[o++]=null;var y=oi[o];oi[o++]=null;var w=oi[o];if(oi[o++]=null,u!==null&&y!==null){var b=u.pending;b===null?y.next=y:(y.next=b.next,b.next=y),u.pending=y}w!==0&&ub(l,y,w)}}function Ou(n,o,l,u){oi[Vr++]=n,oi[Vr++]=o,oi[Vr++]=l,oi[Vr++]=u,by|=u,n.lanes|=u,n=n.alternate,n!==null&&(n.lanes|=u)}function jy(n,o,l,u){return Ou(n,o,l,u),Uu(n)}function Yo(n,o){return Ou(n,null,null,o),Uu(n)}function ub(n,o,l){n.lanes|=l;var u=n.alternate;u!==null&&(u.lanes|=l);for(var y=!1,w=n.return;w!==null;)w.childLanes|=l,u=w.alternate,u!==null&&(u.childLanes|=l),w.tag===22&&(n=w.stateNode,n===null||n._visibility&1||(y=!0)),n=w,w=w.return;return n.tag===3?(w=n.stateNode,y&&o!==null&&(y=31-ya(l),n=w.hiddenUpdates,u=n[y],u===null?n[y]=[o]:u.push(o),o.lane=l|536870912),w):null}function Uu(n){if(50<tc)throw tc=0,Cm=null,Error(i(185));for(var o=n.return;o!==null;)n=o,o=n.return;return n.tag===3?n.stateNode:null}var Fr={};function pR(n,o,l,u){this.tag=n,this.key=l,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=o,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Va(n,o,l,u){return new pR(n,o,l,u)}function vy(n){return n=n.prototype,!(!n||!n.isReactComponent)}function cn(n,o){var l=n.alternate;return l===null?(l=Va(n.tag,o,n.key,n.mode),l.elementType=n.elementType,l.type=n.type,l.stateNode=n.stateNode,l.alternate=n,n.alternate=l):(l.pendingProps=o,l.type=n.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=n.flags&65011712,l.childLanes=n.childLanes,l.lanes=n.lanes,l.child=n.child,l.memoizedProps=n.memoizedProps,l.memoizedState=n.memoizedState,l.updateQueue=n.updateQueue,o=n.dependencies,l.dependencies=o===null?null:{lanes:o.lanes,firstContext:o.firstContext},l.sibling=n.sibling,l.index=n.index,l.ref=n.ref,l.refCleanup=n.refCleanup,l}function db(n,o){n.flags&=65011714;var l=n.alternate;return l===null?(n.childLanes=0,n.lanes=o,n.child=null,n.subtreeFlags=0,n.memoizedProps=null,n.memoizedState=null,n.updateQueue=null,n.dependencies=null,n.stateNode=null):(n.childLanes=l.childLanes,n.lanes=l.lanes,n.child=l.child,n.subtreeFlags=0,n.deletions=null,n.memoizedProps=l.memoizedProps,n.memoizedState=l.memoizedState,n.updateQueue=l.updateQueue,n.type=l.type,o=l.dependencies,n.dependencies=o===null?null:{lanes:o.lanes,firstContext:o.firstContext}),n}function Lu(n,o,l,u,y,w){var b=0;if(u=n,typeof n=="function")vy(n)&&(b=1);else if(typeof n=="string")b=wD(n,l,ce.current)?26:n==="html"||n==="head"||n==="body"?27:5;else e:switch(n){case ae:return n=Va(31,l,o,y),n.elementType=ae,n.lanes=w,n;case v:return Jo(l.children,y,w,o);case _:b=8,y|=24;break;case S:return n=Va(12,l,o,y|2),n.elementType=S,n.lanes=w,n;case H:return n=Va(13,l,o,y),n.elementType=H,n.lanes=w,n;case U:return n=Va(19,l,o,y),n.elementType=U,n.lanes=w,n;default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case T:b=10;break e;case E:b=9;break e;case O:b=11;break e;case R:b=14;break e;case I:b=16,u=null;break e}b=29,l=Error(i(130,n===null?"null":typeof n,"")),u=null}return o=Va(b,l,o,y),o.elementType=n,o.type=u,o.lanes=w,o}function Jo(n,o,l,u){return n=Va(7,n,u,o),n.lanes=l,n}function Sy(n,o,l){return n=Va(6,n,null,o),n.lanes=l,n}function pb(n){var o=Va(18,null,null,0);return o.stateNode=n,o}function xy(n,o,l){return o=Va(4,n.children!==null?n.children:[],n.key,o),o.lanes=l,o.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},o}var hb=new WeakMap;function ri(n,o){if(typeof n=="object"&&n!==null){var l=hb.get(n);return l!==void 0?l:(o={value:n,source:o,stack:gl(o)},hb.set(n,o),o)}return{value:n,source:o,stack:gl(o)}}var Hr=[],qr=0,Ku=null,Ol=0,si=[],li=0,Hn=null,Bi=1,$i="";function un(n,o){Hr[qr++]=Ol,Hr[qr++]=Ku,Ku=n,Ol=o}function yb(n,o,l){si[li++]=Bi,si[li++]=$i,si[li++]=Hn,Hn=n;var u=Bi;n=$i;var y=32-ya(u)-1;u&=~(1<<y),l+=1;var w=32-ya(o)+y;if(30<w){var b=y-y%5;w=(u&(1<<b)-1).toString(32),u>>=b,y-=b,Bi=1<<32-ya(o)+y|l<<y|u,$i=w+n}else Bi=1<<w|l<<y|u,$i=n}function _y(n){n.return!==null&&(un(n,1),yb(n,1,0))}function Ty(n){for(;n===Ku;)Ku=Hr[--qr],Hr[qr]=null,Ol=Hr[--qr],Hr[qr]=null;for(;n===Hn;)Hn=si[--li],si[li]=null,$i=si[--li],si[li]=null,Bi=si[--li],si[li]=null}function mb(n,o){si[li++]=Bi,si[li++]=$i,si[li++]=Hn,Bi=o.id,$i=o.overflow,Hn=n}var oa=null,bt=null,Ye=!1,qn=null,ci=!1,Ey=Error(i(519));function Zn(n){var o=Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Ul(ri(o,n)),Ey}function fb(n){var o=n.stateNode,l=n.type,u=n.memoizedProps;switch(o[na]=n,o[Ra]=u,l){case"dialog":Ge("cancel",o),Ge("close",o);break;case"iframe":case"object":case"embed":Ge("load",o);break;case"video":case"audio":for(l=0;l<ic.length;l++)Ge(ic[l],o);break;case"source":Ge("error",o);break;case"img":case"image":case"link":Ge("error",o),Ge("load",o);break;case"details":Ge("toggle",o);break;case"input":Ge("invalid",o),Az(o,u.value,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name,!0);break;case"select":Ge("invalid",o);break;case"textarea":Ge("invalid",o),Cz(o,u.value,u.defaultValue,u.children)}l=u.children,typeof l!="string"&&typeof l!="number"&&typeof l!="bigint"||o.textContent===""+l||u.suppressHydrationWarning===!0||Dj(o.textContent,l)?(u.popover!=null&&(Ge("beforetoggle",o),Ge("toggle",o)),u.onScroll!=null&&Ge("scroll",o),u.onScrollEnd!=null&&Ge("scrollend",o),u.onClick!=null&&(o.onclick=sn),o=!0):o=!1,o||Zn(n,!0)}function wb(n){for(oa=n.return;oa;)switch(oa.tag){case 5:case 31:case 13:ci=!1;return;case 27:case 3:ci=!0;return;default:oa=oa.return}}function Zr(n){if(n!==oa)return!1;if(!Ye)return wb(n),Ye=!0,!1;var o=n.tag,l;if((l=o!==3&&o!==27)&&((l=o===5)&&(l=n.type,l=!(l!=="form"&&l!=="button")||Fm(n.type,n.memoizedProps)),l=!l),l&&bt&&Zn(n),wb(n),o===13){if(n=n.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(i(317));bt=Ij(n)}else if(o===31){if(n=n.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(i(317));bt=Ij(n)}else o===27?(o=bt,co(n.type)?(n=Jm,Jm=null,bt=n):bt=o):bt=oa?di(n.stateNode.nextSibling):null;return!0}function Qo(){bt=oa=null,Ye=!1}function Ay(){var n=qn;return n!==null&&(Ka===null?Ka=n:Ka.push.apply(Ka,n),qn=null),n}function Ul(n){qn===null?qn=[n]:qn.push(n)}var Py=C(null),Xo=null,dn=null;function Yn(n,o,l){X(Py,o._currentValue),o._currentValue=l}function pn(n){n._currentValue=Py.current,Y(Py)}function Cy(n,o,l){for(;n!==null;){var u=n.alternate;if((n.childLanes&o)!==o?(n.childLanes|=o,u!==null&&(u.childLanes|=o)):u!==null&&(u.childLanes&o)!==o&&(u.childLanes|=o),n===l)break;n=n.return}}function Ry(n,o,l,u){var y=n.child;for(y!==null&&(y.return=n);y!==null;){var w=y.dependencies;if(w!==null){var b=y.child;w=w.firstContext;e:for(;w!==null;){var x=w;w=y;for(var P=0;P<o.length;P++)if(x.context===o[P]){w.lanes|=l,x=w.alternate,x!==null&&(x.lanes|=l),Cy(w.return,l,n),u||(b=null);break e}w=x.next}}else if(y.tag===18){if(b=y.return,b===null)throw Error(i(341));b.lanes|=l,w=b.alternate,w!==null&&(w.lanes|=l),Cy(b,l,n),b=null}else b=y.child;if(b!==null)b.return=y;else for(b=y;b!==null;){if(b===n){b=null;break}if(y=b.sibling,y!==null){y.return=b.return,b=y;break}b=b.return}y=b}}function Yr(n,o,l,u){n=null;for(var y=o,w=!1;y!==null;){if(!w){if((y.flags&524288)!==0)w=!0;else if((y.flags&262144)!==0)break}if(y.tag===10){var b=y.alternate;if(b===null)throw Error(i(387));if(b=b.memoizedProps,b!==null){var x=y.type;Ga(y.pendingProps.value,b.value)||(n!==null?n.push(x):n=[x])}}else if(y===xe.current){if(b=y.alternate,b===null)throw Error(i(387));b.memoizedState.memoizedState!==y.memoizedState.memoizedState&&(n!==null?n.push(lc):n=[lc])}y=y.return}n!==null&&Ry(o,n,l,u),o.flags|=262144}function Mu(n){for(n=n.firstContext;n!==null;){if(!Ga(n.context._currentValue,n.memoizedValue))return!0;n=n.next}return!1}function er(n){Xo=n,dn=null,n=n.dependencies,n!==null&&(n.firstContext=null)}function ra(n){return gb(Xo,n)}function Nu(n,o){return Xo===null&&er(n),gb(n,o)}function gb(n,o){var l=o._currentValue;if(o={context:o,memoizedValue:l,next:null},dn===null){if(n===null)throw Error(i(308));dn=o,n.dependencies={lanes:0,firstContext:o},n.flags|=524288}else dn=dn.next=o;return l}var hR=typeof AbortController<"u"?AbortController:function(){var n=[],o=this.signal={aborted:!1,addEventListener:function(l,u){n.push(u)}};this.abort=function(){o.aborted=!0,n.forEach(function(l){return l()})}},yR=t.unstable_scheduleCallback,mR=t.unstable_NormalPriority,Mt={$$typeof:T,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Dy(){return{controller:new hR,data:new Map,refCount:0}}function Ll(n){n.refCount--,n.refCount===0&&yR(mR,function(){n.controller.abort()})}var Kl=null,Oy=0,Jr=0,Qr=null;function fR(n,o){if(Kl===null){var l=Kl=[];Oy=0,Jr=Km(),Qr={status:"pending",value:void 0,then:function(u){l.push(u)}}}return Oy++,o.then(kb,kb),o}function kb(){if(--Oy===0&&Kl!==null){Qr!==null&&(Qr.status="fulfilled");var n=Kl;Kl=null,Jr=0,Qr=null;for(var o=0;o<n.length;o++)(0,n[o])()}}function wR(n,o){var l=[],u={status:"pending",value:null,reason:null,then:function(y){l.push(y)}};return n.then(function(){u.status="fulfilled",u.value=o;for(var y=0;y<l.length;y++)(0,l[y])(o)},function(y){for(u.status="rejected",u.reason=y,y=0;y<l.length;y++)(0,l[y])(void 0)}),u}var zb=A.S;A.S=function(n,o){ij=ba(),typeof o=="object"&&o!==null&&typeof o.then=="function"&&fR(n,o),zb!==null&&zb(n,o)};var tr=C(null);function Uy(){var n=tr.current;return n!==null?n:mt.pooledCache}function Bu(n,o){o===null?X(tr,tr.current):X(tr,o.pool)}function bb(){var n=Uy();return n===null?null:{parent:Mt._currentValue,pool:n}}var Xr=Error(i(460)),Ly=Error(i(474)),$u=Error(i(542)),Iu={then:function(){}};function jb(n){return n=n.status,n==="fulfilled"||n==="rejected"}function vb(n,o,l){switch(l=n[l],l===void 0?n.push(o):l!==o&&(o.then(sn,sn),o=l),o.status){case"fulfilled":return o.value;case"rejected":throw n=o.reason,xb(n),n;default:if(typeof o.status=="string")o.then(sn,sn);else{if(n=mt,n!==null&&100<n.shellSuspendCounter)throw Error(i(482));n=o,n.status="pending",n.then(function(u){if(o.status==="pending"){var y=o;y.status="fulfilled",y.value=u}},function(u){if(o.status==="pending"){var y=o;y.status="rejected",y.reason=u}})}switch(o.status){case"fulfilled":return o.value;case"rejected":throw n=o.reason,xb(n),n}throw ir=o,Xr}}function ar(n){try{var o=n._init;return o(n._payload)}catch(l){throw l!==null&&typeof l=="object"&&typeof l.then=="function"?(ir=l,Xr):l}}var ir=null;function Sb(){if(ir===null)throw Error(i(459));var n=ir;return ir=null,n}function xb(n){if(n===Xr||n===$u)throw Error(i(483))}var es=null,Ml=0;function Wu(n){var o=Ml;return Ml+=1,es===null&&(es=[]),vb(es,n,o)}function Nl(n,o){o=o.props.ref,n.ref=o!==void 0?o:null}function Gu(n,o){throw o.$$typeof===g?Error(i(525)):(n=Object.prototype.toString.call(o),Error(i(31,n==="[object Object]"?"object with keys {"+Object.keys(o).join(", ")+"}":n)))}function _b(n){function o(L,D){if(n){var K=L.deletions;K===null?(L.deletions=[D],L.flags|=16):K.push(D)}}function l(L,D){if(!n)return null;for(;D!==null;)o(L,D),D=D.sibling;return null}function u(L){for(var D=new Map;L!==null;)L.key!==null?D.set(L.key,L):D.set(L.index,L),L=L.sibling;return D}function y(L,D){return L=cn(L,D),L.index=0,L.sibling=null,L}function w(L,D,K){return L.index=K,n?(K=L.alternate,K!==null?(K=K.index,K<D?(L.flags|=67108866,D):K):(L.flags|=67108866,D)):(L.flags|=1048576,D)}function b(L){return n&&L.alternate===null&&(L.flags|=67108866),L}function x(L,D,K,Q){return D===null||D.tag!==6?(D=Sy(K,L.mode,Q),D.return=L,D):(D=y(D,K),D.return=L,D)}function P(L,D,K,Q){var Te=K.type;return Te===v?J(L,D,K.props.children,Q,K.key):D!==null&&(D.elementType===Te||typeof Te=="object"&&Te!==null&&Te.$$typeof===I&&ar(Te)===D.type)?(D=y(D,K.props),Nl(D,K),D.return=L,D):(D=Lu(K.type,K.key,K.props,null,L.mode,Q),Nl(D,K),D.return=L,D)}function M(L,D,K,Q){return D===null||D.tag!==4||D.stateNode.containerInfo!==K.containerInfo||D.stateNode.implementation!==K.implementation?(D=xy(K,L.mode,Q),D.return=L,D):(D=y(D,K.children||[]),D.return=L,D)}function J(L,D,K,Q,Te){return D===null||D.tag!==7?(D=Jo(K,L.mode,Q,Te),D.return=L,D):(D=y(D,K),D.return=L,D)}
vendor: 6,110 bytes, line 9
9function te(L,D,K){if(typeof D=="string"&&D!==""||typeof D=="number"||typeof D=="bigint")return D=Sy(""+D,L.mode,K),D.return=L,D;if(typeof D=="object"&&D!==null){switch(D.$$typeof){case z:return K=Lu(D.type,D.key,D.props,null,L.mode,K),Nl(K,D),K.return=L,K;case j:return D=xy(D,L.mode,K),D.return=L,D;case I:return D=ar(D),te(L,D,K)}if(de(D)||Z(D))return D=Jo(D,L.mode,K,null),D.return=L,D;if(typeof D.then=="function")return te(L,Wu(D),K);if(D.$$typeof===T)return te(L,Nu(L,D),K);Gu(L,D)}return null}function $(L,D,K,Q){var Te=D!==null?D.key:null;if(typeof K=="string"&&K!==""||typeof K=="number"||typeof K=="bigint")return Te!==null?null:x(L,D,""+K,Q);if(typeof K=="object"&&K!==null){switch(K.$$typeof){case z:return K.key===Te?P(L,D,K,Q):null;case j:return K.key===Te?M(L,D,K,Q):null;case I:return K=ar(K),$(L,D,K,Q)}if(de(K)||Z(K))return Te!==null?null:J(L,D,K,Q,null);if(typeof K.then=="function")return $(L,D,Wu(K),Q);if(K.$$typeof===T)return $(L,D,Nu(L,K),Q);Gu(L,K)}return null}function V(L,D,K,Q,Te){if(typeof Q=="string"&&Q!==""||typeof Q=="number"||typeof Q=="bigint")return L=L.get(K)||null,x(D,L,""+Q,Te);if(typeof Q=="object"&&Q!==null){switch(Q.$$typeof){case z:return L=L.get(Q.key===null?K:Q.key)||null,P(D,L,Q,Te);case j:return L=L.get(Q.key===null?K:Q.key)||null,M(D,L,Q,Te);case I:return Q=ar(Q),V(L,D,K,Q,Te)}if(de(Q)||Z(Q))return L=L.get(K)||null,J(D,L,Q,Te,null);if(typeof Q.then=="function")return V(L,D,K,Wu(Q),Te);if(Q.$$typeof===T)return V(L,D,K,Nu(D,Q),Te);Gu(D,Q)}return null}function ke(L,D,K,Q){for(var Te=null,tt=null,ve=D,Ke=D=0,He=null;ve!==null&&Ke<K.length;Ke++){ve.index>Ke?(He=ve,ve=null):He=ve.sibling;var at=$(L,ve,K[Ke],Q);if(at===null){ve===null&&(ve=He);break}n&&ve&&at.alternate===null&&o(L,ve),D=w(at,D,Ke),tt===null?Te=at:tt.sibling=at,tt=at,ve=He}if(Ke===K.length)return l(L,ve),Ye&&un(L,Ke),Te;if(ve===null){for(;Ke<K.length;Ke++)ve=te(L,K[Ke],Q),ve!==null&&(D=w(ve,D,Ke),tt===null?Te=ve:tt.sibling=ve,tt=ve);return Ye&&un(L,Ke),Te}for(ve=u(ve);Ke<K.length;Ke++)He=V(ve,L,Ke,K[Ke],Q),He!==null&&(n&&He.alternate!==null&&ve.delete(He.key===null?Ke:He.key),D=w(He,D,Ke),tt===null?Te=He:tt.sibling=He,tt=He);return n&&ve.forEach(function(mo){return o(L,mo)}),Ye&&un(L,Ke),Te}function Ae(L,D,K,Q){if(K==null)throw Error(i(151));for(var Te=null,tt=null,ve=D,Ke=D=0,He=null,at=K.next();ve!==null&&!at.done;Ke++,at=K.next()){ve.index>Ke?(He=ve,ve=null):He=ve.sibling;var mo=$(L,ve,at.value,Q);if(mo===null){ve===null&&(ve=He);break}n&&ve&&mo.alternate===null&&o(L,ve),D=w(mo,D,Ke),tt===null?Te=mo:tt.sibling=mo,tt=mo,ve=He}if(at.done)return l(L,ve),Ye&&un(L,Ke),Te;if(ve===null){for(;!at.done;Ke++,at=K.next())at=te(L,at.value,Q),at!==null&&(D=w(at,D,Ke),tt===null?Te=at:tt.sibling=at,tt=at);return Ye&&un(L,Ke),Te}for(ve=u(ve);!at.done;Ke++,at=K.next())at=V(ve,L,Ke,at.value,Q),at!==null&&(n&&at.alternate!==null&&ve.delete(at.key===null?Ke:at.key),D=w(at,D,Ke),tt===null?Te=at:tt.sibling=at,tt=at);return n&&ve.forEach(function(ED){return o(L,ED)}),Ye&&un(L,Ke),Te}function pt(L,D,K,Q){if(typeof K=="object"&&K!==null&&K.type===v&&K.key===null&&(K=K.props.children),typeof K=="object"&&K!==null){switch(K.$$typeof){case z:e:{for(var Te=K.key;D!==null;){if(D.key===Te){if(Te=K.type,Te===v){if(D.tag===7){l(L,D.sibling),Q=y(D,K.props.children),Q.return=L,L=Q;break e}}else if(D.elementType===Te||typeof Te=="object"&&Te!==null&&Te.$$typeof===I&&ar(Te)===D.type){l(L,D.sibling),Q=y(D,K.props),Nl(Q,K),Q.return=L,L=Q;break e}l(L,D);break}else o(L,D);D=D.sibling}K.type===v?(Q=Jo(K.props.children,L.mode,Q,K.key),Q.return=L,L=Q):(Q=Lu(K.type,K.key,K.props,null,L.mode,Q),Nl(Q,K),Q.return=L,L=Q)}return b(L);case j:e:{for(Te=K.key;D!==null;){if(D.key===Te)if(D.tag===4&&D.stateNode.containerInfo===K.containerInfo&&D.stateNode.implementation===K.implementation){l(L,D.sibling),Q=y(D,K.children||[]),Q.return=L,L=Q;break e}else{l(L,D);break}else o(L,D);D=D.sibling}Q=xy(K,L.mode,Q),Q.return=L,L=Q}return b(L);case I:return K=ar(K),pt(L,D,K,Q)}if(de(K))return ke(L,D,K,Q);if(Z(K)){if(Te=Z(K),typeof Te!="function")throw Error(i(150));return K=Te.call(K),Ae(L,D,K,Q)}if(typeof K.then=="function")return pt(L,D,Wu(K),Q);if(K.$$typeof===T)return pt(L,D,Nu(L,K),Q);Gu(L,K)}return typeof K=="string"&&K!==""||typeof K=="number"||typeof K=="bigint"?(K=""+K,D!==null&&D.tag===6?(l(L,D.sibling),Q=y(D,K),Q.return=L,L=Q):(l(L,D),Q=Sy(K,L.mode,Q),Q.return=L,L=Q),b(L)):l(L,D)}return function(L,D,K,Q){try{Ml=0;var Te=pt(L,D,K,Q);return es=null,Te}catch(ve){if(ve===Xr||ve===$u)throw ve;var tt=Va(29,ve,null,L.mode);return tt.lanes=Q,tt.return=L,tt}}}var nr=_b(!0),Tb=_b(!1),Jn=!1;function Ky(n){n.updateQueue={baseState:n.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function My(n,o){n=n.updateQueue,o.updateQueue===n&&(o.updateQueue={baseState:n.baseState,firstBaseUpdate:n.firstBaseUpdate,lastBaseUpdate:n.lastBaseUpdate,shared:n.shared,callbacks:null})}function Qn(n){return{lane:n,tag:0,payload:null,callback:null,next:null}}function Xn(n,o,l){var u=n.updateQueue;if(u===null)return null;if(u=u.shared,(ot&2)!==0){var y=u.pending;return y===null?o.next=o:(o.next=y.next,y.next=o),u.pending=o,o=Uu(n),ub(n,null,l),o}return Ou(n,u,o,l),Uu(n)}function Bl(n,o,l){if(o=o.updateQueue,o!==null&&(o=o.shared,(l&4194048)!==0)){var u=o.lanes;u&=n.pendingLanes,l|=u,o.lanes=l,Pa(n,l)}}function Ny(n,o){var l=n.updateQueue,u=n.alternate;if(u!==null&&(u=u.updateQueue,l===u)){var y=null,w=null;if(l=l.firstBaseUpdate,l!==null){do{var b={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};w===null?y=w=b:w=w.next=b,l=l.next}while(l!==null);w===null?y=w=o:w=w.next=o}else y=w=o;l={baseState:u.baseState,firstBaseUpdate:y,lastBaseUpdate:w,shared:u.shared,callbacks:u.callbacks},n.updateQueue=l;return}n=l.lastBaseUpdate,n===null?l.firstBaseUpdate=o:n.next=o,l.lastBaseUpdate=o}var By=!1;function $l(){if(By){var n=Qr;if(n!==null)throw n}}function Il(n,o,l,u){By=!1;var y=n.updateQueue;Jn=!1;var w=y.firstBaseUpdate,b=y.lastBaseUpdate,x=y.shared.pending;if(x!==null){y.shared.pending=null;var P=x,M=P.next;
vendor: 4,638 bytes, line 9
9P.next=null,b===null?w=M:b.next=M,b=P;var J=n.alternate;J!==null&&(J=J.updateQueue,x=J.lastBaseUpdate,x!==b&&(x===null?J.firstBaseUpdate=M:x.next=M,J.lastBaseUpdate=P))}if(w!==null){var te=y.baseState;b=0,J=M=P=null,x=w;do{var $=x.lane&-536870913,V=$!==x.lane;if(V?(Fe&$)===$:(u&$)===$){$!==0&&$===Jr&&(By=!0),J!==null&&(J=J.next={lane:0,tag:x.tag,payload:x.payload,callback:null,next:null});e:{var ke=n,Ae=x;$=o;var pt=l;switch(Ae.tag){case 1:if(ke=Ae.payload,typeof ke=="function"){te=ke.call(pt,te,$);break e}te=ke;break e;case 3:ke.flags=ke.flags&-65537|128;case 0:if(ke=Ae.payload,$=typeof ke=="function"?ke.call(pt,te,$):ke,$==null)break e;te=m({},te,$);break e;case 2:Jn=!0}}$=x.callback,$!==null&&(n.flags|=64,V&&(n.flags|=8192),V=y.callbacks,V===null?y.callbacks=[$]:V.push($))}else V={lane:$,tag:x.tag,payload:x.payload,callback:x.callback,next:null},J===null?(M=J=V,P=te):J=J.next=V,b|=$;if(x=x.next,x===null){if(x=y.shared.pending,x===null)break;V=x,x=V.next,V.next=null,y.lastBaseUpdate=V,y.shared.pending=null}}while(!0);J===null&&(P=te),y.baseState=P,y.firstBaseUpdate=M,y.lastBaseUpdate=J,w===null&&(y.shared.lanes=0),no|=b,n.lanes=b,n.memoizedState=te}}function Eb(n,o){if(typeof n!="function")throw Error(i(191,n));n.call(o)}function Ab(n,o){var l=n.callbacks;if(l!==null)for(n.callbacks=null,n=0;n<l.length;n++)Eb(l[n],o)}var ts=C(null),Vu=C(0);function Pb(n,o){n=bn,X(Vu,n),X(ts,o),bn=n|o.baseLanes}function $y(){X(Vu,bn),X(ts,ts.current)}function Iy(){bn=Vu.current,Y(ts),Y(Vu)}var Fa=C(null),ui=null;function eo(n){var o=n.alternate;X(Rt,Rt.current&1),X(Fa,n),ui===null&&(o===null||ts.current!==null||o.memoizedState!==null)&&(ui=n)}function Wy(n){X(Rt,Rt.current),X(Fa,n),ui===null&&(ui=n)}function Cb(n){n.tag===22?(X(Rt,Rt.current),X(Fa,n),ui===null&&(ui=n)):to()}function to(){X(Rt,Rt.current),X(Fa,Fa.current)}function Ha(n){Y(Fa),ui===n&&(ui=null),Y(Rt)}var Rt=C(0);function Fu(n){for(var o=n;o!==null;){if(o.tag===13){var l=o.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||Zm(l)||Ym(l)))return o}else if(o.tag===19&&(o.memoizedProps.revealOrder==="forwards"||o.memoizedProps.revealOrder==="backwards"||o.memoizedProps.revealOrder==="unstable_legacy-backwards"||o.memoizedProps.revealOrder==="together")){if((o.flags&128)!==0)return o}else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===n)break;for(;o.sibling===null;){if(o.return===null||o.return===n)return null;o=o.return}o.sibling.return=o.return,o=o.sibling}return null}var hn=0,Le=null,ut=null,Nt=null,Hu=!1,as=!1,or=!1,qu=0,Wl=0,is=null,gR=0;function Tt(){throw Error(i(321))}function Gy(n,o){if(o===null)return!1;for(var l=0;l<o.length&&l<n.length;l++)if(!Ga(n[l],o[l]))return!1;return!0}function Vy(n,o,l,u,y,w){return hn=w,Le=o,o.memoizedState=null,o.updateQueue=null,o.lanes=0,A.H=n===null||n.memoizedState===null?y0:rm,or=!1,w=l(u,y),or=!1,as&&(w=Db(o,l,u,y)),Rb(n),w}function Rb(n){A.H=Fl;var o=ut!==null&&ut.next!==null;if(hn=0,Nt=ut=Le=null,Hu=!1,Wl=0,is=null,o)throw Error(i(300));n===null||Bt||(n=n.dependencies,n!==null&&Mu(n)&&(Bt=!0))}function Db(n,o,l,u){Le=n;var y=0;do{if(as&&(is=null),Wl=0,as=!1,25<=y)throw Error(i(301));if(y+=1,Nt=ut=null,n.updateQueue!=null){var w=n.updateQueue;w.lastEffect=null,w.events=null,w.stores=null,w.memoCache!=null&&(w.memoCache.index=0)}A.H=m0,w=o(l,u)}while(as);return w}function kR(){var n=A.H,o=n.useState()[0];return o=typeof o.then=="function"?Gl(o):o,n=n.useState()[0],(ut!==null?ut.memoizedState:null)!==n&&(Le.flags|=1024),o}function Fy(){var n=qu!==0;return qu=0,n}function Hy(n,o,l){o.updateQueue=n.updateQueue,o.flags&=-2053,n.lanes&=~l}function qy(n){if(Hu){for(n=n.memoizedState;n!==null;){var o=n.queue;o!==null&&(o.pending=null),n=n.next}Hu=!1}hn=0,Nt=ut=Le=null,as=!1,Wl=qu=0,is=null}function va(){var n={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Nt===null?Le.memoizedState=Nt=n:Nt=Nt.next=n,Nt}function Dt(){if(ut===null){var n=Le.alternate;n=n!==null?n.memoizedState:null}else n=ut.next;var o=Nt===null?Le.memoizedState:Nt.next;if(o!==null)Nt=o,ut=n;else{if(n===null)throw Le.alternate===null?Error(i(467)):Error(i(310));ut=n,n={memoizedState:ut.memoizedState,baseState:ut.baseState,baseQueue:ut.baseQueue,queue:ut.queue,next:null},Nt===null?Le.memoizedState=Nt=n:Nt=Nt.next=n}return Nt}function Zu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Gl(n){var o=Wl;return Wl+=1,is===null&&(is=[]),n=vb(is,n,o),o=Le,(Nt===null?o.memoizedState:Nt.next)===null&&(o=o.alternate,A.H=o===null||o.memoizedState===null?y0:rm),n}function Yu(n){if(n!==null&&typeof n=="object"){if(typeof n.then=="function")return Gl
vendor: 4,896 bytes, line 9
9(n);if(n.$$typeof===T)return ra(n)}throw Error(i(438,String(n)))}function Zy(n){var o=null,l=Le.updateQueue;if(l!==null&&(o=l.memoCache),o==null){var u=Le.alternate;u!==null&&(u=u.updateQueue,u!==null&&(u=u.memoCache,u!=null&&(o={data:u.data.map(function(y){return y.slice()}),index:0})))}if(o==null&&(o={data:[],index:0}),l===null&&(l=Zu(),Le.updateQueue=l),l.memoCache=o,l=o.data[o.index],l===void 0)for(l=o.data[o.index]=Array(n),u=0;u<n;u++)l[u]=ee;return o.index++,l}function yn(n,o){return typeof o=="function"?o(n):o}function Ju(n){var o=Dt();return Yy(o,ut,n)}function Yy(n,o,l){var u=n.queue;if(u===null)throw Error(i(311));u.lastRenderedReducer=l;var y=n.baseQueue,w=u.pending;if(w!==null){if(y!==null){var b=y.next;y.next=w.next,w.next=b}o.baseQueue=y=w,u.pending=null}if(w=n.baseState,y===null)n.memoizedState=w;else{o=y.next;var x=b=null,P=null,M=o,J=!1;do{var te=M.lane&-536870913;if(te!==M.lane?(Fe&te)===te:(hn&te)===te){var $=M.revertLane;if($===0)P!==null&&(P=P.next={lane:0,revertLane:0,gesture:null,action:M.action,hasEagerState:M.hasEagerState,eagerState:M.eagerState,next:null}),te===Jr&&(J=!0);else if((hn&$)===$){M=M.next,$===Jr&&(J=!0);continue}else te={lane:0,revertLane:M.revertLane,gesture:null,action:M.action,hasEagerState:M.hasEagerState,eagerState:M.eagerState,next:null},P===null?(x=P=te,b=w):P=P.next=te,Le.lanes|=$,no|=$;te=M.action,or&&l(w,te),w=M.hasEagerState?M.eagerState:l(w,te)}else $={lane:te,revertLane:M.revertLane,gesture:M.gesture,action:M.action,hasEagerState:M.hasEagerState,eagerState:M.eagerState,next:null},P===null?(x=P=$,b=w):P=P.next=$,Le.lanes|=te,no|=te;M=M.next}while(M!==null&&M!==o);if(P===null?b=w:P.next=x,!Ga(w,n.memoizedState)&&(Bt=!0,J&&(l=Qr,l!==null)))throw l;n.memoizedState=w,n.baseState=b,n.baseQueue=P,u.lastRenderedState=w}return y===null&&(u.lanes=0),[n.memoizedState,u.dispatch]}function Jy(n){var o=Dt(),l=o.queue;if(l===null)throw Error(i(311));l.lastRenderedReducer=n;var u=l.dispatch,y=l.pending,w=o.memoizedState;if(y!==null){l.pending=null;var b=y=y.next;do w=n(w,b.action),b=b.next;while(b!==y);Ga(w,o.memoizedState)||(Bt=!0),o.memoizedState=w,o.baseQueue===null&&(o.baseState=w),l.lastRenderedState=w}return[w,u]}function Ob(n,o,l){var u=Le,y=Dt(),w=Ye;if(w){if(l===void 0)throw Error(i(407));l=l()}else l=o();var b=!Ga((ut||y).memoizedState,l);if(b&&(y.memoizedState=l,Bt=!0),y=y.queue,em(Kb.bind(null,u,y,n),[n]),y.getSnapshot!==o||b||Nt!==null&&Nt.memoizedState.tag&1){if(u.flags|=2048,ns(9,{destroy:void 0},Lb.bind(null,u,y,l,o),null),mt===null)throw Error(i(349));w||(hn&127)!==0||Ub(u,o,l)}return l}function Ub(n,o,l){n.flags|=16384,n={getSnapshot:o,value:l},o=Le.updateQueue,o===null?(o=Zu(),Le.updateQueue=o,o.stores=[n]):(l=o.stores,l===null?o.stores=[n]:l.push(n))}function Lb(n,o,l,u){o.value=l,o.getSnapshot=u,Mb(o)&&Nb(n)}function Kb(n,o,l){return l(function(){Mb(o)&&Nb(n)})}function Mb(n){var o=n.getSnapshot;n=n.value;try{var l=o();return!Ga(n,l)}catch{return!0}}function Nb(n){var o=Yo(n,2);o!==null&&Ma(o,n,2)}function Qy(n){var o=va();if(typeof n=="function"){var l=n;if(n=l(),or){bi(!0);try{l()}finally{bi(!1)}}}return o.memoizedState=o.baseState=n,o.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:n},o}function Bb(n,o,l,u){return n.baseState=l,Yy(n,ut,typeof u=="function"?u:yn)}function zR(n,o,l,u,y){if(ed(n))throw Error(i(485));if(n=o.action,n!==null){var w={payload:y,action:n,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(b){w.listeners.push(b)}};A.T!==null?l(!0):w.isTransition=!1,u(w),l=o.pending,l===null?(w.next=o.pending=w,$b(o,w)):(w.next=l.next,o.pending=l.next=w)}}function $b(n,o){var l=o.action,u=o.payload,y=n.state;if(o.isTransition){var w=A.T,b={};A.T=b;try{var x=l(y,u),P=A.S;P!==null&&P(b,x),Ib(n,o,x)}catch(M){Xy(n,o,M)}finally{w!==null&&b.types!==null&&(w.types=b.types),A.T=w}}else try{w=l(y,u),Ib(n,o,w)}catch(M){Xy(n,o,M)}}function Ib(n,o,l){l!==null&&typeof l=="object"&&typeof l.then=="function"?l.then(function(u){Wb(n,o,u)},function(u){return Xy(n,o,u)}):Wb(n,o,l)}function Wb(n,o,l){o.status="fulfilled",o.value=l,Gb(o),n.state=l,o=n.pending,o!==null&&(l=o.next,l===o?n.pending=null:(l=l.next,o.next=l,$b(n,l)))}function Xy(n,o,l){var u=n.pending;if(n.pending=null,u!==null){u=u.next;do o.status="rejected",o.reason=l,Gb(o),o=o.next;while(o!==u)}n.action=null}function Gb(n){n=n.listeners;for(var o=0;o<n.length;o++)(0,n[o])()}function Vb(n,o){return o}function Fb(n,o){if(Ye){var l=mt.formState;if(l!==null){e:{var u=Le;if(Ye){if(bt){t:{for(var y=bt,w=ci;y.nodeType!==8;){if(!w){y=null;break t}if(y=di(y.nextSibling),y===null){y=null;break t}}w=y.data,y=w==="F!"||w==="F"?y:null}if(y){bt=di(y.nextSibling),u=y.data==="F!";break e}}Zn(u)}u=!1}u&&(o=l[0])}}return l=va(),l.memoizedState=l.baseState=o,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vb,lastRenderedState:o}
vendor: 4,916 bytes, line 9
9,l.queue=u,l=d0.bind(null,Le,u),u.dispatch=l,u=Qy(!1),w=om.bind(null,Le,!1,u.queue),u=va(),y={state:o,dispatch:null,action:n,pending:null},u.queue=y,l=zR.bind(null,Le,y,w,l),y.dispatch=l,u.memoizedState=n,[o,l,!1]}function Hb(n){var o=Dt();return qb(o,ut,n)}function qb(n,o,l){if(o=Yy(n,o,Vb)[0],n=Ju(yn)[0],typeof o=="object"&&o!==null&&typeof o.then=="function")try{var u=Gl(o)}catch(b){throw b===Xr?$u:b}else u=o;o=Dt();var y=o.queue,w=y.dispatch;return l!==o.memoizedState&&(Le.flags|=2048,ns(9,{destroy:void 0},bR.bind(null,y,l),null)),[u,w,n]}function bR(n,o){n.action=o}function Zb(n){var o=Dt(),l=ut;if(l!==null)return qb(o,l,n);Dt(),o=o.memoizedState,l=Dt();var u=l.queue.dispatch;return l.memoizedState=n,[o,u,!1]}function ns(n,o,l,u){return n={tag:n,create:l,deps:u,inst:o,next:null},o=Le.updateQueue,o===null&&(o=Zu(),Le.updateQueue=o),l=o.lastEffect,l===null?o.lastEffect=n.next=n:(u=l.next,l.next=n,n.next=u,o.lastEffect=n),n}function Yb(){return Dt().memoizedState}function Qu(n,o,l,u){var y=va();Le.flags|=n,y.memoizedState=ns(1|o,{destroy:void 0},l,u===void 0?null:u)}function Xu(n,o,l,u){var y=Dt();u=u===void 0?null:u;var w=y.memoizedState.inst;ut!==null&&u!==null&&Gy(u,ut.memoizedState.deps)?y.memoizedState=ns(o,w,l,u):(Le.flags|=n,y.memoizedState=ns(1|o,w,l,u))}function Jb(n,o){Qu(8390656,8,n,o)}function em(n,o){Xu(2048,8,n,o)}function jR(n){Le.flags|=4;var o=Le.updateQueue;if(o===null)o=Zu(),Le.updateQueue=o,o.events=[n];else{var l=o.events;l===null?o.events=[n]:l.push(n)}}function Qb(n){var o=Dt().memoizedState;return jR({ref:o,nextImpl:n}),function(){if((ot&2)!==0)throw Error(i(440));return o.impl.apply(void 0,arguments)}}function Xb(n,o){return Xu(4,2,n,o)}function e0(n,o){return Xu(4,4,n,o)}function t0(n,o){if(typeof o=="function"){n=n();var l=o(n);return function(){typeof l=="function"?l():o(null)}}if(o!=null)return n=n(),o.current=n,function(){o.current=null}}function a0(n,o,l){l=l!=null?l.concat([n]):null,Xu(4,4,t0.bind(null,o,n),l)}function tm(){}function i0(n,o){var l=Dt();o=o===void 0?null:o;var u=l.memoizedState;return o!==null&&Gy(o,u[1])?u[0]:(l.memoizedState=[n,o],n)}function n0(n,o){var l=Dt();o=o===void 0?null:o;var u=l.memoizedState;if(o!==null&&Gy(o,u[1]))return u[0];if(u=n(),or){bi(!0);try{n()}finally{bi(!1)}}return l.memoizedState=[u,o],u}function am(n,o,l){return l===void 0||(hn&1073741824)!==0&&(Fe&261930)===0?n.memoizedState=o:(n.memoizedState=l,n=oj(),Le.lanes|=n,no|=n,l)}function o0(n,o,l,u){return Ga(l,o)?l:ts.current!==null?(n=am(n,l,u),Ga(n,o)||(Bt=!0),n):(hn&42)===0||(hn&1073741824)!==0&&(Fe&261930)===0?(Bt=!0,n.memoizedState=l):(n=oj(),Le.lanes|=n,no|=n,o)}function r0(n,o,l,u,y){var w=B.p;B.p=w!==0&&8>w?w:8;var b=A.T,x={};A.T=x,om(n,!1,o,l);try{var P=y(),M=A.S;if(M!==null&&M(x,P),P!==null&&typeof P=="object"&&typeof P.then=="function"){var J=wR(P,u);Vl(n,o,J,Ya(n))}else Vl(n,o,u,Ya(n))}catch(te){Vl(n,o,{then:function(){},status:"rejected",reason:te},Ya())}finally{B.p=w,b!==null&&x.types!==null&&(b.types=x.types),A.T=b}}function vR(){}function im(n,o,l,u){if(n.tag!==5)throw Error(i(476));var y=s0(n).queue;r0(n,y,o,ne,l===null?vR:function(){return l0(n),l(u)})}function s0(n){var o=n.memoizedState;if(o!==null)return o;o={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:ne},next:null};var l={};return o.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:l},next:null},n.memoizedState=o,n=n.alternate,n!==null&&(n.memoizedState=o),o}function l0(n){var o=s0(n);o.next===null&&(o=n.alternate.memoizedState),Vl(n,o.next.queue,{},Ya())}function nm(){return ra(lc)}function c0(){return Dt().memoizedState}function u0(){return Dt().memoizedState}function SR(n){for(var o=n.return;o!==null;){switch(o.tag){case 24:case 3:var l=Ya();n=Qn(l);var u=Xn(o,n,l);u!==null&&(Ma(u,o,l),Bl(u,o,l)),o={cache:Dy()},n.payload=o;return}o=o.return}}function xR(n,o,l){var u=Ya();l={lane:u,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ed(n)?p0(o,l):(l=jy(n,o,l,u),l!==null&&(Ma(l,n,u),h0(l,o,u)))}function d0(n,o,l){var u=Ya();Vl(n,o,l,u)}function Vl(n,o,l,u){var y={lane:u,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(ed(n))p0(o,y);else{var w=n.alternate;if(n.lanes===0&&(w===null||w.lanes===0)&&(w=o.lastRenderedReducer,w!==null))try{var b=o.lastRenderedState,x=w(b,l);if(y.hasEagerState=!0,y.eagerState=x,Ga(x,b))return Ou(n,o,y,0),mt===null&&Du(),!1}catch{}if(l=jy(n,o,y,u),l!==null)return Ma(l,n,u),h0(l,o,u),!0}return!1}function om(n,o,l,u){if(u={lane:2,revertLane:Km(),gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},ed(n)){if(o)throw Error(i(479))}else o=jy(n,l,u,2),o!==null&&Ma(o,n,2)}function ed(n){var o=n.alternate;return n===Le||o!==null&&o===Le}function p0(n,o){as=Hu=!0;var l=n.pending;
vendor: 4,962 bytes, line 9
9l===null?o.next=o:(o.next=l.next,l.next=o),n.pending=o}function h0(n,o,l){if((l&4194048)!==0){var u=o.lanes;u&=n.pendingLanes,l|=u,o.lanes=l,Pa(n,l)}}var Fl={readContext:ra,use:Yu,useCallback:Tt,useContext:Tt,useEffect:Tt,useImperativeHandle:Tt,useLayoutEffect:Tt,useInsertionEffect:Tt,useMemo:Tt,useReducer:Tt,useRef:Tt,useState:Tt,useDebugValue:Tt,useDeferredValue:Tt,useTransition:Tt,useSyncExternalStore:Tt,useId:Tt,useHostTransitionStatus:Tt,useFormState:Tt,useActionState:Tt,useOptimistic:Tt,useMemoCache:Tt,useCacheRefresh:Tt};Fl.useEffectEvent=Tt;var y0={readContext:ra,use:Yu,useCallback:function(n,o){return va().memoizedState=[n,o===void 0?null:o],n},useContext:ra,useEffect:Jb,useImperativeHandle:function(n,o,l){l=l!=null?l.concat([n]):null,Qu(4194308,4,t0.bind(null,o,n),l)},useLayoutEffect:function(n,o){return Qu(4194308,4,n,o)},useInsertionEffect:function(n,o){Qu(4,2,n,o)},useMemo:function(n,o){var l=va();o=o===void 0?null:o;var u=n();if(or){bi(!0);try{n()}finally{bi(!1)}}return l.memoizedState=[u,o],u},useReducer:function(n,o,l){var u=va();if(l!==void 0){var y=l(o);if(or){bi(!0);try{l(o)}finally{bi(!1)}}}else y=o;return u.memoizedState=u.baseState=y,n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:y},u.queue=n,n=n.dispatch=xR.bind(null,Le,n),[u.memoizedState,n]},useRef:function(n){var o=va();return n={current:n},o.memoizedState=n},useState:function(n){n=Qy(n);var o=n.queue,l=d0.bind(null,Le,o);return o.dispatch=l,[n.memoizedState,l]},useDebugValue:tm,useDeferredValue:function(n,o){var l=va();return am(l,n,o)},useTransition:function(){var n=Qy(!1);return n=r0.bind(null,Le,n.queue,!0,!1),va().memoizedState=n,[!1,n]},useSyncExternalStore:function(n,o,l){var u=Le,y=va();if(Ye){if(l===void 0)throw Error(i(407));l=l()}else{if(l=o(),mt===null)throw Error(i(349));(Fe&127)!==0||Ub(u,o,l)}y.memoizedState=l;var w={value:l,getSnapshot:o};return y.queue=w,Jb(Kb.bind(null,u,w,n),[n]),u.flags|=2048,ns(9,{destroy:void 0},Lb.bind(null,u,w,l,o),null),l},useId:function(){var n=va(),o=mt.identifierPrefix;if(Ye){var l=$i,u=Bi;l=(u&~(1<<32-ya(u)-1)).toString(32)+l,o="_"+o+"R_"+l,l=qu++,0<l&&(o+="H"+l.toString(32)),o+="_"}else l=gR++,o="_"+o+"r_"+l.toString(32)+"_";return n.memoizedState=o},useHostTransitionStatus:nm,useFormState:Fb,useActionState:Fb,useOptimistic:function(n){var o=va();o.memoizedState=o.baseState=n;var l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return o.queue=l,o=om.bind(null,Le,!0,l),l.dispatch=o,[n,o]},useMemoCache:Zy,useCacheRefresh:function(){return va().memoizedState=SR.bind(null,Le)},useEffectEvent:function(n){var o=va(),l={impl:n};return o.memoizedState=l,function(){if((ot&2)!==0)throw Error(i(440));return l.impl.apply(void 0,arguments)}}},rm={readContext:ra,use:Yu,useCallback:i0,useContext:ra,useEffect:em,useImperativeHandle:a0,useInsertionEffect:Xb,useLayoutEffect:e0,useMemo:n0,useReducer:Ju,useRef:Yb,useState:function(){return Ju(yn)},useDebugValue:tm,useDeferredValue:function(n,o){var l=Dt();return o0(l,ut.memoizedState,n,o)},useTransition:function(){var n=Ju(yn)[0],o=Dt().memoizedState;return[typeof n=="boolean"?n:Gl(n),o]},useSyncExternalStore:Ob,useId:c0,useHostTransitionStatus:nm,useFormState:Hb,useActionState:Hb,useOptimistic:function(n,o){var l=Dt();return Bb(l,ut,n,o)},useMemoCache:Zy,useCacheRefresh:u0};rm.useEffectEvent=Qb;var m0={readContext:ra,use:Yu,useCallback:i0,useContext:ra,useEffect:em,useImperativeHandle:a0,useInsertionEffect:Xb,useLayoutEffect:e0,useMemo:n0,useReducer:Jy,useRef:Yb,useState:function(){return Jy(yn)},useDebugValue:tm,useDeferredValue:function(n,o){var l=Dt();return ut===null?am(l,n,o):o0(l,ut.memoizedState,n,o)},useTransition:function(){var n=Jy(yn)[0],o=Dt().memoizedState;return[typeof n=="boolean"?n:Gl(n),o]},useSyncExternalStore:Ob,useId:c0,useHostTransitionStatus:nm,useFormState:Zb,useActionState:Zb,useOptimistic:function(n,o){var l=Dt();return ut!==null?Bb(l,ut,n,o):(l.baseState=n,[n,l.queue.dispatch])},useMemoCache:Zy,useCacheRefresh:u0};m0.useEffectEvent=Qb;function sm(n,o,l,u){o=n.memoizedState,l=l(u,o),l=l==null?o:m({},o,l),n.memoizedState=l,n.lanes===0&&(n.updateQueue.baseState=l)}var lm={enqueueSetState:function(n,o,l){n=n._reactInternals;var u=Ya(),y=Qn(u);y.payload=o,l!=null&&(y.callback=l),o=Xn(n,y,u),o!==null&&(Ma(o,n,u),Bl(o,n,u))},enqueueReplaceState:function(n,o,l){n=n._reactInternals;var u=Ya(),y=Qn(u);y.tag=1,y.payload=o,l!=null&&(y.callback=l),o=Xn(n,y,u),o!==null&&(Ma(o,n,u),Bl(o,n,u))},enqueueForceUpdate:function(n,o){n=n._reactInternals;var l=Ya(),u=Qn(l);u.tag=2,o!=null&&(u.callback=o),o=Xn(n,u,l),o!==null&&(Ma(o,n,l),Bl(o,n,l))}};function f0(n,o,l,u,y,w,b){return n=n.stateNode,typeof n.shouldComponentUpdate=="function"?n.shouldComponentUpdate(u,w,b):o.prototype&&o.prototype.isPureReactComponent?!Rl(l,u)||!Rl(y,w):!0}function w0(n,o,l,u){n=o.state,typeof o.componentWillReceiveProps=="function"&&o.componentWillReceiveProps(l,u),t
vendor: 5,632 bytes, line 9
9ypeof o.UNSAFE_componentWillReceiveProps=="function"&&o.UNSAFE_componentWillReceiveProps(l,u),o.state!==n&&lm.enqueueReplaceState(o,o.state,null)}function rr(n,o){var l=o;if("ref"in o){l={};for(var u in o)u!=="ref"&&(l[u]=o[u])}if(n=n.defaultProps){l===o&&(l=m({},l));for(var y in n)l[y]===void 0&&(l[y]=n[y])}return l}function g0(n){Ru(n)}function k0(n){console.error(n)}function z0(n){Ru(n)}function td(n,o){try{var l=n.onUncaughtError;l(o.value,{componentStack:o.stack})}catch(u){setTimeout(function(){throw u})}}function b0(n,o,l){try{var u=n.onCaughtError;u(l.value,{componentStack:l.stack,errorBoundary:o.tag===1?o.stateNode:null})}catch(y){setTimeout(function(){throw y})}}function cm(n,o,l){return l=Qn(l),l.tag=3,l.payload={element:null},l.callback=function(){td(n,o)},l}function j0(n){return n=Qn(n),n.tag=3,n}function v0(n,o,l,u){var y=l.type.getDerivedStateFromError;if(typeof y=="function"){var w=u.value;n.payload=function(){return y(w)},n.callback=function(){b0(o,l,u)}}var b=l.stateNode;b!==null&&typeof b.componentDidCatch=="function"&&(n.callback=function(){b0(o,l,u),typeof y!="function"&&(oo===null?oo=new Set([this]):oo.add(this));var x=u.stack;this.componentDidCatch(u.value,{componentStack:x!==null?x:""})})}function _R(n,o,l,u,y){if(l.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(o=l.alternate,o!==null&&Yr(o,l,y,!0),l=Fa.current,l!==null){switch(l.tag){case 31:case 13:return ui===null?hd():l.alternate===null&&Et===0&&(Et=3),l.flags&=-257,l.flags|=65536,l.lanes=y,u===Iu?l.flags|=16384:(o=l.updateQueue,o===null?l.updateQueue=new Set([u]):o.add(u),Om(n,u,y)),!1;case 22:return l.flags|=65536,u===Iu?l.flags|=16384:(o=l.updateQueue,o===null?(o={transitions:null,markerInstances:null,retryQueue:new Set([u])},l.updateQueue=o):(l=o.retryQueue,l===null?o.retryQueue=new Set([u]):l.add(u)),Om(n,u,y)),!1}throw Error(i(435,l.tag))}return Om(n,u,y),hd(),!1}if(Ye)return o=Fa.current,o!==null?((o.flags&65536)===0&&(o.flags|=256),o.flags|=65536,o.lanes=y,u!==Ey&&(n=Error(i(422),{cause:u}),Ul(ri(n,l)))):(u!==Ey&&(o=Error(i(423),{cause:u}),Ul(ri(o,l))),n=n.current.alternate,n.flags|=65536,y&=-y,n.lanes|=y,u=ri(u,l),y=cm(n.stateNode,u,y),Ny(n,y),Et!==4&&(Et=2)),!1;var w=Error(i(520),{cause:u});if(w=ri(w,l),ec===null?ec=[w]:ec.push(w),Et!==4&&(Et=2),o===null)return!0;u=ri(u,l),l=o;do{switch(l.tag){case 3:return l.flags|=65536,n=y&-y,l.lanes|=n,n=cm(l.stateNode,u,n),Ny(l,n),!1;case 1:if(o=l.type,w=l.stateNode,(l.flags&128)===0&&(typeof o.getDerivedStateFromError=="function"||w!==null&&typeof w.componentDidCatch=="function"&&(oo===null||!oo.has(w))))return l.flags|=65536,y&=-y,l.lanes|=y,y=j0(y),v0(y,n,l,u),Ny(l,y),!1}l=l.return}while(l!==null);return!1}var um=Error(i(461)),Bt=!1;function sa(n,o,l,u){o.child=n===null?Tb(o,null,l,u):nr(o,n.child,l,u)}function S0(n,o,l,u,y){l=l.render;var w=o.ref;if("ref"in u){var b={};for(var x in u)x!=="ref"&&(b[x]=u[x])}else b=u;return er(o),u=Vy(n,o,l,b,w,y),x=Fy(),n!==null&&!Bt?(Hy(n,o,y),mn(n,o,y)):(Ye&&x&&_y(o),o.flags|=1,sa(n,o,u,y),o.child)}function x0(n,o,l,u,y){if(n===null){var w=l.type;return typeof w=="function"&&!vy(w)&&w.defaultProps===void 0&&l.compare===null?(o.tag=15,o.type=w,_0(n,o,w,u,y)):(n=Lu(l.type,null,u,o,o.mode,y),n.ref=o.ref,n.return=o,o.child=n)}if(w=n.child,!gm(n,y)){var b=w.memoizedProps;if(l=l.compare,l=l!==null?l:Rl,l(b,u)&&n.ref===o.ref)return mn(n,o,y)}return o.flags|=1,n=cn(w,u),n.ref=o.ref,n.return=o,o.child=n}function _0(n,o,l,u,y){if(n!==null){var w=n.memoizedProps;if(Rl(w,u)&&n.ref===o.ref)if(Bt=!1,o.pendingProps=u=w,gm(n,y))(n.flags&131072)!==0&&(Bt=!0);else return o.lanes=n.lanes,mn(n,o,y)}return dm(n,o,l,u,y)}function T0(n,o,l,u){var y=u.children,w=n!==null?n.memoizedState:null;if(n===null&&o.stateNode===null&&(o.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),u.mode==="hidden"){if((o.flags&128)!==0){if(w=w!==null?w.baseLanes|l:l,n!==null){for(u=o.child=n.child,y=0;u!==null;)y=y|u.lanes|u.childLanes,u=u.sibling;u=y&~w}else u=0,o.child=null;return E0(n,o,w,l,u)}if((l&536870912)!==0)o.memoizedState={baseLanes:0,cachePool:null},n!==null&&Bu(o,w!==null?w.cachePool:null),w!==null?Pb(o,w):$y(),Cb(o);else return u=o.lanes=536870912,E0(n,o,w!==null?w.baseLanes|l:l,l,u)}else w!==null?(Bu(o,w.cachePool),Pb(o,w),to(),o.memoizedState=null):(n!==null&&Bu(o,null),$y(),to());return sa(n,o,y,l),o.child}function Hl(n,o){return n!==null&&n.tag===22||o.stateNode!==null||(o.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),o.sibling}function E0(n,o,l,u,y){var w=Uy();return w=w===null?null:{parent:Mt._currentValue,pool:w},o.memoizedState={baseLanes:l,cachePool:w},n!==null&&Bu(o,null),$y(),Cb(o),n!==null&&Yr(n,o,u,!0),o.childLanes=y,null}function ad(n,o){return o=nd({mode:o.mode,children:o.children},n.mode),o.ref=n.ref,n.child=o,o.return=n,o}function A0(n,o,l){return nr(o,n.child,null,l),n=ad(o,o.pendingProps),n.flags|=2,Ha(o),o.memoizedState=null,n}function TR(n,o,l){var u=o.pendingProps,y=(o.flags&128)!==0;if(o.flags&=-129,n===null){if(Ye){if(u.mode==="hidden")return n=ad(o,u),o.lanes=536870912,Hl(null,n);if(Wy(o),(n=bt)?(n=$j(n,ci),n=n!==null&&n.data==="&"?n:null,n!==null&&(o.memoizedState={dehydrated:n,treeContext:Hn!==null?{id:Bi,overflow:$i}:null,retryLane:536870912,hydrationErrors:null},l=pb(n),l.return=o,o.child=l,oa=o,bt=null)):n=null,n===null)throw Zn(o);return o.lanes=536870912,null}return ad(o,u)}var w=n.memoizedState;if(w!==null){var b=w.dehydrated;if(Wy(o),y)if(o.flags&256)o.flags&=-257,o=A0(n,o,l);else if(o.memoizedState!==null)o.child=n.child,o.flags|=128,o=null;else throw Error(i(558));
vendor: 1,276 bytes, line 9
9else if(Bt||Yr(n,o,l,!1),y=(l&n.childLanes)!==0,Bt||y){if(u=mt,u!==null&&(b=Ca(u,l),b!==0&&b!==w.retryLane))throw w.retryLane=b,Yo(n,b),Ma(u,n,b),um;hd(),o=A0(n,o,l)}else n=w.treeContext,bt=di(b.nextSibling),oa=o,Ye=!0,qn=null,ci=!1,n!==null&&mb(o,n),o=ad(o,u),o.flags|=4096;return o}return n=cn(n.child,{mode:u.mode,children:u.children}),n.ref=o.ref,o.child=n,n.return=o,n}function id(n,o){var l=o.ref;if(l===null)n!==null&&n.ref!==null&&(o.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(i(284));(n===null||n.ref!==l)&&(o.flags|=4194816)}}function dm(n,o,l,u,y){return er(o),l=Vy(n,o,l,u,void 0,y),u=Fy(),n!==null&&!Bt?(Hy(n,o,y),mn(n,o,y)):(Ye&&u&&_y(o),o.flags|=1,sa(n,o,l,y),o.child)}function P0(n,o,l,u,y,w){return er(o),o.updateQueue=null,l=Db(o,u,l,y),Rb(n),u=Fy(),n!==null&&!Bt?(Hy(n,o,w),mn(n,o,w)):(Ye&&u&&_y(o),o.flags|=1,sa(n,o,l,w),o.child)}function C0(n,o,l,u,y){if(er(o),o.stateNode===null){var w=Fr,b=l.contextType;typeof b=="object"&&b!==null&&(w=ra(b)),w=new l(u,w),o.memoizedState=w.state!==null&&w.state!==void 0?w.state:null,w.updater=lm,o.stateNode=w,w._reactInternals=o,w=o.stateNode,w.props=u,w.state=o.memoizedState,w.refs={},Ky(o),b=l.contextType,w.context=typeof b=="object"&&b!==null?ra(b):Fr,w.state=o.memoizedState,b
vendor: 9,876 bytes, line 9
9=l.getDerivedStateFromProps,typeof b=="function"&&(sm(o,l,b,u),w.state=o.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof w.getSnapshotBeforeUpdate=="function"||typeof w.UNSAFE_componentWillMount!="function"&&typeof w.componentWillMount!="function"||(b=w.state,typeof w.componentWillMount=="function"&&w.componentWillMount(),typeof w.UNSAFE_componentWillMount=="function"&&w.UNSAFE_componentWillMount(),b!==w.state&&lm.enqueueReplaceState(w,w.state,null),Il(o,u,w,y),$l(),w.state=o.memoizedState),typeof w.componentDidMount=="function"&&(o.flags|=4194308),u=!0}else if(n===null){w=o.stateNode;var x=o.memoizedProps,P=rr(l,x);w.props=P;var M=w.context,J=l.contextType;b=Fr,typeof J=="object"&&J!==null&&(b=ra(J));var te=l.getDerivedStateFromProps;J=typeof te=="function"||typeof w.getSnapshotBeforeUpdate=="function",x=o.pendingProps!==x,J||typeof w.UNSAFE_componentWillReceiveProps!="function"&&typeof w.componentWillReceiveProps!="function"||(x||M!==b)&&w0(o,w,u,b),Jn=!1;var $=o.memoizedState;w.state=$,Il(o,u,w,y),$l(),M=o.memoizedState,x||$!==M||Jn?(typeof te=="function"&&(sm(o,l,te,u),M=o.memoizedState),(P=Jn||f0(o,l,P,u,$,M,b))?(J||typeof w.UNSAFE_componentWillMount!="function"&&typeof w.componentWillMount!="function"||(typeof w.componentWillMount=="function"&&w.componentWillMount(),typeof w.UNSAFE_componentWillMount=="function"&&w.UNSAFE_componentWillMount()),typeof w.componentDidMount=="function"&&(o.flags|=4194308)):(typeof w.componentDidMount=="function"&&(o.flags|=4194308),o.memoizedProps=u,o.memoizedState=M),w.props=u,w.state=M,w.context=b,u=P):(typeof w.componentDidMount=="function"&&(o.flags|=4194308),u=!1)}else{w=o.stateNode,My(n,o),b=o.memoizedProps,J=rr(l,b),w.props=J,te=o.pendingProps,$=w.context,M=l.contextType,P=Fr,typeof M=="object"&&M!==null&&(P=ra(M)),x=l.getDerivedStateFromProps,(M=typeof x=="function"||typeof w.getSnapshotBeforeUpdate=="function")||typeof w.UNSAFE_componentWillReceiveProps!="function"&&typeof w.componentWillReceiveProps!="function"||(b!==te||$!==P)&&w0(o,w,u,P),Jn=!1,$=o.memoizedState,w.state=$,Il(o,u,w,y),$l();var V=o.memoizedState;b!==te||$!==V||Jn||n!==null&&n.dependencies!==null&&Mu(n.dependencies)?(typeof x=="function"&&(sm(o,l,x,u),V=o.memoizedState),(J=Jn||f0(o,l,J,u,$,V,P)||n!==null&&n.dependencies!==null&&Mu(n.dependencies))?(M||typeof w.UNSAFE_componentWillUpdate!="function"&&typeof w.componentWillUpdate!="function"||(typeof w.componentWillUpdate=="function"&&w.componentWillUpdate(u,V,P),typeof w.UNSAFE_componentWillUpdate=="function"&&w.UNSAFE_componentWillUpdate(u,V,P)),typeof w.componentDidUpdate=="function"&&(o.flags|=4),typeof w.getSnapshotBeforeUpdate=="function"&&(o.flags|=1024)):(typeof w.componentDidUpdate!="function"||b===n.memoizedProps&&$===n.memoizedState||(o.flags|=4),typeof w.getSnapshotBeforeUpdate!="function"||b===n.memoizedProps&&$===n.memoizedState||(o.flags|=1024),o.memoizedProps=u,o.memoizedState=V),w.props=u,w.state=V,w.context=P,u=J):(typeof w.componentDidUpdate!="function"||b===n.memoizedProps&&$===n.memoizedState||(o.flags|=4),typeof w.getSnapshotBeforeUpdate!="function"||b===n.memoizedProps&&$===n.memoizedState||(o.flags|=1024),u=!1)}return w=u,id(n,o),u=(o.flags&128)!==0,w||u?(w=o.stateNode,l=u&&typeof l.getDerivedStateFromError!="function"?null:w.render(),o.flags|=1,n!==null&&u?(o.child=nr(o,n.child,null,y),o.child=nr(o,null,l,y)):sa(n,o,l,y),o.memoizedState=w.state,n=o.child):n=mn(n,o,y),n}function R0(n,o,l,u){return Qo(),o.flags|=256,sa(n,o,l,u),o.child}var pm={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function hm(n){return{baseLanes:n,cachePool:bb()}}function ym(n,o,l){return n=n!==null?n.childLanes&~l:0,o&&(n|=Za),n}function D0(n,o,l){var u=o.pendingProps,y=!1,w=(o.flags&128)!==0,b;if((b=w)||(b=n!==null&&n.memoizedState===null?!1:(Rt.current&2)!==0),b&&(y=!0,o.flags&=-129),b=(o.flags&32)!==0,o.flags&=-33,n===null){if(Ye){if(y?eo(o):to(),(n=bt)?(n=$j(n,ci),n=n!==null&&n.data!=="&"?n:null,n!==null&&(o.memoizedState={dehydrated:n,treeContext:Hn!==null?{id:Bi,overflow:$i}:null,retryLane:536870912,hydrationErrors:null},l=pb(n),l.return=o,o.child=l,oa=o,bt=null)):n=null,n===null)throw Zn(o);return Ym(n)?o.lanes=32:o.lanes=536870912,null}var x=u.children;return u=u.fallback,y?(to(),y=o.mode,x=nd({mode:"hidden",children:x},y),u=Jo(u,y,l,null),x.return=o,u.return=o,x.sibling=u,o.child=x,u=o.child,u.memoizedState=hm(l),u.childLanes=ym(n,b,l),o.memoizedState=pm,Hl(null,u)):(eo(o),mm(o,x))}var P=n.memoizedState;if(P!==null&&(x=P.dehydrated,x!==null)){if(w)o.flags&256?(eo(o),o.flags&=-257,o=fm(n,o,l)):o.memoizedState!==null?(to(),o.child=n.child,o.flags|=128,o=null):(to(),x=u.fallback,y=o.mode,u=nd({mode:"visible",children:u.children},y),x=Jo(x,y,l,null),x.flags|=2,u.return=o,x.return=o,u.sibling=x,o.child=u,nr(o,n.child,null,l),u=o.child,u.memoizedState=hm(l),u.childLanes=ym(n,b,l),o.memoizedState=pm,o=Hl(null,u));else if(eo(o),Ym(x)){if(b=x.nextSibling&&x.nextSibling.dataset,b)var M=b.dgst;b=M,u=Error(i(419)),u.stack="",u.digest=b,Ul({value:u,source:null,stack:null}),o=fm(n,o,l)}else if(Bt||Yr(n,o,l,!1),b=(l&n.childLanes)!==0,Bt||b){if(b=mt,b!==null&&(u=Ca(b,l),u!==0&&u!==P.retryLane))throw P.retryLane=u,Yo(n,u),Ma(b,n,u),um;Zm(x)||hd(),o=fm(n,o,l)}else Zm(x)?(o.flags|=192,o.child=n.child,o=null):(n=P.treeContext,bt=di(x.nextSibling),oa=o,Ye=!0,qn=null,ci=!1,n!==null&&mb(o,n),o=mm(o,u.children),o.flags|=4096);return o}return y?(to(),x=u.fallback,y=o.mode,P=n.child,M=P.sibling,u=cn(P,{mode:"hidden",children:u.children}),u.subtreeFlags=P.subtreeFlags&65011712,M!==null?x=cn(M,x):(x=Jo(x,y,l,null),x.flags|=2),x.return=o,u.return=o,u.sibling=x,o.child=u,Hl(null,u),u=o.child,x=n.child.memoizedState,x===null?x=hm(l):(y=x.cachePool,y!==null?(P=Mt._currentValue,y=y.parent!==P?{parent:P,pool:P}:y):y=bb(),x={baseLanes:x.baseLanes|l,cachePool:y}),u.memoizedState=x,u.childLanes=ym(n,b,l),o.memoizedState=pm,Hl(n.child,u)):(eo(o),l=n.child,n=l.sibling,l=cn(l,{mode:"visible",children:u.children}),l.return=o,l.sibling=null,n!==null&&(b=o.deletions,b===null?(o.deletions=[n],o.flags|=16):b.push(n)),o.child=l,o.memoizedState=null,l)}function mm(n,o){return o=nd({mode:"visible",children:o},n.mode),o.return=n,n.child=o}function nd(n,o){return n=Va(22,n,null,o),n.lanes=0,n}function fm(n,o,l){return nr(o,n.child,null,l),n=mm(o,o.pendingProps.children),n.flags|=2,o.memoizedState=null,n}function O0(n,o,l){n.lanes|=o;var u=n.alternate;u!==null&&(u.lanes|=o),Cy(n.return,o,l)}function wm(n,o,l,u,y,w){var b=n.memoizedState;b===null?n.memoizedState={isBackwards:o,rendering:null,renderingStartTime:0,last:u,tail:l,tailMode:y,treeForkCount:w}:(b.isBackwards=o,b.rendering=null,b.renderingStartTime=0,b.last=u,b.tail=l,b.tailMode=y,b.treeForkCount=w)}function U0(n,o,l){var u=o.pendingProps,y=u.revealOrder,w=u.tail;u=u.children;var b=Rt.current,x=(b&2)!==0;if(x?(b=b&1|2,o.flags|=128):b&=1,X(Rt,b),sa(n,o,u,l),u=Ye?Ol:0,!x&&n!==null&&(n.flags&128)!==0)e:for(n=o.child;n!==null;){if(n.tag===13)n.memoizedState!==null&&O0(n,l,o);else if(n.tag===19)O0(n,l,o);else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===o)break e;for(;n.sibling===null;){if(n.return===null||n.return===o)break e;n=n.return}n.sibling.return=n.return,n=n.sibling}switch(y){case"forwards":for(l=o.child,y=null;l!==null;)n=l.alternate,n!==null&&Fu(n)===null&&(y=l),l=l.sibling;l=y,l===null?(y=o.child,o.child=null):(y=l.sibling,l.sibling=null),wm(o,!1,y,l,w,u);break;case"backwards":case"unstable_legacy-backwards":for(l=null,y=o.child,o.child=null;y!==null;){if(n=y.alternate,n!==null&&Fu(n)===null){o.child=y;break}n=y.sibling,y.sibling=l,l=y,y=n}wm(o,!0,l,null,w,u);break;case"together":wm(o,!1,null,null,void 0,u);break;default:o.memoizedState=null}return o.child}function mn(n,o,l){if(n!==null&&(o.dependencies=n.dependencies),no|=o.lanes,(l&o.childLanes)===0)if(n!==null){if(Yr(n,o,l,!1),(l&o.childLanes)===0)return null}else return null;if(n!==null&&o.child!==n.child)throw Error(i(153));if(o.child!==null){for(n=o.child,l=cn(n,n.pendingProps),o.child=l,l.return=o;n.sibling!==null;)n=n.sibling,l=l.sibling=cn(n,n.pendingProps),l.return=o;l.sibling=null}return o.child}function gm(n,o){return(n.lanes&o)!==0?!0:(n=n.dependencies,!!(n!==null&&Mu(n)))}function ER(n,o,l){switch(o.tag){case 3:_e(o,o.stateNode.containerInfo),Yn(o,Mt,n.memoizedState.cache),Qo();break;case 27:case 5:ka(o);break;case 4:_e(o,o.stateNode.containerInfo);break;case 10:Yn(o,o.type,o.memoizedProps.value);break;case 31:if(o.memoizedState!==null)return o.flags|=128,Wy(o),null;break;case 13:var u=o.memoizedState;if(u!==null)return u.dehydrated!==null?(eo(o),o.flags|=128,null):(l&o.child.childLanes)!==0?D0(n,o,l):(eo(o),n=mn(n,o,l),n!==null?n.sibling:null);eo(o);break;case 19:var y=(n.flags&128)!==0;if(u=(l&o.childLanes)!==0,u||(Yr(n,o,l,!1),u=(l&o.childLanes)!==0),y){if(u)return U0(n,o,l);o.flags|=128}if(y=o.memoizedState,y!==null&&(y.rendering=null,y.tail=null,y.lastEffect=null),X(Rt,Rt.current),u)break;return null;case 22:return o.lanes=0,T0(n,o,l,o.pendingProps);case 24:Yn(o,Mt,n.memoizedState.cache)}return mn(n,o,l)}function L0(n,o,l){if(n!==null)if(n.memoizedProps!==o.pendingProps)Bt=!0;else{if(!gm(n,l)&&(o.flags&128)===0)return Bt=!1,ER(n,o,l);Bt=(n.flags&131072)!==0}else Bt=!1,Ye&&(o.flags&1048576)!==0&&yb(o,Ol,o.index);switch(o.lanes=0,o.tag){case 16:e:{var u=o.pendingProps;if(n=ar(o.elementType),o.type=n,typeof n=="function")vy(n)?(u=rr(n,u),o.tag=1,o=C0(null,o,n,u,l)):(o.tag=0,o=dm(null,o,n,u,l));else{if(n!=null){var y=n.$$typeof;if(y===O){o.tag=11,o=S0(null,o,n,u,l);break e}else if(y===R){o.tag=14,o=x0(null,o,n,u,l);break e}}throw o=me(n)||n,Error(i(306,o,""))}}return o;case 0:return dm(n,o,o.type,o.pendingProps,l);case 1:return u=o.type,y=rr(u,o.pendingProps),C0(n,o,u,y,l);case 3:e:{if(_e(o,o.stateNode.containerInfo),n===null)throw Error(i(387));u=o.pendingProps;var w=o.memoizedState;
vendor: 4,351 bytes, line 9
9y=w.element,My(n,o),Il(o,u,null,l);var b=o.memoizedState;if(u=b.cache,Yn(o,Mt,u),u!==w.cache&&Ry(o,[Mt],l,!0),$l(),u=b.element,w.isDehydrated)if(w={element:u,isDehydrated:!1,cache:b.cache},o.updateQueue.baseState=w,o.memoizedState=w,o.flags&256){o=R0(n,o,u,l);break e}else if(u!==y){y=ri(Error(i(424)),o),Ul(y),o=R0(n,o,u,l);break e}else for(n=o.stateNode.containerInfo,n.nodeType===9?n=n.body:n=n.nodeName==="HTML"?n.ownerDocument.body:n,bt=di(n.firstChild),oa=o,Ye=!0,qn=null,ci=!0,l=Tb(o,null,u,l),o.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling;else{if(Qo(),u===y){o=mn(n,o,l);break e}sa(n,o,u,l)}o=o.child}return o;case 26:return id(n,o),n===null?(l=Hj(o.type,null,o.pendingProps,null))?o.memoizedState=l:Ye||(l=o.type,n=o.pendingProps,u=zd(Ee.current).createElement(l),u[na]=o,u[Ra]=n,la(u,l,n),Qt(u),o.stateNode=u):o.memoizedState=Hj(o.type,n.memoizedProps,o.pendingProps,n.memoizedState),null;case 27:return ka(o),n===null&&Ye&&(u=o.stateNode=Gj(o.type,o.pendingProps,Ee.current),oa=o,ci=!0,y=bt,co(o.type)?(Jm=y,bt=di(u.firstChild)):bt=y),sa(n,o,o.pendingProps.children,l),id(n,o),n===null&&(o.flags|=4194304),o.child;case 5:return n===null&&Ye&&((y=u=bt)&&(u=nD(u,o.type,o.pendingProps,ci),u!==null?(o.stateNode=u,oa=o,bt=di(u.firstChild),ci=!1,y=!0):y=!1),y||Zn(o)),ka(o),y=o.type,w=o.pendingProps,b=n!==null?n.memoizedProps:null,u=w.children,Fm(y,w)?u=null:b!==null&&Fm(y,b)&&(o.flags|=32),o.memoizedState!==null&&(y=Vy(n,o,kR,null,null,l),lc._currentValue=y),id(n,o),sa(n,o,u,l),o.child;case 6:return n===null&&Ye&&((n=l=bt)&&(l=oD(l,o.pendingProps,ci),l!==null?(o.stateNode=l,oa=o,bt=null,n=!0):n=!1),n||Zn(o)),null;case 13:return D0(n,o,l);case 4:return _e(o,o.stateNode.containerInfo),u=o.pendingProps,n===null?o.child=nr(o,null,u,l):sa(n,o,u,l),o.child;case 11:return S0(n,o,o.type,o.pendingProps,l);case 7:return sa(n,o,o.pendingProps,l),o.child;case 8:return sa(n,o,o.pendingProps.children,l),o.child;case 12:return sa(n,o,o.pendingProps.children,l),o.child;case 10:return u=o.pendingProps,Yn(o,o.type,u.value),sa(n,o,u.children,l),o.child;case 9:return y=o.type._context,u=o.pendingProps.children,er(o),y=ra(y),u=u(y),o.flags|=1,sa(n,o,u,l),o.child;case 14:return x0(n,o,o.type,o.pendingProps,l);case 15:return _0(n,o,o.type,o.pendingProps,l);case 19:return U0(n,o,l);case 31:return TR(n,o,l);case 22:return T0(n,o,l,o.pendingProps);case 24:return er(o),u=ra(Mt),n===null?(y=Uy(),y===null&&(y=mt,w=Dy(),y.pooledCache=w,w.refCount++,w!==null&&(y.pooledCacheLanes|=l),y=w),o.memoizedState={parent:u,cache:y},Ky(o),Yn(o,Mt,y)):((n.lanes&l)!==0&&(My(n,o),Il(o,null,null,l),$l()),y=n.memoizedState,w=o.memoizedState,y.parent!==u?(y={parent:u,cache:u},o.memoizedState=y,o.lanes===0&&(o.memoizedState=o.updateQueue.baseState=y),Yn(o,Mt,u)):(u=w.cache,Yn(o,Mt,u),u!==y.cache&&Ry(o,[Mt],l,!0))),sa(n,o,o.pendingProps.children,l),o.child;case 29:throw o.pendingProps}throw Error(i(156,o.tag))}function fn(n){n.flags|=4}function km(n,o,l,u,y){if((o=(n.mode&32)!==0)&&(o=!1),o){if(n.flags|=16777216,(y&335544128)===y)if(n.stateNode.complete)n.flags|=8192;else if(cj())n.flags|=8192;else throw ir=Iu,Ly}else n.flags&=-16777217}function K0(n,o){if(o.type!=="stylesheet"||(o.state.loading&4)!==0)n.flags&=-16777217;else if(n.flags|=16777216,!Qj(o))if(cj())n.flags|=8192;else throw ir=Iu,Ly}function od(n,o){o!==null&&(n.flags|=4),n.flags&16384&&(o=n.tag!==22?ma():536870912,n.lanes|=o,ls|=o)}function ql(n,o){if(!Ye)switch(n.tailMode){case"hidden":o=n.tail;for(var l=null;o!==null;)o.alternate!==null&&(l=o),o=o.sibling;l===null?n.tail=null:l.sibling=null;break;case"collapsed":l=n.tail;for(var u=null;l!==null;)l.alternate!==null&&(u=l),l=l.sibling;u===null?o||n.tail===null?n.tail=null:n.tail.sibling=null:u.sibling=null}}function jt(n){var o=n.alternate!==null&&n.alternate.child===n.child,l=0,u=0;if(o)for(var y=n.child;y!==null;)l|=y.lanes|y.childLanes,u|=y.subtreeFlags&65011712,u|=y.flags&65011712,y.return=n,y=y.sibling;else for(y=n.child;y!==null;)l|=y.lanes|y.childLanes,u|=y.subtreeFlags,u|=y.flags,y.return=n,y=y.sibling;return n.subtreeFlags|=u,n.childLanes=l,o}function AR(n,o,l){var u=o.pendingProps;switch(Ty(o),o.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return jt(o),null;case 1:return jt(o),null;case 3:return l=o.stateNode,u=null,n!==null&&(u=n.memoizedState.cache),o.memoizedState.cache!==u&&(
vendor: 7,169 bytes, line 9
9o.flags|=2048),pn(Mt),Qe(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(n===null||n.child===null)&&(Zr(o)?fn(o):n===null||n.memoizedState.isDehydrated&&(o.flags&256)===0||(o.flags|=1024,Ay())),jt(o),null;case 26:var y=o.type,w=o.memoizedState;return n===null?(fn(o),w!==null?(jt(o),K0(o,w)):(jt(o),km(o,y,null,u,l))):w?w!==n.memoizedState?(fn(o),jt(o),K0(o,w)):(jt(o),o.flags&=-16777217):(n=n.memoizedProps,n!==u&&fn(o),jt(o),km(o,y,n,u,l)),null;case 27:if(ai(o),l=Ee.current,y=o.type,n!==null&&o.stateNode!=null)n.memoizedProps!==u&&fn(o);else{if(!u){if(o.stateNode===null)throw Error(i(166));return jt(o),null}n=ce.current,Zr(o)?fb(o):(n=Gj(y,u,l),o.stateNode=n,fn(o))}return jt(o),null;case 5:if(ai(o),y=o.type,n!==null&&o.stateNode!=null)n.memoizedProps!==u&&fn(o);else{if(!u){if(o.stateNode===null)throw Error(i(166));return jt(o),null}if(w=ce.current,Zr(o))fb(o);else{var b=zd(Ee.current);switch(w){case 1:w=b.createElementNS("http://www.w3.org/2000/svg",y);break;case 2:w=b.createElementNS("http://www.w3.org/1998/Math/MathML",y);break;default:switch(y){case"svg":w=b.createElementNS("http://www.w3.org/2000/svg",y);break;case"math":w=b.createElementNS("http://www.w3.org/1998/Math/MathML",y);break;case"script":w=b.createElement("div"),w.innerHTML="<script><\/script>",w=w.removeChild(w.firstChild);break;case"select":w=typeof u.is=="string"?b.createElement("select",{is:u.is}):b.createElement("select"),u.multiple?w.multiple=!0:u.size&&(w.size=u.size);break;default:w=typeof u.is=="string"?b.createElement(y,{is:u.is}):b.createElement(y)}}w[na]=o,w[Ra]=u;e:for(b=o.child;b!==null;){if(b.tag===5||b.tag===6)w.appendChild(b.stateNode);else if(b.tag!==4&&b.tag!==27&&b.child!==null){b.child.return=b,b=b.child;continue}if(b===o)break e;for(;b.sibling===null;){if(b.return===null||b.return===o)break e;b=b.return}b.sibling.return=b.return,b=b.sibling}o.stateNode=w;e:switch(la(w,y,u),y){case"button":case"input":case"select":case"textarea":u=!!u.autoFocus;break e;case"img":u=!0;break e;default:u=!1}u&&fn(o)}}return jt(o),km(o,o.type,n===null?null:n.memoizedProps,o.pendingProps,l),null;case 6:if(n&&o.stateNode!=null)n.memoizedProps!==u&&fn(o);else{if(typeof u!="string"&&o.stateNode===null)throw Error(i(166));if(n=Ee.current,Zr(o)){if(n=o.stateNode,l=o.memoizedProps,u=null,y=oa,y!==null)switch(y.tag){case 27:case 5:u=y.memoizedProps}n[na]=o,n=!!(n.nodeValue===l||u!==null&&u.suppressHydrationWarning===!0||Dj(n.nodeValue,l)),n||Zn(o,!0)}else n=zd(n).createTextNode(u),n[na]=o,o.stateNode=n}return jt(o),null;case 31:if(l=o.memoizedState,n===null||n.memoizedState!==null){if(u=Zr(o),l!==null){if(n===null){if(!u)throw Error(i(318));if(n=o.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(i(557));n[na]=o}else Qo(),(o.flags&128)===0&&(o.memoizedState=null),o.flags|=4;jt(o),n=!1}else l=Ay(),n!==null&&n.memoizedState!==null&&(n.memoizedState.hydrationErrors=l),n=!0;if(!n)return o.flags&256?(Ha(o),o):(Ha(o),null);if((o.flags&128)!==0)throw Error(i(558))}return jt(o),null;case 13:if(u=o.memoizedState,n===null||n.memoizedState!==null&&n.memoizedState.dehydrated!==null){if(y=Zr(o),u!==null&&u.dehydrated!==null){if(n===null){if(!y)throw Error(i(318));if(y=o.memoizedState,y=y!==null?y.dehydrated:null,!y)throw Error(i(317));y[na]=o}else Qo(),(o.flags&128)===0&&(o.memoizedState=null),o.flags|=4;jt(o),y=!1}else y=Ay(),n!==null&&n.memoizedState!==null&&(n.memoizedState.hydrationErrors=y),y=!0;if(!y)return o.flags&256?(Ha(o),o):(Ha(o),null)}return Ha(o),(o.flags&128)!==0?(o.lanes=l,o):(l=u!==null,n=n!==null&&n.memoizedState!==null,l&&(u=o.child,y=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(y=u.alternate.memoizedState.cachePool.pool),w=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(w=u.memoizedState.cachePool.pool),w!==y&&(u.flags|=2048)),l!==n&&l&&(o.child.flags|=8192),od(o,o.updateQueue),jt(o),null);case 4:return Qe(),n===null&&$m(o.stateNode.containerInfo),jt(o),null;case 10:return pn(o.type),jt(o),null;case 19:if(Y(Rt),u=o.memoizedState,u===null)return jt(o),null;if(y=(o.flags&128)!==0,w=u.rendering,w===null)if(y)ql(u,!1);else{if(Et!==0||n!==null&&(n.flags&128)!==0)for(n=o.child;n!==null;){if(w=Fu(n),w!==null){for(o.flags|=128,ql(u,!1),n=w.updateQueue,o.updateQueue=n,od(o,n),o.subtreeFlags=0,n=l,l=o.child;l!==null;)db(l,n),l=l.sibling;return X(Rt,Rt.current&1|2),Ye&&un(o,u.treeForkCount),o.child}n=n.sibling}u.tail!==null&&ba()>ud&&(o.flags|=128,y=!0,ql(u,!1),o.lanes=4194304)}else{if(!y)if(n=Fu(w),n!==null){if(o.flags|=128,y=!0,n=n.updateQueue,o.updateQueue=n,od(o,n),ql(u,!0),u.tail===null&&u.tailMode==="hidden"&&!w.alternate&&!Ye)return jt(o),null}else 2*ba()-u.renderingStartTime>ud&&l!==536870912&&(o.flags|=128,y=!0,ql(u,!1),o.lanes=4194304);u.isBackwards?(w.sibling=o.child,o.child=w):(n=u.last,n!==null?n.sibling=w:o.child=w,u.last=w)}return u.tail!==null?(n=u.tail,u.rendering=n,u.tail=n.sibling,u.renderingStartTime=ba(),n.sibling=null,l=Rt.current,X(Rt,y?l&1|2:l&1),Ye&&un(o,u.treeForkCount),n):(jt(o),null);case 22:case 23:return Ha(o),Iy(),u=o.memoizedState!==null,n!==null?n.memoizedState!==null!==u&&(o.flags|=8192):u&&(o.flags|=8192),u?(l&536870912)!==0&&(o.flags&128)===0&&(jt(o),o.subtreeFlags&6&&(o.flags|=8192)):jt(o),l=o.updateQueue,l!==null&&od(o,l.retryQueue),l=null,n!==null&&n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(l=n.memoizedState.cachePool.pool),u=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(u=o.memoizedState.cachePool.pool),u!==l&&(o.flags|=2048),n!==null&&Y(tr),null;case 24:return l=null,n!==null&&(l=n.memoizedState.cache),o.memoizedState.cache!==l&&(o.flags|=2048),pn(Mt),jt(o),null;case 25:return null;case 30:return null}throw Error(i(156,o.tag))}function PR(n,o){switch(Ty(o),o.tag){case 1:return n=o.flags,n&65536?(o.flags=n&-65537|128,o):null;case 3:return pn(Mt),Qe(),n=o.flags,(n&65536)!==0&&(n&128)===0?(o.flags=n&-65537|128,o):null;case 26:case 27:case 5:return ai(o),null;case 31:if(o.memoizedState!==null){if(Ha(o),o.alternate===null)throw Error(i(340));Qo()}return n=o.flags,n&65536?(o.flags=n&-65537|128,o):null;case 13:if(Ha(o),n=o.memoizedState,n!==null&&n.dehydrated!==null){if(o.alternate===null)throw Error(i(340));Qo()}return n=o.flags,n&65536?(o.flags=n&-65537|128,o):null;case 19:return Y(Rt),null;case 4:return Qe(),null;case 10:return pn(o.type),null;case 22:case 23:return Ha(o),Iy(),n!==null&&Y(tr),n=o.flags,n&65536?(o.flags=n&-65537|128,o):null;case 24:return pn(Mt),null;case 25:return null;default:return null}}function M0(n,o){switch(Ty(o),o.tag){case 3:pn(Mt),Qe();break;case 26:case 27:case 5:ai(o);break;case 4:Qe();break;case 31:o.memoizedState!==null&&Ha(o);break;case 13:Ha(o);break;case 19:Y(Rt);break;case 10:pn(o.type);break;case 22:case 23:Ha(o),Iy(),n!==null&&Y(tr);break;case 24:pn(Mt)}}function Zl(n,o){try{var l=o.updateQueue,u=l!==null?l.lastEffect:null;if(u!==null){var y=u.next;l=y;do{if((l.tag&n)===n){u=void 0;var w=l.create,b=l.inst;u=w(),b.destroy=u}l=l.next}while(l!==y)}}catch(x){lt(o,o.return,x)}}function ao(n,o,l){try{var u=o.updateQueue,y=u!==null?u.lastEffect:null;if(y!==null){var w=y.next;u=w;
vendor: 18,817 bytes, line 9
9do{if((u.tag&n)===n){var b=u.inst,x=b.destroy;if(x!==void 0){b.destroy=void 0,y=o;var P=l,M=x;try{M()}catch(J){lt(y,P,J)}}}u=u.next}while(u!==w)}}catch(J){lt(o,o.return,J)}}function N0(n){var o=n.updateQueue;if(o!==null){var l=n.stateNode;try{Ab(o,l)}catch(u){lt(n,n.return,u)}}}function B0(n,o,l){l.props=rr(n.type,n.memoizedProps),l.state=n.memoizedState;try{l.componentWillUnmount()}catch(u){lt(n,o,u)}}function Yl(n,o){try{var l=n.ref;if(l!==null){switch(n.tag){case 26:case 27:case 5:var u=n.stateNode;break;case 30:u=n.stateNode;break;default:u=n.stateNode}typeof l=="function"?n.refCleanup=l(u):l.current=u}}catch(y){lt(n,o,y)}}function Ii(n,o){var l=n.ref,u=n.refCleanup;if(l!==null)if(typeof u=="function")try{u()}catch(y){lt(n,o,y)}finally{n.refCleanup=null,n=n.alternate,n!=null&&(n.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(y){lt(n,o,y)}else l.current=null}function $0(n){var o=n.type,l=n.memoizedProps,u=n.stateNode;try{e:switch(o){case"button":case"input":case"select":case"textarea":l.autoFocus&&u.focus();break e;case"img":l.src?u.src=l.src:l.srcSet&&(u.srcset=l.srcSet)}}catch(y){lt(n,n.return,y)}}function zm(n,o,l){try{var u=n.stateNode;QR(u,n.type,l,o),u[Ra]=o}catch(y){lt(n,n.return,y)}}function I0(n){return n.tag===5||n.tag===3||n.tag===26||n.tag===27&&co(n.type)||n.tag===4}function bm(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||I0(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.tag===27&&co(n.type)||n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function jm(n,o,l){var u=n.tag;if(u===5||u===6)n=n.stateNode,o?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(n,o):(o=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,o.appendChild(n),l=l._reactRootContainer,l!=null||o.onclick!==null||(o.onclick=sn));else if(u!==4&&(u===27&&co(n.type)&&(l=n.stateNode,o=null),n=n.child,n!==null))for(jm(n,o,l),n=n.sibling;n!==null;)jm(n,o,l),n=n.sibling}function rd(n,o,l){var u=n.tag;if(u===5||u===6)n=n.stateNode,o?l.insertBefore(n,o):l.appendChild(n);else if(u!==4&&(u===27&&co(n.type)&&(l=n.stateNode),n=n.child,n!==null))for(rd(n,o,l),n=n.sibling;n!==null;)rd(n,o,l),n=n.sibling}function W0(n){var o=n.stateNode,l=n.memoizedProps;try{for(var u=n.type,y=o.attributes;y.length;)o.removeAttributeNode(y[0]);la(o,u,l),o[na]=n,o[Ra]=l}catch(w){lt(n,n.return,w)}}var wn=!1,$t=!1,vm=!1,G0=typeof WeakSet=="function"?WeakSet:Set,Xt=null;function CR(n,o){if(n=n.containerInfo,Gm=Td,n=ab(n),fy(n)){if("selectionStart"in n)var l={start:n.selectionStart,end:n.selectionEnd};else e:{l=(l=n.ownerDocument)&&l.defaultView||window;var u=l.getSelection&&l.getSelection();if(u&&u.rangeCount!==0){l=u.anchorNode;var y=u.anchorOffset,w=u.focusNode;u=u.focusOffset;try{l.nodeType,w.nodeType}catch{l=null;break e}var b=0,x=-1,P=-1,M=0,J=0,te=n,$=null;t:for(;;){for(var V;te!==l||y!==0&&te.nodeType!==3||(x=b+y),te!==w||u!==0&&te.nodeType!==3||(P=b+u),te.nodeType===3&&(b+=te.nodeValue.length),(V=te.firstChild)!==null;)$=te,te=V;for(;;){if(te===n)break t;if($===l&&++M===y&&(x=b),$===w&&++J===u&&(P=b),(V=te.nextSibling)!==null)break;te=$,$=te.parentNode}te=V}l=x===-1||P===-1?null:{start:x,end:P}}else l=null}l=l||{start:0,end:0}}else l=null;for(Vm={focusedElem:n,selectionRange:l},Td=!1,Xt=o;Xt!==null;)if(o=Xt,n=o.child,(o.subtreeFlags&1028)!==0&&n!==null)n.return=o,Xt=n;else for(;Xt!==null;){switch(o=Xt,w=o.alternate,n=o.flags,o.tag){case 0:if((n&4)!==0&&(n=o.updateQueue,n=n!==null?n.events:null,n!==null))for(l=0;l<n.length;l++)y=n[l],y.ref.impl=y.nextImpl;break;case 11:case 15:break;case 1:if((n&1024)!==0&&w!==null){n=void 0,l=o,y=w.memoizedProps,w=w.memoizedState,u=l.stateNode;try{var ke=rr(l.type,y);n=u.getSnapshotBeforeUpdate(ke,w),u.__reactInternalSnapshotBeforeUpdate=n}catch(Ae){lt(l,l.return,Ae)}}break;case 3:if((n&1024)!==0){if(n=o.stateNode.containerInfo,l=n.nodeType,l===9)qm(n);else if(l===1)switch(n.nodeName){case"HEAD":case"HTML":case"BODY":qm(n);break;default:n.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((n&1024)!==0)throw Error(i(163))}if(n=o.sibling,n!==null){n.return=o.return,Xt=n;break}Xt=o.return}}function V0(n,o,l){var u=l.flags;switch(l.tag){case 0:case 11:case 15:kn(n,l),u&4&&Zl(5,l);break;case 1:if(kn(n,l),u&4)if(n=l.stateNode,o===null)try{n.componentDidMount()}catch(b){lt(l,l.return,b)}else{var y=rr(l.type,o.memoizedProps);o=o.memoizedState;try{n.componentDidUpdate(y,o,n.__reactInternalSnapshotBeforeUpdate)}catch(b){lt(l,l.return,b)}}u&64&&N0(l),u&512&&Yl(l,l.return);break;case 3:if(kn(n,l),u&64&&(n=l.updateQueue,n!==null)){if(o=null,l.child!==null)switch(l.child.tag){case 27:case 5:o=l.child.stateNode;break;case 1:o=l.child.stateNode}try{Ab(n,o)}catch(b){lt(l,l.return,b)}}break;case 27:o===null&&u&4&&W0(l);case 26:case 5:kn(n,l),o===null&&u&4&&$0(l),u&512&&Yl(l,l.return);break;case 12:kn(n,l);break;case 31:kn(n,l),u&4&&q0(n,l);break;case 13:kn(n,l),u&4&&Z0(n,l),u&64&&(n=l.memoizedState,n!==null&&(n=n.dehydrated,n!==null&&(l=BR.bind(null,l),rD(n,l))));break;case 22:if(u=l.memoizedState!==null||wn,!u){o=o!==null&&o.memoizedState!==null||$t,y=wn;var w=$t;wn=u,($t=o)&&!w?zn(n,l,(l.subtreeFlags&8772)!==0):kn(n,l),wn=y,$t=w}break;case 30:break;default:kn(n,l)}}function F0(n){var o=n.alternate;o!==null&&(n.alternate=null,F0(o)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(o=n.stateNode,o!==null&&Xh(o)),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}var St=null,Oa=!1;function gn(n,o,l){for(l=l.child;l!==null;)H0(n,o,l),l=l.sibling}function H0(n,o,l){if(ja&&typeof ja.onCommitFiberUnmount=="function")try{ja.onCommitFiberUnmount(Wo,l)}catch{}switch(l.tag){case 26:$t||Ii(l,o),gn(n,o,l),l.memoizedState?l.memoizedState.count--:l.stateNode&&(l=l.stateNode,l.parentNode.removeChild(l));break;case 27:$t||Ii(l,o);var u=St,y=Oa;co(l.type)&&(St=l.stateNode,Oa=!1),gn(n,o,l),oc(l.stateNode),St=u,Oa=y;break;case 5:$t||Ii(l,o);case 6:if(u=St,y=Oa,St=null,gn(n,o,l),St=u,Oa=y,St!==null)if(Oa)try{(St.nodeType===9?St.body:St.nodeName==="HTML"?St.ownerDocument.body:St).removeChild(l.stateNode)}catch(w){lt(l,o,w)}else try{St.removeChild(l.stateNode)}catch(w){lt(l,o,w)}break;case 18:St!==null&&(Oa?(n=St,Nj(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,l.stateNode),fs(n)):Nj(St,l.stateNode));break;case 4:u=St,y=Oa,St=l.stateNode.containerInfo,Oa=!0,gn(n,o,l),St=u,Oa=y;break;case 0:case 11:case 14:case 15:ao(2,l,o),$t||ao(4,l,o),gn(n,o,l);break;case 1:$t||(Ii(l,o),u=l.stateNode,typeof u.componentWillUnmount=="function"&&B0(l,o,u)),gn(n,o,l);break;case 21:gn(n,o,l);break;case 22:$t=(u=$t)||l.memoizedState!==null,gn(n,o,l),$t=u;break;default:gn(n,o,l)}}function q0(n,o){if(o.memoizedState===null&&(n=o.alternate,n!==null&&(n=n.memoizedState,n!==null))){n=n.dehydrated;try{fs(n)}catch(l){lt(o,o.return,l)}}}function Z0(n,o){if(o.memoizedState===null&&(n=o.alternate,n!==null&&(n=n.memoizedState,n!==null&&(n=n.dehydrated,n!==null))))try{fs(n)}catch(l){lt(o,o.return,l)}}function RR(n){switch(n.tag){case 31:case 13:case 19:var o=n.stateNode;return o===null&&(o=n.stateNode=new G0),o;case 22:return n=n.stateNode,o=n._retryCache,o===null&&(o=n._retryCache=new G0),o;default:throw Error(i(435,n.tag))}}function sd(n,o){var l=RR(n);o.forEach(function(u){if(!l.has(u)){l.add(u);var y=$R.bind(null,n,u);u.then(y,y)}})}function Ua(n,o){var l=o.deletions;if(l!==null)for(var u=0;u<l.length;u++){var y=l[u],w=n,b=o,x=b;e:for(;x!==null;){switch(x.tag){case 27:if(co(x.type)){St=x.stateNode,Oa=!1;break e}break;case 5:St=x.stateNode,Oa=!1;break e;case 3:case 4:St=x.stateNode.containerInfo,Oa=!0;break e}x=x.return}if(St===null)throw Error(i(160));H0(w,b,y),St=null,Oa=!1,w=y.alternate,w!==null&&(w.return=null),y.return=null}if(o.subtreeFlags&13886)for(o=o.child;o!==null;)Y0(o,n),o=o.sibling}var Si=null;function Y0(n,o){var l=n.alternate,u=n.flags;switch(n.tag){case 0:case 11:case 14:case 15:Ua(o,n),La(n),u&4&&(ao(3,n,n.return),Zl(3,n),ao(5,n,n.return));break;case 1:Ua(o,n),La(n),u&512&&($t||l===null||Ii(l,l.return)),u&64&&wn&&(n=n.updateQueue,n!==null&&(u=n.callbacks,u!==null&&(l=n.shared.hiddenCallbacks,n.shared.hiddenCallbacks=l===null?u:l.concat(u))));break;case 26:var y=Si;if(Ua(o,n),La(n),u&512&&($t||l===null||Ii(l,l.return)),u&4){var w=l!==null?l.memoizedState:null;if(u=n.memoizedState,l===null)if(u===null)if(n.stateNode===null){e:{u=n.type,l=n.memoizedProps,y=y.ownerDocument||y;t:switch(u){case"title":w=y.getElementsByTagName("title")[0],(!w||w[vl]||w[na]||w.namespaceURI==="http://www.w3.org/2000/svg"||w.hasAttribute("itemprop"))&&(w=y.createElement(u),y.head.insertBefore(w,y.querySelector("head > title"))),la(w,u,l),w[na]=n,Qt(w),u=w;break e;case"link":var b=Yj("link","href",y).get(u+(l.href||""));if(b){for(var x=0;x<b.length;x++)if(w=b[x],w.getAttribute("href")===(l.href==null||l.href===""?null:l.href)&&w.getAttribute("rel")===(l.rel==null?null:l.rel)&&w.getAttribute("title")===(l.title==null?null:l.title)&&w.getAttribute("crossorigin")===(l.crossOrigin==null?null:l.crossOrigin)){b.splice(x,1);break t}}w=y.createElement(u),la(w,u,l),y.head.appendChild(w);break;case"meta":if(b=Yj("meta","content",y).get(u+(l.content||""))){for(x=0;x<b.length;x++)if(w=b[x],w.getAttribute("content")===(l.content==null?null:""+l.content)&&w.getAttribute("name")===(l.name==null?null:l.name)&&w.getAttribute("property")===(l.property==null?null:l.property)&&w.getAttribute("http-equiv")===(l.httpEquiv==null?null:l.httpEquiv)&&w.getAttribute("charset")===(l.charSet==null?null:l.charSet)){b.splice(x,1);break t}}w=y.createElement(u),la(w,u,l),y.head.appendChild(w);break;default:throw Error(i(468,u))}w[na]=n,Qt(w),u=w}n.stateNode=u}else Jj(y,n.type,n.stateNode);else n.stateNode=Zj(y,u,n.memoizedProps);else w!==u?(w===null?l.stateNode!==null&&(l=l.stateNode,l.parentNode.removeChild(l)):w.count--,u===null?Jj(y,n.type,n.stateNode):Zj(y,u,n.memoizedProps)):u===null&&n.stateNode!==null&&zm(n,n.memoizedProps,l.memoizedProps)}break;case 27:Ua(o,n),La(n),u&512&&($t||l===null||Ii(l,l.return)),l!==null&&u&4&&zm(n,n.memoizedProps,l.memoizedProps);break;case 5:if(Ua(o,n),La(n),u&512&&($t||l===null||Ii(l,l.return)),n.flags&32){y=n.stateNode;try{Nr(y,"")}catch(ke){lt(n,n.return,ke)}}u&4&&n.stateNode!=null&&(y=n.memoizedProps,zm(n,y,l!==null?l.memoizedProps:y)),u&1024&&(vm=!0);break;case 6:if(Ua(o,n),La(n),u&4){if(n.stateNode===null)throw Error(i(162));u=n.memoizedProps,l=n.stateNode;try{l.nodeValue=u}catch(ke){lt(n,n.return,ke)}}break;case 3:if(vd=null,y=Si,Si=bd(o.containerInfo),Ua(o,n),Si=y,La(n),u&4&&l!==null&&l.memoizedState.isDehydrated)try{fs(o.containerInfo)}catch(ke){lt(n,n.return,ke)}vm&&(vm=!1,J0(n));break;case 4:u=Si,Si=bd(n.stateNode.containerInfo),Ua(o,n),La(n),Si=u;break;case 12:Ua(o,n),La(n);break;case 31:Ua(o,n),La(n),u&4&&(u=n.updateQueue,u!==null&&(n.updateQueue=null,sd(n,u)));break;case 13:Ua(o,n),La(n),n.child.flags&8192&&n.memoizedState!==null!=(l!==null&&l.memoizedState!==null)&&(cd=ba()),u&4&&(u=n.updateQueue,u!==null&&(n.updateQueue=null,sd(n,u)));break;case 22:y=n.memoizedState!==null;var P=l!==null&&l.memoizedState!==null,M=wn,J=$t;if(wn=M||y,$t=J||P,Ua(o,n),$t=J,wn=M,La(n),u&8192)e:for(o=n.stateNode,o._visibility=y?o._visibility&-2:o._visibility|1,y&&(l===null||P||wn||$t||sr(n)),l=null,o=n;;){if(o.tag===5||o.tag===26){if(l===null){P=l=o;try{if(w=P.stateNode,y)b=w.style,typeof b.setProperty=="function"?b.setProperty("display","none","important"):b.display="none";else{x=P.stateNode;var te=P.memoizedProps.style,$=te!=null&&te.hasOwnProperty("display")?te.display:null;x.style.display=$==null||typeof $=="boolean"?"":(""+$).trim()}}catch(ke){lt(P,P.return,ke)}}}else if(o.tag===6){if(l===null){P=o;try{P.stateNode.nodeValue=y?"":P.memoizedProps}catch(ke){lt(P,P.return,ke)}}}else if(o.tag===18){if(l===null){P=o;try{var V=P.stateNode;y?Bj(V,!0):Bj(P.stateNode,!1)}catch(ke){lt(P,P.return,ke)}}}else if((o.tag!==22&&o.tag!==23||o.memoizedState===null||o===n)&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===n)break e;for(;o.sibling===null;){if(o.return===null||o.return===n)break e;l===o&&(l=null),o=o.return}l===o&&(l=null),o.sibling.return=o.return,o=o.sibling}u&4&&(u=n.updateQueue,u!==null&&(l=u.retryQueue,l!==null&&(u.retryQueue=null,sd(n,l))));break;case 19:Ua(o,n),La(n),u&4&&(u=n.updateQueue,u!==null&&(n.updateQueue=null,sd(n,u)));break;case 30:break;case 21:break;default:Ua(o,n),La(n)}}function La(n){var o=n.flags;if(o&2){try{for(var l,u=n.return;u!==null;){if(I0(u)){l=u;break}u=u.return}if(l==null)throw Error(i(160));switch(l.tag){case 27:var y=l.stateNode,w=bm(n);rd(n,w,y);break;case 5:var b=l.stateNode;l.flags&32&&(Nr(b,""),l.flags&=-33);var x=bm(n);rd(n,x,b);break;case 3:case 4:var P=l.stateNode.containerInfo,M=bm(n);jm(n,M,P);break;default:throw Error(i(161))}}catch(J){lt(n,n.return,J)}n.flags&=-3}o&4096&&(n.flags&=-4097)}function J0(n){if(n.subtreeFlags&1024)for(n=n.child;n!==null;){var o=n;J0(o),o.tag===5&&o.flags&1024&&o.stateNode.reset(),n=n.sibling}}function kn(n,o){if(o.subtreeFlags&8772)for(o=o.child;o!==null;)V0(n,o.alternate,o),o=o.sibling}function sr(n){for(n=n.child;n!==null;){var o=n;switch(o.tag){case 0:case 11:case 14:case 15:ao(4,o,o.return),sr(o);break;case 1:Ii(o,o.return);var l=o.stateNode;typeof l.componentWillUnmount=="function"&&B0(o,o.return,l),sr(o);break;case 27:oc(o.stateNode);case 26:case 5:Ii(o,o.return),sr(o);break;case 22:o.memoizedState===null&&sr(o);break;case 30:sr(o);break;default:sr(o)}n=n.sibling}}function zn(n,o,l){for(l=l&&(o.subtreeFlags&8772)!==0,o=o.child;o!==null;){var u=o.alternate,y=n,w=o,b=w.flags;switch(w.tag){case 0:case 11:case 15:zn(y,w,l),Zl(4,w);break;case 1:if(zn(y,w,l),u=w,y=u.stateNode,typeof y.componentDidMount=="function")try{y.componentDidMount()}catch(M){lt(u,u.return,M)}if(u=w,y=u.updateQueue,y!==null){var x=u.stateNode;try{var P=y.shared.hiddenCallbacks;if(P!==null)for(y.shared.hiddenCallbacks=null,y=0;y<P.length;y++)Eb(P[y],x)}catch(M){lt(u,u.return,M)}}l&&b&64&&N0(w),Yl(w,w.return);break;case 27:W0(w);case 26:case 5:zn(y,w,l),l&&u===null&&b&4&&$0(w),Yl(w,w.return);break;case 12:zn(y,w,l);break;case 31:zn(y,w,l),l&&b&4&&q0(y,w);break;case 13:zn(y,w,l),l&&b&4&&Z0(y,w);break;case 22:w.memoizedState===null&&zn(y,w,l),Yl(w,w.return);break;case 30:break;default:zn(y,w,l)}o=o.sibling}}function Sm(n,o){var l=null;n!==null&&n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(l=n.memoizedState.cachePool.pool),n=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(n=o.memoizedState.cachePool.pool),n!==l&&(n!=null&&n.refCount++,l!=null&&Ll(l))}function xm(n,o){n=null,o.alternate!==null&&(n=o.alternate.memoizedState.cache),o=o.memoizedState.cache,o!==n&&(o.refCount++,n!=null&&Ll(n))}function xi(n,o,l,u){if(o.subtreeFlags&10256)for(o=o.child;o!==null;)Q0(n,o,l,u),o=o.sibling}function Q0(n,o,l,u){var y=o.flags;switch(o.tag){case 0:case 11:case 15:xi(n,o,l,u),y&2048&&Zl(9,o);break;case 1:xi(n,o,l,u);break;case 3:xi(n,o,l,u),y&2048&&(n=null,o.alternate!==null&&(n=o.alternate.memoizedState.cache),o=o.memoizedState.cache,o!==n&&(o.refCount++,n!=null&&Ll(n)));break;case 12:if(y&2048){xi(n,o,l,u),n=o.stateNode;try{var w=o.memoizedProps,b=w.id,x=w.onPostCommit;typeof x=="function"&&x(b,o.alternate===null?"mount":"update",n.passiveEffectDuration,-0)}catch(P){lt(o,o.return,P)}}else xi(n,o,l,u);break;case 31:xi(n,o,l,u);break;case 13:xi(n,o,l,u);break;case 23:break;case 22:w=o.stateNode,b=o.alternate,o.memoizedState!==null?w._visibility&2?xi(n,o,l,u):Jl(n,o):w._visibility&2?xi(n,o,l,u):(w._visibility|=2,os(n,o,l,u,(o.subtreeFlags&10256)!==0||!1)),y&2048&&Sm(b,o);break;case 24:xi(n,o,l,u),y&2048&&xm(o.alternate,o);break;default:xi(n,o,l,u)}}function os(n,o,l,u,y){for(y=y&&((o.subtreeFlags&10256)!==0||!1),o=o.child;o!==null;){var w=n,b=o,x=l,P=u,M=b.flags;switch(b.tag){case 0:case 11:case 15:os(w,b,x,P,y),Zl(8,b);break;case 23:break;case 22:var J=b.stateNode;b.memoizedState!==null?J._visibility&2?os(w,b,x,P,y):Jl(w,b):(J._visibility|=2,os(w,b,x,P,y)),y&&M&2048&&Sm(b.alternate,b);break;case 24:os(w,b,x,P,y),y&&M&2048&&xm(b.alternate,b);break;default:os(w,b,x,P,y)}o=o.sibling}}function Jl(n,o){if(o.subtreeFlags&10256)for(o=o.child;o!==null;){var l=n,u=o,y=u.flags;switch(u.tag){case 22:Jl(l,u),y&2048&&Sm(u.alternate,u);break;case 24:Jl(l,u),y&2048&&xm(u.alternate,u);break;default:Jl(l,u)}o=o.sibling}}var Ql=8192;function rs(n,o,l){if(n.subtreeFlags&Ql)for(n=n.child;n!==null;)X0(n,o,l),n=n.sibling}function X0(n,o,l){switch(n.tag){case 26:rs(n,o,l),n.flags&Ql&&n.memoizedState!==null&&gD(l,Si,n.memoizedState,n.memoizedProps);break;case 5:rs(n,o,l);break;case 3:case 4:var u=Si;Si=bd(n.stateNode.containerInfo),rs(n,o,l),Si=u;break;case 22:n.memoizedState===null&&(u=n.alternate,u!==null&&u.memoizedState!==null?(u=Ql,Ql=16777216,rs(n,o,l),Ql=u):rs(n,o,l));break;default:rs(n,o,l)}}function ej(n){var o=n.alternate;if(o!==null&&(n=o.child,n!==null)){o.child=null;do o=n.sibling,n.sibling=null,n=o;while(n!==null)}}function Xl(n){var o=n.deletions;if((n.flags&16)!==0){if(o!==null)for(var l=0;l<o.length;l++){var u=o[l];Xt=u,aj(u,n)}ej(n)}if(n.subtreeFlags&10256)for(n=n.child;n!==null;)tj(n),n=n.sibling}function tj(n){switch(n.tag){case 0:case 11:case 15:Xl(n),n.flags&2048&&ao(9,n,n.return);break;case 3:Xl(n);break;case 12:Xl(n);break;case 22:var o=n.stateNode;n.memoizedState!==null&&o._visibility&2&&(n.return===null||n.return.tag!==13)?(o._visibility&=-3,ld(n)):Xl(n);break;default:Xl(n)}}function ld(n){var o=n.deletions;if((n.flags&16)!==0){if(o!==null)for(var l=0;l<o.length;l++){var u=o[l];Xt=u,aj(u,n)}ej(n)}for(n=n.child;n!==null;){switch(o=n,o.tag){case 0:case 11:case 15:ao(8,o,o.return),ld(o);break;case 22:l=o.stateNode,l._visibility&2&&(l._visibility&=-3,ld(o));break;default:ld(o)}n=n.sibling}}function aj(n,o){for(;Xt!==null;){var l=Xt;switch(l.tag){case 0:case 11:case 15:ao(8,l,o);break;case 23:case 22:if(l.memoizedState!==null&&l.memoizedState.cachePool!==null){var u=l.memoizedState.cachePool.pool;u!=null&&u.refCount++}break;case 24:Ll(l.memoizedState.cache)}if(u=l.child,u!==null)u.return=l,Xt=u;else e:for(l=n;Xt!==null;){u=Xt;var y=u.sibling,w=u.return;if(F0(u),u===l){Xt=null;break e}if(y!==null){y.return=w,Xt=y;break e}Xt=w}}}var DR={getCacheForType:function(n){var o=ra(Mt),l=o.data.get(n);return l===void 0&&(l=n(),o.data.set(n,l)),l},cacheSignal:function(){return ra(Mt).controller.signal}},OR=typeof WeakMap=="function"?WeakMap:Map,ot=0,mt=null,We=null,Fe=0,st=0,qa=null,io=!1,ss=!1,_m=!1,bn=0,Et=0,no=0,lr=0,Tm=0,Za=0,ls=0,ec=null,Ka=null,Em=!1,cd=0,ij=0,ud=1/0,dd=null,oo=null,Ft=0,ro=null,cs=null,jn=0,Am=0,Pm=null,nj=null,tc=0,Cm=null;
vendor: 19,872 bytes, line 9
9function Ya(){return(ot&2)!==0&&Fe!==0?Fe&-Fe:A.T!==null?Km():Jh()}function oj(){if(Za===0)if((Fe&536870912)===0||Ye){var n=Cr;Cr<<=1,(Cr&3932160)===0&&(Cr=262144),Za=n}else Za=536870912;return n=Fa.current,n!==null&&(n.flags|=32),Za}function Ma(n,o,l){(n===mt&&(st===2||st===9)||n.cancelPendingCommit!==null)&&(us(n,0),so(n,Fe,Za,!1)),_t(n,l),((ot&2)===0||n!==mt)&&(n===mt&&((ot&2)===0&&(lr|=l),Et===4&&so(n,Fe,Za,!1)),Wi(n))}function rj(n,o,l){if((ot&6)!==0)throw Error(i(327));var u=!l&&(o&127)===0&&(o&n.expiredLanes)===0||vt(n,o),y=u?KR(n,o):Dm(n,o,!0),w=u;do{if(y===0){ss&&!u&&so(n,o,0,!1);break}else{if(l=n.current.alternate,w&&!UR(l)){y=Dm(n,o,!1),w=!1;continue}if(y===2){if(w=o,n.errorRecoveryDisabledLanes&w)var b=0;else b=n.pendingLanes&-536870913,b=b!==0?b:b&536870912?536870912:0;if(b!==0){o=b;e:{var x=n;y=ec;var P=x.current.memoizedState.isDehydrated;if(P&&(us(x,b).flags|=256),b=Dm(x,b,!1),b!==2){if(_m&&!P){x.errorRecoveryDisabledLanes|=w,lr|=w,y=4;break e}w=Ka,Ka=y,w!==null&&(Ka===null?Ka=w:Ka.push.apply(Ka,w))}y=b}if(w=!1,y!==2)continue}}if(y===1){us(n,0),so(n,o,0,!0);break}e:{switch(u=n,w=y,w){case 0:case 1:throw Error(i(345));case 4:if((o&4194048)!==o)break;case 6:so(u,o,Za,!io);break e;case 2:Ka=null;break;case 3:case 5:break;default:throw Error(i(329))}if((o&62914560)===o&&(y=cd+300-ba(),10<y)){if(so(u,o,Za,!io),Ce(u,0,!0)!==0)break e;jn=o,u.timeoutHandle=Kj(sj.bind(null,u,l,Ka,dd,Em,o,Za,lr,ls,io,w,"Throttled",-0,0),y);break e}sj(u,l,Ka,dd,Em,o,Za,lr,ls,io,w,null,-0,0)}}break}while(!0);Wi(n)}function sj(n,o,l,u,y,w,b,x,P,M,J,te,$,V){if(n.timeoutHandle=-1,te=o.subtreeFlags,te&8192||(te&16785408)===16785408){te={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:sn},X0(o,w,te);var ke=(w&62914560)===w?cd-ba():(w&4194048)===w?ij-ba():0;if(ke=kD(te,ke),ke!==null){jn=w,n.cancelPendingCommit=ke(mj.bind(null,n,o,w,l,u,y,b,x,P,J,te,null,$,V)),so(n,w,b,!M);return}}mj(n,o,w,l,u,y,b,x,P)}function UR(n){for(var o=n;;){var l=o.tag;if((l===0||l===11||l===15)&&o.flags&16384&&(l=o.updateQueue,l!==null&&(l=l.stores,l!==null)))for(var u=0;u<l.length;u++){var y=l[u],w=y.getSnapshot;y=y.value;try{if(!Ga(w(),y))return!1}catch{return!1}}if(l=o.child,o.subtreeFlags&16384&&l!==null)l.return=o,o=l;else{if(o===n)break;for(;o.sibling===null;){if(o.return===null||o.return===n)return!0;o=o.return}o.sibling.return=o.return,o=o.sibling}}return!0}function so(n,o,l,u){o&=~Tm,o&=~lr,n.suspendedLanes|=o,n.pingedLanes&=~o,u&&(n.warmLanes|=o),u=n.expirationTimes;for(var y=o;0<y;){var w=31-ya(y),b=1<<w;u[w]=-1,y&=~b}l!==0&&Vo(n,l,o)}function pd(){return(ot&6)===0?(ac(0),!1):!0}function Rm(){if(We!==null){if(st===0)var n=We.return;else n=We,dn=Xo=null,qy(n),es=null,Ml=0,n=We;for(;n!==null;)M0(n.alternate,n),n=n.return;We=null}}function us(n,o){var l=n.timeoutHandle;l!==-1&&(n.timeoutHandle=-1,tD(l)),l=n.cancelPendingCommit,l!==null&&(n.cancelPendingCommit=null,l()),jn=0,Rm(),mt=n,We=l=cn(n.current,null),Fe=o,st=0,qa=null,io=!1,ss=vt(n,o),_m=!1,ls=Za=Tm=lr=no=Et=0,Ka=ec=null,Em=!1,(o&8)!==0&&(o|=o&32);var u=n.entangledLanes;if(u!==0)for(n=n.entanglements,u&=o;0<u;){var y=31-ya(u),w=1<<y;o|=n[y],u&=~w}return bn=o,Du(),l}function lj(n,o){Le=null,A.H=Fl,o===Xr||o===$u?(o=Sb(),st=3):o===Ly?(o=Sb(),st=4):st=o===um?8:o!==null&&typeof o=="object"&&typeof o.then=="function"?6:1,qa=o,We===null&&(Et=1,td(n,ri(o,n.current)))}function cj(){var n=Fa.current;return n===null?!0:(Fe&4194048)===Fe?ui===null:(Fe&62914560)===Fe||(Fe&536870912)!==0?n===ui:!1}function uj(){var n=A.H;return A.H=Fl,n===null?Fl:n}function dj(){var n=A.A;return A.A=DR,n}function hd(){Et=4,io||(Fe&4194048)!==Fe&&Fa.current!==null||(ss=!0),(no&134217727)===0&&(lr&134217727)===0||mt===null||so(mt,Fe,Za,!1)}function Dm(n,o,l){var u=ot;ot|=2;var y=uj(),w=dj();(mt!==n||Fe!==o)&&(dd=null,us(n,o)),o=!1;var b=Et;e:do try{if(st!==0&&We!==null){var x=We,P=qa;switch(st){case 8:Rm(),b=6;break e;case 3:case 2:case 9:case 6:Fa.current===null&&(o=!0);var M=st;if(st=0,qa=null,ds(n,x,P,M),l&&ss){b=0;break e}break;default:M=st,st=0,qa=null,ds(n,x,P,M)}}LR(),b=Et;break}catch(J){lj(n,J)}while(!0);return o&&n.shellSuspendCounter++,dn=Xo=null,ot=u,A.H=y,A.A=w,We===null&&(mt=null,Fe=0,Du()),b}function LR(){for(;We!==null;)pj(We)}function KR(n,o){var l=ot;ot|=2;var u=uj(),y=dj();mt!==n||Fe!==o?(dd=null,ud=ba()+500,us(n,o)):ss=vt(n,o);e:do try{if(st!==0&&We!==null){o=We;var w=qa;t:switch(st){case 1:st=0,qa=null,ds(n,o,w,1);break;case 2:case 9:if(jb(w)){st=0,qa=null,hj(o);break}o=function(){st!==2&&st!==9||mt!==n||(st=7),Wi(n)},w.then(o,o);break e;case 3:st=7;break e;case 4:st=5;break e;case 7:jb(w)?(st=0,qa=null,hj(o)):(st=0,qa=null,ds(n,o,w,7));break;case 5:var b=null;switch(We.tag){case 26:b=We.memoizedState;case 5:case 27:var x=We;if(b?Qj(b):x.stateNode.complete){st=0,qa=null;var P=x.sibling;if(P!==null)We=P;else{var M=x.return;M!==null?(We=M,yd(M)):We=null}break t}}st=0,qa=null,ds(n,o,w,5);break;case 6:st=0,qa=null,ds(n,o,w,6);break;case 8:Rm(),Et=6;break e;default:throw Error(i(462))}}MR();break}catch(J){lj(n,J)}while(!0);return dn=Xo=null,A.H=u,A.A=y,ot=l,We!==null?0:(mt=null,Fe=0,Du(),Et)}function MR(){for(;We!==null&&!za();)pj(We)}function pj(n){var o=L0(n.alternate,n,bn);n.memoizedProps=n.pendingProps,o===null?yd(n):We=o}function hj(n){var o=n,l=o.alternate;switch(o.tag){case 15:case 0:o=P0(l,o,o.pendingProps,o.type,void 0,Fe);break;case 11:o=P0(l,o,o.pendingProps,o.type.render,o.ref,Fe);break;case 5:qy(o);default:M0(l,o),o=We=db(o,bn),o=L0(l,o,bn)}n.memoizedProps=n.pendingProps,o===null?yd(n):We=o}function ds(n,o,l,u){dn=Xo=null,qy(o),es=null,Ml=0;var y=o.return;try{if(_R(n,y,o,l,Fe)){Et=1,td(n,ri(l,n.current)),We=null;return}}catch(w){if(y!==null)throw We=y,w;Et=1,td(n,ri(l,n.current)),We=null;return}o.flags&32768?(Ye||u===1?n=!0:ss||(Fe&536870912)!==0?n=!1:(io=n=!0,(u===2||u===9||u===3||u===6)&&(u=Fa.current,u!==null&&u.tag===13&&(u.flags|=16384))),yj(o,n)):yd(o)}function yd(n){var o=n;do{if((o.flags&32768)!==0){yj(o,io);return}n=o.return;var l=AR(o.alternate,o,bn);if(l!==null){We=l;return}if(o=o.sibling,o!==null){We=o;return}We=o=n}while(o!==null);Et===0&&(Et=5)}function yj(n,o){do{var l=PR(n.alternate,n);if(l!==null){l.flags&=32767,We=l;return}if(l=n.return,l!==null&&(l.flags|=32768,l.subtreeFlags=0,l.deletions=null),!o&&(n=n.sibling,n!==null)){We=n;return}We=n=l}while(n!==null);Et=6,We=null}function mj(n,o,l,u,y,w,b,x,P){n.cancelPendingCommit=null;do md();while(Ft!==0);if((ot&6)!==0)throw Error(i(327));if(o!==null){if(o===n.current)throw Error(i(177));if(w=o.lanes|o.childLanes,w|=by,Aa(n,l,w,b,x,P),n===mt&&(We=mt=null,Fe=0),cs=o,ro=n,jn=l,Am=w,Pm=y,nj=u,(o.subtreeFlags&10256)!==0||(o.flags&10256)!==0?(n.callbackNode=null,n.callbackPriority=0,IR(Io,function(){return zj(),null})):(n.callbackNode=null,n.callbackPriority=0),u=(o.flags&13878)!==0,(o.subtreeFlags&13878)!==0||u){u=A.T,A.T=null,y=B.p,B.p=2,b=ot,ot|=4;try{CR(n,o,l)}finally{ot=b,B.p=y,A.T=u}}Ft=1,fj(),wj(),gj()}}function fj(){if(Ft===1){Ft=0;var n=ro,o=cs,l=(o.flags&13878)!==0;if((o.subtreeFlags&13878)!==0||l){l=A.T,A.T=null;var u=B.p;B.p=2;var y=ot;ot|=4;try{Y0(o,n);var w=Vm,b=ab(n.containerInfo),x=w.focusedElem,P=w.selectionRange;if(b!==x&&x&&x.ownerDocument&&tb(x.ownerDocument.documentElement,x)){if(P!==null&&fy(x)){var M=P.start,J=P.end;if(J===void 0&&(J=M),"selectionStart"in x)x.selectionStart=M,x.selectionEnd=Math.min(J,x.value.length);else{var te=x.ownerDocument||document,$=te&&te.defaultView||window;if($.getSelection){var V=$.getSelection(),ke=x.textContent.length,Ae=Math.min(P.start,ke),pt=P.end===void 0?Ae:Math.min(P.end,ke);!V.extend&&Ae>pt&&(b=pt,pt=Ae,Ae=b);var L=eb(x,Ae),D=eb(x,pt);if(L&&D&&(V.rangeCount!==1||V.anchorNode!==L.node||V.anchorOffset!==L.offset||V.focusNode!==D.node||V.focusOffset!==D.offset)){var K=te.createRange();K.setStart(L.node,L.offset),V.removeAllRanges(),Ae>pt?(V.addRange(K),V.extend(D.node,D.offset)):(K.setEnd(D.node,D.offset),V.addRange(K))}}}}for(te=[],V=x;V=V.parentNode;)V.nodeType===1&&te.push({element:V,left:V.scrollLeft,top:V.scrollTop});for(typeof x.focus=="function"&&x.focus(),x=0;x<te.length;x++){var Q=te[x];Q.element.scrollLeft=Q.left,Q.element.scrollTop=Q.top}}Td=!!Gm,Vm=Gm=null}finally{ot=y,B.p=u,A.T=l}}n.current=o,Ft=2}}function wj(){if(Ft===2){Ft=0;var n=ro,o=cs,l=(o.flags&8772)!==0;if((o.subtreeFlags&8772)!==0||l){l=A.T,A.T=null;var u=B.p;B.p=2;var y=ot;ot|=4;try{V0(n,o.alternate,o)}finally{ot=y,B.p=u,A.T=l}}Ft=3}}function gj(){if(Ft===4||Ft===3){Ft=0,In();var n=ro,o=cs,l=jn,u=nj;(o.subtreeFlags&10256)!==0||(o.flags&10256)!==0?Ft=5:(Ft=0,cs=ro=null,kj(n,n.pendingLanes));var y=n.pendingLanes;if(y===0&&(oo=null),ji(l),o=o.stateNode,ja&&typeof ja.onCommitFiberRoot=="function")try{ja.onCommitFiberRoot(Wo,o,void 0,(o.current.flags&128)===128)}catch{}if(u!==null){o=A.T,y=B.p,B.p=2,A.T=null;try{for(var w=n.onRecoverableError,b=0;b<u.length;b++){var x=u[b];w(x.value,{componentStack:x.stack})}}finally{A.T=o,B.p=y}}(jn&3)!==0&&md(),Wi(n),y=n.pendingLanes,(l&261930)!==0&&(y&42)!==0?n===Cm?tc++:(tc=0,Cm=n):tc=0,ac(0)}}function kj(n,o){(n.pooledCacheLanes&=o)===0&&(o=n.pooledCache,o!=null&&(n.pooledCache=null,Ll(o)))}function md(){return fj(),wj(),gj(),zj()}function zj(){if(Ft!==5)return!1;var n=ro,o=Am;Am=0;var l=ji(jn),u=A.T,y=B.p;try{B.p=32>l?32:l,A.T=null,l=Pm,Pm=null;var w=ro,b=jn;if(Ft=0,cs=ro=null,jn=0,(ot&6)!==0)throw Error(i(331));var x=ot;if(ot|=4,tj(w.current),Q0(w,w.current,b,l),ot=x,ac(0,!1),ja&&typeof ja.onPostCommitFiberRoot=="function")try{ja.onPostCommitFiberRoot(Wo,w)}catch{}return!0}finally{B.p=y,A.T=u,kj(n,o)}}function bj(n,o,l){o=ri(l,o),o=cm(n.stateNode,o,2),n=Xn(n,o,2),n!==null&&(_t(n,2),Wi(n))}function lt(n,o,l){if(n.tag===3)bj(n,n,l);else for(;o!==null;){if(o.tag===3){bj(o,n,l);break}else if(o.tag===1){var u=o.stateNode;if(typeof o.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(oo===null||!oo.has(u))){n=ri(l,n),l=j0(2),u=Xn(o,l,2),u!==null&&(v0(l,u,o,n),_t(u,2),Wi(u));break}}o=o.return}}function Om(n,o,l){var u=n.pingCache;if(u===null){u=n.pingCache=new OR;var y=new Set;u.set(o,y)}else y=u.get(o),y===void 0&&(y=new Set,u.set(o,y));y.has(l)||(_m=!0,y.add(l),n=NR.bind(null,n,o,l),o.then(n,n))}function NR(n,o,l){var u=n.pingCache;u!==null&&u.delete(o),n.pingedLanes|=n.suspendedLanes&l,n.warmLanes&=~l,mt===n&&(Fe&l)===l&&(Et===4||Et===3&&(Fe&62914560)===Fe&&300>ba()-cd?(ot&2)===0&&us(n,0):Tm|=l,ls===Fe&&(ls=0)),Wi(n)}function jj(n,o){o===0&&(o=ma()),n=Yo(n,o),n!==null&&(_t(n,o),Wi(n))}function BR(n){var o=n.memoizedState,l=0;o!==null&&(l=o.retryLane),jj(n,l)}function $R(n,o){var l=0;switch(n.tag){case 31:case 13:var u=n.stateNode,y=n.memoizedState;y!==null&&(l=y.retryLane);break;case 19:u=n.stateNode;break;case 22:u=n.stateNode._retryCache;break;default:throw Error(i(314))}u!==null&&u.delete(o),jj(n,l)}function IR(n,o){return kl(n,o)}var fd=null,ps=null,Um=!1,wd=!1,Lm=!1,lo=0;function Wi(n){n!==ps&&n.next===null&&(ps===null?fd=ps=n:ps=ps.next=n),wd=!0,Um||(Um=!0,GR())}function ac(n,o){if(!Lm&&wd){Lm=!0;do for(var l=!1,u=fd;u!==null;){if(n!==0){var y=u.pendingLanes;if(y===0)var w=0;else{var b=u.suspendedLanes,x=u.pingedLanes;w=(1<<31-ya(42|n)+1)-1,w&=y&~(b&~x),w=w&201326741?w&201326741|1:w?w|2:0}w!==0&&(l=!0,_j(u,w))}else w=Fe,w=Ce(u,u===mt?w:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(w&3)===0||vt(u,w)||(l=!0,_j(u,w));u=u.next}while(l);Lm=!1}}function WR(){vj()}function vj(){wd=Um=!1;var n=0;lo!==0&&eD()&&(n=lo);for(var o=ba(),l=null,u=fd;u!==null;){var y=u.next,w=Sj(u,o);w===0?(u.next=null,l===null?fd=y:l.next=y,y===null&&(ps=l)):(l=u,(n!==0||(w&3)!==0)&&(wd=!0)),u=y}Ft!==0&&Ft!==5||ac(n),lo!==0&&(lo=0)}function Sj(n,o){for(var l=n.suspendedLanes,u=n.pingedLanes,y=n.expirationTimes,w=n.pendingLanes&-62914561;0<w;){var b=31-ya(w),x=1<<b,P=y[b];P===-1?((x&l)===0||(x&u)!==0)&&(y[b]=Jt(x,o)):P<=o&&(n.expiredLanes|=x),w&=~x}if(o=mt,l=Fe,l=Ce(n,n===o?l:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),u=n.callbackNode,l===0||n===o&&(st===2||st===9)||n.cancelPendingCommit!==null)return u!==null&&u!==null&&zl(u),n.callbackNode=null,n.callbackPriority=0;if((l&3)===0||vt(n,l)){if(o=l&-l,o===n.callbackPriority)return o;switch(u!==null&&zl(u),ji(l)){case 2:case 8:l=zu;break;case 32:l=Io;break;case 268435456:l=on;break;default:l=Io}return u=xj.bind(null,n),l=kl(l,u),n.callbackPriority=o,n.callbackNode=l,o}return u!==null&&u!==null&&zl(u),n.callbackPriority=2,n.callbackNode=null,2}function xj(n,o){if(Ft!==0&&Ft!==5)return n.callbackNode=null,n.callbackPriority=0,null;var l=n.callbackNode;if(md()&&n.callbackNode!==l)return null;var u=Fe;return u=Ce(n,n===mt?u:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),u===0?null:(rj(n,u,o),Sj(n,ba()),n.callbackNode!=null&&n.callbackNode===l?xj.bind(null,n):null)}function _j(n,o){if(md())return null;rj(n,o,!0)}function GR(){aD(function(){(ot&6)!==0?kl($o,WR):vj()})}function Km(){if(lo===0){var n=Jr;n===0&&(n=Pr,Pr<<=1,(Pr&261888)===0&&(Pr=256)),lo=n}return lo}function Tj(n){return n==null||typeof n=="symbol"||typeof n=="boolean"?null:typeof n=="function"?n:xu(""+n)}function Ej(n,o){var l=o.ownerDocument.createElement("input");return l.name=o.name,l.value=o.value,n.id&&l.setAttribute("form",n.id),o.parentNode.insertBefore(l,o),n=new FormData(n),l.parentNode.removeChild(l),n}function VR(n,o,l,u,y){if(o==="submit"&&l&&l.stateNode===y){var w=Tj((y[Ra]||null).action),b=u.submitter;b&&(o=(o=b[Ra]||null)?Tj(o.formAction):b.getAttribute("formAction"),o!==null&&(w=o,b=null));var x=new Au("action","action",null,u,y);n.push({event:x,listeners:[{instance:null,listener:function(){if(u.defaultPrevented){if(lo!==0){var P=b?Ej(y,b):new FormData(y);im(l,{pending:!0,data:P,method:y.method,action:w},null,P)}}else typeof w=="function"&&(x.preventDefault(),P=b?Ej(y,b):new FormData(y),im(l,{pending:!0,data:P,method:y.method,action:w},w,P))},currentTarget:y}]})}}for(var Mm=0;Mm<zy.length;Mm++){var Nm=zy[Mm],FR=Nm.toLowerCase(),HR=Nm[0].toUpperCase()+Nm.slice(1);vi(FR,"on"+HR)}vi(ob,"onAnimationEnd"),vi(rb,"onAnimationIteration"),vi(sb,"onAnimationStart"),vi("dblclick","onDoubleClick"),vi("focusin","onFocus"),vi("focusout","onBlur"),vi(cR,"onTransitionRun"),vi(uR,"onTransitionStart"),vi(dR,"onTransitionCancel"),vi(lb,"onTransitionEnd"),Kr("onMouseEnter",["mouseout","mouseover"]),Kr("onMouseLeave",["mouseout","mouseover"]),Kr("onPointerEnter",["pointerout","pointerover"]),Kr("onPointerLeave",["pointerout","pointerover"]),Fo("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Fo("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Fo("onBeforeInput",["compositionend","keypress","textInput","paste"]),Fo("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Fo("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Fo("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ic="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),qR=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(ic));function Aj(n,o){o=(o&4)!==0;for(var l=0;l<n.length;l++){var u=n[l],y=u.event;u=u.listeners;e:{var w=void 0;if(o)for(var b=u.length-1;0<=b;b--){var x=u[b],P=x.instance,M=x.currentTarget;if(x=x.listener,P!==w&&y.isPropagationStopped())break e;w=x,y.currentTarget=M;try{w(y)}catch(J){Ru(J)}y.currentTarget=null,w=P}else for(b=0;b<u.length;b++){if(x=u[b],P=x.instance,M=x.currentTarget,x=x.listener,P!==w&&y.isPropagationStopped())break e;w=x,y.currentTarget=M;try{w(y)}catch(J){Ru(J)}y.currentTarget=null,w=P}}}}function Ge(n,o){var l=o[Qh];l===void 0&&(l=o[Qh]=new Set);var u=n+"__bubble";l.has(u)||(Pj(o,n,2,!1),l.add(u))}function Bm(n,o,l){var u=0;o&&(u|=4),Pj(l,n,u,o)}var gd="_reactListening"+Math.random().toString(36).slice(2);function $m(n){if(!n[gd]){n[gd]=!0,vz.forEach(function(l){l!=="selectionchange"&&(qR.has(l)||Bm(l,!1,n),Bm(l,!0,n))});var o=n.nodeType===9?n:n.ownerDocument;o===null||o[gd]||(o[gd]=!0,Bm("selectionchange",!1,o))}}function Pj(n,o,l,u){switch(ov(o)){case 2:var y=jD;break;case 8:y=vD;break;default:y=af}l=y.bind(null,o,l,n),y=void 0,!sy||o!=="touchstart"&&o!=="touchmove"&&o!=="wheel"||(y=!0),u?y!==void 0?n.addEventListener(o,l,{capture:!0,passive:y}):n.addEventListener(o,l,!0):y!==void 0?n.addEventListener(o,l,{passive:y}):n.addEventListener(o,l,!1)}function Im(n,o,l,u,y){var w=u;if((o&1)===0&&(o&2)===0&&u!==null)e:for(;;){if(u===null)return;var b=u.tag;if(b===3||b===4){var x=u.stateNode.containerInfo;if(x===y)break;if(b===4)for(b=u.return;b!==null;){var P=b.tag;if((P===3||P===4)&&b.stateNode.containerInfo===y)return;b=b.return}for(;x!==null;){if(b=Or(x),b===null)return;if(P=b.tag,P===5||P===6||P===26||P===27){u=w=b;continue e}x=x.parentNode}}u=u.return}Uz(function(){var M=w,J=oy(l),te=[];e:{var $=cb.get(n);if($!==void 0){var V=Au,ke=n;switch(n){case"keypress":if(Tu(l)===0)break e;case"keydown":case"keyup":V=$C;break;case"focusin":ke="focus",V=dy;break;case"focusout":ke="blur",V=dy;break;case"beforeblur":case"afterblur":V=dy;break;case"click":if(l.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":V=Mz;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":V=AC;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":V=GC;break;case ob:case rb:case sb:V=RC;break;case lb:V=FC;break;case"scroll":case"scrollend":V=TC;break;case"wheel":V=qC;break;case"copy":case"cut":case"paste":V=OC;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":V=Bz;break;case"toggle":case"beforetoggle":V=YC}var Ae=(o&4)!==0,pt=!Ae&&(n==="scroll"||n==="scrollend"),L=Ae?$!==null?$+"Capture":null:$;Ae=[];for(var D=M,K;D!==null;){var Q=D;if(K=Q.stateNode,Q=Q.tag,Q!==5&&Q!==26&&Q!==27||K===null||L===null||(Q=xl(D,L),Q!=null&&Ae.push(nc(D,Q,K))),pt)break;D=D.return}0<Ae.length&&($=new V($,ke,null,l,J),te.push({event:$,listeners:Ae}))}}if((o&7)===0){e:{if($=n==="mouseover"||n==="pointerover",V=n==="mouseout"||n==="pointerout",$&&l!==ny&&(ke=l.relatedTarget||l.fromElement)&&(Or(ke)||ke[Dr]))break e;if((V||$)&&($=J.window===J?J:($=J.ownerDocument)?$.defaultView||$.parentWindow:window,V?(ke=l.relatedTarget||l.toElement,V=M,ke=ke?Or(ke):null,ke!==null&&(pt=s(ke),Ae=ke.tag,ke!==pt||Ae!==5&&Ae!==27&&Ae!==6)&&(ke=null)):(V=null,ke=M),V!==ke)){if(Ae=Mz,Q="onMouseLeave",L="onMouseEnter",D="mouse",(n==="pointerout"||n==="pointerover")&&(Ae=Bz,Q="onPointerLeave",L="onPointerEnter",D="pointer"),pt=V==null?$:Sl(V),K=ke==null?$:Sl(ke),$=new Ae(Q,D+"leave",V,l,J),$.target=pt,$.relatedTarget=K,Q=null,Or(J)===M&&(Ae=new Ae(L,D+"enter",ke,l,J),Ae.target=K,Ae.relatedTarget=pt,Q=Ae),pt=Q,V&&ke)t:{for(Ae=ZR,L=V,D=ke,K=0,Q=L;Q;Q=Ae(Q))K++;Q=0;for(var Te=D;Te;Te=Ae(Te))Q++;for(;0<K-Q;)L=Ae(L),K--;for(;0<Q-K;)D=Ae(D),Q--;for(;K--;){if(L===D||D!==null&&L===D.alternate){Ae=L;break t}L=Ae(L),D=Ae(D)}Ae=null}else Ae=null;V!==null&&Cj(te,$,V,Ae,!1),ke!==null&&pt!==null&&Cj(te,pt,ke,Ae,!0)}}e:{if($=M?Sl(M):window,V=$.nodeName&&$.nodeName.toLowerCase(),V==="select"||V==="input"&&$.type==="file")var tt=qz;else if(Fz($))if(Zz)tt=rR;else{tt=nR;var ve=iR}else V=$.nodeName,!V||V.toLowerCase()!=="input"||$.type!=="checkbox"&&$.type!=="radio"?M&&iy(M.elementType)&&(tt=qz):tt=oR;if(tt&&(tt=tt(n,M))){Hz(te,tt,l,J);break e}ve&&ve(n,$,M),n==="focusout"&&M&&$.type==="number"&&M.memoizedProps.value!=null&&ay($,"
9number",$.value)}switch(ve=M?Sl(M):window,n){case"focusin":(Fz(ve)||ve.contentEditable==="true")&&(Wr=ve,wy=M,Dl=null);break;case"focusout":Dl=wy=Wr=null;break;case"mousedown":gy=!0;break;case"contextmenu":case"mouseup":case"dragend":gy=!1,ib(te,l,J);break;case"selectionchange":if(lR)break;case"keydown":case"keyup":ib(te,l,J)}var Ke;if(hy)e:{switch(n){case"compositionstart":var He="onCompositionStart";break e;case"compositionend":He="onCompositionEnd";break e;case"compositionupdate":He="onCompositionUpdate";break e}He=void 0}else Ir?Gz(n,l)&&(He="onCompositionEnd"):n==="keydown"&&l.keyCode===229&&(He="onCompositionStart");He&&($z&&l.locale!=="ko"&&(Ir||He!=="onCompositionStart"?He==="onCompositionEnd"&&Ir&&(Ke=Lz()):(Fn=J,ly="value"in Fn?Fn.value:Fn.textContent,Ir=!0)),ve=kd(M,He),0<ve.length&&(He=new Nz(He,n,null,l,J),te.push({event:He,listeners:ve}),Ke?He.data=Ke:(Ke=Vz(l),Ke!==null&&(He.data=Ke)))),(Ke=QC?XC(n,l):eR(n,l))&&(He=kd(M,"onBeforeInput"),0<He.length&&(ve=new Nz("onBeforeInput","beforeinput",null,l,J),te.push({event:ve,listeners:He}),ve.data=Ke)),VR(te,n,M,l,J)}Aj(te,o)})}function nc(n,o,l){return{instance:n,listener:o,currentTarget:l}}function kd(n,o){for(var l=o+"Capture",u=[];n!==null;){var y=n,w=y.stateNode;if(y=y.tag,y!==5&&y!==26&&y!==27||w===null||(y=xl(n,l),y!=null&&u.unshift(nc(n,y,w)),y=xl(n,o),y!=null&&u.push(nc(n,y,w))),n.tag===3)return u;n=n.return}return[]}function ZR(n){if(n===null)return null;do n=n.return;while(n&&n.tag!==5&&n.tag!==27);return n||null}function Cj(n,o,l,u,y){for(var w=o._reactName,b=[];l!==null&&l!==u;){var x=l,P=x.alternate,M=x.stateNode;if(x=x.tag,P!==null&&P===u)break;x!==5&&x!==26&&x!==27||M===null||(P=M,y?(M=xl(l,w),M!=null&&b.unshift(nc(l,M,P))):y||(M=xl(l,w),M!=null&&b.push(nc(l,M,P)))),l=l.return}b.length!==0&&n.push({event:o,listeners:b})}var YR=/\r\n?/g,JR=/\u0000|\uFFFD/g;function Rj(n){return(typeof n=="string"?n:""+n).replace(YR,` 10`).replace(JR,"")}function Dj(n,o){return o=Rj(o),Rj(n)===o}function dt(n,o,l,u,y,w){switch(l){case"children":typeof u=="string"?o==="body"||o==="textarea"&&u===""||Nr(n,u):(typeof u=="number"||typeof u=="bigint")&&o!=="body"&&Nr(n,""+u);break;case"className":vu(n,"class",u);break;case"tabIndex":vu(n,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":vu(n,l,u);break;case"style":Dz(n,u,w);break;case"data":if(o!=="object"){vu(n,"data",u);break}case"src":case"href":if(u===""&&(o!=="a"||l!=="href")){n.removeAttribute(l);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){n.removeAttribute(l);break}u=xu(""+u),n.setAttribute(l,u);break;case"action":case"formAction":if(typeof u=="function"){n.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof w=="function"&&(l==="formAction"?(o!=="input"&&dt(n,o,"name",y.name,y,null),dt(n,o,"formEncType",y.formEncType,y,null),dt(n,o,"formMethod",y.formMethod,y,null),dt(n,o,"formTarget",y.formTarget,y,null)):(dt(n,o,"encType",y.encType,y,null),dt(n,o,"method",y.method,y,null),dt(n,o,"target",y.target,y,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){n.removeAttribute(l);break}u=xu(""+u),n.setAttribute(l,u);break;case"onClick":u!=null&&(n.onclick=sn);break;case"onScroll":u!=null&&Ge("scroll",n);break;case"onScrollEnd":u!=null&&Ge("scrollend",n);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(i(61));if(l=u.__html,l!=null){if(y.children!=null)throw Error(i(60));n.innerHTML=l}}break;case"multiple":n.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":n.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){n.removeAttribute("xlink:href");break}l=xu(""+u),n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?n.setAttribute(l,""+u):n.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
10ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":u&&typeof u!="function"&&typeof u!="symbol"?n.setAttribute(l,""):n.removeAttribute(l);break;case"capture":case"download":u===!0?n.setAttribute(l,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?n.setAttribute(l,u):n.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?n.setAttribute(l,u):n.removeAttribute(l);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?n.removeAttribute(l):n.setAttribute(l,u);break;case"popover":Ge("beforetoggle",n),Ge("toggle",n),ju(n,"popover",u);break;case"xlinkActuate":rn(n,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":rn(n,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":rn(n,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":rn(n,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":rn(n,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":rn(n,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":rn(n,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":rn(n,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":rn(n,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":ju(n,"is",u);break;case"innerText":case"textContent":break;default:(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")&&(l=xC.get(l)||l,ju(n,l,u))}}function Wm(n,o,l,u,y,w){switch(l){case"style":Dz(n,u,w);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(i(61));if(l=u.__html,l!=null){if(y.children!=null)throw Error(i(60));n.innerHTML=l}}break;case"children":typeof u=="string"?Nr(n,u):(typeof u=="number"||typeof u=="bigint")&&Nr(n,""+u);break;case"onScroll":u!=null&&Ge("scroll",n);break;case"onScrollEnd":u!=null&&Ge("scrollend",n);break;case"onClick":u!=null&&(n.onclick=sn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Sz.hasOwnProperty(l))e:{if(l[0]==="o"&&l[1]==="n"&&(y=l.endsWith("Capture"),o=l.slice(2,y?l.length-7:void 0),w=n[Ra]||null,w=w!=null?w[l]:null,typeof w=="function"&&n.removeEventListener(o,w,y),typeof u=="function")){typeof w!="function"&&w!==null&&(l in n?n[l]=null:n.hasAttribute(l)&&n.removeAttribute(l)),n.addEventListener(o,u,y);break e}l in n?n[l]=u:u===!0?n.setAttribute(l,""):ju(n,l,u)}}}function la(n,o,l){switch(o){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Ge("error",n),Ge("load",n);var u=!1,y=!1,w;for(w in l)if(l.hasOwnProperty(w)){var b=l[w];if(b!=null)switch(w){case"src":u=!0;break;case"srcSet":y=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(i(137,o));default:dt(n,o,w,b,l,null)}}y&&dt(n,o,"srcSet",l.srcSet,l,null),u&&dt(n,o,"src",l.src,l,null);return;case"input":Ge("invalid",n);var x=w=b=y=null,P=null,M=null;for(u in l)if(l.hasOwnProperty(u)){var J=l[u];if(J!=null)switch(u){case"name":y=J;break;case"type":b=J;break;case"checked":P=J;break;case"defaultChecked":M=J;break;case"value":w=J;break;case"defaultValue":x=J;break;case"children":case"dangerouslySetInnerHTML":if(J!=null)throw Error(i(137,o));break;default:dt(n,o,u,J,l,null)}}Az(n,w,x,P,M,b,y,!1);return;case"select":Ge("invalid",n),u=b=w=null;for(y in l)if(l.hasOwnProperty(y)&&(x=l[y],x!=null))switch(y){case"value":w=x;break;case"defaultValue":b=x;break;case"multiple":u=x;default:dt(n,o,y,x,l,null)}o=w,l=b,n.multiple=!!u,o!=null?Mr(n,!!u,o,!1):l!=null&&Mr(n,!!u,l,!0);return;case"textarea":Ge("invalid",n),w=y=u=null;for(b in l)if(l.hasOwnProperty(b)&&(x=l[b],x!=null))switch(b){case"value":u=x;break;case"defaultValue":y=x;break;case"children":w=x;break;case"dangerouslySetInnerHTML":if(x!=null)throw Error(i(91));break;default:dt(n,o,b,x,l,null)}Cz(n,u,y,w);return;case"option":for(P in l)l.hasOwnProperty(P)&&(u=l[P],u!=null)&&(P==="selected"?n.selected=u&&typeof u!="function"&&typeof u!="symbol":dt(n,o,P,u,l,null));return;case"dialog":Ge("beforetoggle",n),Ge("toggle",n),Ge("cancel",n),Ge("close",n);break;case"iframe":case"object":Ge("load",n);break;case"video":case"audio":for(u=0;
vendor: 4,124 bytes, line 10
10u<ic.length;u++)Ge(ic[u],n);break;case"image":Ge("error",n),Ge("load",n);break;case"details":Ge("toggle",n);break;case"embed":case"source":case"link":Ge("error",n),Ge("load",n);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(M in l)if(l.hasOwnProperty(M)&&(u=l[M],u!=null))switch(M){case"children":case"dangerouslySetInnerHTML":throw Error(i(137,o));default:dt(n,o,M,u,l,null)}return;default:if(iy(o)){for(J in l)l.hasOwnProperty(J)&&(u=l[J],u!==void 0&&Wm(n,o,J,u,l,void 0));return}}for(x in l)l.hasOwnProperty(x)&&(u=l[x],u!=null&&dt(n,o,x,u,l,null))}function QR(n,o,l,u){switch(o){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var y=null,w=null,b=null,x=null,P=null,M=null,J=null;for(V in l){var te=l[V];if(l.hasOwnProperty(V)&&te!=null)switch(V){case"checked":break;case"value":break;case"defaultValue":P=te;default:u.hasOwnProperty(V)||dt(n,o,V,null,u,te)}}for(var $ in u){var V=u[$];if(te=l[$],u.hasOwnProperty($)&&(V!=null||te!=null))switch($){case"type":w=V;break;case"name":y=V;break;case"checked":M=V;break;case"defaultChecked":J=V;break;case"value":b=V;break;case"defaultValue":x=V;break;case"children":case"dangerouslySetInnerHTML":if(V!=null)throw Error(i(137,o));break;default:V!==te&&dt(n,o,$,V,u,te)}}ty(n,b,x,P,M,J,w,y);return;case"select":V=b=x=$=null;for(w in l)if(P=l[w],l.hasOwnProperty(w)&&P!=null)switch(w){case"value":break;case"multiple":V=P;default:u.hasOwnProperty(w)||dt(n,o,w,null,u,P)}for(y in u)if(w=u[y],P=l[y],u.hasOwnProperty(y)&&(w!=null||P!=null))switch(y){case"value":$=w;break;case"defaultValue":x=w;break;case"multiple":b=w;default:w!==P&&dt(n,o,y,w,u,P)}o=x,l=b,u=V,$!=null?Mr(n,!!l,$,!1):!!u!=!!l&&(o!=null?Mr(n,!!l,o,!0):Mr(n,!!l,l?[]:"",!1));return;case"textarea":V=$=null;for(x in l)if(y=l[x],l.hasOwnProperty(x)&&y!=null&&!u.hasOwnProperty(x))switch(x){case"value":break;case"children":break;default:dt(n,o,x,null,u,y)}for(b in u)if(y=u[b],w=l[b],u.hasOwnProperty(b)&&(y!=null||w!=null))switch(b){case"value":$=y;break;case"defaultValue":V=y;break;case"children":break;case"dangerouslySetInnerHTML":if(y!=null)throw Error(i(91));break;default:y!==w&&dt(n,o,b,y,u,w)}Pz(n,$,V);return;case"option":for(var ke in l)$=l[ke],l.hasOwnProperty(ke)&&$!=null&&!u.hasOwnProperty(ke)&&(ke==="selected"?n.selected=!1:dt(n,o,ke,null,u,$));for(P in u)$=u[P],V=l[P],u.hasOwnProperty(P)&&$!==V&&($!=null||V!=null)&&(P==="selected"?n.selected=$&&typeof $!="function"&&typeof $!="symbol":dt(n,o,P,$,u,V));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var Ae in l)$=l[Ae],l.hasOwnProperty(Ae)&&$!=null&&!u.hasOwnProperty(Ae)&&dt(n,o,Ae,null,u,$);for(M in u)if($=u[M],V=l[M],u.hasOwnProperty(M)&&$!==V&&($!=null||V!=null))switch(M){case"children":case"dangerouslySetInnerHTML":if($!=null)throw Error(i(137,o));break;default:dt(n,o,M,$,u,V)}return;default:if(iy(o)){for(var pt in l)$=l[pt],l.hasOwnProperty(pt)&&$!==void 0&&!u.hasOwnProperty(pt)&&Wm(n,o,pt,void 0,u,$);for(J in u)$=u[J],V=l[J],!u.hasOwnProperty(J)||$===V||$===void 0&&V===void 0||Wm(n,o,J,$,u,V);return}}for(var L in l)$=l[L],l.hasOwnProperty(L)&&$!=null&&!u.hasOwnProperty(L)&&dt(n,o,L,null,u,$);for(te in u)$=u[te],V=l[te],!u.hasOwnProperty(te)||$===V||$==null&&V==null||dt(n,o,te,$,u,V)}function Oj(n){switch(n){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function XR(){if(typeof performance.getEntriesByType=="function"){for(var n=0,o=0,l=performance.getEntriesByType("resource"),u=0;u<l.length;u++){var y=l[u],w=y.transferSize,b=y.initiatorType,x=y.duration;if(w&&x&&Oj(b)){for(b=0,x=y.responseEnd,u+=1;u<l.length;u++){var P=l[u],M=P.startTime;if(M>x)break;var J=P.transferSize,te=P.initiatorType;J&&Oj(te)&&(P=P.responseEnd,b+=J*(P<x?1:(x-M)/(P-M)))}if(--u,o+=8*(w+b)/(y.duration/1e3),n++,10<n)break}}if(0<n)return o/n/1e6}return navigator.connection&&(n=navigator.connection.downlink,typeof n=="number")?
vendor: 9,435 bytes, line 10
10n:5}var Gm=null,Vm=null;function zd(n){return n.nodeType===9?n:n.ownerDocument}function Uj(n){switch(n){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Lj(n,o){if(n===0)switch(o){case"svg":return 1;case"math":return 2;default:return 0}return n===1&&o==="foreignObject"?0:n}function Fm(n,o){return n==="textarea"||n==="noscript"||typeof o.children=="string"||typeof o.children=="number"||typeof o.children=="bigint"||typeof o.dangerouslySetInnerHTML=="object"&&o.dangerouslySetInnerHTML!==null&&o.dangerouslySetInnerHTML.__html!=null}var Hm=null;function eD(){var n=window.event;return n&&n.type==="popstate"?n===Hm?!1:(Hm=n,!0):(Hm=null,!1)}var Kj=typeof setTimeout=="function"?setTimeout:void 0,tD=typeof clearTimeout=="function"?clearTimeout:void 0,Mj=typeof Promise=="function"?Promise:void 0,aD=typeof queueMicrotask=="function"?queueMicrotask:typeof Mj<"u"?function(n){return Mj.resolve(null).then(n).catch(iD)}:Kj;function iD(n){setTimeout(function(){throw n})}function co(n){return n==="head"}function Nj(n,o){var l=o,u=0;do{var y=l.nextSibling;if(n.removeChild(l),y&&y.nodeType===8)if(l=y.data,l==="/$"||l==="/&"){if(u===0){n.removeChild(y),fs(o);return}u--}else if(l==="$"||l==="$?"||l==="$~"||l==="$!"||l==="&")u++;else if(l==="html")oc(n.ownerDocument.documentElement);else if(l==="head"){l=n.ownerDocument.head,oc(l);for(var w=l.firstChild;w;){var b=w.nextSibling,x=w.nodeName;w[vl]||x==="SCRIPT"||x==="STYLE"||x==="LINK"&&w.rel.toLowerCase()==="stylesheet"||l.removeChild(w),w=b}}else l==="body"&&oc(n.ownerDocument.body);l=y}while(l);fs(o)}function Bj(n,o){var l=n;n=0;do{var u=l.nextSibling;if(l.nodeType===1?o?(l._stashedDisplay=l.style.display,l.style.display="none"):(l.style.display=l._stashedDisplay||"",l.getAttribute("style")===""&&l.removeAttribute("style")):l.nodeType===3&&(o?(l._stashedText=l.nodeValue,l.nodeValue=""):l.nodeValue=l._stashedText||""),u&&u.nodeType===8)if(l=u.data,l==="/$"){if(n===0)break;n--}else l!=="$"&&l!=="$?"&&l!=="$~"&&l!=="$!"||n++;l=u}while(l)}function qm(n){var o=n.firstChild;for(o&&o.nodeType===10&&(o=o.nextSibling);o;){var l=o;switch(o=o.nextSibling,l.nodeName){case"HTML":case"HEAD":case"BODY":qm(l),Xh(l);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(l.rel.toLowerCase()==="stylesheet")continue}n.removeChild(l)}}function nD(n,o,l,u){for(;n.nodeType===1;){var y=l;if(n.nodeName.toLowerCase()!==o.toLowerCase()){if(!u&&(n.nodeName!=="INPUT"||n.type!=="hidden"))break}else if(u){if(!n[vl])switch(o){case"meta":if(!n.hasAttribute("itemprop"))break;return n;case"link":if(w=n.getAttribute("rel"),w==="stylesheet"&&n.hasAttribute("data-precedence"))break;if(w!==y.rel||n.getAttribute("href")!==(y.href==null||y.href===""?null:y.href)||n.getAttribute("crossorigin")!==(y.crossOrigin==null?null:y.crossOrigin)||n.getAttribute("title")!==(y.title==null?null:y.title))break;return n;case"style":if(n.hasAttribute("data-precedence"))break;return n;case"script":if(w=n.getAttribute("src"),(w!==(y.src==null?null:y.src)||n.getAttribute("type")!==(y.type==null?null:y.type)||n.getAttribute("crossorigin")!==(y.crossOrigin==null?null:y.crossOrigin))&&w&&n.hasAttribute("async")&&!n.hasAttribute("itemprop"))break;return n;default:return n}}else if(o==="input"&&n.type==="hidden"){var w=y.name==null?null:""+y.name;if(y.type==="hidden"&&n.getAttribute("name")===w)return n}else return n;if(n=di(n.nextSibling),n===null)break}return null}function oD(n,o,l){if(o==="")return null;for(;n.nodeType!==3;)if((n.nodeType!==1||n.nodeName!=="INPUT"||n.type!=="hidden")&&!l||(n=di(n.nextSibling),n===null))return null;return n}function $j(n,o){for(;n.nodeType!==8;)if((n.nodeType!==1||n.nodeName!=="INPUT"||n.type!=="hidden")&&!o||(n=di(n.nextSibling),n===null))return null;return n}function Zm(n){return n.data==="$?"||n.data==="$~"}function Ym(n){return n.data==="$!"||n.data==="$?"&&n.ownerDocument.readyState!=="loading"}function rD(n,o){var l=n.ownerDocument;if(n.data==="$~")n._reactRetry=o;else if(n.data!=="$?"||l.readyState!=="loading")o();else{var u=function(){o(),l.removeEventListener("DOMContentLoaded",u)};l.addEventListener("DOMContentLoaded",u),n._reactRetry=u}}function di(n){for(;n!=null;n=n.nextSibling){var o=n.nodeType;if(o===1||o===3)break;if(o===8){if(o=n.data,o==="$"||o==="$!"||o==="$?"||o==="$~"||o==="&"||o==="F!"||o==="F")break;if(o==="/$"||o==="/&")return null}}return n}var Jm=null;function Ij(n){n=n.nextSibling;for(var o=0;n;){if(n.nodeType===8){var l=n.data;if(l==="/$"||l==="/&"){if(o===0)return di(n.nextSibling);o--}else l!=="$"&&l!=="$!"&&l!=="$?"&&l!=="$~"&&l!=="&"||o++}n=n.nextSibling}return null}function Wj(n){n=n.previousSibling;for(var o=0;n;){if(n.nodeType===8){var l=n.data;if(l==="$"||l==="$!"||l==="$?"||l==="$~"||l==="&"){if(o===0)return n;o--}else l!=="/$"&&l!=="/&"||o++}n=n.previousSibling}return null}function Gj(n,o,l){switch(o=zd(l),n){case"html":if(n=o.documentElement,!n)throw Error(i(452));return n;case"head":if(n=o.head,!n)throw Error(i(453));return n;case"body":if(n=o.body,!n)throw Error(i(454));return n;default:throw Error(i(451))}}function oc(n){for(var o=n.attributes;o.length;)n.removeAttributeNode(o[0]);Xh(n)}var pi=new Map,Vj=new Set;function bd(n){return typeof n.getRootNode=="function"?n.getRootNode():n.nodeType===9?n:n.ownerDocument}var vn=B.d;B.d={f:sD,r:lD,D:cD,C:uD,L:dD,m:pD,X:yD,S:hD,M:mD};function sD(){var n=vn.f(),o=pd();return n||o}function lD(n){var o=Ur(n);o!==null&&o.tag===5&&o.type==="form"?l0(o):vn.r(n)}var hs=typeof document>"u"?null:document;function Fj(n,o,l){var u=hs;if(u&&typeof o=="string"&&o){var y=ni(o);y='link[rel="'+n+'"][href="'+y+'"]',typeof l=="string"&&(y+='[crossorigin="'+l+'"]'),Vj.has(y)||(Vj.add(y),n={rel:n,crossOrigin:l,href:o},u.querySelector(y)===null&&(o=u.createElement("link"),la(o,"link",n),Qt(o),u.head.appendChild(o)))}}function cD(n){vn.D(n),Fj("dns-prefetch",n,null)}function uD(n,o){vn.C(n,o),Fj("preconnect",n,o)}function dD(n,o,l){vn.L(n,o,l);var u=hs;if(u&&n&&o){var y='link[rel="preload"][as="'+ni(o)+'"]';o==="image"&&l&&l.imageSrcSet?(y+='[imagesrcset="'+ni(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(y+='[imagesizes="'+ni(l.imageSizes)+'"]')):y+='[href="'+ni(n)+'"]';var w=y;switch(o){case"style":w=ys(n);break;case"script":w=ms(n)}pi.has(w)||(n=m({rel:"preload",href:o==="image"&&l&&l.imageSrcSet?void 0:n,as:o},l),pi.set(w,n),u.querySelector(y)!==null||o==="style"&&u.querySelector(rc(w))||o==="script"&&u.querySelector(sc(w))||(o=u.createElement("link"),la(o,"link",n),Qt(o),u.head.appendChild(o)))}}function pD(n,o){vn.m(n,o);var l=hs;if(l&&n){var u=o&&typeof o.as=="string"?o.as:"script",y='link[rel="modulepreload"][as="'+ni(u)+'"][href="'+ni(n)+'"]',w=y;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":w=ms(n)}if(!pi.has(w)&&(n=m({rel:"modulepreload",href:n},o),pi.set(w,n),l.querySelector(y)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(sc(w)))return}u=l.createElement("link"),la(u,"link",n),Qt(u),l.head.appendChild(u)}}}function hD(n,o,l){vn.S(n,o,l);var u=hs;if(u&&n){var y=Lr(u).hoistableStyles,w=ys(n);o=o||"default";var b=y.get(w);if(!b){var x={loading:0,preload:null};if(b=u.querySelector(rc(w)))x.loading=5;else{n=m({rel:"stylesheet",href:n,"data-precedence":o},l),(l=pi.get(w))&&Qm(n,l);var P=b=u.createElement("link");Qt(P),la(P,"link",n),P._p=new Promise(function(M,J){P.onload=M,P.onerror=J}),P.addEventListener("load",function(){x.loading|=1}),P.addEventListener("error",function(){x.loading|=2}),x.loading|=4,jd(b,o,u)}b={type:"stylesheet",instance:b,count:1,state:x},y.set(w,b)}}}function yD(n,o){vn.X(n,o);var l=hs;if(l&&n){var u=Lr(l).hoistableScripts,y=ms(n),w=u.get(y);w||(w=l.querySelector(sc(y)),w||(n=m({src:n,async:!0},o),(o=pi.get(y))&&Xm(n,o),w=l.createElement("script"),Qt(w),la(w,"link",n),l.head.appendChild(w)),w={type:"script",instance:w,count:1,state:null},u.set(y,w))}}function mD(n,o){vn.M(n,o);var l=hs;if(l&&n){var u=Lr(l).hoistableScripts,y=ms(n),w=u.get(y);w||(w=l.querySelector(sc(y)),w||(n=m({src:n,async:!0,type:"module"},o),(o=pi.get(y))&&Xm(n,o),w=l.createElement("script"),Qt(w),la(w,"link",n),l.head.appendChild(w)),w={type:"script",instance:w,count:1,state:null},u.set(y,w))}}function Hj(n,o,l,u){var y=(y=Ee.current)?bd(y):null;if(!y)throw Error(i(446));switch(n){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(o=ys(l.href),l=Lr(y).hoistableStyles,u=l.get(o),u||(u={type:"style",instance:null,count:0,state:null},l.set(o,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){n=ys(l.href);var w=Lr(y).hoistableStyles,b=w.get(n);if(b||(y=y.ownerDocument||y,b={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},w.set(n,b),(w=y.querySelector(rc(n)))&&!w._p&&(b.instance=w,b.state.loading=5),pi.has(n)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},pi.set(n,l),w||fD(y,n,l,b.state))),o&&u===null)throw Error(i(528,""));return b}if(o&&u!==null)throw Error(i(529,""));return null;case"script":return o=l.async,l=l.src,typeof l=="string"&&o&&typeof o!="function"&&typeof o!="symbol"?
vendor: 5,495 bytes, line 10
10(o=ms(l),l=Lr(y).hoistableScripts,u=l.get(o),u||(u={type:"script",instance:null,count:0,state:null},l.set(o,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,n))}}function ys(n){return'href="'+ni(n)+'"'}function rc(n){return'link[rel="stylesheet"]['+n+"]"}function qj(n){return m({},n,{"data-precedence":n.precedence,precedence:null})}function fD(n,o,l,u){n.querySelector('link[rel="preload"][as="style"]['+o+"]")?u.loading=1:(o=n.createElement("link"),u.preload=o,o.addEventListener("load",function(){return u.loading|=1}),o.addEventListener("error",function(){return u.loading|=2}),la(o,"link",l),Qt(o),n.head.appendChild(o))}function ms(n){return'[src="'+ni(n)+'"]'}function sc(n){return"script[async]"+n}function Zj(n,o,l){if(o.count++,o.instance===null)switch(o.type){case"style":var u=n.querySelector('style[data-href~="'+ni(l.href)+'"]');if(u)return o.instance=u,Qt(u),u;var y=m({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return u=(n.ownerDocument||n).createElement("style"),Qt(u),la(u,"style",y),jd(u,l.precedence,n),o.instance=u;case"stylesheet":y=ys(l.href);var w=n.querySelector(rc(y));if(w)return o.state.loading|=4,o.instance=w,Qt(w),w;u=qj(l),(y=pi.get(y))&&Qm(u,y),w=(n.ownerDocument||n).createElement("link"),Qt(w);var b=w;return b._p=new Promise(function(x,P){b.onload=x,b.onerror=P}),la(w,"link",u),o.state.loading|=4,jd(w,l.precedence,n),o.instance=w;case"script":return w=ms(l.src),(y=n.querySelector(sc(w)))?(o.instance=y,Qt(y),y):(u=l,(y=pi.get(w))&&(u=m({},l),Xm(u,y)),n=n.ownerDocument||n,y=n.createElement("script"),Qt(y),la(y,"link",u),n.head.appendChild(y),o.instance=y);case"void":return null;default:throw Error(i(443,o.type))}else o.type==="stylesheet"&&(o.state.loading&4)===0&&(u=o.instance,o.state.loading|=4,jd(u,l.precedence,n));return o.instance}function jd(n,o,l){for(var u=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),y=u.length?u[u.length-1]:null,w=y,b=0;b<u.length;b++){var x=u[b];if(x.dataset.precedence===o)w=x;else if(w!==y)break}w?w.parentNode.insertBefore(n,w.nextSibling):(o=l.nodeType===9?l.head:l,o.insertBefore(n,o.firstChild))}function Qm(n,o){n.crossOrigin==null&&(n.crossOrigin=o.crossOrigin),n.referrerPolicy==null&&(n.referrerPolicy=o.referrerPolicy),n.title==null&&(n.title=o.title)}function Xm(n,o){n.crossOrigin==null&&(n.crossOrigin=o.crossOrigin),n.referrerPolicy==null&&(n.referrerPolicy=o.referrerPolicy),n.integrity==null&&(n.integrity=o.integrity)}var vd=null;function Yj(n,o,l){if(vd===null){var u=new Map,y=vd=new Map;y.set(l,u)}else y=vd,u=y.get(l),u||(u=new Map,y.set(l,u));if(u.has(n))return u;for(u.set(n,null),l=l.getElementsByTagName(n),y=0;y<l.length;y++){var w=l[y];if(!(w[vl]||w[na]||n==="link"&&w.getAttribute("rel")==="stylesheet")&&w.namespaceURI!=="http://www.w3.org/2000/svg"){var b=w.getAttribute(o)||"";b=n+b;var x=u.get(b);x?x.push(w):u.set(b,[w])}}return u}function Jj(n,o,l){n=n.ownerDocument||n,n.head.insertBefore(l,o==="title"?n.querySelector("head > title"):null)}function wD(n,o,l){if(l===1||o.itemProp!=null)return!1;switch(n){case"meta":case"title":return!0;case"style":if(typeof o.precedence!="string"||typeof o.href!="string"||o.href==="")break;return!0;case"link":if(typeof o.rel!="string"||typeof o.href!="string"||o.href===""||o.onLoad||o.onError)break;return o.rel==="stylesheet"?(n=o.disabled,typeof o.precedence=="string"&&n==null):!0;case"script":if(o.async&&typeof o.async!="function"&&typeof o.async!="symbol"&&!o.onLoad&&!o.onError&&o.src&&typeof o.src=="string")return!0}return!1}function Qj(n){return!(n.type==="stylesheet"&&(n.state.loading&3)===0)}function gD(n,o,l,u){if(l.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var y=ys(u.href),w=o.querySelector(rc(y));if(w){o=w._p,o!==null&&typeof o=="object"&&typeof o.then=="function"&&(n.count++,n=Sd.bind(n),o.then(n,n)),l.state.loading|=4,l.instance=w,Qt(w);return}w=o.ownerDocument||o,u=qj(u),(y=pi.get(y))&&Qm(u,y),w=w.createElement("link"),Qt(w);var b=w;b._p=new Promise(function(x,P){b.onload=x,b.onerror=P}),la(w,"link",u),l.instance=w}n.stylesheets===null&&(n.stylesheets=new Map),n.stylesheets.set(l,o),(o=l.state.preload)&&(l.state.loading&3)===0&&(n.count++,l=Sd.bind(n),o.addEventListener("load",l),o.addEventListener("error",l))}}var ef=0;function kD(n,o){return n.stylesheets&&n.count===0&&_d(n,n.stylesheets),0<n.count||0<n.imgCount?function(l){var u=setTimeout(function(){if(n.stylesheets&&_d(n,n.stylesheets),n.unsuspend){var w=n.unsuspend;n.unsuspend=null,w()}},6e4+o);0<n.imgBytes&&ef===0&&(ef=62500*XR());var y=setTimeout(function(){if(n.waitingForImages=!1,n.count===0&&(n.stylesheets&&_d(n,n.stylesheets),n.unsuspend)){var w=n.unsuspend;n.unsuspend=null,w()}},(n.imgBytes>ef?50:800)+o);return n.unsuspend=l,function(){n.unsuspend=null,clearTimeout(u),clearTimeout(y)}}:null}function Sd(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)_d(this,this.stylesheets);else if(this.unsuspend){var n=this.unsuspend;this.unsuspend=null,n()}}}var xd=null;function _d(n,o){n.stylesheets=null,n.unsuspend!==null&&(n.count++,xd=new Map,o.forEach(zD,n),xd=null,Sd.call(n))}function zD(n,o){if(!(o.state.loading&4)){var l=xd.get(n);if(l)var u=l.get(null);else{l=new Map,xd.set(n,l);for(var y=n.querySelectorAll("link[data-precedence],style[data-precedence]"),w=0;w<y.length;w++){var b=y[w];
vendor: 6,662 bytes, line 10
10(b.nodeName==="LINK"||b.getAttribute("media")!=="not all")&&(l.set(b.dataset.precedence,b),u=b)}u&&l.set(null,u)}y=o.instance,b=y.getAttribute("data-precedence"),w=l.get(b)||u,w===u&&l.set(null,y),l.set(b,y),this.count++,u=Sd.bind(this),y.addEventListener("load",u),y.addEventListener("error",u),w?w.parentNode.insertBefore(y,w.nextSibling):(n=n.nodeType===9?n.head:n,n.insertBefore(y,n.firstChild)),o.state.loading|=4}}var lc={$$typeof:T,Provider:null,Consumer:null,_currentValue:ne,_currentValue2:ne,_threadCount:0};function bD(n,o,l,u,y,w,b,x,P){this.tag=1,this.containerInfo=n,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Gn(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Gn(0),this.hiddenUpdates=Gn(null),this.identifierPrefix=u,this.onUncaughtError=y,this.onCaughtError=w,this.onRecoverableError=b,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=P,this.incompleteTransitions=new Map}function Xj(n,o,l,u,y,w,b,x,P,M,J,te){return n=new bD(n,o,l,b,P,M,J,te,x),o=1,w===!0&&(o|=24),w=Va(3,null,null,o),n.current=w,w.stateNode=n,o=Dy(),o.refCount++,n.pooledCache=o,o.refCount++,w.memoizedState={element:u,isDehydrated:l,cache:o},Ky(w),n}function ev(n){return n?(n=Fr,n):Fr}function tv(n,o,l,u,y,w){y=ev(y),u.context===null?u.context=y:u.pendingContext=y,u=Qn(o),u.payload={element:l},w=w===void 0?null:w,w!==null&&(u.callback=w),l=Xn(n,u,o),l!==null&&(Ma(l,n,o),Bl(l,n,o))}function av(n,o){if(n=n.memoizedState,n!==null&&n.dehydrated!==null){var l=n.retryLane;n.retryLane=l!==0&&l<o?l:o}}function tf(n,o){av(n,o),(n=n.alternate)&&av(n,o)}function iv(n){if(n.tag===13||n.tag===31){var o=Yo(n,67108864);o!==null&&Ma(o,n,67108864),tf(n,67108864)}}function nv(n){if(n.tag===13||n.tag===31){var o=Ya();o=Rr(o);var l=Yo(n,o);l!==null&&Ma(l,n,o),tf(n,o)}}var Td=!0;function jD(n,o,l,u){var y=A.T;A.T=null;var w=B.p;try{B.p=2,af(n,o,l,u)}finally{B.p=w,A.T=y}}function vD(n,o,l,u){var y=A.T;A.T=null;var w=B.p;try{B.p=8,af(n,o,l,u)}finally{B.p=w,A.T=y}}function af(n,o,l,u){if(Td){var y=nf(u);if(y===null)Im(n,o,u,Ed,l),rv(n,u);else if(xD(y,n,o,l,u))u.stopPropagation();else if(rv(n,u),o&4&&-1<SD.indexOf(n)){for(;y!==null;){var w=Ur(y);if(w!==null)switch(w.tag){case 3:if(w=w.stateNode,w.current.memoizedState.isDehydrated){var b=Ni(w.pendingLanes);if(b!==0){var x=w;for(x.pendingLanes|=2,x.entangledLanes|=2;b;){var P=1<<31-ya(b);x.entanglements[1]|=P,b&=~P}Wi(w),(ot&6)===0&&(ud=ba()+500,ac(0))}}break;case 31:case 13:x=Yo(w,2),x!==null&&Ma(x,w,2),pd(),tf(w,2)}if(w=nf(u),w===null&&Im(n,o,u,Ed,l),w===y)break;y=w}y!==null&&u.stopPropagation()}else Im(n,o,u,null,l)}}function nf(n){return n=oy(n),of(n)}var Ed=null;function of(n){if(Ed=null,n=Or(n),n!==null){var o=s(n);if(o===null)n=null;else{var l=o.tag;if(l===13){if(n=c(o),n!==null)return n;n=null}else if(l===31){if(n=d(o),n!==null)return n;n=null}else if(l===3){if(o.stateNode.current.memoizedState.isDehydrated)return o.tag===3?o.stateNode.containerInfo:null;n=null}else o!==n&&(n=null)}}return Ed=n,null}function ov(n){switch(n){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Zh()){case $o:return 2;case zu:return 8;case Io:case bl:return 32;case on:return 268435456;default:return 32}default:return 32}}var rf=!1,uo=null,po=null,ho=null,cc=new Map,uc=new Map,yo=[],SD="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function rv(n,o){switch(n){case"focusin":case"focusout":uo=null;break;case"dragenter":case"dragleave":po=null;break;case"mouseover":case"mouseout":ho=null;break;case"pointerover":case"pointerout":cc.delete(o.pointerId);break;case"gotpointercapture":case"lostpointercapture":uc.delete(o.pointerId)}}function dc(n,o,l,u,y,w){return n===null||n.nativeEvent!==w?(n={blockedOn:o,domEventName:l,eventSystemFlags:u,nativeEvent:w,targetContainers:[y]},o!==null&&(o=Ur(o),o!==null&&iv(o)),n):(n.eventSystemFlags|=u,o=n.targetContainers,y!==null&&o.indexOf(y)===-1&&o.push(y),n)}function xD(n,o,l,u,y){switch(o){case"focusin":return uo=dc(uo,n,o,l,u,y),!0;case"dragenter":return po=dc(po,n,o,l,u,y),!0;case"mouseover":return ho=dc(ho,n,o,l,u,y),!0;case"pointerover":var w=y.pointerId;return cc.set(w,dc(cc.get(w)||null,n,o,l,u,y)),!0;case"gotpointercapture":return w=y.pointerId,uc.set(w,dc(uc.get(w)||null,n,o,l,u,y)),!0}return!1}function sv(n){var o=Or(n.target);if(o!==null){var l=s(o);if(l!==null){if(o=l.tag,o===13){if(o=c(l),o!==null){n.blockedOn=o,bz(n.priority,function(){nv(l)});return}}else if(o===31){if(o=d(l),o!==null){n.blockedOn=o,bz(n.priority,function(){nv(l)});return}}else if(o===3&&l.stateNode.current.memoizedState.isDehydrated){n.blockedOn=l.tag===3?l.stateNode.containerInfo:null;return}}}n.blockedOn=null}function Ad(n){if(n.blockedOn!==null)return!1;for(var o=n.targetContainers;0<o.length;){var l=nf(n.nativeEvent);if(l===null){l=n.nativeEvent;var u=new l.constructor(l.type,l);ny=u,l.target.dispatchEvent(u),ny=null}else return o=Ur(l),o!==null&&iv(o),n.blockedOn=l,!1;o.shift()}return!0}function lv(n,o,l){Ad(n)&&l.delete(o)}function _D(){rf=!1,uo!==null&&Ad(uo)&&(uo=null),po!==null&&Ad(po)&&(po=null),ho!==null&&Ad(ho)&&(ho=null),cc.forEach(lv),uc.forEac
10h(lv)}function Pd(n,o){n.blockedOn===o&&(n.blockedOn=null,rf||(rf=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,_D)))}var Cd=null;function cv(n){Cd!==n&&(Cd=n,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Cd===n&&(Cd=null);for(var o=0;o<n.length;o+=3){var l=n[o],u=n[o+1],y=n[o+2];if(typeof u!="function"){if(of(u||l)===null)continue;break}var w=Ur(l);w!==null&&(n.splice(o,3),o-=3,im(w,{pending:!0,data:y,method:l.method,action:u},u,y))}}))}function fs(n){function o(P){return Pd(P,n)}uo!==null&&Pd(uo,n),po!==null&&Pd(po,n),ho!==null&&Pd(ho,n),cc.forEach(o),uc.forEach(o);for(var l=0;l<yo.length;l++){var u=yo[l];u.blockedOn===n&&(u.blockedOn=null)}for(;0<yo.length&&(l=yo[0],l.blockedOn===null);)sv(l),l.blockedOn===null&&yo.shift();if(l=(n.ownerDocument||n).$$reactFormReplay,l!=null)for(u=0;u<l.length;u+=3){var y=l[u],w=l[u+1],b=y[Ra]||null;if(typeof w=="function")b||cv(l);else if(b){var x=null;if(w&&w.hasAttribute("formAction")){if(y=w,b=w[Ra]||null)x=b.formAction;else if(of(y)!==null)continue}else x=b.action;typeof x=="function"?l[u+1]=x:(l.splice(u,3),u-=3),cv(l)}}}function uv(){function n(w){w.canIntercept&&w.info==="react-transition"&&w.intercept({handler:function(){return new Promise(function(b){return y=b})},focusReset:"manual",scroll:"manual"})}function o(){y!==null&&(y(),y=null),u||setTimeout(l,20)}function l(){if(!u&&!navigation.transition){var w=navigation.currentEntry;w&&w.url!=null&&navigation.navigate(w.url,{state:w.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var u=!1,y=null;return navigation.addEventListener("navigate",n),navigation.addEventListener("navigatesuccess",o),navigation.addEventListener("navigateerror",o),setTimeout(l,100),function(){u=!0,navigation.removeEventListener("navigate",n),navigation.removeEventListener("navigatesuccess",o),navigation.removeEventListener("navigateerror",o),y!==null&&(y(),y=null)}}}function sf(n){this._internalRoot=n}Rd.prototype.render=sf.prototype.render=function(n){var o=this._internalRoot;if(o===null)throw Error(i(409));var l=o.current,u=Ya();tv(l,u,n,o,null,null)},Rd.prototype.unmount=sf.prototype.unmount=function(){var n=this._internalRoot;if(n!==null){this._internalRoot=null;var o=n.containerInfo;tv(n.current,2,null,n,null,null),pd(),o[Dr]=null}};function Rd(n){this._internalRoot=n}Rd.prototype.unstable_scheduleHydration=function(n){if(n){var o=Jh();n={blockedOn:null,target:n,priority:o};for(var l=0;l<yo.length&&o!==0&&o<yo[l].priority;l++);yo.splice(l,0,n),l===0&&sv(n)}};var dv=e.version;if(dv!=="19.2.5")throw Error(i(527,dv,"19.2.5"));B.findDOMNode=function(n){var o=n._reactInternals;if(o===void 0)throw typeof n.render=="function"?Error(i(188)):(n=Object.keys(n).join(","),Error(i(268,n)));return n=h(o),n=n!==null?f(n):null,n=n===null?null:n.stateNode,n};var TD={bundleType:0,version:"19.2.5",rendererPackageName:"react-dom",currentDispatcherRef:A,reconcilerVersion:"19.2.5"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Dd=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Dd.isDisabled&&Dd.supportsFiber)try{Wo=Dd.inject(TD),ja=Dd}catch{}}return hc.createRoot=function(n,o){if(!r(n))throw Error(i(299));var l=!1,u="",y=g0,w=k0,b=z0;return o!=null&&(o.unstable_strictMode===!0&&(l=!0),o.identifierPrefix!==void 0&&(u=o.identifierPrefix),o.onUncaughtError!==void 0&&(y=o.onUncaughtError),o.onCaughtError!==void 0&&(w=o.onCaughtError),o.onRecoverableError!==void 0&&(b=o.onRecoverableError)),o=Xj(n,1,!1,null,null,l,u,null,y,w,b,uv),n[Dr]=o.current,$m(n),new sf(o)},hc.hydrateRoot=function(n,o,l){if(!r(n))throw Error(i(299));var u=!1,y="",w=g0,b=k0,x=z0,P=null;return l!=null&&(l.unstable_strictMode===!0&&(u=!0),l.identifierPrefix!==void 0&&(y=l.identifierPrefix),l.onUncaughtError!==void 0&&(w=l.onUncaughtError),l.onCaughtError!==void 0&&(b=l.onCaughtError),l.onRecoverableError!==void 0&&(x=l.onRecoverableError),l.formState!==void 0&&(P=l.formState)),o=Xj(n,1,!0,o,l??null,u,y,P,w,b,x,uv),o.context=ev(null),l=o.current,u=Ya(),u=Rr(u),y=Qn(u),y.callback=null,Xn(l,y,u),l=u,o.current.lanes=l,_t(o,l),Wi(o),n[Dr]=o.current,$m(n),new Rd(o)},hc.version="19.2.5",hc}var bv;function KD(){if(bv)return uf.exports;bv=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),uf.exports=LD(),uf.exports}var MD=KD(),ND="__TSS_CONTEXT",Cw=Symbol.for("TSS_SERVER_FUNCTION"),jv=Symbol.for("TSS_SERVER_FUNCTION_FACTORY"),BD="application/x-tss-framed",ok=()=>window.__TSS_START_OPTIONS__;function Ve(t={}){if(t.isNotFound=!0,t.throw)throw t;return t}function vr(t){return t?.isNotFound===!0}function Kt(t){t.statusCode=t.statusCode||t.code||307;const e=new Headers(t.headers);t.href&&e.get("Location")===null&&e.set("Location",t.href);const a=new Response(null,{status:t.statusCode,headers:e});if(a.options=t,t.throw)throw a;return a}function rk(t){return t instanceof Response&&!!t.options}function f_(t){if(t!==null&&typeof t=="object"&&t.isSerializedRedirect)return Kt(t)}function $D(t){return t.replaceAll("\0","/").replaceAll("�","/").replace(/~([~0r])/g,(e,a)=>a==="0"?"\0":a==="r"?"�":a)}const vv=!1;function Po(t){return t[t.length-1]}function w_(t,e){return typeof t=="function"?t(e):t}const sk=Object.prototype.hasOwnProperty;function g_(t){for(const e in t)if(sk.call(t,e))return!0;return!1}const Sp=()=>Object.create(null),ws=(t,e)=>To(t,e,!0);function To(t,e,a,i=0){if(t===e)return t;if(i++>500)return e;const r=Array.isArray(t)&&Array.isArray(e);if(!r&&!(Gp(t)&&Gp(e)))return e;const s=Object.keys(t),c=s.length,d=Object.keys(e),p=d.length;if(r?c!==t.length||p!==e.length||c&&Po(s)!==`${c-1}`||p&&Po(d)!==`${p-1}`:c!==Object.getOwnPropertyNames(t).length||p!==Object.getOwnPropertyNames(e).length||Object.getOwnPropertySymbols(e).length)return e;let h=0,f,m,g;if(r){for(;h<p&&(g=h,m=t[g],f=e[g],f=m===f?m:typeof m=="object"?To(m,f,a,i):f,f===m);h++);if(h===p&&c===p)return t}else{let j=c===p,v=!0;for(;h<p;h++){g=d[h],m=t[g];const _=e[g];f=m===_?m:typeof m=="object"?To(m,_,a,i):_,j&&=f===m&&(s[h]===g||sk.call(t,g)),v&&=Object.is(f,_),s[h]=f}if(j)return Object.getOwnPropertySymbols(t).length?e:t;if(v)return e}const z=r?d.fill(0):a?Sp():{};for(let j=0;j<p;j++)g=r?j:d[j],r?(m=t[g],j>h&&(f=e[g],f=m===f?m:typeof m=="object"?To(m,f,a,i):f),z[g]=j<h?m:f):z[g]=s[j];return z}function Gp(t){return!t||typeof t!="object"?!1:(Object.getPrototypeOf(t)?.constructor??Object)===Object}
10function Li(t,e,a,i){if(t===e)return!0;if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let r=0,s=t.length;r<s;r++){const c=t[r],d=e[r];if(c!==d&&!Li(c,d,a,i))return!1}return!0}if(Gp(t)&&Gp(e)){if(a){for(const s in e)if((i||e[s]!==void 0)&&!Li(t[s],e[s],a,i))return!1;return!0}let r=0;if(i)r=Object.keys(t).length;else for(const s in t)t[s]!==void 0&&r++;for(const s in e)if((i||e[s]!==void 0)&&(r--===0||!Li(t[s],e[s],a,i)))return!1;return r===0}return!1}function ID(t){return typeof t?.message!="string"?!1:t.message.startsWith("Failed to fetch dynamically imported module")||t.message.startsWith("error loading dynamically imported module")||t.message.startsWith("Importing a module script failed")}const WD=/[\x00-\x1f\x7f"<>`{}]/g;function GD(t){return t.replace(WD,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0"))}function Sv(t){let e;try{e=decodeURI(t)}catch{e=t.replaceAll(/%[0-9A-F]{2}/gi,a=>{try{return decodeURI(a)}catch{return a}})}return GD(e)}const VD=["http:","https:","mailto:","tel:"];function Nc(t){if(t[0]!=="/"&&t.includes(":"))return/^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(t)?.[1]?.replace(/[\t\n\r]/g,"").toLowerCase()}const k_=/^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;function z_(t,e){if(!t)return!1;if(k_.test(t))return!0;const a=Nc(t);return a?!e.has(a):!1}const FD={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},HD=/[&><\u2028\u2029]/g;function qD(t){return t.replace(HD,e=>FD[e])}function yc(t){if(!t)return t;let e=t;if(/[%\\\x00-\x1f\x7f]/.test(t)){const a=/%25|%5C/gi;let i=0,r;for(e="";(r=a.exec(t))!==null;)e+=Sv(t.slice(i,r.index))+r[0],i=a.lastIndex;e+=Sv(i?t.slice(i):t)}return e}function ZD(t){return/[\s\u0080-\uFFFF]/.test(t)?t.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):t}function YD(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let a=0;a<t.length;a++)if(t[a]!==e[a])return!1;return!0}function Qs(t){return t.replace(/\/{2,}/g,"/")}function b_(t){return t==="/"?t:t.replace(/^\/+/,"")}function Qi(t){const e=t.length;return e>1&&t[e-1]==="/"?t.replace(/\/+$/,""):t}function j_(t){return Qi(b_(t))}function xv(t,e){return t?.endsWith("/")&&t!=="/"&&t!==`${e}/`?t.slice(0,-1):t}function _v(t,e,a="never",i){if(e.includes("//")&&(e=Qs(e)),e.startsWith("/"))return e.length===1||a==="preserve"?e:a==="always"?e.endsWith("/")?e:`${e}/`:e.endsWith("/")?e.slice(0,-1):e;const r=e===".";let s;if(i){s=r?t:t+"\0"+e;const h=i.get(s);if(h)return h}let c;if(r)c=t.split("/");else{for(t.includes("//")&&(t=Qs(t)),c=t.split("/");c.length>1&&Po(c)==="";)c.pop();const h=e.split("/");for(let f=0,m=h.length;f<m;f++){const g=h[f];g===""?f?f===m-1&&c.push(g):c=[g]:g===".."?c.length>1?c.pop():c=[""]:g==="."||c.push(g)}}c.length>1&&(Po(c)===""?a==="never"&&c.pop():a==="always"&&c.push(""));const d=c.join("/"),p=(r?Qs(d):d)||"/";return s&&i&&i.set(s,p),p}function JD(t){const e=new Map(t.map(i=>[encodeURIComponent(i),i])),a=new RegExp([...e.keys()].join("|").replace(/[.*()]/g,"\\$&"),"g");return i=>i.replace(a,r=>e.get(r)??r)}function QD(t){return t==null||t===""}function XD(t,e,a){if(typeof e!="string")return""+(e??void 0);const i=t==="_splat";if(i&&(!e||/^[a-zA-Z0-9\-._~!/]*$/.test(e)))return e;let r=encodeURIComponent(e);return i&&(r=r.replaceAll("%2F","/")),a?a(r):r}function Tv(t,e,a,i,r){const s=t.endsWith("/")?"/":"";let c="";for(const d of e){if(typeof d=="string"){c+=d;continue}const[p,h,f,m]=d,g=p===2,z=g&&m!==void 0?m+s:m;let j=a[h];if(!(p===3&&j==null)){if(r&&(r[h]=j,g&&(r["*"]=j)),g&&QD(j)){if(f==="/"&&!z)continue;j=""}c+=f+XD(h,j,i)+(z||"")}}return c+s||"/"}function Vp(t){const e=new Map;let a,i;return{get(r){const s=e.get(r);if(s)return s.visited=!0,s.value},set(r,s){const c=e.get(r);if(c){c.value=s;return}if(e.size>=t){let p=a?.next().value;for(;!p||p.visited;)p?p.visited=!1:a=e.values(),p=a.next().value;p===i&&(a=void 0),e.delete(p.key)}const d={key:r,value:s,visited:!1};i=d,e.set(r,d)},clear(){e.clear(),a=void 0,i=void 0}}}function Bc(){throw new Error("Invariant failed")}const So=4,v_=5;function eO(t){const e=t.names;if(e)return e;const a=[];
10for(const i of t)typeof i!="string"&&a.push(i[1]);return t.names=a}function tO(t,e,a){const i=t.substring(e,a);if(i.charCodeAt(0)===36)return i.length===1?[2,"_splat","",void 0]:[1,i.substring(1),"",""];const r=i.indexOf("{");if(r>=0){const s=i.indexOf("}",r),c=i.charCodeAt(r+1)===45,d=r+(c?3:2);if(s>=0&&i.charCodeAt(d-1)===36&&(!c||d<s)){const p=i.substring(d,s);return[c?3:p?1:2,p||"_splat",i.substring(0,r),t.substring(e+s+1,p?a:t.length)]}}return i}function $c(t,e,a,i,r,s){let c=a;const d=e.fullPath??e.from,p=e.options,h=d.length,f=d.endsWith("/")?h-1:h,m=p?.caseSensitive??t,g=p?.params?.parse??p?.parseParams;let z,j=s?a-1:0;if(!i||d.includes("$")){z=s?.slice()??[];const S=Po(z);S&&typeof S!="string"&&S[0]===2&&(z[z.length-1]=[S[0],S[1],S[2],S[3]===void 0?void 0:S[3]+d.substring(a-(d[a-2]==="/"?2:1),f)],j=h)}for(;c<h;){const S=c,E=d.indexOf("/",S);let T=E===-1?h:E;const O=tO(d,S,T);c=T+1;let H;if(typeof O=="string"){if(!i)continue;let U=O,R;m?R=i.static??=new Map:(U=O.toLowerCase(),R=i.staticInsensitive??=new Map);const I=R.get(U);if(I)H=I;else{const ae=yr(i);H=ae,R.set(U,ae)}}else{const U=O[0];let R=O[2],I=O[3]??"";if(U===2&&(T=h,c=T+1),z&&j<T&&(j<S-1&&z.push(d.substring(j,S-1)),O[2]="/"+R,U===2&&O[3]!==void 0&&f<h&&(O[3]=I.slice(0,-1)),z.push(O),j=T),!i)continue;const ae=m&&!!(R||I);m||(R=R.toLowerCase(),I=I.toLowerCase());const ee=U===1?i.dynamic??=[]:U===3?i.optional??=[]:i.wildcard??=[],F=U!==2&&!g&&ee.find(Z=>!Z.parse&&Z.caseSensitive===ae&&Z.prefix===R&&Z.suffix===I);if(F)H=F;else{const Z=yr(i,U,ae,R,I);H=Z,ee.push(Z),ee.length===2&&r?.push(ee)}}i=H}z&&j<f&&z.push(d.substring(j,f));const v=z?.slice();if(!i)return v;if(g&&e.children&&!e.isRoot&&e.id&&e.id.charCodeAt(e.id.lastIndexOf("/")+1)===95){const S=yr(i,v_);(i.pathless??=[]).push(S),i=S}const _=(e.path||!e.children)&&!e.isRoot;if(_&&f<h){const S=yr(i,So);i.index=S,i=S}return i.parse=g??null,i.priority=p?.params?.priority??0,i.route||(i.data=v,_&&(i.route=e)),[i,c,v]}function S_(t,e){if(t.parse&&!e.parse)return-1;if(!t.parse&&e.parse)return 1;if(t.parse&&e.parse&&(t.priority||e.priority))return e.priority-t.priority;if(t.prefix&&e.prefix&&t.prefix!==e.prefix){if(t.prefix.startsWith(e.prefix))return-1;if(e.prefix.startsWith(t.prefix))return 1}if(t.suffix&&e.suffix&&t.suffix!==e.suffix){if(t.suffix.endsWith(e.suffix))return-1;if(e.suffix.endsWith(t.suffix))return 1}return t.prefix&&!e.prefix?-1:!t.prefix&&e.prefix?1:t.suffix&&!e.suffix?-1:!t.suffix&&e.suffix?1:t.caseSensitive&&!e.caseSensitive?-1:!t.caseSensitive&&e.caseSensitive?1:0}function yr(t,e=0,a,i,r){return{kind:e,depth:t?t.depth+1:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,data:void 0,parent:t,parse:null,priority:0,caseSensitive:a,prefix:i,suffix:r}}function aO(t,e){const a=yr(),i=[];function r(s,c,d,p){const[h,f,m]=$c(!1,s,c,d,i,p);if(s.children)for(const g of s.children)r(g,f,h,m)}for(const s of t)r(s,1,a);for(const s of i)s.sort(S_);e.masksTree=a,e.flatCache=Vp(1e3)}function iO(t,e){t||="/";const a=e.flatCache.get(t);if(a!==void 0)return a;const i=lk(t,e.masksTree);return e.flatCache.set(t,i),i}function nO(t,e,a,i,r){t||="/",i||="/";const s=e?`case\0${t}`:t;let c=r.singleCache.get(s);return c||(c=yr(),$c(e,{from:t},1,c),r.singleCache.set(s,c)),lk(i,c,a)}function oO(t,e,a=!1){const i=a?t:`nofuzz\0${t}`,r=e.matchCache.get(i);if(r!==void 0)return r;t||="/";let s;try{s=lk(t,e.segmentTree,a)}catch(c){if(c instanceof URIError)s=null;else throw c}return s&&(s.branch=__(s.route)),e.matchCache.set(i,s),s}function rO(t,e=!1){const a=yr(),i=[],r={},s={};let c=0;function d(p,h,f,m){if(p.init(c),p.id in r&&Bc(),r[p.id]=p,c!==0&&p.path){const v=Qi(p.fullPath);(!s[v]||p.fullPath.endsWith("/"))&&(s[v]=p)}c++;const[g,z,j]=$c(e,p,h,f,i,m);if(p._interpolation=j,p.children)for(const v of p.children)d(v,z,g,j)}d(t,1,a);for(const p of i)p.sort(S_);return{processedTree:{segmentTree:a,singleCache:Vp(1e3),matchCache:Vp(1e3),flatCache:null,masksTree:null},routesById:r,routesByPath:s}}function lk(t,e,a=!1){const i=t.split("/"),r=lO(t,i,e,a);if(!r)return null;const[s]=x_(t,i,r);return{route:r.node.route,rawParams:s}}function x_(t,e,a){const i=sO(a.node),r=a.node.data&&eO(a.node.data),s=Object.create(null);let c=a.extract?.part??0,d=a.extract?.node??0,p=a.extract?.path??0,h=a.extract?.param??0;for(;d<i.length;c++,d++,p++){const f=i[d];if(f.kind===So)break;if(f.kind===v_){c--,p--;continue}const m=e[c],g=p;if(m&&(p+=m.length),f.kind===1||f.kind===3){const z=r[h++];if(f.kind===3&&a.skipped&1<<d){c--,p=g-1;continue}const j=f.suffix||f.prefix?m.substring(f.prefix.length,m.length-f.suffix.length):m;(j||f.kind===1)&&(s[z]=decodeURIComponent(j))}else if(f.kind===2){const z=f,j=t.substring(g+z.prefix.length,t.length-z.suffix.length),v=decodeURIComponent(j);s["*"]=v,s._splat=v;break}}return a.rawParams&&Object.assign(s,a.rawParams),[s,{part:c,node:d,path:p,param:h}]}function __(t){const e=[t];for(;t.parentRoute;)t=t.parentRoute,e.push(t);return e.reverse(),e}function sO(t){const e=Array(t.depth+1);do e[t.depth]=t,t=t.parent;while(t);return e}
10function lO(t,e,a,i){if(t==="/"&&a.index)return{node:a.index,skipped:0};const r=!Po(e),s=r&&t!=="/",c=e.length-(r?1:0),d=[{node:a,index:1,skipped:0,statics:0,dynamics:0,optionals:0}];let p=null,h=null;for(;d.length;){const f=d.pop(),{node:m,index:g,skipped:z,statics:j,dynamics:v,optionals:_}=f;let{extract:S,rawParams:E}=f;if(m.kind===2&&m.route&&!Ud(h,f))continue;if(m.parse){if(!Ev(t,e,f))continue;E=f.rawParams,S=f.extract}i&&m.route&&m.kind!==So&&Ud(p,f)&&(p=f);const T=g===c;if(T&&(m.route&&(!s||m.kind===So||m.kind===2)&&Ud(h,f)&&(h=f),!m.optional&&!m.wildcard&&!m.index&&!m.pathless))continue;const O=T?void 0:e[g];let H;if(T&&m.index){const U={node:m.index,index:g,skipped:z,statics:j,dynamics:v,optionals:_,extract:S,rawParams:E};let R=!0;if(m.index.parse&&(Ev(t,e,U)||(R=!1)),R){if(!v&&!_&&!z&&cO(j,c))return U;Ud(h,U)&&(h=U)}}if(m.wildcard)for(let U=m.wildcard.length-1;U>=0;U--){const R=m.wildcard[U],{prefix:I,suffix:ae}=R;if(!(I&&(T||!(R.caseSensitive?O:H??=O.toLowerCase()).startsWith(I)))){if(ae){if(T)continue;const ee=e.slice(g).join("/"),F=ee.slice(-ae.length);if((R.caseSensitive?F:F.toLowerCase())!==ae||ee.length-ae.length<I.length)continue}d.push({node:R,index:c,skipped:z,statics:j,dynamics:v,optionals:_,extract:S,rawParams:E})}}if(m.optional){const U=z|1<<m.depth+1;for(let R=m.optional.length-1;R>=0;R--){const I=m.optional[R];d.push({node:I,index:g,skipped:U,statics:j,dynamics:v,optionals:_,extract:S,rawParams:E})}if(!T)for(let R=m.optional.length-1;R>=0;R--){const I=m.optional[R],{prefix:ae,suffix:ee}=I;if(ae||ee){const F=I.caseSensitive?O:H??=O.toLowerCase();if(ae&&!F.startsWith(ae)||ee&&F.indexOf(ee,F.length-ee.length)<ae.length)continue}d.push({node:I,index:g+1,skipped:z,statics:j,dynamics:v,optionals:_+Od(c,g),extract:S,rawParams:E})}}if(!T&&m.dynamic&&O)for(let U=m.dynamic.length-1;U>=0;U--){const R=m.dynamic[U],{prefix:I,suffix:ae}=R;if(I||ae){const ee=R.caseSensitive?O:H??=O.toLowerCase();if(I&&!ee.startsWith(I)||ae&&ee.indexOf(ae,ee.length-ae.length)<I.length)continue}d.push({node:R,index:g+1,skipped:z,statics:j,dynamics:v+Od(c,g),optionals:_,extract:S,rawParams:E})}if(!T&&m.staticInsensitive){const U=m.staticInsensitive.get(H??=O.toLowerCase());U&&d.push({node:U,index:g+1,skipped:z,statics:j+Od(c,g),dynamics:v,optionals:_,extract:S,rawParams:E})}if(!T&&m.static){const U=m.static.get(O);U&&d.push({node:U,index:g+1,skipped:z,statics:j+Od(c,g),dynamics:v,optionals:_,extract:S,rawParams:E})}if(m.pathless)for(let U=m.pathless.length-1;U>=0;U--){const R=m.pathless[U];d.push({node:R,index:g,skipped:z,statics:j,dynamics:v,optionals:_,extract:S,rawParams:E})}}if(h)return h;if(i&&p){let f=p.index;for(let g=0;g<p.index;g++)f+=e[g].length;const m=f===t.length?"/":t.slice(f);return p.rawParams??=Object.create(null),p.rawParams["**"]=decodeURIComponent(m),p}return null}function Od(t,e){return 2**(t-e-1)}function cO(t,e){return t===2**(e-1)-1}function Ev(t,e,a){let i,r;try{[i,r]=x_(t,e,a)}catch{return null}if(a.rawParams=i,a.extract=r,!a.node.parse)return!0;try{if(a.node.parse(i)===!1)return null}catch{}return!0}function Ud(t,e){return t?e.statics>t.statics||e.statics===t.statics&&(e.dynamics>t.dynamics||e.dynamics===t.dynamics&&(e.optionals>t.optionals||e.optionals===t.optionals&&((e.node.kind===So)>(t.node.kind===So)||e.node.kind===So==(t.node.kind===So)&&e.node.depth>t.node.depth))):!0}function uO(){try{return sessionStorage}catch{return}}const dO="tsr-scroll-restoration-v1_3",T_=uO();function pO(){try{return JSON.parse(T_?.getItem("tsr-scroll-restoration-v1_3")||"{}")}catch{return{}}}const gs=pO(),Av="data-scroll-restoration-id",hO=t=>t.state.__TSR_key||t.href;function yO(t){const e=t.getAttribute(Av);if(e)return`[${Av}="${e}"]`;let a="",i=t,r;for(;r=i.parentNode;){let s=1,c=i;for(;c=c.previousElementSibling;)s++;const d=`${i.localName}:nth-child(${s})`;a=a?`${d} > ${a}`:d,i=r}return a}let Ld=!1;const xp="window";function Rw(t){try{return typeof t=="function"?t():document.querySelector(t)}catch{}}function Pv(t){const e=new Set;for(const a of t){if(a===xp)continue;const i=Rw(a);i&&e.add(i)}return e}function mO(t,e){const a=t.options.scrollRestoration,i=t._scroll;a&&(i.e=!0);const r=t.options.getScrollRestorationKey||hO,s=new Set,c=d=>{const p=gs[d]||={};for(const h of s)h===document?p[xp]={scrollX,scrollY}:h.isConnected&&(p[yO(h)]={scrollX:h.scrollLeft,scrollY:h.scrollTop})};a&&!i.s&&(i.s=!0,Ld=!1,history.scrollRestoration="manual",document.addEventListener("scroll",d=>{Ld||s.add(d.target)},!0),t.subscribe("onBeforeLoad",d=>{d.fromLocation&&c(r(d.fromLocation)),s.clear()}),addEventListener("pagehide",()=>{history.scrollRestoration="auto",c(r(t.stores.resolvedLocation.get()??t.stores.location.get()));try{T_?.setItem(dO,JSON.stringify(gs))}catch{}}),addEventListener("pageshow",d=>{d.persisted&&(history.scrollRestoration="manual")})),!i.r&&(i.r=!0,t.subscribe("onRendered",d=>{const p=t.options.scrollRestorationBehavior,h=t.options.scrollToTopSelectors,f=i.n,m=i.h;let g;if(s.clear(),i.n=!0,i.h=!1,typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))return;const z=r(d.toLocation),j=d.fromLocation&&r(d.fromLocation);if(i.e&&j&&j!==z){const v=gs[j];if(v){let _=gs[z];for(const S in v){if(S===xp){if(f)continue}else{const E=Rw(S);if(!E||f&&h&&(g??=Pv(h),g.has(E)))continue}_||(_=gs[z]={}),_[S]??=v[S]}}}Ld=!0;try{const v=d.toLocation.hash,_=d.toLocation.state.__hashScrollIntoViewOptions??!0;let S=!1;if(f){!v&&h&&(g??=Pv(h));const E=v&&_&&m,T=i.e?gs[z]:void 0;if(T)for(const O in T){const{scrollX:H,scrollY:U}
10=T[O];if(O===xp){if(E)continue;scrollTo({top:U,left:H,behavior:p}),S=!0}else{const R=Rw(O);R&&(R.scrollLeft=H,R.scrollTop=U,g?.delete(R))}}if(!v){const O={top:0,left:0,behavior:p};if(S||scrollTo(O),g)for(const H of g)H.scrollTo(O)}}!S&&v&&_&&document.getElementById(v)?.scrollIntoView(_)}finally{Ld=!1}}))}function E_(t,e=String){let a;for(const i in t){const r=t[i];r!==void 0&&(a||=new URLSearchParams).set(i,e(r))}return a?a.toString():""}function yf(t){return t?t==="false"?!1:t==="true"?!0:+t*0===0&&+t+""===t?+t:t:""}function fO(t){const e=new URLSearchParams(t),a=Object.create(null);for(const[i,r]of e.entries()){const s=a[i];s==null?a[i]=yf(r):Array.isArray(s)?s.push(yf(r)):a[i]=[s,yf(r)]}return a}const A_=/^(?:\s|["[{\d-]|fa|nu|tr)/,wO=kO(JSON.parse),gO=zO(JSON.stringify,JSON.parse);function kO(t){const e=t===JSON.parse;return a=>{a[0]==="?"&&(a=a.substring(1));const i=fO(a);for(const r in i){const s=i[r];if(typeof s=="string"){if(e&&!A_.test(s))continue;try{i[r]=t(s)}catch{}}}return i}}function zO(t,e){const a=e===JSON.parse;function i(r){if(r&&typeof r=="object")try{return t(r)}catch{}else if(e&&typeof r=="string"){if(a&&!A_.test(r))return r;try{return e(r),t(r)}catch{}}return r}return r=>{const s=E_(r,i);return s?`?${s}`:""}}const Xs="__root__";function bO(t,e,a){const i=j_(t),r=`/${i}`,s=e?r:r.toLowerCase(),c=`${s}/`,d={input:({url:p})=>{const h=e?p.pathname:p.pathname.toLowerCase();return h===s?p.pathname="/":h.startsWith(c)&&(p.pathname=p.pathname.slice(r.length)),p},output:({url:p})=>(p.pathname=Qs(`/${i}${p.pathname}`),p)};return a?{input:({url:p})=>Dw(a,d.input({url:p})),output:({url:p})=>d.output({url:P_(a,p)})}:d}function Dw(t,e){const a=t?.input?.({url:e});if(a){if(typeof a=="string")return new URL(a);if(a instanceof URL)return a}return e}function P_(t,e){const a=t?.output?.({url:e});if(a){if(typeof a=="string")return new URL(a);if(a instanceof URL)return a}return e}function jO(t,e){const{createMutableStore:a,createReadonlyStore:i,batch:r}=e,s=new Map,c=a("idle"),d=a(t),p=a(void 0),h=a([]),f=i(()=>h.get().map(v=>s.get(v).get())),m=i(()=>({status:c.get(),isLoading:c.get()==="pending",matches:f.get(),location:d.get(),resolvedLocation:p.get()}));function g(v){let _=s.get(v);return _||(_=a(void 0),s.set(v,_)),_}const z={status:c,location:d,resolvedLocation:p,ids:h,matches:f,byRoute:s,__store:m,getMatchStore:g,setMatches:j};function j(v){const _=h.get(),S=v.map(E=>E.routeId);r(()=>{YD(_,S)||h.set(S);for(const E of _)S.includes(E)||s.get(E).set(()=>{});for(const E of v){const T=g(E.routeId);T.get()!==E&&T.set(E)}})}return z}var Eo="__TSR_index",Cv="popstate",Rv="beforeunload",vO=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function _p(t){const e=vO.exec(t);return e?"/"+t.slice(e[0].length):t}function C_(t){return/[\x00-\x1f\x7f]/.test(t)&&(t=t.replace(/[\x00-\x1f\x7f]/g,e=>` 11\r`.includes(e)?"":encodeURIComponent(e))),_p(t)}function SO(t){let e=t.getLocation();const a=new Set,i=c=>{e=t.getLocation(),a.forEach(d=>d({location:e,action:c}))},r=c=>{t.notifyOnIndexChange??!0?i(c):e=t.getLocation()},s=async({task:c,navigateOpts:d,...p})=>{if(d?.ignoreBlocker??!1){c();return}const h=t.getBlockers?.()??[],f=p.type==="PUSH"||p.type==="REPLACE";if(typeof document<"u"&&h.length&&f)for(const m of h){const g=Fp(p.path,p.state);if(await m.blockerFn({currentLocation:e,nextLocation:g,action:p.type})){t.onBlocked?.();return}}c()};return{get location(){return e},get length(){return t.getLength()},subscribers:a,subscribe:c=>(a.add(c),()=>{a.delete(c)}),push:(c,d,p)=>{const h=e.state[Eo];d=Dv(h+1,d),s({task:()=>{t.pushState(c,d),i({type:"PUSH"})},navigateOpts:p,type:"PUSH",path:c,state:d})},replace:(c,d,p)=>{const h=e.state[Eo];d=Dv(h,d),s({task:()=>{t.replaceState(c,d),i({type:"REPLACE"})},navigateOpts:p,type:"REPLACE",path:c,state:d})},go:(c,d)=>{s({task:()=>{t.go(c,d?.ignoreBlocker??!1),r({type:"GO",index:c})},navigateOpts:d,type:"GO"})},back:c=>{s({task:()=>{t.back(c?.ignoreBlocker??!1),r({type:"BACK"})},navigateOpts:c,type:"BACK"})},forward:c=>{s({task:()=>{t.forward(c?.ignoreBlocker??!1),r({type:"FORWARD"})},navigateOpts:c,type:"FORWARD"})},canGoBack:()=>e.state[Eo]!==0,createHref:c=>t.createHref(c),block:c=>{if(!t.setBlockers)return()=>{};const d=t.getBlockers?.()??[];return t.setBlockers([...d,c]),()=>{const p=t.getBlockers?.()??[];t.setBlockers?.(p.filter(h=>h!==c))}},flush:()=>t.flush?.(),destroy:()=>t.destroy?.(),notify:i,_getBlockers:()=>t.getBlockers?.()??[]}}function Dv(t,e){const a=ck();return{...e,key:a,__TSR_key:a,[Eo]:t}}function xO(t){const e=typeof document<"u"?window:void 0,a=e.history.pushState,i=e.history.replaceState;let r=[];const s=()=>r,c=R=>r=R,d=R=>C_(R),p=(()=>Fp(`${e.location.pathname}${e.location.search}${e.location.hash}`,e.history.state));if(!e.history.state?.__TSR_key&&!e.history.state?.key){const R=ck();e.history.replaceState({[Eo]:0,key:R,__TSR_key:R},"")}let h=p(),f,m=!1,g=!1,z=!1,j=!1;const v=()=>h;let _;const S=()=>{_&&(U._ignoreSubscribers=!0,(_[2]?e.history.pushState:e.history.replaceState)(_[1],"",_[0]),U._ignoreSubscribers=!1,_=void 0,f=void 0)},E=(R,I,ae)=>{const ee=!!_;ee||(f=h),h=Fp(I,ae),_=[h.href,ae,_?.[2]||R],ee||queueMicrotask(()=>S())},T=R=>{h=p(),U.notify({type:R})},O=async()=>
11{if(j=!1,g){g=!1;return}const R=p(),I=R.state[Eo]-h.state[Eo],ae=I===1,ee=I===-1,F=!ae&&!ee||m;m=!1;const Z=F?"GO":ee?"BACK":"FORWARD",oe=F?{type:"GO",index:I}:{type:ee?"BACK":"FORWARD"};if(z)z=!1;else{const me=s();if(typeof document<"u"&&me.length){for(const de of me)if(await de.blockerFn({currentLocation:h,nextLocation:R,action:Z})){g=!0,e.history.go(-I),U.notify(oe);return}}}h=p(),U.notify(oe)},H=R=>{if(j){j=!1;return}let I=!1;const ae=s();if(typeof document<"u"&&ae.length)for(const ee of ae){const F=ee.enableBeforeUnload??!0;if(F===!0){I=!0;break}if(typeof F=="function"&&F()===!0){I=!0;break}}if(I)return R.preventDefault(),R.returnValue=""},U=SO({getLocation:v,getLength:()=>e.history.length,pushState:(R,I)=>E(!0,R,I),replaceState:(R,I)=>E(!1,R,I),back:R=>(R&&(z=!0,j=!0),e.history.back()),forward:R=>{R&&(z=!0,j=!0),e.history.forward()},go:(R,I)=>{m=!0,I&&(z=!0,j=!0),e.history.go(R)},createHref:R=>d(R),flush:S,destroy:()=>{e.history.pushState=a,e.history.replaceState=i,e.removeEventListener(Rv,H,{capture:!0}),e.removeEventListener(Cv,O)},onBlocked:()=>{f&&h!==f&&(h=f)},getBlockers:s,setBlockers:c,notifyOnIndexChange:!1});return U._ignoreNextBeforeUnload=R=>{j=!1;try{R=new URL(R,e.document.baseURI).href,j=/^https?:/.test(R)&&(!R.includes("#")||R.split("#")[0]!==e.location.href.split("#")[0])}catch{}},e.addEventListener(Rv,H,{capture:!0}),e.addEventListener(Cv,O),e.history.pushState=function(...R){const I=a.apply(e.history,R);return U._ignoreSubscribers||T("PUSH"),I},e.history.replaceState=function(...R){const I=i.apply(e.history,R);return U._ignoreSubscribers||T("REPLACE"),I},U}function Fp(t,e){const a=C_(t),i=a.indexOf("#"),r=a.indexOf("?");if(!e){const s=ck();e={[Eo]:0,key:s,__TSR_key:s}}return{href:a,pathname:a.substring(0,i>0?r>0?Math.min(i,r):i:r>0?r:a.length),hash:i>-1?a.substring(i):"",search:r>-1?a.slice(r,i===-1?void 0:i):"",state:e}}function ck(){return(Math.random()+1).toString(36).substring(7)}function mf(t,e){return t.protocol!=="http:"&&t.protocol!=="https:"||t.origin!==e||!!t.username||!!t.password}function ff(t){return t.pathname+t.search+t.hash}function Ov(t){return t.options.loader||t.options.beforeLoad||t.lazyFn||t.options.component?.preload||t.options.pendingComponent?.preload}function _O(t){return t instanceof Error?{name:t.name,message:t.message}:{data:t}}function _h(t,e){return{fromLocation:e,toLocation:t,pathChanged:e?.pathname!==t.pathname,hrefChanged:e?.href!==t.href,hashChanged:e?.hash!==t.hash}}function Uv({key:t,__TSR_key:e,__TSR_index:a,__hashScrollIntoViewOptions:i,...r}){return r}function R_(t){return t.findIndex(e=>e.status==="error"||e.status==="notFound"||e._notFound)+1}function TO(t,e,a,i,r,s){i&&(e=e.slice(0,i)),r&&(a=a.slice(0,r));for(const c of e){if(s&&t._tx!==s)return;a.some(d=>d.routeId===c.routeId)||t.routesById[c.routeId].options.onLeave?.(c)}for(const c of a){if(s&&t._tx!==s)return;t.routesById[c.routeId].options[e.some(d=>d.routeId===c.routeId)?"onStay":"onEnter"]?.(c)}}var EO=class{constructor(t,e){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={n:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async a=>(a(),!1),this.update=a=>{const i=this.options;this.options={...i,...a},this.isServer=this.options.isServer??vv??typeof document>"u",this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.history=xO()),this.origin=this.options.origin,this.origin||(window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost");const r=this.options.basepath??"/",s=this.options.rewrite,c=this.basepath!==r||i?.rewrite!==s||i?.caseSensitive!==this.options.caseSensitive;if(c&&(this.basepath=r,this.rewrite=r!=="/"&&j_(r)?bO(r,this.options.caseSensitive,s):s),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree||vv){this.routeTree=this.options.routeTree;let d;d=this.buildRouteTree(),this.setRoutes(d)}if(this.stores)c&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){const d=this.getStoreConfig(this);this.batch=d.batch,this.stores=jO(this.latestLocation,d),mO(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const a=rO(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&aO(this.options.routeMasks,a.processedTree),{...a,resolvePathCache:Vp(1e3)}},this.subscribe=(a,i)=>{const r={eventType:a,fn:i};return this.subscribers.add(r),()=>{this.subscribers.delete(r)}},this.emit=a=>{for(const i of this.subscribers)if(i.eventType===a.type)try{i.fn(a)}catch(r){console.error(r)}},this.parseLocation=(a,i)=>{const r=({pathname:p,search:h,hash:f,href:m},g)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(p)){const _=this.options.parseSearch(h),S=this.options.stringifySearch(_);return{href:p+S+f,publicHref:p+S+f,pathname:yc(p),external:!1,searchStr:S,search:ws(i?.search,_),hash:yc(f.slice(1)),state:To(i?.state,g)}}const z=Dw(this.rewrite,new URL(m,this.origin)),j=this.options.parseSearch(z.search),v=this.options.stringifySearch(j);return z.search=v,{href:z.href.replace(z.origin,""),publicHref:m,pathname:yc(_p(z.pathname)),external:!!this.rewrite&&mf(z,this.origin),searchStr:v,search:ws(i?.search,j),hash:yc(z.hash.slice(1)),state:To(i?.state,g)}},s=r(a,a.state),{__tempLocation:c,__tempKey:d}=s.state;if(c&&(!d||d===this.tempLocationKey)){const p=r(c,{...c.state,__tempLocation:void 0,key:s.state.key,__TSR_key:s.state.__TSR_key});return p.maskedLocation=s,p}return s},this.matchRoutes=(a,i,r)=>
11typeof a=="string"?this.matchRoutesInternal({pathname:a,search:i},r):this.matchRoutesInternal(a,i),this.getMatchedRoutes=a=>{const i=Object.create(null),r=oO(Qi(a),this.processedTree,!0);return r&&Object.assign(i,r.rawParams),[r?.branch||[this.routesById.__root__],i,r?.route]},this.buildLocation=a=>{{const c=this.staticLocations.get(a);if(c)return c}let i=!1;const r=(c={})=>{if(c.href){const me=Fp(c.href,{});c={...c,to:Dw(this.rewrite,new URL(me.pathname,this.origin)).pathname,search:this.options.parseSearch(me.search),hash:me.hash.slice(1)}}const d=c._fromLocation||this._pendingLocation||this.latestLocation;let p;const h=()=>(i=!0,d),f=()=>(i=!0,p??=this.matchRoutesLightweight(d)),m=c.to?`${c.to}`:".",g=_v(m[0]==="/"?"":c.unsafeRelative==="path"?h().pathname:c.from??f()[1],m,this.options.trailingSlash,this.resolvePathCache),z=this.routesByPath[Qi(g)],j=g.includes("$");let v;if(z)v=z._branch??=__(z);else if(j)v=[];else{const[me,de,A]=this.getMatchedRoutes(g);v=me,this.options.notFoundRoute&&(!A||A.path!=="/"&&de["**"])&&(v=[...v,this.options.notFoundRoute])}const _=j?z?._interpolation??$c(!1,{fullPath:g},0):void 0;let S;for(const me of v){const de=me.options.params?.stringify??me.options.stringifyParams;if(de){const A=f()[3];if(S??=wf(c.params,A),!g_(S))break;S===A&&(S=Object.assign(Sp(),S));try{Object.assign(S,de(S))}catch{}}}S??=wf(c.params,PO(c.params,_)?f()[3]:gf);const E=a.leaveParams?g:_p(yc(_?Tv(g,_,S,this.pathParamsDecoder):g)),T=CO(v,a._includeValidateSearch),O=()=>{let me=f()[2];if(a._includeValidateSearch&&this.options.search?.strict){const de={};v.forEach(A=>{if(A.options.validateSearch)try{Object.assign(de,Tp(A.options.validateSearch,{...de,...me}))}catch{}}),me=de}return me},H=T.length?RO(T,O(),c):c.search===!0?O():typeof c.search=="function"?c.search(O()):c.search||gf,U=this.options.stringifySearch(H),R=c.hash===!0?h().hash:typeof c.hash=="function"?c.hash(h().hash):c.hash||void 0,I=R?`#${R}`:"",ae=c.state?c.state===!0?h().state:typeof c.state=="function"?c.state(h().state):c.state:gf,ee=`${E}${U}${I}`;let F,Z,oe=!1;if(this.rewrite){const me=new URL(ee,this.origin),de=me.origin,A=P_(this.rewrite,me);F=ff(me),mf(A,de)?(Z=A.href,oe=!0):Z=_p(ff(A))}else F=ZD(ee),Z=F;return{publicHref:Z,href:F,pathname:E,search:H,searchStr:U,state:ae,hash:R??"",external:oe,unmaskOnReload:c.unmaskOnReload}},s=r(a);if(a.mask)s.maskedLocation=r({from:a.from,...a.mask});else if(this.options.routeMasks){const c=iO(s.pathname,this.processedTree);if(c){const d=Object.assign(Sp(),c.rawParams),{from:p,params:h,...f}=c.route,m=wf(h,d);s.maskedLocation=r({from:a.from,...f,params:m})}}return!i&&a._fromLocation&&!s.maskedLocation&&this.staticLocations.set(a,s),s},this.commitLocation=async({viewTransition:a,ignoreBlocker:i,...r})=>{const s=r.maskedLocation??r;if(s.external)return Lv(this,s.publicHref,{replace:r.replace,ignoreBlocker:i});let c;const d=Qi(this.latestLocation.href)===Qi(r.href)&&Li(Uv(r.state),Uv(this.latestLocation.state)),p=this._commitPromise;let h;const f=new Promise(m=>{h=m});if(f.resolve=()=>{h(),p?.resolve()},this._commitPromise=f,d)this.load();else{let{maskedLocation:m,hashScrollIntoView:g,...z}=r;m&&(z={...m,state:{...m.state,__tempKey:void 0,__tempLocation:{...z,search:z.searchStr,state:{...z.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(z.unmaskOnReload??this.options.unmaskOnReload??!1)&&(z.state.__tempKey=this.tempLocationKey)),z.state={...z.state,__hashScrollIntoViewOptions:g??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=a,c=r.replace?"REPLACE":"PUSH",this.history[c==="REPLACE"?"replace":"push"](z.publicHref,z.state,{ignoreBlocker:i}),this.history.subscribers.size||this.load({action:{type:c}})}return this._scroll.n=r.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:a,resetScroll:i,hashScrollIntoView:r,viewTransition:s,ignoreBlocker:c,...d}={})=>{const p=this.buildLocation({...d,_includeValidateSearch:!0});this._pendingLocation=p;const h=this.commitLocation({...p,viewTransition:s,replace:a,resetScroll:i,hashScrollIntoView:r,ignoreBlocker:c});return queueMicrotask(()=>
11{this._pendingLocation===p&&(this._pendingLocation=void 0)}),h},this.navigate=async({to:a,reloadDocument:i,href:r,publicHref:s,...c})=>{const d=r?Nc(r):void 0;if(d||i){if(a!==void 0||!r){const h=this.buildLocation({to:a,...c}),f=h.maskedLocation??h;r??=f.publicHref,s??=f.publicHref}return Lv(this,!d&&s?s:r,c)}return this.buildAndCommitLocation({...c,href:r,to:a,_isNavigate:!0})},this.load=async a=>{this.updateLatestLocation(),a?.action&&(this._scroll.h=a.action.type==="PUSH"||a.action.type==="REPLACE"),await BO(this,a)},this.startViewTransition=a=>{const i=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,i&&typeof document.startViewTransition=="function"){let r;if(typeof i=="object"&&window.CSS?.supports?.("selector(:active-view-transition-type(a))")){const s=this.latestLocation,c=this.stores.resolvedLocation.get(),d=typeof i.types=="function"?i.types(_h(s,c)):i.types;if(d===!1)return a();r={update:a,types:d}}else r=a;return document.startViewTransition(r).updateCallbackDone}return a()},this.invalidate=a=>{const i=this._committed,r=a?.filter,s=this._preloads,c=new Set,d=f=>{(!r||r(f))&&c.add(f.id)};i.forEach(d),this._cache.forEach(d),s?.forEach(f=>f.forEach(d)),this._tx?.[3].forEach(d);const p=[];for(const[f,m]of s??[])m.some(g=>c.has(g.id))&&(s.delete(f),p.push(f));const h=f=>{if(c.has(f.id)){const m=this.routesById[f.routeId],g={...f,invalid:!0,...(a?.forcePending||f.status==="error"||f.status==="notFound")&&Ov(m)?{status:"pending",error:void 0}:void 0};return f._flight=void 0,g}return f};this._committed=i.map(h);for(const[f,m]of this._cache)c.has(f)&&(m.invalid=!0,a?.forcePending&&(m.status="pending"));for(const f of c){const m=this._flights?.get(f);this._flights?.delete(f),m&&!m[2]&&p.push(m[1])}for(const f of p)f.abort();return this.shouldViewTransition=!1,this.load({sync:a?.sync})},this.resolveRedirect=a=>{const i=a.options;let r=a.headers.get("Location")||i.href;if(!r){const c=this.buildLocation(i);r=(c.maskedLocation??c).publicHref||"/"}let s;if(k_.test(r)||(s=Nc(r))&&!this.protocolAllowlist.has(s))throw new Error("Redirect blocked: unsafe protocol");if(s==="http:"||s==="https:"){const c=new URL(r);c.pathname.startsWith("//")?r=c.href:mf(c,this.origin)||(r=ff(c),s=void 0)}return s&&(i.reloadDocument=!0),i.href=r,a.headers.set("Location",r),a},this.clearCache=a=>{const i=this._cache,r=this._preloads,s=a?.filter,c=[],d=[];for(const[h,f]of i)(!s||s(f))&&(d.push(h),c.push(f));const p=[];for(const[h,f]of r??[])(!s||f.some(s))&&(p.push(h),c.push(...f));for(const h of d)i.delete(h);for(const h of p)r.delete(h);for(const h of c){const f=h._flight;h._flight=void 0,f&&!--f[2]&&(this._flights?.get(h.id)===f&&this._flights.delete(h.id),p.push(f[1]))}for(const h of p)h.abort()},this.loadRouteChunk=On,this.preloadRoute=a=>$O(this,a),this.matchRoute=(a,i)=>{const r={...a,to:a.to?_v(a.from||"",a.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:a.params||{},leaveParams:!0},s=this.buildLocation(r),c=this.stores.status.get()==="pending";if(i?.pending&&!c)return!1;const d=i?.pending??!c?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),p=nO(s.pathname,i?.caseSensitive??!1,i?.fuzzy??!1,d.pathname,this.processedTree);return!p||a.params&&!Li(p.rawParams,a.params,!0)?!1:i?.includeSearch??!0?Li(d.search,s.search,!0)?p.rawParams:!1:p.rawParams},this.getStoreConfig=e,t.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=JD(t.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...t,caseSensitive:t.caseSensitive??!1,notFoundMode:t.notFoundMode??"fuzzy",stringifySearch:t.stringifySearch??gO,parseSearch:t.parseSearch??wO,protocolAllowlist:t.protocolAllowlist??VD}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(t){Object.assign(this,t),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;const e=this.options.notFoundRoute;e&&(e.init(99999999999),this.routesById[e.id]!==e&&(e._interpolation=$c(!1,e,0)),this.routesById[e.id]=e)}matchRoutesInternal(t,e){const[a,i,r]=this.getMatchedRoutes(t.pathname);let s=a,c=!1;(r?r.path!=="/"&&i["**"]:Qi(t.pathname))&&(this.options.notFoundRoute?s=[...s,this.options.notFoundRoute]:c=!0);const d=c?DO(this.options.notFoundMode,s):void 0,p=new Array(s.length),h=this._committed,f=(g,z)=>{const j=h[z];return j?.routeId===g.id?j:g===this.options.notFoundRoute?h.find(v=>v.routeId===g.id):void 0};let m;
11for(let g=0;g<s.length;g++){const z=s[g],j=p[g-1];let v,_,S;{const oe=j?.search??t.search,me=j?._strictSearch??void 0;try{const de=Tp(z.options.validateSearch,{...oe})??void 0;v={...oe,...de},_={...me,...de}}catch(de){let A=de;if(de instanceof Hp||(A=new Hp(de.message,{cause:de})),e?.throwOnError)throw A;v=oe,_={},S=A}}let E="",T="";try{E=z.options.loaderDeps?.({search:v})??"",T=E&&JSON.stringify(E)||""}catch(oe){if(e?.throwOnError)throw oe;S??=oe}const O=Sp(),H=z._interpolation?Tv(z.fullPath,z._interpolation,i,this.pathParamsDecoder,O):z.fullPath,U=z.id+H+T,R=f(z,g),I=this._cache.get(U)??(R?.id===U?R:void 0);m=I?._strictParams??Object.assign(O,m);let ae;if(!I)try{Kv(z,m)}catch(oe){if(vr(oe)||rk(oe)?ae=oe:ae=new AO(oe.message,{cause:oe}),e?.throwOnError)throw ae}const ee=R?"stay":"enter";let F;if(I)F={...I,cause:ee,search:ws(R?R.search:I.search,v),_strictSearch:_,searchError:S};else{const oe=Ov(z)?"pending":"success";F={id:U,ssr:z.options.ssr,index:g,routeId:z.id,params:R?.params??m,_strictParams:m,pathname:H,updatedAt:Date.now(),search:R?ws(R.search,v):v,_strictSearch:_,searchError:S,status:oe,isFetching:!1,error:void 0,paramsError:ae,context:{},abortController:e?._controller??new AbortController,cause:ee,loaderDeps:R?To(R.loaderDeps,E):E,invalid:!1,preload:!1,staticData:z.options.staticData||{},fullPath:z.fullPath}}const Z=d===z.id;F._notFound&&!Z&&(F.error=void 0),F._notFound=Z,p[g]=F}for(let g=0;g<p.length;g++){const z=p[g];z.params=z.cause==="stay"?ws(z.params,m):m,e?._controller&&(z.context={})}return p}matchRoutesLightweight(t){const e=Po(this.stores.ids.get()),a=e?this.stores.byRoute.get(e).get():void 0,i=a?.id,r=this.lightweightCache.get(t);if(r&&r[0]===i)return r[1];const[s,c]=this.getMatchedRoutes(t.pathname),d=Po(s),p={...t.search};for(const g of s)try{Object.assign(p,Tp(g.options.validateSearch,p))}catch{}const h=a&&a.routeId===d.id&&a.pathname===t.pathname;let f;if(h)f=a.params;else{const g=c;for(const z of s)try{Kv(z,g)}catch{}f=g}const m=[s,d.fullPath,p,f];return this.lightweightCache.set(t,[i,m]),m}};async function Lv(t,e,{replace:a,ignoreBlocker:i}){if(!z_(e,t.protocolAllowlist)){if(!i){const r=t.history._getBlockers();for(const s of r)if(s?.blockerFn&&await s.blockerFn({currentLocation:t.history.location,nextLocation:t.history.location,action:a?"REPLACE":"PUSH"}))return}t.history._ignoreNextBeforeUnload?.(e),a?window.location.replace(e):window.location.href=e}}var Hp=class extends Error{},AO=class extends Error{};function Tp(t,e){if(t==null)return{};if("~standard"in t){const a=t["~standard"].validate(e);if(a instanceof Promise)throw new Hp("Async validation not supported");if(a.issues)throw new Hp(JSON.stringify(a.issues,void 0,2),{cause:a});return a.value}return"parse"in t?t.parse(e):typeof t=="function"?t(e):{}}function wf(t,e){if(t===void 0||t===!0)return e;const a=Object.create(null);return t===!1||t===null?a:typeof t=="function"?(Object.assign(a,e),Object.assign(a,t(a))):Object.assign(a,e,t)}function PO(t,e){return typeof t=="function"?!0:!e||t===!1||t===null?!1:t===void 0||t===!0||e.some(a=>typeof a!="string"&&!sk.call(t,a[1]))}const gf=Object.freeze({});function CO(t,e){const a=[];for(let i=0;i<t.length;i++){const r=t[i].options;if("search"in r)r.search?.middlewares&&a.push(...r.search.middlewares);else if(r.preSearchFilters||r.postSearchFilters){const c=({search:d,next:p})=>{const h=p(r.preSearchFilters?r.preSearchFilters.reduce((f,m)=>m(f),d):d);return r.postSearchFilters?r.postSearchFilters.reduce((f,m)=>m(f),h):h};a.push(c)}const s=r.validateSearch;if(e&&s){const c=({search:d,next:p,meta:h})=>{const f=p(d);try{const m=Tp(s,f);if(h&&m)for(const g in m)g in f||(h.defaulted||=new Map).set(g,m[g]);return{...f,...m}}catch{}return f};a.push(c)}}return a}function RO(t,e,a){const i=(r,s,c)=>{if(r>=t.length){if(!a.search)return{};if(a.search===!0)return s;const p=w_(a.search,s);return c&&(c.explicit=p),p}const d=(p,h)=>{if(h){const f=c||{};return{search:i(r+1,p,f),meta:f}}return i(r+1,p,c)};return t[r]({search:s,next:d,meta:c})};return i(0,e)}function DO(t,e){if(t!=="root"){let a;for(let i=e.length-1;i>=0;i--){const r=e[i];if(r.options.notFoundComponent)return r.id;a||=r.children&&r.id}if(a)return a}return Xs}function Kv(t,e){const a=t.options.params?.parse??t.options.parseParams;a&&Object.assign(e,a(e))}function Ow(t,e){return t.options[e]?.preload?.()}function OO(t,e){const a=Ow(t,"component");let i=Ow(t,"pendingComponent");return e&&(i?i=i.then(e):e()),a&&i?Promise.all([a,i]).then(()=>{}):a??i}function On(t,e,a){const i=()=>e===!1?void 0:e?Ow(t,e):OO(t,a),r=t._lazy;if(r)return r===!0?i():r.then(i);if(!t.lazyFn)return i();const s=t.lazyFn().then(c=>{{const{id:d,...p}=c.options;Object.assign(t.options,p),t._lazy=!0}},c=>{throw t._lazy=void 0,c});return t._lazy=s,s.then(i)}function uk(t){const e=t.findIndex(a=>a.status!=="success"||a._notFound)+1;return e&&e<t.length?t.slice(0,e):t}function D_(t){let e=t.length;for(let a=0;a<e;a++){const i=t[a];if(i._assetEnd!==void 0){e=Math.min(e,Math.max(a+1,i._assetEnd));continue}if(i.status!=="success"||i._notFound){e=a+1;break}}return e<t.length?t.slice(0,e):t}const en=0,Un=1,Th=2,xa=3,Co=[4];function Ic(t){return typeof t[0]=="number"}function Ln(t,e){return e.aborted?Promise.race([Promise.reject(e),t]):new Promise((a,i)=>{const r=()=>i(e);e.addEventListener("abort",r,{once:!0}),Promise.resolve(t).then(a,i).then(()=>e.removeEventListener("abort",r))})}function Ui(t,e){return t.routesById[e.routeId]}function Wc(t,e,a){return rk(t)?[xa,t]:vr(t)?(t.routeId||=a,[Th,t]):e?(typeof t?.then=="function"&&(t=new Error("A Promise was thrown",{c
11ause:t})),[Un,t]):[en,t]}function dk(t,e){let a=Wc(e,!0,t.id);if(a[0]!==Un)return a;try{t.options.onError?.(a[1])}catch(i){a=Wc(i,!0,t.id)}return a}function Tc(t,e,a,i,r){return r[0].signal.aborted?Co:yk(t,e,a,dk(a,i),r)}async function UO(t,e,a,i,r,s){const[c,d]=e,p=a[0].signal,h=!!a[3];for(let f=a[6]??0;f<i;f++){const m=d[f],g=Ui(t,m);m.abortController=a[0];const z=d[f-1]?.context??t.options.context??{},j={params:m.params,location:c,navigate:E=>t.navigate({...E,_fromLocation:c}),buildLocation:t.buildLocation,cause:h?"preload":m.cause,abortController:a[0],preload:h,matches:d,routeId:g.id};try{const E=m._ctx||=g.options.context?g.options.context({...j,deps:m.loaderDeps,context:z})||{}:void 0;m.context={...z,...E}}catch(E){return Rn(t,m),[f,Tc(t,e,g,E,a)]}if(p.aborted)return[f,Co];const v=m.paramsError??m.searchError;if(v!==void 0)return Rn(t,m),[f,Tc(t,e,g,v,a)];const _=g.options.beforeLoad;if(!_)continue;const S=m.status;f>=s&&(m.status="pending",a[7]?.());try{Gc(t,m,"beforeLoad",a[0]);const E=_({...j,search:m.search,context:m.context,...t.options.additionalContext}),T=await(typeof E?.then=="function"?Ln(E,p):E);if(p.aborted)return[f,Co];const O=yk(t,e,g,Wc(T,!1,g.id),a);if(O[0]!==en)return Rn(t,m),[f,O];m.context={...m.context,...T}}catch(E){return Rn(t,m),[f,Tc(t,e,g,E,a)]}finally{m.status=S,Gc(t,m,!1,a[0])}}r()}function pk(t,e,a){if(!(!a||--a[2])){if(t._flights?.get(e.id)===a){const i=t._tx;if(i&&!i[0].signal.aborted&&!i[3].includes(e)&&i[3].some(r=>r.id===e.id)&&i[3].some(r=>r.isFetching==="beforeLoad"))return;t._flights.delete(e.id)}return a[1]}}function Rn(t,e){const a=e._flight;e._flight=void 0,pk(t,e,a)?.abort()}function ga(t,e,a,i){const r=[];for(const s of e)if(!a?.includes(s)){const c=s._flight;if(s._flight=void 0,i&&c?.[2]===1&&t._flights?.get(s.id)===c&&a?.some(d=>d.id===s.id))c[2]=0;else{const d=pk(t,s,c);d&&r.push(d)}}for(const s of r)s.abort()}function hk(t){for(const e of t){const a=e._flight;a&&a[2]++}}function Gc(t,e,a,i){if(e.isFetching=a,i&&t._tx?.[0]!==i)return;const r=t.stores.byRoute.get(e.routeId),s=r?.get();s?.id===e.id&&r.set({...s,isFetching:a})}function O_(t,e,a,i,r,s,c){const d=e[0];return{params:a.params,location:d,navigate:p=>t.navigate({...p,_fromLocation:d}),cause:c?"preload":a.cause,abortController:r,preload:c,deps:a.loaderDeps,parentMatchPromise:s,context:a.context,route:i,...t.options.additionalContext}}async function Mv(t,e,a,i,r,s,c){const d=c[0],p=d.signal;if(p.aborted)return Co;if(!r)return[en,void 0];let h=a._flight;Gc(t,a,"loader",d);try{if(!h){const f=new AbortController;h=[Promise.resolve().then(()=>r(O_(t,e,a,i,f,s,!!c[3]))).then(m=>Wc(m,!1,i.id),m=>Wc(m,!0,i.id)).then(m=>(m[0]!==en&&t._flights?.get(a.id)===h&&(t._flights.delete(a.id),h[2]||f.abort()),m[0]===Un&&h[2]?dk(i,m[1]):m)),f,1],(t._flights??=new Map).set(a.id,h)}return a._flight=h,a.abortController=h[1],yk(t,e,i,await Ln(h[0],p),c)}catch(f){if(f!==p||!p.aborted)throw f;return Rn(t,a),Co}finally{Gc(t,a,!1,d)}}function Nv(t,e,a){e[0]!==xa&&(t.status="success",t.error=void 0,e[0]===en?(t.loaderData=e[1],t.invalid=!1,t.updatedAt=Date.now(),t.preload=a):t.invalid=!0)}function U_(t,e,a){const i=t._cache.get(e.id);if(i!==a||t._committed.some(s=>s.id===e.id&&s._flight===e._flight))return;const r={...e,_notFound:void 0,context:{}};r._flight&&r._flight[2]++,t._cache.set(e.id,r),i&&Rn(t,i)}function Bv(t,e){return e[0]===Un||e[0]===Th?{...t,status:e[0]===Un?"error":"notFound",error:e[1],_flight:void 0}:t}function LO(t,e,a,i,r,s,c){const d=e[1][a],p=Ui(t,d),h=!!s[3],f=t._cache.get(d.id);let m,g=!1,z;try{if(d.status==="success"&&(m=p.options.shouldReload,typeof m=="function"&&(m=m(O_(t,e,d,p,s[0],r,h))),s[0].signal.aborted&&(z=Co)),!z)if(d.status!=="success")g=!0;else{const Z=h||d.preload?p.options.preloadStaleTime??t.options.defaultPreloadStaleTime??3e4:p.options.staleTime??t.options.defaultStaleTime??0;g=!!(d.invalid||m||m===void 0&&Date.now()-d.updatedAt>=Z&&(s[5]||d.cause==="enter"||s[2].some(oe=>oe.routeId===d.routeId&&oe.id!==d.id)))}}catch(Z){d.invalid=!0,Rn(t,d),z=Tc(t,e,p,Z,s)}const j=p.options.loader,v=typeof j=="function",_=v?j:j?.handler,S=!h||p.options.preload!==!1;let E=S&&j?t._flights?.get(d.id):void 0;E===d._flight||z?E=void 0:E&&!g&&!h&&m===void 0?g=!0:g||(E=void 0);const T=!!(j&&g&&d.status==="success"&&!h&&!s[4]&&((v?void 0:j.staleReloadMode)??t.options.defaultStaleReloadMode)!=="blocking"),O=g&&S,H=O&&!T&&(d.status!=="success"||!!j),U=a>=c?s[7]:void 0,R=p.lazyFn&&p._lazy!==!0?U:void 0;if(O&&!j&&(d.invalid=!1,d.updatedAt=Date.now()),E&&E[2]++,H){const Z=d._flight;d._flight=E,pk(t,d,Z)?.abort(),a>=c&&(d.status="pending"),U?.()}O||(d.isFetching=!1);
11const I=!z&&H?Mv(t,e,d,p,_,r,s).then(Z=>(Nv(d,Z,h),Z[0]===en&&(j&&!s[0].signal.aborted&&U_(t,d,f),a>=c&&(d.status="pending")),Z)):Promise.resolve(z??[en,d.loaderData]),ae=(async()=>{try{const oe=On(p,void 0,R);oe&&await Ln(oe,s[0].signal)}catch(oe){if(!e[1].some((me,de)=>de<=a&&(me.status==="error"||me.status==="notFound"||me._notFound)))return[a,Tc(t,e,p,oe,s)]}const Z=await I;H&&Z[0]===en&&d.status==="pending"&&!s[0].signal.aborted&&(d.status="success",U?.())})();if(i.push([a,I,ae]),!T)return I.then(Z=>Bv(d,Z));const ee={...d,status:"pending",preload:!1,_flight:E};d.invalid=!1,d.isFetching="loader";const F=Mv(t,e,ee,p,_,r,s).then(Z=>(d.isFetching=!1,Nv(ee,Z,!1),Z));return(e[2]??=[]).push([a,F,ae,ee]),F.then(Z=>Bv(ee,Z))}async function Uw(t,e,a,i,r=0){const s=a?.[1][1];let c=s?.routeId?e.findIndex(d=>d.routeId===s.routeId):a?.[0]??e.length-1;c<0&&(c=0);for(let d=c;d>=0;d--){const p=Ui(t,e[d]);try{const h=On(p,!1);h&&await Ln(h,i)}catch(h){if(h===i&&i.aborted)throw h}if(p.options.notFoundComponent)return d}return s?.routeId?c:r}function zr(t,e){e[2]&&(ga(t,e[2].map(a=>a[3])),e[2]=void 0)}async function $v(t,e,a,i){let r;try{await Promise.all(t.map(s=>s[1].then(async c=>{const d=s[0];if(!(i&&d>=await i)){if(c[0]>=xa)throw[d,c];!r&&c[0]!==en&&(r=[d,c],await Promise.all((a??[]).map(p=>{if(!(p[0]<=d))return p[1].then(h=>{if(h[0]===xa)throw[p[0],h]})})))}})))}catch(s){return s}return e??r}function yk(t,e,a,i,r,s){for(;i[0]===xa;){const c=i[1],d=c.options;try{if((d.href||c.headers.has("Location"))&&(t.resolveRedirect(c),d.reloadDocument)||(d.reloadDocument?r[3]:r[1]>=20))return i;const p=t.buildLocation({...d,_fromLocation:e[0],_includeValidateSearch:!0}),h=p.maskedLocation??p;if(h.external){const f=c.clone();return f.options={...d},f.headers.set("Location",h.publicHref),t.resolveRedirect(f),r[3]?[xa,f]:[xa,f,h]}return[xa,c,p]}catch(p){i=s?[Un,p]:dk(a,p),s=!0}}return i}async function L_(t,e,a,i,r,s){const c=e[1];let d=await r,p=!1;const h=c.findIndex(z=>z._notFound),f=z=>z[1][0]===Th?Uw(t,c,z,i.signal):z[0];let m=h<0?c.length:h;if((d?.[1][0]??0)>=xa)m=0;else if(d){m=d[2]??=await f(d);for(const z of a){if(z[0]>=m)break;const j=await z[1];if(j[0]!==en&&j[0]<xa&&!("loaderData"in c[z[0]])){d=[z[0],j],m=d[2]=await f(d);break}}}for(const z of a){if(z[0]>=m)break;const j=await z[2];if(j){d=j;break}}if((d?.[1][0]??0)>=xa){const z=d[1];if(z[0]!==xa||z[1].options.reloadDocument||z[2])return zr(t,e),z;p=!0,d=[0,[Un,new Error("Too many redirects")]]}const g=d?d[2]??await f(d):h;if(g>=0){const z=d?.[1],j=z?.[0],v=c[g],_=z?.[1],S=()=>{z&&(v._notFound=void 0,j===Un?v.status="error":(_.routeId=v.routeId,v.routeId===t.routeTree.id?(v.status="success",v._notFound=!0):v.status="notFound"),v.error=_,v.isFetching=!1)};S(),z||s?.();const E=Ui(t,v);try{await Ln(z?Promise.resolve().then(()=>On(E,j===Un?"errorComponent":"notFoundComponent")):Promise.all([On(E),On(E,"notFoundComponent")]),i.signal)}catch(T){if(T===i.signal&&i.signal.aborted)return zr(t,e),Co}z?p&&(i.abort(),await Promise.all([...a.map(T=>T[1]),...a.map(T=>T[2]),...(e[2]??[]).map(T=>T[1])]),zr(t,e),ga(t,c),S()):v.status="success"}return e}async function mk(t,e,a,i=0,r=e[1].length){const s=e[1];for(let c=i;c<r;c++){const d=s[c],p=Ui(t,d).options;if(p.head||p.scripts)try{const h={ssr:t.options.ssr,matches:s,match:d,params:d.params,loaderData:d.loaderData},[f,m]=await Ln(Promise.all([p.head?.(h),p.scripts?.(h)]),a);d.meta=f?.meta,d.links=f?.links,d.headScripts=f?.scripts,d.styles=f?.styles,d.scripts=m}catch(h){if(h===a&&a.aborted)break;console.error(h)}if(d.status!=="success"||d._notFound)break}return e}async function K_(t,e,a,i){const r=[e,a],s=i[0].signal;let c;try{const d=t.stores.matches.get();let p=a.findIndex(S=>S._notFound);if(t.options.notFoundMode!=="root"&&p>=0){const S=await Uw(t,a,void 0,s,p);a[p]._notFound=void 0,a[S]._notFound=!0,p=S}let h=p<0?a.length:p+1,f=0;for(;f<h&&f!==p;){const S=a[f],E=i[2][f],T=d[f];if(E?.id!==S.id||E.status!=="success"||S.preload||T?.id!==S.id||T.status!=="success"||(f++,E._notFound||T._notFound))break}const m=[],g=i[6]??0;let z=g?Promise.resolve(a[g-1]):void 0;const j=()=>{for(let S=g;S<h&&!s.aborted;S++)z=LO(t,r,S,m,z,i,f)},v=await UO(t,r,i,h,j,f);if(v){if(i[4]=!0,h=v[0],v[1][0]===Th){const S=await Uw(t,a,v,s);v[2]=S,h=Math.min(h,S+1)}else v[1][0]>=xa&&(h=0);j()}if(!s.aborted&&!i[3]){const S=[];for(const[E,T]of t._flights??[])T[2]||(t._flights.delete(E),S.push(T[1]));for(const E of S)E.abort()}const _=L_(t,r,m,i[0],$v(m,v,r[2]),i[7]);r[2]?.length&&(r[3]=$v(r[2],void 0,void 0,_.then(S=>Ic(S)?0:uk(a).length,()=>0))),c=await _}catch(d){if(zr(t,r),d===s&&s.aborted)return Co;throw d}return Ic(c)?c:mk(t,c,s,i[6]===a.length?i[6]:0)}function Lw(t,e){if(t._tx!==e)return;const a=e[3],i=t.stores.matches.get();let r=t._pending;
11for(let s=0;s<a.length;s++){const c=a[s],d=c.status==="success"&&!c._notFound,p=i[s]?.id===c.id&&i[s]?.status==="pending";if(d&&!p)continue;const h=Ui(t,c),f=d||c.invalid?0:h.options.pendingMs??t.options.defaultPendingMs,m=h.options.pendingComponent??t.options.defaultPendingComponent;if(!m||typeof f!="number"||f===1/0){r&&(r[0]=e,r[2]=0,r[4]=!0);return}const g=h.options.pendingMinMs??t.options.defaultPendingMinMs??0;let z=!1;if(r?.[1]===c.id?(z=r[0]!==e,r[0]=e):(clearTimeout(r?.[3]),t._pending=r=void 0),r||(t._pending=r=[e,c.id,p?Date.now()+g:e[4]+f,void 0,p||void 0,m]),r[4]&&!z&&r[5]===m)return;if(r[5]=m,!r[4]){clearTimeout(r[3]);const _=r[2]-Date.now();if(_>0){r[3]=setTimeout(()=>Lw(t,e),_);return}r[2]=0}const j=a.map(_=>({..._,_flight:void 0}));j[s].status="pending";const v=r[4]=t.startTransition(()=>t.stores.setMatches(j),j).then(_=>(_&&t._pending===r&&r[4]===v&&!r[2]&&(r[2]=Date.now()+g),_));return}}function mc(t,e){const a=t._pending;(t._tx===e||!t._tx?.[3].some(i=>i.id===a?.[1]))&&(clearTimeout(a?.[3]),t._pending=void 0)}async function Iv(t,e){const a=t._pending;if(!a)return;clearTimeout(a[3]);const i=a[2]-Date.now();if(!a[4]||i<=0||!uk(e[3]).some(s=>s.id===a[1]))return;let r;try{await Ln(new Promise(s=>{r=setTimeout(s,i)}),e[0].signal)}catch{}clearTimeout(r)}function M_(t,e){t._committed=e,t.stores.setMatches(e)}function KO(t,e,a,i){const r=t._committed,s=t._lifecycleEnd,c=t._cache;for(const f of a)f.preload=!1,i&&(f._assetEnd=void 0);const d=uk(a).length,p=new Map;{const f=Date.now(),m=new Set;for(let g=0;g<a.length;g++){const z=a[g];(g<d||z.status==="success")&&m.add(z.id)}for(const g of[...r,...c.values()]){if(g.status!=="success"||m.has(g.id))continue;const z=Ui(t,g);!z.options.loader||f-g.updatedAt>=(g.preload?z.options.preloadGcTime??t.options.defaultPreloadGcTime??3e5:z.options.gcTime??t.options.defaultGcTime??3e5)||p.set(g.id,c.get(g.id)===g?g:{...g,_flight:void 0,isFetching:!1,context:{}})}}e[3]=[],t._cache=p;const h=t._lifecycleEnd=R_(a);M_(t,a),ga(t,[...c.values(),...r].filter(f=>f._flight&&p.get(f.id)!==f),a),TO(t,r,a,s,h,e)}async function Kd(t,e){let a=t._tx;for(;a&&a!==e;)e=a,await a[5],a=t._tx}function N_(t,e,a){const i=a[1].options,r=a[2];if(!r)return t.navigate({...i,replace:!0,ignoreBlocker:!0});if(i.reloadDocument)return t.navigate({href:(r.maskedLocation??r).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});r._redirects=e[1]+1,t._pendingLocation=r;const s=t.commitLocation({...r,viewTransition:i.viewTransition,replace:!0,resetScroll:i.resetScroll,hashScrollIntoView:i.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{t._pendingLocation===r&&(t._pendingLocation=void 0)}),s}async function MO(t,e,a,i,r){const s=a.map(p=>({...p}));hk(s);for(const p of i)Rn(t,s[p[0]]),s[p[0]]=p[3];const c=[e[2],s];let d;try{d=await L_(t,c,i,e[0],r)}catch(p){throw ga(t,s),p}if(Ic(d)){ga(t,s),d[0]===xa&&t._tx===e&&t._committed===a&&await N_(t,e,d);return}if(await mk(t,d,e[0].signal),t._tx!==e||t._committed!==a){ga(t,s);return}for(const p of s){const h=t._cache.get(p.id);h?._flight&&h._flight===p._flight&&(t._cache.delete(p.id),Rn(t,h))}M_(t,s),ga(t,a,s)}async function NO(t,e,a,i,r,s){const c=await K_(t,e[2],e[3],[e[0],e[1],t._committed,void 0,r,a,s,i]);if(Ic(c)){const m=c[0]===xa&&t._tx===e;if((!m||c[1].options.reloadDocument)&&mc(t,e),ga(t,e[3]),e[3]=[],!m)return;if(t._tx!==e){mc(t,e);return}await N_(t,e,c);return}const d=c[1];if(t._tx===e&&await Iv(t,e),t._tx!==e){mc(t,e),ga(t,d),zr(t,c);return}const p=e[2],h=_h(p,t.stores.resolvedLocation.get()),f=c[2];await t.startViewTransition(async()=>{if(t._tx===e&&await Iv(t,e),t._tx!==e){mc(t,e),ga(t,d),zr(t,c);return}const m=()=>{mc(t,e),KO(t,e,d,s),t._tx===e&&(t.emit({type:"onLoad",...h}),t._tx===e&&t.emit({type:"onBeforeRouteMount",...h}))},g=await t.startTransition(m,d);if(t._tx!==e){zr(t,c);return}f?.length&&MO(t,e,d,f,c[3]).catch(console.error),t.batch(()=>{t.stores.resolvedLocation.set(p),t.stores.status.set("idle"),t._tx===e&&t.emit({type:"onResolved",...h}),g&&t._tx===e&&t.emit({type:"onRendered",...h})}),t._tx===e&&(t._commitPromise?.resolve(),t._commitPromise=void 0)})}async function BO(t,e){const a=t._tx,i=t.stores.resolvedLocation.get(),r=i??t.stores.location.get(),s=t.latestLocation,c=t._pendingLocation,d=c?.href===s.href?c._redirects??0:0,p=t._handoff,h=p?.[0](),f=new AbortController,m=t._preflight;if(t._preflight=f,h||p?.[1](),m?.abort(),!f.signal.aborted){const O=_h(s,i);t.emit({type:"onBeforeNavigate",...O}),f.signal.aborted||t.emit({type:"onBeforeLoad",...O})}if(f.signal.aborted){await Kd(t,a);return}const g=r.href===s.href;let z=f;const j=t.matchRoutes(s,{_controller:f});hk(j);const v=h?p[1](j):void 0;if(v?z=h:h?.abort(),f.signal.aborted){ga(t,j),await Kd(t,a);return}t._preflight=void 0;let _;const S=()=>NO(t,T,g,()=>Lw(t,T),e?.sync,v),E=e?.sync?new Promise(O=>_=O):Promise.resolve().then(S),T=[z,d,s,j,Date.now(),E.then(()=>Kd(t,T))];if(t._tx=T,a){for(const O of t.stores.matches.get()){if(t._tx!==T)break;O.isFetching&&Gc(t,O,!1)}a[0].abort(),ga(t,a[3],T[3],!0)}if(t._tx!==T){ga(t,T[3]),T[3]=[],_?.(),await Kd(t,T);return}t.batch(()=>{t.stores.status.set("pending"),t.stores.location.set(s)}),(v||!t._committed.length&&j[0]?.status!=="success"&&!j.some(O=>O._notFound))&&Lw(t,T),_?.(S()),await T[5]}async function $O(t,e){let a=t.buildLocation(e);for(let i=0;;i++){const r=t._committed,s=new AbortController;let c,d,p;try{try{c=t.matchRoutes(a,{_controller:s}),hk(c),d=(t._preloads??=new Map).set(s,c),p=await K_(t,a,c,[s,i,r,!0])}finally{d&&(d=d.delete(s),ga(t,c)),s.abort()}if(!Ic(p))return p[1];if(!d||p.length<3)return;a=p[2]}catch(h){vr(h)||console.error(h);return}}}async function IO(t){const e=window.$_TSR,a=t.options.serializationAdapters;a?.length&&(e.t=new Map(a.map(F=>[F.key,F.fromSerializable])),e.buffer.forEach(F=>F())),e.initialized=!0;const i=e.router;t.ssr={manifest:i.manifest},t.options.ssr={nonce:document.querySelector('meta[property="csp-nonce"]')?.content};const r=i.matches,s=new AbortController,c=t._preflight;t._preflight=s,c?.abort();const d=()=>t._preflight===s;let p,h,f,m;try{if(await Ln(t.options.hydrate?.(i.dehydratedData),s.signal),!d())return;const F=t.history.location;f=F.href,m=F.state,t.updateLatestLocation(),p=t.latestLocation,t.stores.location.set(p),h=t.matchRoutes(p,{_controller:s})}catch(F){if(d()&&(t._preflight=void 0),s.abort(F),F!==s.signal)throw F}if(!d())return;const g=[];let z,j=0;const v=F=>{j=Math.min(j,F+1);const Z=g.splice(F);for(const oe of Z)Ui(t,oe).options.loader&&(oe.status==="success"||!oe.invalid&&"loaderData"in oe)&&U_(t,{...oe,status:"success",error:void 0,preload:!0},t._cache.get(oe.id));ga(t,Z)},_=r.length>h.length?h.findIndex(F=>F._notFound)+1:r.length;let S=!1;for(let F=0;F<_;F++){const Z=h[F],oe=r[F];if(typeof oe.i!="string"||$D(oe.i)!==Z.id){z??=F;break}j=F+1;const me=Ui(t,Z);
11if(("l"in oe||oe.s==="success"&&oe.e===void 0&&me.options.loader)&&(Z.loaderData=oe.l),Z.status=oe.s,Z.ssr=oe.ssr,me.options.ssr=Z.ssr,Z.updatedAt=oe.u,Z.error=oe.e,Z._notFound||=oe.g,Z.status==="error"||Z.status==="notFound"||Z._notFound){S=!0,g.push(Z),(Z.ssr===!1||Z.ssr==="data-only")&&(z??=F);break}if(Z.status==="pending"){z??=F;break}g.push(Z),Z.ssr==="data-only"&&(z??=F)}!S&&g.length===_&&_<h.length&&(z=_);const E=g.map(async F=>{try{const Z=Ui(t,F);return await(F._notFound?Promise.all([On(Z),On(Z,"notFoundComponent")]):On(Z,F.status==="error"?"errorComponent":F.status==="notFound"?"notFoundComponent":void 0)),!0}catch{return!1}});let T=0;try{for(;T<E.length&&await Ln(E[T],s.signal);)T++}catch{return}if(!d())return;T<g.length&&v(T);const O=Math.max(z===g.length?g.length+1:g.length,T<E.length?T:j);for(let F=0;F<O;F++){const Z=h[F],oe=Ui(t,Z),me=h[F-1]?.context??t.options.context??{};let de;if(oe.options.context){try{de=Z._ctx=oe.options.context({deps:Z.loaderDeps,params:Z.params,context:me,location:p,navigate:A=>t.navigate({...A,_fromLocation:p}),buildLocation:t.buildLocation,cause:Z.cause,abortController:s,preload:!1,matches:h,routeId:oe.id})||{}}catch{if(!d())return;if(Z.status!=="error"&&Z.status!=="notFound"&&!Z._notFound){z=Math.min(z??F,F),v(F);break}}if(!d())return}Z.context={...me,...de,...g[F]&&r[F].b}}if(await mk(t,[p,h],s.signal,0,j),!d())return;const H=z!==void 0||g.length<_,U=S&&g.length===_?h:g;let R=H?h:U,I;if(H&&z!==void 0){const F=R[z];I=F.ssr==="data-only"&&j>z+1?j:void 0,R=R.slice(),R[z]={...F,status:"pending",ssr:F.ssr==="data-only"?"data-only":!1,_assetEnd:I}}const ae=()=>{const F=t.history.location;return H&&!t._tx&&F.href===f&&F.state===m&&t._committed===U&&U.length&&!s.signal.aborted?s:void 0},ee=[ae,F=>{if(t._handoff!==ee)return;t._handoff=void 0;const Z=U.length;if(!F||!ae()||U.some((de,A)=>de.id!==F[A]?.id)){s.abort();return}let oe=I;if(oe!==void 0){for(let de=Z;de<oe;de++)if(h[de]?.id!==F[de]?.id){oe=de>z+1?de:void 0;break}}const me=U.map(de=>({...de}));oe!==void 0&&(me[z]._assetEnd=oe),ga(t,F.splice(0,Z,...me));for(let de=Z;de<F.length;de++){const A=F[de],B=h[de];B?.id===A.id&&B._ctx&&(A._ctx=B._ctx),A.abortController=s}return Z}];t._committed=U,t._lifecycleEnd=R_(U),t._handoff=ee,t._preflight=void 0,t.batch(()=>{t.stores.setMatches(R),t.stores.status.set("idle"),H||t.stores.resolvedLocation.set(t.stores.location.get())})}const Kn=Symbol.asyncIterator,B_=Symbol.hasInstance,el=Symbol.isConcatSpreadable,Mn=Symbol.iterator,$_=Symbol.match,I_=Symbol.matchAll,W_=Symbol.replace,G_=Symbol.search,V_=Symbol.species,F_=Symbol.split,H_=Symbol.toPrimitive,tl=Symbol.toStringTag,q_=Symbol.unscopables,Z_={[Kn]:0,[B_]:1,[el]:2,[Mn]:3,[$_]:4,[I_]:5,[W_]:6,[G_]:7,[V_]:8,[F_]:9,[H_]:10,[tl]:11,[q_]:12},WO={0:Kn,1:B_,2:el,3:Mn,4:$_,5:I_,6:W_,7:G_,8:V_,9:F_,10:H_,11:tl,12:q_},GO={2:!0,3:!1,1:void 0,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:NaN},VO={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},FO={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function Xe(t,e,a,i,r,s,c,d,p,h,f,m){return{t,i:e,s:a,c:i,m:r,p:s,e:c,a:d,f:p,b:h,o:f,l:m}}function Ko(t){return Xe(2,void 0,t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}const Y_=Ko(2),J_=Ko(3),HO=Ko(1),qO=Ko(0),ZO=Ko(4),YO=Ko(5),JO=Ko(6),QO=Ko(7),XO=64,eU=/[\x00-\x07\x0b\x0e-\x1f<\u2028\u2029\ud800-\udfff]/;function tU(t){switch(t){case'"':return'\\"';case"\\":return"\\\\";case` 12`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return}}function xr(t){if(t.length>=XO&&!eU.test(t))return JSON.stringify(t).slice(1,-1);let e="",a=0,i;for(let r=0,s=t.length;r<s;r++)i=tU(t[r]),i&&(e+=t.slice(a,r)+i,a=r+1);return a===0?e=t:e+=t.slice(a),e}function aU(t){switch(t){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return` 13`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return t}}function Mo(t){return typeof t=="string"&&!t.includes("\\")?t:t.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,aU)}
13const iU={parsing:1,serialization:2,deserialization:3};function nU(t){return`Seroval Error (step: ${iU[t]})`}const oU=(t,e)=>nU(t);var Q_=class extends Error{constructor(t,e){super(oU(t)),this.cause=e}},Wv=class extends Q_{constructor(t){super("parsing",t)}},rU=class extends Q_{constructor(t){super("deserialization",t)}};function Bn(t){return`Seroval Error (specific: ${t})`}var _r=class extends Error{constructor(t){super(Bn(1)),this.value=t}},fk=class extends Error{constructor(t){super(Bn(2))}},sU=class extends Error{constructor(t){super(Bn(3))}},Eh=class extends Error{constructor(t){super(Bn(4))}},lU=class extends Error{constructor(t){super(Bn(5)),this.value=t}},cU=class extends Error{constructor(t){super(Bn(6))}},uU=class extends Error{constructor(t){super(Bn(7))}},ta=class extends Error{constructor(t){super(Bn(8))}},X_=class extends Error{constructor(t){super(Bn(9))}};const Md="__SEROVAL_REFS__",e2=new Map,Vs=new Map;function t2(t){return e2.has(t)}function dU(t){return Vs.has(t)}function pU(t){if(t2(t))return e2.get(t);throw new lU(t)}function hU(t){if(dU(t))return Vs.get(t);throw new cU(t)}typeof globalThis<"u"?Object.defineProperty(globalThis,Md,{value:Vs,configurable:!0,writable:!1,enumerable:!1}):typeof window<"u"?Object.defineProperty(window,Md,{value:Vs,configurable:!0,writable:!1,enumerable:!1}):typeof self<"u"?Object.defineProperty(self,Md,{value:Vs,configurable:!0,writable:!1,enumerable:!1}):typeof global<"u"&&Object.defineProperty(global,Md,{value:Vs,configurable:!0,writable:!1,enumerable:!1});function wk(t){return t instanceof EvalError?1:t instanceof RangeError?2:t instanceof ReferenceError?3:t instanceof SyntaxError?4:t instanceof TypeError?5:t instanceof URIError?6:0}function yU(t){const e=VO[wk(t)];return t.name!==e?{name:t.name}:t.constructor.name!==e?{name:t.constructor.name}:{}}function a2(t,e){let a=yU(t);const i=Object.getOwnPropertyNames(t);for(let r=0,s=i.length,c;r<s;r++)c=i[r],c!=="name"&&c!=="message"&&(c==="stack"?e&4&&(a=a||{},a[c]=t[c]):(a=a||{},a[c]=t[c]));return a}function i2(t){return Object.isFrozen(t)?3:Object.isSealed(t)?2:Object.isExtensible(t)?0:1}function mU(t){switch(t){case Number.POSITIVE_INFINITY:return YO;case Number.NEGATIVE_INFINITY:return JO}return t!==t?QO:Object.is(t,-0)?ZO:Xe(0,void 0,t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function n2(t){return Xe(1,void 0,xr(t),void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function fU(t){return Xe(3,void 0,""+t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function wU(t){return Xe(4,t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function gU(t,e){const a=e.valueOf();return Xe(5,t,a!==a?"":e.toISOString(),void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function fo(t,e,a){return Xe(36,t,a.toString(),e,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function kU(t,e){return Xe(6,t,void 0,xr(e.source),e.flags,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function zU(t,e){return Xe(17,t,Z_[e],void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function bU(t,e){return Xe(18,t,xr(pU(e)),void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function jU(t,e,a){return Xe(25,t,a,xr(e),void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function vU(t,e,a){return Xe(9,t,void 0,void 0,void 0,void 0,void 0,a,void 0,void 0,i2(e),void 0)}function SU(t,e){return Xe(21,t,void 0,void 0,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0)}const gk=1e6;function xU(t,e,a){if(e.length>gk)throw new _r(e);return Xe(15,t,void 0,e.constructor.name,void 0,void 0,void 0,void 0,a,e.byteOffset,void 0,e.length)}function _U(t,e,a){if(e.length>gk)throw new _r(e);return Xe(16,t,void 0,e.constructor.name,void 0,void 0,void 0,void 0,a,e.byteOffset,void 0,e.length)}function TU(t,e,a){if(e.byteLength>gk)throw new _r(e);return Xe(20,t,void 0,void 0,void 0,void 0,void 0,void 0,a,e.byteOffset,void 0,e.byteLength)}function EU(t,e,a){return Xe(13,t,wk(e),void 0,xr(e.message),a,void 0,void 0,void 0,void 0,void 0,void 0)}function AU(t,e,a){return Xe(14,t,wk(e),void 0,xr(e.message),a,void 0,void 0,void 0,void 0,void 0,void 0)}function PU(t,e){return Xe(7,t,void 0,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0,void 0)}function CU(t,e){return Xe(28,void 0,void 0,void 0,void 0,void 0,void 0,[t,e],void 0,void 0,void 0,void 0)}function RU(t,e){return Xe(30,void 0,void 0,void 0,void 0,void 0,void 0,[t,e],void 0,void 0,void 0,void 0)}function DU(t,e,a){return Xe(31,t,void 0,void 0,void 0,void 0,void 0,a,e,void 0,void 0,void 0)}function OU(t,e){return Xe(32,t,void 0,void 0,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0)}function UU(t,e){return Xe(33,t,void 0,void 0,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0)}function LU(t,e){return Xe(34,t,void 0,void 0,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0)}function KU(t,e,a,i){return Xe(35,t,a,void 0,void 0,void 0,void 0,e,void 0,void 0,void 0,i)}var MU=class{constructor(t,e){this.value=t,this.replacement=e}};const kk=()=>{const t={p:0,s:0,f:0};return t.p=new Promise((e,a)=>{t.s=e,t.f=a}),t},NU=t=>e=>()=>{let a=0;const i={[t](){return i},next(){if(a>e.d)return{done:!0,value:void 0};const r=a++,s=e.v[r];if(r===e.t)throw s;return{done:r===e.d,value:s}}};return i},BU=(t,e)=>a=>()=>{let i=0,r=-1,s=!1;const c=[],d=[],p={finalize(f=0,m=d.length){for(;f<m;f++)d[f].s({done:!0,value:void 0})}};a.on({next(f){const m=d.shift();m&&m.s({done:!1,value:f}),c.push(f)},throw(f){const m=d.shift();m&&m.f(f),p.finalize(),r=c.length,s=!0,c.push(f)},return(f){const m=d.shift();m&&m.s({done:!0,value:f}),p.finalize(),r=c.length,c.push(f)}});const h={[t](){return h},next(){if(r===-1){const g=i++;if(g>=c.length){const z=e();return d.push(z),z.p}return{done:!1,value:c[g]}}if(i>r)return{done:!0,value:void 0};const f=i++,m=c[f];if(f!==r)return{done:!1,value:m};if(s)throw m;return{done:!0,value:m}}};return h},$U=t=>{const e=atob(t),a=e.length,i=new Uint8Array(a);for(let r=0;r<a;r++)i[r]=e.charCodeAt(r);return i.buffer};var o2=class{constructor(t,e,a){this.v=t,this.t=e,this.d=a}};function r2(t){return t instanceof o2}function s2(t,e,a){return new o2(t,e,a)}function IU(t){const e=[];let a=-1,i=-1;const r=t[Mn]();for(;;)try{const s=r.next();if(e.push(s.value),s.done){i=e.length-1;break}}catch(s){a=e.length,i=a,e.push(s);break}return s2(e,a,i)}const WU=NU(Mn);function GU(t){return WU(t)}const VU={},FU={},HU={0:{},1:{},2:{},3:{}
13,4:{},5:{}};function l2(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}function qU(t,e){l2(t,e),e.add(t)}function fc(t,e,a){l2(t,e),e.set(t,a)}function Fs(t,e,a){if(typeof t=="function"?t===e:t.has(e))return arguments.length<3?e:a;throw new TypeError("Private element is not present on this object")}function yt(t,e){return t.get(Fs(t,e))}function ks(t,e,a){return t.set(Fs(t,e),a),a}var Hs=new WeakMap,xn=new WeakMap,_n=new WeakMap,Ep=new WeakMap,Ti=new WeakMap,wc=new WeakSet,c2=class{constructor(){qU(this,wc),fc(this,Hs,[]),fc(this,xn,[]),fc(this,_n,!0),fc(this,Ep,!1),fc(this,Ti,0)}on(t){let e=yt(_n,this),a=0;if(e){for(;a<yt(Ti,this)&&yt(xn,this)[a];a++);if(a===yt(Ti,this)){var i;ks(Ti,this,(i=yt(Ti,this),i++,i))}yt(xn,this)[a]=t}return Fs(wc,this,ZU).call(this,t),()=>{if(yt(_n,this)&&e){for(e=!1,yt(xn,this)[a]=void 0;yt(Ti,this)>0&&!yt(xn,this)[yt(Ti,this)-1];){var r;ks(Ti,this,(r=yt(Ti,this),r--,r))}yt(xn,this).length=yt(Ti,this)}}}next(t){yt(_n,this)&&(yt(Hs,this).push(t),Fs(wc,this,kf).call(this,t,"next"))}throw(t){yt(_n,this)&&(yt(Hs,this).push(t),Fs(wc,this,kf).call(this,t,"throw"),ks(_n,this,!1),ks(Ep,this,!1),yt(xn,this).length=0)}return(t){yt(_n,this)&&(yt(Hs,this).push(t),Fs(wc,this,kf).call(this,t,"return"),ks(_n,this,!1),ks(Ep,this,!0),yt(xn,this).length=0)}};function kf(t,e){for(let i=0;i<yt(Ti,this);i++){var a;(a=yt(xn,this)[i])===null||a===void 0||a[e](t)}}function ZU(t){for(let e=0,a=yt(Hs,this).length;e<a;e++){const i=yt(Hs,this)[e];!yt(_n,this)&&e===a-1?t[yt(Ep,this)?"return":"throw"](i):t.next(i)}}function zk(t){return t instanceof c2}function uu(){return new c2}function YU(t,e){const a=uu(),i=t[Kn]();let r=!1,s=!1;async function c(){try{for(;!r;){const d=await i.next();if(d.done){s=!0,a.return(d.value);break}a.next(d.value)}}catch(d){s=!0,a.throw(d)}}return c().catch(()=>{}),a}const JU=BU(Kn,kk);function QU(t){return JU(t)}async function XU(t){try{return[1,await t]}catch(e){return[0,e]}}function e5(t,e){var a;return{plugins:e.plugins,mode:t,marked:new Set,features:127^(e.disabledFeatures||0),refs:e.refs||new Map,depthLimit:e.depthLimit||1e3,compactArrayBufferViews:(a=e.compactArrayBufferViews)!==null&&a!==void 0?a:!1}}function Ap(t,e){t.marked.add(e)}function t5(t,e){const a=t.refs.size;return t.refs.set(e,a),a}function Ah(t,e){const a=t.refs.get(e);return a!=null?(Ap(t,a),{type:1,value:wU(a)}):{type:0,value:t5(t,e)}}function bk(t,e){const a=Ah(t,e);return a.type===1?a:t2(e)?{type:2,value:bU(a.value,e)}:a}function mr(t,e){const a=bk(t,e);if(a.type!==0)return a.value;if(e in Z_)return zU(a.value,e);throw new _r(e)}function Ph(t,e){const a=Ah(t,HU[e]);return a.type===1?a.value:Xe(26,a.value,e,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}function a5(t){const e=Ah(t,VU);return e.type===1?e.value:Xe(27,e.value,void 0,void 0,void 0,void 0,void 0,void 0,mr(t,Mn),void 0,void 0,void 0)}function i5(t){const e=Ah(t,FU);return e.type===1?e.value:Xe(29,e.value,void 0,void 0,void 0,void 0,void 0,[Ph(t,1),mr(t,Kn)],void 0,void 0,void 0,void 0)}function n5(t,e,a,i){return Xe(a?11:10,t,void 0,void 0,void 0,i,void 0,void 0,void 0,void 0,i2(e),void 0)}function o5(t,e,a,i){return Xe(8,e,void 0,void 0,void 0,void 0,{k:a,v:i},void 0,Ph(t,0),void 0,void 0,void 0)}function jk(t,e){if(!t.compactArrayBufferViews)return e;const a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice().buffer,i=e.constructor;return new i(a)}function r5(t){if(typeof Buffer<"u")return Buffer.from(t).toString("base64");const e=new Uint8Array(t);if(typeof e.toBase64=="function")return e.toBase64();let a="";for(let i=0,r=e.length;i<r;i++)a+=String.fromCharCode(e[i]);return btoa(a)}function s5(t,e,a){return Xe(19,e,r5(a),void 0,void 0,void 0,void 0,void 0,Ph(t,5),void 0,void 0,void 0)}function l5(t,e){return{base:e5(t,e),child:void 0}}var c5=class{constructor(t,e){this._p=t,this.depth=e}parse(t){return qt(this._p,this.depth,t)}};async function u5(t,e,a){const i=[];for(let r=0,s=a.length;r<s;r++)r in a?i[r]=await qt(t,e,a[r]):i[r]=0;return i}async function d5(t,e,a,i){return vU(a,i,await u5(t,e,i))}async function vk(t,e,a){const i=Object.entries(a),r=[],s=[];for(let c=0,d=i.length;c<d;c++)r.push(xr(i[c][0])),s.push(await qt(t,e,i[c][1]));return Mn in a&&(r.push(mr(t.base,Mn)),s.push(CU(a5(t.base),await qt(t,e,IU(a))))),Kn in a&&(r.push(mr(t.base,Kn)),s.push(RU(i5(t.base),await qt(t,e,YU(a))))),tl in a&&(r.push(mr(t.base,tl)),s.push(n2(a[tl]))),el in a&&(r.push(mr(t.base,el)),s.push(a[el]?Y_:J_)),{k:r,v:s}}async function zf(t,e,a,i,r){return n5(a,i,r,await vk(t,e,i))}async function p5(t,e,a,i){return SU(a,await qt(t,e,i.valueOf()))}async function h5(t,e,a,i){return i=jk(t.base,i),xU(a,i,await qt(t,e,i.buffer))}async function y5(t,e,a,i){return i=jk(t.base,i),_U(a,i,await qt(t,e,i.buffer))}async function m5(t,e,a,i){return i=jk(t.base,i),TU(a,i,await qt(t,e,i.buffer))}async function Gv(t,e,a,i){const r=a2(i,t.base.features);return EU(a,i,r?await vk(t,e,r):void 0)}async function f5(t,e,a,i){const r=a2(i,t.base.features);return AU(a,i,r?await vk(t,e,r):void 0)}async function w5(t,e,a,i){const r=[],s=[];for(const[c,d]of i.entries())r.push(await qt(t,e,c)),s.push(await qt(t,e,d));return o5(t.base,a,r,s)}async function g5(t,e,a,i){const r=[];for(const s of i.keys())r.push(await qt(t,e,s));return PU(a,r)}async function u2(t,e,a,i){const r=t.base.plugins;if(r)for(let s=0,c=r.length;s<c;s++){const d=r[s];if(d.parse.async&&d.test(i))return jU(a,d.tag,await d.parse.async(i,new c5(t,e),{id:a}))}}async function k5(t,e,a,i){const[r,s]=await XU(i);return Xe(12,a,r,void 0,void 0,void 0,void 0,void 0,await qt(t,e,s),void 0,void 0,void 0)}function z5(t,e,a,i,r){const s=[],c=a.on({next:d=>{Ap(this.base,e),qt(this,t,d).then(p=>{s.push(OU(e,p))},p=>{r(p),c()})},throw:d=>{Ap(this.base,e),qt(this,t,d).then(p=>{s.push(UU(e,p)),i(s),c()},p=>{r(p),c()})},return:d=>{Ap(this.base,e),qt(this,t,d).then(p=>{s.push(LU(e,p)),i(s),c()},p=>{r(p),c()})}})}async function b5(t,e,a,i){return DU(a,Ph(t.base,4),await new Promise(z5.bind(t,e,a,i)))}async function j5(t,e,a,i){const r=[];for(let s=0,c=i.v.length;s<c;s++)r[s]=await qt(t,e,i.v[s]);return KU(a,r,i.t,i.d)}
13async function v5(t,e,a,i){if(Array.isArray(i))return d5(t,e,a,i);if(zk(i))return b5(t,e,a,i);if(r2(i))return j5(t,e,a,i);let r=i.constructor;if(r!==void 0&&typeof r!="function"){const d=Object.getPrototypeOf(i);r=d===null?void 0:d.constructor}if(r===MU)return qt(t,e,i.replacement);const s=await u2(t,e,a,i);if(s)return s;switch(r){case Object:return zf(t,e,a,i,!1);case void 0:return zf(t,e,a,i,!0);case Date:return gU(a,i);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Gv(t,e,a,i);case Number:case Boolean:case String:case BigInt:return p5(t,e,a,i);case ArrayBuffer:return s5(t.base,a,i);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return h5(t,e,a,i);case DataView:return m5(t,e,a,i);case Map:return w5(t,e,a,i);case Set:return g5(t,e,a,i)}if(r===Promise||i instanceof Promise)return k5(t,e,a,i);const c=t.base.features;if(c&32&&r===RegExp)return kU(a,i);if(c&16)switch(r){case BigInt64Array:case BigUint64Array:return y5(t,e,a,i)}if(c&1&&typeof AggregateError<"u"&&(r===AggregateError||i instanceof AggregateError))return f5(t,e,a,i);if(c&64&&typeof Temporal<"u")switch(r){case Temporal.Instant:return fo(a,0,i);case Temporal.Duration:return fo(a,1,i);case Temporal.PlainDate:return fo(a,2,i);case Temporal.PlainDateTime:return fo(a,3,i);case Temporal.PlainMonthDay:return fo(a,4,i);case Temporal.PlainTime:return fo(a,5,i);case Temporal.PlainYearMonth:return fo(a,6,i);case Temporal.ZonedDateTime:return fo(a,7,i)}if(i instanceof Error)return Gv(t,e,a,i);if(Mn in i||Kn in i)return zf(t,e,a,i,!!r);throw new _r(i)}async function S5(t,e,a){const i=bk(t.base,a);if(i.type!==0)return i.value;const r=await u2(t,e,i.value,a);if(r)return r;throw new _r(a)}async function qt(t,e,a){if(e>=t.base.depthLimit)throw new X_(t.base.depthLimit);switch(typeof a){case"boolean":return a?Y_:J_;case"undefined":return HO;case"string":return n2(a);case"number":return mU(a);case"bigint":return fU(a);case"object":if(a){const i=bk(t.base,a);return i.type===0?await v5(t,e+1,i.value,a):i.value}return qO;case"symbol":return mr(t.base,a);case"function":return S5(t,e,a);default:throw new _r(a)}}async function x5(t,e){try{return await qt(t,0,e)}catch(a){throw a instanceof Wv?a:new Wv(a)}}function d2(t,e){for(let a=0,i=e.length;a<i;a++){const r=e[a];t.has(r)||(t.add(r),r.extends&&d2(t,r.extends))}}function p2(t){if(t){const e=new Set;return d2(e,t),[...e]}}function _5(t){switch(t){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new uU(t)}}function T5(t){switch(t){case"constructor":case"__proto__":case"prototype":case"__defineGetter__":case"__defineSetter__":case"__lookupGetter__":case"__lookupSetter__":return!1;default:return!0}}function E5(t){switch(t){case Kn:case el:case tl:case Mn:return!0;default:return!1}}const A5=1e6,P5=512,C5=1e4,R5=2e4;function h2(t,e){switch(e){case 3:return Object.freeze(t);case 1:return Object.preventExtensions(t);case 2:return Object.seal(t);default:return t}}const D5=1e3;function O5(t,e){var a,i;const r=(a=e.maxBase64Length)!==null&&a!==void 0?a:A5;if(!Number.isSafeInteger(r)||r<0)throw new RangeError("maxBase64Length must be a non-negative safe integer");const s=e.refs||new Map;return"types"in s||Object.assign(s,{types:new Map}),{mode:t,plugins:e.plugins,refs:s,features:(i=e.features)!==null&&i!==void 0?i:127^(e.disabledFeatures||0),depthLimit:e.depthLimit||D5,maxBase64Length:r}}function U5(t){return{mode:2,base:O5(2,t),child:void 0}}var L5=class{constructor(t,e){this._p=t,this.depth=e}deserialize(t){return kt(this._p,this.depth,t)}};function y2(t,e){if(e<0||!Number.isFinite(e)||!Number.isInteger(e))throw new ta({t:4,i:e});if(t.refs.has(e))throw new Error("Conflicted ref id: "+e)}function m2(t){return!!t&&(typeof t=="object"||typeof t=="function")&&"then"in t&&typeof t.then=="function"}function K5(t,e,a){return y2(t.base,e),t.state.marked.has(e)&&t.base.refs.set(e,a),a}function M5(t,e,a){return y2(t.base,e),t.base.refs.set(e,a),a}function Vt(t,e,a){return t.mode===1?K5(t,e,a):M5(t,e,a)}function Kw(t,e,a){if(Object.hasOwn(e,a))return e[a];throw new ta(t)}function N5(t,e){return Vt(t,e.i,hU(Mo(e.s)))}function Ro(t,e){if(!Array.isArray(e))throw new ta(t)}function B5(t,e,a){const i=a.a;Ro(a,i);const r=i.length,s=Vt(t,a.i,new Array(r));for(let c=0,d;c<r;c++)d=i[c],d&&(s[c]=kt(t,e,d));return h2(s,a.o),s}function Vv(t,e,a){T5(e)?t[e]=a:Object.defineProperty(t,e,{value:a,configurable:!0,enumerable:!0,writable:!0})}function $5(t,e,a,i,r){if(typeof i=="string")Vv(a,Mo(i),kt(t,e,r));else{const s=kt(t,e,i);switch(typeof s){case"string":Vv(a,s,kt(t,e,r));break;case"symbol":E5(s)&&(a[s]=kt(t,e,r));break;default:throw new ta(i)}}}function f2(t,e,a){t.base.refs.types.set(e,a)}
13function Ch(t,e,a,i){if(t.base.refs.types.get(a)!==i)throw new ta(e)}function w2(t,e,a,i){const r=a.k;if(Ro(a,r),Ro(a,a.v),r.length>0)for(let s=0,c=a.v,d=r.length;s<d;s++)$5(t,e,i,r[s],c[s]);return i}function I5(t,e,a){const i=Vt(t,a.i,a.t===10?{}:Object.create(null));return w2(t,e,a.p,i),h2(i,a.o),i}function W5(t,e){return Vt(t,e.i,new Date(e.s))}function G5(t,e){if(!(t.base.features&64))throw new fk(e);let a;switch(e.c){case 0:a=Temporal.Instant.from(e.s);break;case 1:a=Temporal.Duration.from(e.s);break;case 2:a=Temporal.PlainDate.from(e.s);break;case 3:a=Temporal.PlainDateTime.from(e.s);break;case 4:a=Temporal.PlainMonthDay.from(e.s);break;case 5:a=Temporal.PlainTime.from(e.s);break;case 6:a=Temporal.PlainYearMonth.from(e.s);break;case 7:a=Temporal.ZonedDateTime.from(e.s);break;default:throw new ta(e)}return Vt(t,e.i,a)}function V5(t,e){if(t.base.features&32){const a=Mo(e.c);if(a.length>R5)throw new ta(e);return Vt(t,e.i,new RegExp(a,e.m))}throw new fk(e)}function F5(t,e,a){const i=Vt(t,a.i,new Set);Ro(a,a.a);for(let r=0,s=a.a,c=s.length;r<c;r++)i.add(kt(t,e,s[r]));return i}function H5(t,e,a){const i=Vt(t,a.i,new Map);Ro(a,a.e.k),Ro(a,a.e.v);for(let r=0,s=a.e.k,c=a.e.v,d=s.length;r<d;r++)i.set(kt(t,e,s[r]),kt(t,e,c[r]));return i}function q5(t,e){if(typeof e.s!="string")throw new ta(e);if(e.s.length>t.base.maxBase64Length)throw new RangeError("ArrayBuffer exceeds maxBase64Length ("+t.base.maxBase64Length+")");const a=Mo(e.s);let i;if(a.length<P5||typeof Buffer>"u")i=$U(a);else{const r=atob(a);i=new ArrayBuffer(r.length),Buffer.from(i).write(r,"latin1")}return Vt(t,e.i,i)}function Z5(t,e,a){var i;const r=_5(a.c),s=kt(t,e,a.f);if(!(s instanceof ArrayBuffer))throw new ta(a);const c=(i=a.b)!==null&&i!==void 0?i:0;if(c<0||c>s.byteLength)throw new ta(a);return Vt(t,a.i,new r(s,c,a.l))}function Y5(t,e,a){var i;const r=kt(t,e,a.f);if(!(r instanceof ArrayBuffer))throw new ta(a);const s=(i=a.b)!==null&&i!==void 0?i:0;if(s<0||s>r.byteLength)throw new ta(a);return Vt(t,a.i,new DataView(r,s,a.l))}
13function g2(t,e,a,i){if(a.p){const r=w2(t,e,a.p,{});Object.defineProperties(i,Object.getOwnPropertyDescriptors(r))}return i}function J5(t,e,a){return g2(t,e,a,Vt(t,a.i,new AggregateError([],Mo(a.m))))}function Q5(t,e,a){const i=Kw(a,FO,a.s);return g2(t,e,a,Vt(t,a.i,new i(Mo(a.m))))}function X5(t,e,a){const i=kk(),r=Vt(t,a.i,i.p),s=kt(t,e,a.f);if(m2(s))throw new ta(a.f);return a.s?i.s(s):i.f(s),r}function eL(t,e,a){return Vt(t,a.i,Object(kt(t,e,a.f)))}function tL(t,e,a){const i=t.base.plugins;if(i){const r=Mo(a.c);for(let s=0,c=i.length;s<c;s++){const d=i[s];if(d.tag===r)return Vt(t,a.i,d.deserialize(a.s,new L5(t,e),{id:a.i}))}}throw new sU(a.c)}function aL(t,e){const a=Vt(t,e.i,Vt(t,e.s,kk()).p);return f2(t,e.s,22),a}function iL(t,e,a){const i=t.base.refs.get(a.i);if(i){Ch(t,a,a.i,22);const r=kt(t,e,a.a[1]);if(m2(r))throw new ta(a.a[1]);a.t===23?i.s(r):i.f(r);return}throw new Eh("Promise")}function nL(t,e,a){kt(t,e,a.a[0]);const i=kt(t,e,a.a[1]);if(!r2(i))throw new ta(a.a[1]);return GU(i)}function oL(t,e,a){kt(t,e,a.a[0]);const i=kt(t,e,a.a[1]);if(!zk(i))throw new ta(a.a[1]);return QU(i)}function rL(t,e,a){const i=Vt(t,a.i,uu());f2(t,a.i,31);const r=a.a;Ro(a,r);const s=r.length;if(s)for(let c=0;c<s;c++)kt(t,e,r[c]);return i}function sL(t,e,a){const i=t.base.refs.get(a.i);if(i){Ch(t,a,a.i,31),i.next(kt(t,e,a.f));return}throw new Eh("Stream")}function lL(t,e,a){const i=t.base.refs.get(a.i);if(i){Ch(t,a,a.i,31),i.throw(kt(t,e,a.f));return}throw new Eh("Stream")}function cL(t,e,a){const i=t.base.refs.get(a.i);if(i){Ch(t,a,a.i,31),i.return(kt(t,e,a.f));return}throw new Eh("Stream")}function uL(t,e,a){kt(t,e,a.f)}function dL(t,e,a){kt(t,e,a.a[1])}function Fv(t,e){return Number.isInteger(t)&&t>=-1&&t<e}function pL(t,e,a){Ro(a,a.a);const i=a.a.length;if(!(Fv(a.s,i)&&Fv(a.l,i)))throw new ta(a);const r=Vt(t,a.i,s2([],a.s,a.l));for(let s=0;s<i;s++)r.v[s]=kt(t,e,a.a[s]);return r}function kt(t,e,a){if(e>t.base.depthLimit)throw new X_(t.base.depthLimit);switch(e+=1,a.t){case 2:return Kw(a,GO,a.s);case 0:return Number(a.s);case 1:return Mo(String(a.s));case 3:if(String(a.s).length>C5)throw new ta(a);return BigInt(a.s);case 4:return t.base.refs.get(a.i);case 18:return N5(t,a);case 9:return B5(t,e,a);case 10:case 11:return I5(t,e,a);case 5:return W5(t,a);case 6:return V5(t,a);case 7:return F5(t,e,a);case 8:return H5(t,e,a);case 19:return q5(t,a);case 16:case 15:return Z5(t,e,a);case 20:return Y5(t,e,a);case 14:return J5(t,e,a);case 13:return Q5(t,e,a);case 12:return X5(t,e,a);case 17:return Kw(a,WO,a.s);case 21:return eL(t,e,a);case 25:return tL(t,e,a);case 22:return aL(t,a);case 23:case 24:return iL(t,e,a);case 28:return nL(t,e,a);case 30:return oL(t,e,a);case 31:return rL(t,e,a);case 32:return sL(t,e,a);case 33:return lL(t,e,a);case 34:return cL(t,e,a);case 27:return uL(t,e,a);case 29:return dL(t,e,a);case 35:return pL(t,e,a);case 36:return G5(t,a);default:throw new fk(a)}}function hL(t,e){try{return kt(t,0,e)}catch(a){throw new rU(a)}}function yL(t,e){const a=p2(e.plugins);return hL(U5({maxBase64Length:e.maxBase64Length,plugins:a,refs:e.refs,features:e.features,disabledFeatures:e.disabledFeatures,depthLimit:e.depthLimit}),t)}async function mL(t,e={}){const a=p2(e.plugins),i=l5(1,{compactArrayBufferViews:e.compactArrayBufferViews,plugins:a,disabledFeatures:e.disabledFeatures});return{t:await x5(i,t),f:i.base.features,m:Array.from(i.base.marked)}}function fL(t){return{tag:"$TSR/t/"+t.key,test:t.test,parse:{sync(e,a){return{v:a.parse(t.toSerializable(e))}},async async(e,a){return{v:await a.parse(t.toSerializable(e))}},stream(e,a){return{v:a.parse(t.toSerializable(e))}}},serialize:void 0,deserialize(e,a){return t.fromSerializable(a.deserialize(e.v))}}}function k2(t){if(Array.isArray(t))return t.flatMap(f=>k2(f));if(typeof t!="string")return[];const e=[];let a=0,i,r,s,c,d;const p=()=>{for(;a<t.length&&/\s/.test(t.charAt(a));)a+=1;return a<t.length},h=()=>(r=t.charAt(a),r!=="="&&r!==";"&&r!==",");for(;a<t.length;){for(i=a,d=!1;p();)if(r=t.charAt(a),r===","){for(s=a,a+=1,p(),c=a;a<t.length&&h();)a+=1;a<t.length&&t.charAt(a)==="="?(d=!0,a=c,e.push(t.slice(i,s)),i=a):a=s+1}else a+=1;(!d||a>=t.length)&&e.push(t.slice(i))}return e}function wL(t){return t instanceof Headers?t:Array.isArray(t)?new Headers(t):typeof t=="object"?new Headers(t):null}function gL(...t){return t.reduce((e,a)=>{const i=wL(a);if(!i)return e;
13for(const[r,s]of i.entries())r==="set-cookie"?k2(s).forEach(c=>e.append("set-cookie",c)):e.set(r,s);return e},new Headers)}const kL={tag:"$TSR/Error",test(t){return t instanceof Error},parse:{sync(t,e){return{message:e.parse(t.message)}},async async(t,e){return{message:await e.parse(t.message)}},stream(t,e){return{message:e.parse(t.message)}}},serialize(t,e){return"new Error("+e.serialize(t.message)+")"},deserialize(t,e){return new Error(e.deserialize(t.message))}};var zL=class{constructor(t,e){this.stream=t,this.hint=e?.hint??"binary"}};function z2(t){const e=[];for(let a=0;a<t.length;a+=32768)e.push(String.fromCharCode.apply(null,t.subarray(a,a+32768)));return btoa(e.join(""))}function b2(t){const e=atob(t),a=new Uint8Array(e.length);for(let i=0;i<e.length;i++)a[i]=e.charCodeAt(i);return a}const bL=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});function jL(t){try{return"t"+bL.decode(t)}catch{return"b"+z2(t)}}const vL=new TextEncoder;function SL(t){const e=t.slice(1);return t[0]==="t"?vL.encode(e):b2(e)}function xL(t,e,a){a?.throwIfAborted();const i=uu(),r=t.getReader();let s=!0;const c=()=>{s=!1,a?.removeEventListener("abort",p),r.releaseLock()},d=h=>s?(r.cancel(h).catch(()=>{}),c(),!0):!1,p=()=>{d(a.reason)&&i.throw(a.reason)};return a?.addEventListener("abort",p),(async()=>{try{for(;s;){const{done:h,value:f}=await r.read();if(!s)return;if(h){c(),i.return(void 0);return}i.next(e(f))}}catch(h){d(h)&&i.throw(h)}})(),[i,d]}function _L(t,e){let a,i=!1;return new ReadableStream({start(r){const s=t.on({next(c){if(!i)try{r.enqueue(e(c))}catch(d){i=!0;const p=a;a=void 0,p?.(),r.error(d)}},throw(c){i||(i=!0,a=void 0,r.error(c))},return(){i||(i=!0,a=void 0,r.close())}});i?s():a=s},cancel(){const r=a;a=void 0,r?.()}})}function j2(t){return{tag:"tss/RawStream",test:e=>e instanceof zL,parse:{async:async(e,a)=>{const i=await a.parse(e.hint==="text"),[r]=xL(e.stream,e.hint==="text"?jL:z2,t);return{text:i,stream:await a.parse(r)}}},serialize:void 0,deserialize:void 0}}const TL=j2(),EL={tag:"tss/RawStream",test:()=>!1,parse:{},serialize:void 0,deserialize(t,e){return _L(e.deserialize(t.stream),e.deserialize(t.text)?SL:b2)}},bo={},v2=t=>new ReadableStream({start(e){t.on({next(a){try{e.enqueue(a)}catch{}},throw(a){e.error(a)},return(){try{e.close()}catch{}}})}}),AL={tag:"seroval-plugins/web/ReadableStreamFactory",test(t){return t===bo},parse:{sync(){return bo},async async(){return await Promise.resolve(bo)},stream(){return bo}},serialize(){return v2.toString()},deserialize(){return bo}};async function PL(t,e){try{for(;;){const a=await e.read();if(a.done){t.return(a.value),e.releaseLock();break}t.next(a.value)}}catch(a){e.releaseLock(),t.throw(a)}}function CL(t){t.cancel().catch(()=>{}),t.releaseLock()}function Hv(t){const e=uu(),a=t.getReader(),i=CL.bind(null,a);return PL(e,a).catch(i),[e,i]}const RL={tag:"seroval/plugins/web/ReadableStream",extends:[AL],test(t){return typeof ReadableStream>"u"?!1:t instanceof ReadableStream},parse:{sync(t,e){return{factory:e.parse(bo),stream:e.parse(uu())}},async async(t,e){return{factory:await e.parse(bo),stream:await e.parse(Hv(t)[0])}},stream(t,e){const[a,i]=Hv(t);return e.addCleanup(i),{factory:e.parse(bo),stream:e.parse(a)}}},serialize(t,e){return"("+e.serialize(t.factory)+")("+e.serialize(t.stream)+")"},deserialize(t,e){const a=e.deserialize(t.stream);if(!a||typeof a!="object"||!zk(a))throw new Error("Expected a stream source.");return v2(a)}};function S2(t){return[kL,t?j2(t):TL,RL]}const DL=S2();[...DL];function OL(t){return{tag:"tss/RawStream",test:()=>!1,parse:{},serialize:void 0,deserialize(e,a){return t(a.deserialize(e.streamId))}}}function UL(t){return[...ok()?.serializationAdapters?.map(fL)??[],...t]}function x2(t){return UL(S2(t))}var qv=new TextDecoder,Gi=new Uint8Array,LL=new ByteLengthQueuingStrategy({highWaterMark:0});function KL(t){const e=t.getReader(),a=new Map;let i=0,r,s;const c=()=>{r?.(),r=void 0},d=(m,g)=>{const z=m[1];m[1]=!1,z&&(g===1?z.close():z.error(g[0]))},p=new ReadableStream({start(m){s=m},pull:c,cancel(m){const g=[m===void 0?new Error("Framed response cancelled"):m];i=g,c(),e.cancel(m).catch(()=>{});for(const z of a.values())d(z,g)}});function h(m){const g=a.get(m);
13if(g)return g;if(a.size>=1024)throw new Error("Too many raw streams");let z;const j=[new ReadableStream({start(v){z=v},cancel(){j[1]!==!1&&(j[1]=null)}},LL),z];return a.set(m,j),i!==0&&d(j,i),j}function f(m){if(m===0||m>>>0!==m)throw new RangeError("Invalid raw stream ID");return h(m)[0]}return(async()=>{let m=Gi,g=0;async function z(){for(;g===m.byteLength;){m=Gi,g=0;const v=await e.read();if(i!==0||v.done)return!1;m=v.value}return!0}async function j(v,_){if(v===0)return Gi;if(!await z()){if(_)return;throw new Error("Incomplete frame")}if(m.byteLength-g>=v){const T=m.subarray(g,g+v);return g+=v,g===m.byteLength&&(m=Gi,g=0),T}const S=new Uint8Array(v);let E=0;for(;E<v;){if(!await z())throw new Error("Incomplete frame");const T=Math.min(v-E,m.byteLength-g);S.set(m.subarray(g,g+T),E),g+=T,E+=T}return g===m.byteLength&&(m=Gi,g=0),S}try{for(;i===0;){let v=await j(9,!0);if(i!==0)return;if(!v){for(const H of a.values())if(H[1])throw new Error("Incomplete raw stream");i=1,s.close();return}const _=v[0],S=(v[1]<<24|v[2]<<16|v[3]<<8|v[4])>>>0,E=(v[5]<<24|v[6]<<16|v[7]<<8|v[8])>>>0;if(v=Gi,_>3||_===0!=(S===0)||E>16777216||_===2&&E!==0)throw new Error("Invalid frame");const T=_===0?void 0:h(S);if(T?.[1]===!1)throw new Error("Raw stream already ended");let O=await j(E);if(i!==0)return;if(!T){const H=qv.decode(O);for(O=Gi,s.enqueue(H);i===0&&s.desiredSize<=0;)await new Promise(U=>{r=U});continue}if(_===1){const H=T[1];if(H){if(-H.desiredSize>134217728){H.error(new Error(`Raw stream ${S} has too many unread bytes`)),T[1]=null,O=Gi;continue}const U=O.byteLength*4<O.buffer.byteLength?O.slice():O;O=Gi,H.enqueue(U)}}else d(T,_===2?1:[new Error(qv.decode(O))])}}catch(v){if(i===0){const _=[v];i=_,e.cancel(v).catch(()=>{}),s.error(v);for(const S of a.values())d(S,_)}}finally{m=Gi,e.releaseLock()}})(),[p,f]}const Zi=Symbol.for("TSR_DEFERRED_PROMISE");function ML(t,e){const a=t;return a[Zi]||(a[Zi]={status:"pending"},a.then(i=>{a[Zi].status="success",a[Zi].data=i}).catch(i=>{a[Zi].status="error",a[Zi].error={data:_O(i),__isServerError:!0}})),a}const NL="Error preloading route! âï¸";function _2(t,e){if(t)return typeof t=="string"?t:t[e]}function BL(t){return t?.scriptFormat??"module"}function $L(t,e,a){const i=IL(e),r=_2(a,"script")??i.crossOrigin;return{...BL(t)==="iife"?{rel:"preload",as:"script"}:{rel:"modulepreload"},href:i.href,...r?{crossOrigin:r}:{}}}function IL(t){return typeof t=="string"?{href:t,crossOrigin:void 0}:t}function Nd(t,e){if(e.length===0)return;if(e.length===1){t.push(e[0]);return}const a=new Set;for(const i of e){const r=JSON.stringify(i);a.has(r)||(a.add(r),t.push(i))}}function WL(t){return typeof t=="string"?{href:t,crossOrigin:void 0}:t}function GL(t,e,a,i){const r=D_(t),s=[],c=[];for(const d of r)for(const p of Array.isArray(d.scripts)?d.scripts:[]){if(!p)continue;const{children:h,...f}=p;s.push({tag:"script",attrs:{...f,...i,nonce:a},children:h})}if(e)for(const d of r)for(const p of e.routes[d.routeId]?.scripts??[])c.push({tag:"script",attrs:{...p.attrs,nonce:a},children:p.children});return[s,c]}function VL([t,e],a){return[...t,...e]}var T2=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(t){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;const a=this.options,i=!a?.path&&!a?.id;this.parentRoute=this.options.getParentRoute?.(),i?this._path=Xs:this.parentRoute||Bc();let r=i?Xs:a?.path;r&&r!=="/"&&(r=b_(r));const s=a?.id||r,c=i?Xs:Qs((this.parentRoute.id==="__root__"?"":this.parentRoute.id)+"/"+(s??""));r==="__root__"&&(r="/");const d=c==="__root__"?"/":r===void 0?this.parentRoute.fullPath:Qs(this.parentRoute.fullPath+"/"+r);this._path=r,this._id=c,this._fullPath=d,this._to=Qi(d)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e=="object"&&e!==null&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>Kt({from:this.fullPath,...e}),this.options=t||{},this.isRoot=!t?.getParentRoute,t?.id&&t?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}},FL=class extends T2{constructor(t){super(t)}};var Vc;function Mw(t,e,a){try{return yL(t,e)}catch(i){throw A2(a),i}}async function E2(t){t.length>0&&(await Promise.allSettled(t),t.length=0)}function A2(t){for(const e of t)e.catch(()=>{});t.length=0}var HL=Object.prototype.hasOwnProperty;function P2(t){for(const e in t)if(HL.call(t,e))return!0;return!1}async function qL(t,e,a){Vc||(Vc=x2());const i=e[0],r=i.fetch??a,s=i.data instanceof FormData,c=new Headers(i.headers);if(c.set("x-tsr-serverFn","true"),s||c.set("accept",`${BD}, application/x-ndjson, application/json`),i.method==="GET"){if(s)throw new Error("FormData is not supported with GET requests");const p=await C2(i);if(p!==void 0){const h=E_({payload:p});t.includes("?")?t+=`&${h}`:t+=`?${h}`}}let d;
13return i.method==="POST"&&(d=await ZL(i),typeof d=="string"&&c.set("content-type","application/json")),YL(()=>r(t,{method:i.method,headers:c,signal:i.signal,body:d}))}async function C2(t){let e;return t.data!==void 0&&(e={data:t.data}),t.context&&P2(t.context)&&((e??={}).context=t.context),e?R2(e,t.signal):void 0}async function R2(t,e){e?.throwIfAborted();let a;try{a=await mL(t,{plugins:e?x2(e):Vc})}finally{e?.throwIfAborted()}return JSON.stringify(a)}async function ZL(t){if(t.data instanceof FormData){let e;return t.context&&P2(t.context)&&(e=await R2(t.context,t.signal)),e!==void 0&&t.data.set(ND,e),t.data}return C2(t)}async function YL(t){let e;try{e=await t()}catch(i){if(i instanceof Response)e=i;else throw i}if(e.headers.get("x-tss-raw")==="true")return e;const a=e.headers.get("content-type");if(a||Bc(),e.headers.get("x-tss-serialized")){let i;if(a.includes("application/x-tss-framed")){const r=/;\s*v=(\d+)/.exec(a)?.[1];if(r&&+r!=1)throw new Error(`Unsupported framed protocol version ${r}`);if(!e.body)throw new Error("No response body for framed response");const[s,c]=KL(e.body);i=await JL(s,[OL(c),...Vc])}else if(a.includes("application/json")){const r=await e.json(),s=[];i=Mw(r,{plugins:Vc},s),await E2(s)}if(i||Bc(),i instanceof Error)throw i;return i}if(a.includes("application/json")){const i=await e.json(),r=f_(i);if(r)throw r;if(vr(i))throw i;return i}if(!e.ok)throw new Error(await e.text());return e}async function JL(t,e){const a=t.getReader(),i={refs:new Map,plugins:e},r=d=>{a.cancel(d).catch(()=>{})};let s;const c=[];try{const d=await a.read();if(d.done)throw new Error("Stream ended before first object");s=Mw(JSON.parse(d.value),i,c)}catch(d){throw r(d),a.releaseLock(),d}return(async()=>{const d=[];try{for(;;){const p=await a.read();if(p.done)return;Mw(JSON.parse(p.value),i,d),A2(d)}}catch(p){r(p),console.error("Stream processing error:",p)}finally{a.releaseLock()}})(),await E2(c),s}function Sk(t){const e="/_serverFn/"+t;return Object.assign((...r)=>{const s=ok()?.serverFns?.fetch;return qL(e,r,s??fetch)},{url:e,serverFnMeta:{id:t},[Cw]:!0})}var QL={key:"$TSS/serverfn",test:t=>typeof t!="function"||!(Cw in t)?!1:!!t[Cw],toSerializable:({serverFnMeta:t})=>({functionId:t.id}),fromSerializable:({functionId:t})=>Sk(t)},qp=N.use,D2=N.useLayoutEffect;function XL({promise:t}){if(qp)return qp(t);const e=ML(t);if(e[Zi].status==="pending")throw e;if(e[Zi].status==="error")throw e[Zi].error;return e[Zi].data}function e3(t){const e=k.jsx(t3,{...t});return t.fallback?k.jsx(N.Suspense,{fallback:t.fallback,children:e}):e}function t3(t){const e=XL(t);return t.children(e)}var xk=class extends N.Component{constructor(...t){super(...t),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(t,e){const a=t.getResetKey();return e.error&&e.resetKey!==a?{resetKey:a,error:0}:{resetKey:a}}static getDerivedStateFromError(t){return{error:[t]}}componentDidCatch(t,e){this.props.onCatch?.(t,e)}render(){const t=this.state.error;return t?N.createElement(this.props.errorComponent??a3,{error:t[0],reset:this.reset}):this.props.children}};function a3({error:t}){const[e,a]=N.useState(!1);return k.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[k.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[k.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),k.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>a(i=>!i),children:e?"Hide Error":"Show Error"})]}),k.jsx("div",{style:{height:".25rem"}}),e?k.jsx("div",{children:k.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:t?.message?k.jsx("code",{children:t.message}):null})}):null]})}var Zv=()=>!0,i3=()=>!1;function n3({children:t,fallback:e=null}){return k.jsx(ue.Fragment,{children:_k()?t:e})}function _k(t=!0){return ue.useSyncExternalStore(o3,Zv,t?i3:Zv)}function o3(){return()=>{}}var O2=N.createContext(null);function Zt(t){return N.useContext(O2)}var Tk=N.createContext(void 0),r3=N.createContext(void 0);function s3({update:t,notify:e,unwatched:a}){return{link:i,unlink:r,propagate:s,checkDirty:c,shallowPropagate:d};function i(h,f,m){const g=f.depsTail;if(g!==void 0&&g.dep===h)return;const z=g!==void 0?g.nextDep:f.deps;if(z!==void 0&&z.dep===h){z.version=m,f.depsTail=z;return}const j=h.subsTail;if(j!==void 0&&j.version===m&&j.sub===f)return;const v=f.depsTail=h.subsTail={version:m,dep:h,sub:f,prevDep:g,nextDep:z,prevSub:j,nextSub:void 0};z!==void 0&&(z.prevDep=v),g!==void 0?g.nextDep=v:f.deps=v,j!==void 0?j.nextSub=v:h.subs=v}function r(h,f=h.sub){const m=h.dep,g=h.prevDep,z=h.nextDep,j=h.nextSub,v=h.prevSub;return z!==void 0?z.prevDep=g:f.depsTail=g,g!==void 0?g.nextDep=z:f.deps=z,j!==void 0?j.prevSub=v:m.subsTail=v,v!==void 0?v.nextSub=j:(m.subs=j)===void 0&&a(m),z}function s(h){let f=h.nextSub,m;e:do{const g=h.sub;let z=g.flags;if(z&60?z&12?z&4?!(z&48)&&p(h,g)?(g.flags=z|40,z&=1):z=0:g.flags=z&-9|32:z=0:g.flags=z|32,z&2&&e(g),z&1){const j=g.subs;if(j!==void 0){const v=(h=j).nextSub;v!==void 0&&(m={value:f,prev:m},f=v);continue}}if((h=f)!==void 0){f=h.nextSub;continue}for(;m!==void 0;)if(h=m.value,m=m.prev,h!==void 0){f=h.nextSub;continue e}break}while(!0)}function c(h,f){let m,g=0,z=!1;e:do{const j=h.dep,v=j.flags;if(f.flags&16)z=!0;else if((v&17)===17){if(t(j)){const _=j.subs;_.nextSub!==void 0&&d(_),z=!0}}else if((v&33)===33){(h.nextSub!==void 0||h.prevSub!==void 0)&&(m={value:h,prev:m}),h=j.deps,f=j,++g;continue}if(!z){const _=h.nextDep;if(_!==void 0){h=_;continue}}for(;g--;){const _=f.subs,S=_.nextSub!==void 0;if(S?(h=m.value,m=m.prev):h=_,z){if(t(f)){S&&d(_),f=h.sub;continue}z=!1}else f.flags&=-33;f=h.sub;const E=h.nextDep;if(E!==void 0){h=E;continue e}}return z}while(!0)}function d(h){do{const f=h.sub,m=f.flags;(m&48)===32&&(f.flags=m|16,(m&6)===2&&e(f))}while((h=h.nextSub)!==void 0)}function p(h,f){let m=f.depsTail;for(;m!==void 0;){if(m===h)return!0;m=m.prevDep}return!1}}function l3(t,e,a){const i=typeof t=="object",r=i?t:void 0;return{next:(i?t.next:t)?.bind(r),error:(i?t.error:e)?.bind(r),complete:(i?t.complete:a)?.bind(r)}}const Nw=[];let Pp=0;const{link:Yv,unlink:c3,propagate:u3,checkDirty:U2,shallowPropagate:Jv}=s3({update(t){return t._update()},notify(t){Nw[Bw++]=t,t.flags&=-3},unwatched(t){t.depsTail!==void 0&&(t.depsTail=void 0,t.flags=17,Zp(t))}});let Bd=0,Bw=0,Pi,$w=0;function d3(t){try{++$w,t()}finally{--$w||L2()}}function Zp(t){const e=t.depsTail;let a=e!==void 0?e.nextDep:t.deps;for(;a!==void 0;)a=c3(a,t)}function L2(){if(!($w>0)){for(;Bd<Bw;){const t=Nw[Bd];Nw[Bd++]=void 0,t.notify()}Bd=0,Bw=0}}function Qv(t,e){const a=typeof t=="function",i=t,r={_snapshot:a?void 0:t,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:a?0:1,get(){return Pi!==void 0&&Yv(r,Pi,Pp),r._snapshot},subscribe(s){const c=l3(s),d={current:!1},p=p3(()=>{r.get(),d.current?(Pi=void 0,c.next?.(r._snapshot)):d.current=!0});return{unsubscribe:()=>{p.stop()}}},_update(s){const c=Pi,d=e?.compare??Object.is;if(a)Pi=r,++Pp,r.depsTail=void 0;else if(s===void 0)return!1;a&&(r.flags=5);try{const p=r._snapshot,h=typeof s=="function"?s(p):s===void 0&&a?i(p):s;return p===void 0||!d(p,h)?(r._snapshot=h,!0):!1}finally{Pi=c,a&&(r.flags&=-5),Zp(r)}}};return a?(r.flags=17,r.get=function(){const s=r.flags;if(s&16||s&32&&U2(r.deps,r)){if(r._update()){const c=r.subs;c!==void 0&&Jv(c)}}else s&32&&(r.flags=s&-33);return Pi!==void 0&&Yv(r,Pi,Pp),r._snapshot}):r.set=function(s){if(r._update(s)){const c=r.subs;c!==void 0&&(u3(c),Jv(c),L2())}},r}function p3(t){const e=()=>{const i=Pi;Pi=a,++Pp,a.depsTail=void 0,a.flags=6;try{return t()}finally{Pi=i,a.flags&=-5,Zp(a)}},a={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){const i=this.flags;i&16||i&32&&U2(this.deps,this)?e():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Zp(this)}};return e(),a}var bf={exports:{}},jf={},vf={exports:{}},Sf={};var Xv;function h3(){if(Xv)return Sf;Xv=1;var t=cu();function e(m,g){return m===g&&(m!==0||1/m===1/g)||m!==m&&g!==g}var a=typeof Object.is=="function"?Object.is:e,i=t.useState,r=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function d(m,g){var z=g(),j=i({inst:{value:z,getSnapshot:g}}),v=j[0].inst,_=j[1];return s(function(){v.value=z,v.getSnapshot=g,p(v)&&_({inst:v})},[m,z,g]),r(function(){return p(v)&&_({inst:v}),m(function(){p(v)&&_({inst:v})})},[m]),c(z),z}function p(m){var g=m.getSnapshot;m=m.value;try{var z=g();return!a(m,z)}catch{return!0}}function h(m,g){return g()}var f=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:d;return Sf.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:f,Sf}var eS;
13function y3(){return eS||(eS=1,vf.exports=h3()),vf.exports}var tS;function m3(){if(tS)return jf;tS=1;var t=cu(),e=y3();function a(h,f){return h===f&&(h!==0||1/h===1/f)||h!==h&&f!==f}var i=typeof Object.is=="function"?Object.is:a,r=e.useSyncExternalStore,s=t.useRef,c=t.useEffect,d=t.useMemo,p=t.useDebugValue;return jf.useSyncExternalStoreWithSelector=function(h,f,m,g,z){var j=s(null);if(j.current===null){var v={hasValue:!1,value:null};j.current=v}else v=j.current;j=d(function(){function S(U){if(!E){if(E=!0,T=U,U=g(U),z!==void 0&&v.hasValue){var R=v.value;if(z(R,U))return O=R}return O=U}if(R=O,i(T,U))return R;var I=g(U);return z!==void 0&&z(R,I)?(T=U,R):(T=U,O=I)}var E=!1,T,O,H=m===void 0?null:m;return[function(){return S(f())},H===null?void 0:function(){return S(H())}]},[f,m,g,z]);var _=r(h,j[0],j[1]);return c(function(){v.hasValue=!0,v.value=_},[_]),p(_),_},jf}var aS;function f3(){return aS||(aS=1,bf.exports=m3()),bf.exports}var w3=f3();function g3(t,e){return t===e}function wi(t,e=i=>i,a){const i=a?.compare??g3,r=N.useCallback(c=>{const{unsubscribe:d}=t.subscribe(c);return d},[t]),s=N.useCallback(()=>t.get(),[t]);return w3.useSyncExternalStoreWithSelector(r,s,s,e,i)}var iS={};function Ek(t,e){const a=N.useRef();return i=>{const r=t?.select?t.select(i):i;return t?.structuralSharing??e.options.defaultStructuralSharing?a.current=To(a.current,r):r}}function Tr(t){const e=Zt(),a=N.useContext(t.from?r3:Tk),i=t.from??a,r=e.stores.getMatchStore(i),s=Ek(t,e),c=wi(r,d=>d?s(d):iS);if(c!==iS)return c;(t.shouldThrow??!0)&&Bc()}function K2(t){return Tr({from:t.from,strict:t.strict,structuralSharing:t.structuralSharing,select:e=>t.select?t.select(e.loaderData):e.loaderData})}function M2(t){const{select:e,...a}=t;return Tr({...a,select:i=>e?e(i.loaderDeps):i.loaderDeps})}function N2(t){return Tr({from:t.from,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,strict:t.strict,select:e=>{const a=t.strict===!1?e.params:e._strictParams;return t.select?t.select(a):a}})}function B2(t){return Tr({from:t.from,strict:t.strict,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,select:e=>t.select?t.select(e.search):e.search})}function $2(t){const e=Zt();return N.useCallback(a=>e.navigate({...a,from:a.from??t?.from}),[t?.from,e])}function I2(t){return Tr({...t,select:e=>t.select?t.select(e.context):e.context})}function k3(...t){const e=N.useRef(t),a=e.current;return t.forEach((i,r)=>{Li(a[r],i,!1,!0)||(a[r]=i)}),e.current}function $d(t,e){t.preloadRoute(e).catch(a=>{console.warn(a),console.warn(NL)})}var z3={compare:(t,e)=>t[0]===e[0]&&t[1]===e[1]};function b3(t,e){const a=typeof t=="string"&&Nc(t);if(a)return e.has(a)?t:null}function j3(t,e,a,i,r){const s=xv(t.pathname,i),c=xv(e.pathname,i);return(a?.exact?s!==c:!(s.startsWith(c)&&(s.length===c.length||s[c.length]==="/")))||(a?.includeSearch??!0)&&!Li(t.search,e.search,!a?.exact,a?.explicitUndefined)?!1:a?.includeHash?r&&t.hash===e.hash:!0}function v3(t,e,a){const i=Zt(),r=N.useRef(null),s=N.useCallback(xe=>{if(r.current=xe,typeof e=="function")return e(xe);e&&(e.current=xe)},[e]),{activeOptions:c,to:d,preload:p,preloadDelay:h,hashScrollIntoView:f,replace:m,startTransition:g,resetScroll:z,viewTransition:j,ignoreBlocker:v,disabled:_,target:S,onClick:E,onBlur:T,onFocus:O,onMouseEnter:H,onMouseLeave:U,onTouchStart:R}=t,I=_k(!!c?.includeHash),[ae,ee,F]=k3(t.search,t.params,c),[Z,oe]=N.useMemo(()=>[t,{...t}],[i,t.from,t._fromLocation,t.hash,t.to,ae,ee,t.state,t.mask,t.unsafeRelative]),me=N.useMemo(()=>{const xe=b3(d,i.protocolAllowlist);if(xe!==void 0){const ka=[xe??void 0];return()=>ka}let _e,Qe;return ka=>{Z._fromLocation||(oe._fromLocation=ka);const ai=i.buildLocation(oe),ha=E3(ai,i,_);return(!_e||_e[0]!==ha)&&(_e=[ha,!(_||ha&&!Nc(ha))&&void 0],Qe=[ha,!0]),_e[1]!==void 0&&j3(ka,ai,F,i.basepath,I)?Qe:_e}},[F,_,I,Z,oe,i,d]),[de,A]=wi(i.stores.location,me,z3),B=A===void 0&&de,ne=_||de===void 0,ge=N.useRef(!1),he=t.reloadDocument||B||ne?!1:p??i.options.defaultPreload,C=h??i.options.defaultPreloadDelay??0,Y=N.useCallback(xe=>{const _e=xe?.isIntersecting;if(!(_e??he==="intent")){_e===!1&&xf(r);return}if(!C){$d(i,Z);return}Ec.has(r)||Ec.set(r,setTimeout(()=>{Ec.delete(r),$d(i,Z)},C))},[i,Z,r,he,C]);N.useEffect(()=>{if(!he)return;he==="render"&&!ge.current&&(ge.current=!0,$d(i,Z));let xe=!0,_e;return he==="viewport"&&r.current&&typeof IntersectionObserver=="function"&&(_e=new IntersectionObserver(Qe=>{xe&&Y(Qe.pop())},{rootMargin:"100px"}),_e.observe(r.current)),()=>{xe=!1,_e?.disconnect(),xf(r)}},[i,Z,he,Y,r]);const X=_3(t,a);if(X.ref=e?s:r,B)return X.href=B,X;const ce=xe=>{const _e=S??xe.currentTarget.getAttribute("target");!ne&&!(xe.metaKey||xe.altKey||xe.ctrlKey||xe.shiftKey)&&!xe.defaultPrevented&&(!_e||_e==="_self")&&xe.button===0&&(xe.preventDefault(),i.navigate({...Z,replace:m,resetScroll:z,hashScrollIntoView:f,startTransition:g,viewTransition:j,ignoreBlocker:v}))},fe=()=>{he==="intent"&&$d(i,Z)},Ee=()=>{he==="intent"&&xf(r)};return X.onClick=zs(E,ce),X.onBlur=zs(T,Ee),X.onFocus=zs(O,Y),X.onMouseEnter=zs(H,Y),X.onMouseLeave=zs(U,Ee),X.onTouchStart=zs(R,fe),T3(X,t,A,de,ne,a)}var S3={},x3={className:"active"}
13,W2=new Set(["to","params","search","hash","state","mask","from","unsafeRelative","_fromLocation","reloadDocument","preload","preloadDelay","preloadIntentProximity","hashScrollIntoView","replace","startTransition","resetScroll","viewTransition","ignoreBlocker","activeProps","inactiveProps","activeOptions","_asChild"]);function _3(t,e){const a={};for(const i in t)W2.has(i)||i==="type"&&e!==void 0||i==="disabled"&&e==="a"||(a[i]=t[i]);return a}function T3(t,e,a,i,r,s){const{activeProps:c,inactiveProps:d,className:p,style:h,target:f}=e,m=w_(a?c:d,{})??(a?x3:S3);Object.assign(t,m),t.href=i,s!=="a"&&(t.disabled=r),t.target=f;const g=m.style;(h||g)&&(t.style=h&&g?{...h,...g}:h||g);const z=m.className;return(p||z)&&(t.className=p?z?`${p} ${z}`:p:z),r&&(t.role="link",t["aria-disabled"]=!0),a&&(t["data-status"]="active",t["aria-current"]="page"),t}var Ec=new WeakMap,xf=t=>{clearTimeout(Ec.get(t)),Ec.delete(t)},zs=(t,e)=>t?a=>a.defaultPrevented||(t(a),a.defaultPrevented||e(a)):e;function E3(t,e,a){if(a)return;const i=t.maskedLocation??t,r=i.external?i.publicHref:e.history.createHref(i.publicHref)||"/";if(!((i.external||r!==i.publicHref)&&z_(r,e.protocolAllowlist)))return r}var Xi=N.memo(N.forwardRef((t,e)=>{const a=t._asChild||"a",i=v3(t,e,a),r=typeof t.children=="function"?t.children({isActive:i["data-status"]==="active"}):t.children;return N.createElement(a,i,r)}),A3);function A3(t,e){let a=0;for(const i in e)if(a++,t[i]!==e[i]&&(!W2.has(i)||!Li(t[i],e[i],!1,!0)))return!1;for(const i in t)a--;return a===0}var P3=class extends T2{constructor(e){super(e),this.useMatch=a=>Tr({...a,from:this.id}),this.useRouteContext=a=>I2({...a,from:this.id}),this.useSearch=a=>B2({...a,from:this.id}),this.useParams=a=>N2({...a,from:this.id}),this.useLoaderDeps=a=>M2({...a,from:this.id}),this.useLoaderData=a=>K2({...a,from:this.id}),this.useNavigate=()=>$2({from:this.fullPath}),this.Link=ue.forwardRef((a,i)=>k.jsx(Xi,{ref:i,from:this.fullPath,...a}))}};function C3(t){return new P3(t)}function R3(){return t=>O3(t)}var D3=class extends FL{constructor(t){super(t),this.useMatch=e=>Tr({...e,from:this.id}),this.useRouteContext=e=>I2({...e,from:this.id}),this.useSearch=e=>B2({...e,from:this.id}),this.useParams=e=>N2({...e,from:this.id}),this.useLoaderDeps=e=>M2({...e,from:this.id}),this.useLoaderData=e=>K2({...e,from:this.id}),this.useNavigate=()=>$2({from:this.fullPath}),this.Link=ue.forwardRef((e,a)=>k.jsx(Xi,{ref:a,from:this.fullPath,...e}))}};function O3(t){return new D3(t)}function q(t){return e=>{const a=C3(e);return a.isRoot=!1,a}}function G(t,e){let a,i,r;const s=()=>(a||(r=void 0,a=t().then(d=>{a=void 0,c.preload=void 0,i=d[e??"default"]}).catch(d=>{a=void 0,r=d})),a),c=function(p){if(r){if(ID(r)&&typeof sessionStorage<"u"){const h=`tanstack_router_reload:${r.message}`;if(!sessionStorage.getItem(h))throw sessionStorage.setItem(h,"1"),window.location.reload(),new Promise(()=>{})}throw r}if(!i)if(qp)qp(s());else throw s();return N.createElement(i,p)};return c.preload=s,c}function U3(t){const e=Zt(),a=`not-found-${wi(e.stores.location,i=>i.pathname)}-${wi(e.stores.status)}`;return k.jsx(xk,{getResetKey:()=>a,onCatch:(i,r)=>{if(vr(i))t.onCatch?.(i,r);else throw i},errorComponent:({error:i})=>{if(vr(i))return t.fallback?.(i);throw i},children:t.children})}function L3(){return k.jsx("p",{children:"Not Found"})}function G2(t,e,a){return e.options.notFoundComponent?k.jsx(e.options.notFoundComponent,{...a}):t.options.defaultNotFoundComponent?k.jsx(t.options.defaultNotFoundComponent,{...a}):k.jsx(L3,{})}function Rh(t,e){const a=e?.options.pendingComponent??t.options.defaultPendingComponent;return a?k.jsx(a,{}):null}var K3=(t,e)=>t[0]===e[0]&&t[1]===e[1],V2=(t,e,a)=>!e.isRoot||e.options.shellComponent||e.options.wrapInSuspense||a===!1||a==="data-only"||!t.ssr,F2=N.memo(function({routeId:e}){const a=Zt();return k.jsx(M3,{router:a,match:wi(a.stores.getMatchStore(e))})});function M3({router:t,match:e}){const a=t.routesById[e.routeId],i=Rh(t,a),r=a.options.errorComponent??t.options.defaultErrorComponent,s=a.options.onCatch??t.options.defaultOnCatch,c=a.isRoot?a.options.notFoundComponent??t.options.notFoundRoute?.options.component:a.options.notFoundComponent,d=e.ssr===!1||e.ssr==="data-only",p=V2(t,a,e.ssr)&&(a.options.wrapInSuspense??i??(a.options.errorComponent?.preload||d));let h=k.jsx(N3,{match:e});d&&(h=k.jsx(n3,{fallback:i,children:h})),c&&(h=k.jsx(U3,{fallback:g=>{if(g.routeId??=e.routeId,g.routeId!==e.routeId)throw g;return N.createElement(c,g)},children:h})),r&&(h=k.jsx(xk,{getResetKey:()=>e,errorComponent:r,onCatch:(g,z)=>{if(vr(g))throw g.routeId??=e.routeId,g;s?.(g,z)},children:h})),p&&(h=k.jsx(N.Suspense,{fallback:i,children:h}));const f=null,m=a.isRoot?a.options.shellComponent:void 0;return k.jsx(Tk.Provider,{value:e.routeId,children:m?k.jsxs(m,{children:[h,f]}):k.jsxs(k.Fragment,{children:[h,f]})})}var N3=N.memo(function({match:e}){const a=Zt(),i=e.routeId,r=a.routesById[i],s=N.useMemo(()=>{const d=(r.options.remountDeps??a.options.defaultRemountDeps)?.({routeId:i,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return d?JSON.stringify(d):void 0},[i,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,a.options.defaultRemountDeps]),c=N.useMemo(()=>{const d=r.options.component??a.options.defaultComponent;return d?k.jsx(d,{},s):k.jsx(H2,{})},[s,r.options.component,a.options.defaultComponent]);if(e.status==="pending"){if(a.ssr&&!V2(a,r,e.ssr))return c;if(a._tx)throw a._tx[5];return Rh(a,r)}if(e.status==="notFound")return G2(a,r,e.error);if(e.status==="error")throw e.error;return c}),H2=N.memo(function(){const e=Zt(),a=N.useContext(Tk);let i,r,s;
13{const d=e.stores.getMatchStore(a);[i,r]=wi(d,p=>[!!p._notFound,p.error],{compare:K3}),s=wi(e.stores.ids,p=>p[p.indexOf(a)+1])}if(i)return G2(e,e.routesById[a],r);if(!s)return null;const c=k.jsx(F2,{routeId:s});return a===Xs?k.jsx(N.Suspense,{fallback:Rh(e),children:c}):c});function q2(t,e){const a=t[1];t.length=0,a?.(e)}function B3({t}){const e=Zt(),a=e._rendered??=[];return e.startTransition=(i,r)=>new Promise(s=>{q2(a,!1),a.push(r,s),t(e),N.startTransition(i)}),D2(()=>{const i=e.history.subscribe(e.load);e.updateLatestLocation();const r=e.latestLocation,s=e.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(Qi(r.publicHref)!==Qi(s.publicHref))return e.commitLocation({...s,replace:!0,ignoreBlocker:!0}),i;const c=e.stores.resolvedLocation.get();return c?.href===r.href&&c.state.__TSR_key===r.state.__TSR_key?a.push(e.stores.matches.get(),d=>{d&&e.emit({type:"onRendered",..._h(c,c)})}):e._tx||e.load({sync:!0}).catch(console.error),i},[e,e.history]),null}function $3(){const t=Zt(),e=t.routesById[Xs],a=Rh(t,e),i=k.jsxs(k.Fragment,{children:[k.jsx(B3,{t:N.useState()[1]}),t.ssr?k.jsx(nS,{}):k.jsx(N.Suspense,{fallback:a,children:k.jsx(nS,{})})]});return t.options.InnerWrap?k.jsx(t.options.InnerWrap,{children:i}):i}function nS(){const t=Zt(),e=t._rendered,a=wi(t.stores.matches,c=>e[0]??c),i=a[0],r=i?.routeId;D2(()=>{e[0]===a&&q2(e,!0)},[e,a]);const s=r?k.jsx(F2,{routeId:r}):null;return t.options.disableGlobalCatchBoundary?s:k.jsx(xk,{getResetKey:()=>i,onCatch:void 0,children:s})}var I3=t=>({createMutableStore:Qv,createReadonlyStore:Qv,batch:d3}),W3=t=>new G3(t),G3=class extends EO{constructor(t){super(t,I3)}};function V3({router:t,children:e,...a}){g_(a)&&t.update({...t.options,...a,context:{...t.options.context,...a.context}});const i=k.jsx(O2.Provider,{value:t,children:e});return t.options.Wrap?k.jsx(t.options.Wrap,{children:i}):i}function F3({router:t,...e}){return k.jsx(V3,{router:t,...e,children:k.jsx($3,{})})}function Ak(t){const e=Zt({warn:t?.router===void 0}),a=t?.router||e;return wi(a.stores.__store,Ek(t,a))}function H3(t){const e=Zt();return wi(e.stores.location,Ek(t,e))}function oS(t,e){if(e)for(const[a,i]of Object.entries(e))a!=="suppressHydrationWarning"&&i!==void 0&&i!==!1&&t.setAttribute(a,typeof i=="boolean"?"":String(i))}function Z2(t){const{attrs:e,children:a,nonce:i,preventScriptHoist:r}=t,s=N.useMemo(()=>a===void 0?void 0:{__html:a},[a]);switch(t.tag){case"title":return k.jsx("title",{...e,suppressHydrationWarning:!0,children:a});case"meta":return k.jsx("meta",{...e,suppressHydrationWarning:!0});case"link":return k.jsx("link",{...e,precedence:e?.precedence??(e?.rel==="stylesheet"?"default":void 0),nonce:i,suppressHydrationWarning:!0});case"style":return t.inlineCss,k.jsx("style",{...e,dangerouslySetInnerHTML:s,nonce:i});case"script":return k.jsx(q3,{attrs:e,preventScriptHoist:r,children:a});default:return null}}function q3({attrs:t,children:e,preventScriptHoist:a}){Zt();const i=_k(),r=N.useMemo(()=>e===void 0?void 0:{__html:e},[e]),s=typeof t?.type=="string"&&t.type!==""&&t.type!=="text/javascript"&&t.type!=="module";if(N.useEffect(()=>{if(!s){if(t?.src){const c=document.createElement("a");c.href=t.src;const d=c.href;for(const h of document.scripts)if(h.src===d)return;const p=document.createElement("script");return oS(p,t),document.head.appendChild(p),()=>p.remove()}if(typeof e=="string"){const c=typeof t?.type=="string"?t.type:"text/javascript",d=typeof t?.nonce=="string"?t.nonce:void 0;for(const h of document.scripts){if(h.hasAttribute("src"))continue;const f=h.getAttribute("type")??"text/javascript",m=h.getAttribute("nonce")??void 0;if(h.textContent===e&&f===c&&m===d)return}const p=document.createElement("script");return p.textContent=e,oS(p,t),document.head.appendChild(p),()=>p.remove()}}},[t,e,s]),s&&typeof e=="string")return k.jsx("script",{...t,suppressHydrationWarning:!0,dangerouslySetInnerHTML:r});if(!i){if(t?.src)return k.jsx("script",{...t,suppressHydrationWarning:!0});if(typeof e=="string")return k.jsx("script",{...t,dangerouslySetInnerHTML:r,suppressHydrationWarning:!0})}return null}function Z3(t,e,a,i){a=D_(a);const r=a.map(v=>v.meta).filter(v=>v!==void 0),s=[],c={};let d;for(let v=r.length-1;v>=0;v--){const _=r[v];for(let S=_.length-1;S>=0;S--){const E=_[S];if(E)if(E.title)d||(d={tag:"title",children:E.title});else if("script:ld+json"in E)try{const T=JSON.stringify(E["script:ld+json"]);s.push({tag:"script",attrs:{type:"application/ld+json"},children:qD(T)})}catch{}else{const T=E.name??E.property;if(T){if(c[T])continue;c[T]=!0}s.push({tag:"meta",attrs:{...E,nonce:e}})}}}d&&s.push(d),e&&s.push({tag:"meta",attrs:{property:"csp-nonce",content:e}}),s.reverse();const p=a.flatMap(v=>v.links??[]).filter(v=>v!==void 0).map(v=>({tag:"link",attrs:{...v,nonce:e}})),h=t.ssr?.manifest,f=[];
13h&&(a.forEach(v=>{h.routes[v.routeId]?.css?.forEach(_=>{const S=WL(_);f.push({tag:"link",attrs:{rel:"stylesheet",...S,crossOrigin:_2(i,"stylesheet")??S.crossOrigin,suppressHydrationWarning:!0,nonce:e}})})}),h.inlineStyle&&f.push({tag:"style",attrs:{...h.inlineStyle.attrs,nonce:e},children:h.inlineStyle.children,inlineCss:!0}));const m=[];h&&a.forEach(v=>{h.routes[v.routeId]?.preloads?.forEach(_=>{m.push({tag:"link",attrs:{...$L(h,_,i),nonce:e}})})});const g=a.flatMap(v=>v.styles??[]).filter(v=>v!==void 0).map(({children:v,..._})=>({tag:"style",attrs:{..._,nonce:e},children:v})),z=a.flatMap(v=>v.headScripts??[]).filter(v=>v!==void 0).map(({children:v,..._})=>({tag:"script",attrs:{..._,nonce:e},children:v})),j=[];return Nd(j,s),j.push(...m),Nd(j,p),j.push(...f),Nd(j,g),Nd(j,z),j}var Y3=t=>{const e=Zt(),a=e.options.ssr?.nonce,i=N.useCallback(r=>Z3(e,a,r,t),[t,a,e]);return wi(e.stores.matches,i,{compare:Li})};function J3(t){const e=Y3(t.assetCrossOrigin),a=Zt().options.ssr?.nonce;return k.jsx(k.Fragment,{children:e.map(i=>N.createElement(Z2,{...i,key:`tsr-meta-${JSON.stringify(i)}`,nonce:a}))})}var Q3={suppressHydrationWarning:!0},X3=()=>{const t=Zt(),e=t.options.ssr?.nonce,a=r=>{const s=GL(r,t.ssr?.manifest,e,Q3);for(const c of s[1])if(typeof c.attrs?.src=="string"){const d=c;d.preventScriptHoist=!0}return s},i=r=>VL(a(r));return eK(wi(t.stores.matches,i,{compare:Li}))};function eK(t){return k.jsx(k.Fragment,{children:t.map((e,a)=>N.createElement(Z2,{...e,key:`tsr-scripts-${e.tag}-${a}`}))})}function rS(t){return t!=="__proto__"&&t!=="constructor"&&t!=="prototype"}function Iw(t,e){const a=Object.create(null);if(t)for(const i of Object.keys(t))rS(i)&&(a[i]=t[i]);if(e&&typeof e=="object")for(const i of Object.keys(e))rS(i)&&(a[i]=e[i]);return a}function Y2(t){return Object.create(null)}var J2=()=>{throw new Error("createServerOnlyFn() functions can only be called on the server!")},Ac=(t,e)=>{const a=e||t||{};typeof a.method>"u"&&(a.method="GET");const i=c=>Ac(void 0,{...a,validator:c,inputValidator:c});return Object.assign(c=>Ac(void 0,{...a,...c}),{options:a,middleware:c=>{const d=[...a.middleware||[]];c.forEach(h=>{jv in h?h.options.middleware&&d.push(...h.options.middleware):d.push(h)});const p=Ac(void 0,{...a,middleware:d});return p[jv]=!0,p},validator:i,inputValidator:i,handler:(...c)=>{const[d,p]=c,h={...a,extractedFn:d,serverFn:p},f=[...h.middleware||[],iK(h)];return d.method=a.method,Object.assign(async m=>{const g=await sS(f,"client",{...d,...h,data:m?.data,headers:m?.headers,signal:m?.signal,fetch:m?.fetch,context:Y2()}),z=f_(g.error);if(z)throw z;if(g.error)throw g.error;return g.result},{...d,method:a.method,__executeServer:async m=>{const g=J2(),z=g.contextAfterGlobalMiddlewares;return await sS(f,"server",{...d,data:m.data,method:m.method??a.method,serverFnMeta:d.serverFnMeta,context:Iw(m.context,z),request:g.request}).then(j=>({result:j.result,error:j.error,context:j.sendContext}))}})}})};async function sS(t,e,a){let i=tK([...ok()?.functionMiddleware||[],...t]);if(e==="server"){const s=J2();s?.executedRequestMiddlewares&&(i=i.filter(c=>!s.executedRequestMiddlewares.has(c)))}const r=async s=>{const c=i.shift();if(!c)return s;try{let d="validator"in c.options?c.options.validator:void 0;!d&&"inputValidator"in c.options&&(d=c.options.inputValidator),d&&e==="server"&&(s.data=await aK(d,s.data));let p;if(e==="client"?"client"in c.options&&(p=c.options.client):"server"in c.options&&(p=c.options.server),p){const f=await p({...s,next:async(m={})=>{const g=await r({...s,...m,context:Iw(s.context,m.context),sendContext:Iw(s.sendContext,m.sendContext),headers:gL(s.headers,m.headers),_callSiteFetch:s._callSiteFetch,fetch:s._callSiteFetch??m.fetch??s.fetch,result:m.result!==void 0?m.result:m instanceof Response?m:s.result,error:m.error??s.error});if(g.error)throw g.error;return g}});if(rk(f))return{...s,error:f};if(f instanceof Response)return{...s,result:f};if(!f)throw new Error("User middleware returned undefined. You must call next() or return a result in your middlewares.");return f}return r(s)}catch(d){return{...s,error:d}}};return r({...a,headers:a.headers||{},sendContext:a.sendContext||{},context:a.context||Y2(),_callSiteFetch:a.fetch})}function tK(t,e=100){const a=new Set,i=[],r=(s,c)=>{if(c>e)throw new Error(`Middleware nesting depth exceeded maximum of ${e}. Check for circular references.`);
13s.forEach(d=>{d.options.middleware&&r(d.options.middleware,c+1),a.has(d)||(a.add(d),i.push(d))})};return r(t,0),i}async function aK(t,e){if(t==null)return{};if("~standard"in t){const a=await t["~standard"].validate(e);if(a.issues)throw new Error(JSON.stringify(a.issues,void 0,2));return a.value}if("parse"in t)return t.parse(e);if(typeof t=="function")return t(e);throw new Error("Invalid validator type!")}function iK(t){return{"~types":void 0,options:{inputValidator:t.validator??t.inputValidator,client:async({next:e,sendContext:a,fetch:i,...r})=>{const s={...r,context:a,fetch:i};return e(await t.extractedFn?.(s))},server:async({next:e,...a})=>{const i=await t.serverFn?.(a);return e({...a,result:i})}}}}var fr=(t,e)=>{const a={type:"request",...e||t},i=r=>fr({},Object.assign(a,{validator:r,inputValidator:r}));return{options:a,middleware:r=>fr({},Object.assign(a,{middleware:r})),validator:i,inputValidator:i,client:r=>fr({},Object.assign(a,{client:r})),server:r=>fr({},Object.assign(a,{server:r}))}};function Q2(t,e){for(let a=0,i=e.length;a<i;a++){const r=e[a];t.has(r)||(t.add(r),r.extends&&Q2(t,r.extends))}}var nK=t=>({getOptions:async()=>{const e=await t();if(e.serializationAdapters){const a=new Set;Q2(a,e.serializationAdapters),e.serializationAdapters=Array.from(a)}return e},createMiddleware:fr}),lS=function(){return lS=Object.assign||function(e){for(var a,i=1,r=arguments.length;i<r;i++){a=arguments[i];for(var s in a)Object.prototype.hasOwnProperty.call(a,s)&&(e[s]=a[s])}return e},lS.apply(this,arguments)};function Dh(t,e){var a={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(a[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(a[i[r]]=t[i[r]]);return a}function oK(t,e,a,i){function r(s){return s instanceof a?s:new a(function(c){c(s)})}return new(a||(a=Promise))(function(s,c){function d(f){try{h(i.next(f))}catch(m){c(m)}}function p(f){try{h(i.throw(f))}catch(m){c(m)}}function h(f){f.done?s(f.value):r(f.value).then(d,p)}h((i=i.apply(t,e||[])).next())})}function XX(t,e,a){if(a||arguments.length===2)for(var i=0,r=e.length,s;i<r;i++)(s||!(i in e))&&(s||(s=Array.prototype.slice.call(e,0,i)),s[i]=e[i]);return t.concat(s||Array.prototype.slice.call(e))}const rK=t=>t?(...e)=>t(...e):(...e)=>fetch(...e);class Pk extends Error{constructor(e,a="FunctionsError",i){super(e),this.name=a,this.context=i}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class sK extends Pk{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class cS extends Pk{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class uS extends Pk{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var Ww;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(Ww||(Ww={}));class lK{constructor(e,{headers:a={},customFetch:i,region:r=Ww.Any}={}){this.url=e,this.headers=a,this.region=r,this.fetch=rK(i)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return oK(this,arguments,void 0,function*(a,i={}){var r;let s,c;try{const{headers:d,method:p,body:h,signal:f,timeout:m}=i;let g={},{region:z}=i;z||(z=this.region);const j=new URL(`${this.url}/${a}`);z&&z!=="any"&&(g["x-region"]=z,j.searchParams.set("forceFunctionRegion",z));let v;h&&(d&&!Object.prototype.hasOwnProperty.call(d,"Content-Type")||!d)?typeof Blob<"u"&&h instanceof Blob||h instanceof ArrayBuffer?(g["Content-Type"]="application/octet-stream",v=h):typeof h=="string"?(g["Content-Type"]="text/plain",v=h):typeof FormData<"u"&&h instanceof FormData?v=h:(g["Content-Type"]="application/json",v=JSON.stringify(h)):h&&typeof h!="string"&&!(typeof Blob<"u"&&h instanceof Blob)&&!(h instanceof ArrayBuffer)&&!(typeof FormData<"u"&&h instanceof FormData)?v=JSON.stringify(h):v=h;let _=f;m&&(c=new AbortController,s=setTimeout(()=>c.abort(),m),f?(_=c.signal,f.addEventListener("abort",()=>c.abort())):_=c.signal);const S=yield this.fetch(j.toString(),{method:p||"POST",headers:Object.assign(Object.assign(Object.assign({},g),this.headers),d),body:v,signal:_}).catch(H=>{throw new sK(H)}),E=S.headers.get("x-relay-error");
13if(E&&E==="true")throw new cS(S);if(!S.ok)throw new uS(S);let T=((r=S.headers.get("Content-Type"))!==null&&r!==void 0?r:"text/plain").split(";")[0].trim(),O;return T==="application/json"?O=yield S.json():T==="application/octet-stream"||T==="application/pdf"?O=yield S.blob():T==="text/event-stream"?O=S:T==="multipart/form-data"?O=yield S.formData():O=yield S.text(),{data:O,error:null,response:S}}catch(d){return{data:null,error:d,response:d instanceof uS||d instanceof cS?d.context:void 0}}finally{s&&clearTimeout(s)}})}}const X2=3,dS=t=>Math.min(1e3*2**t,3e4),cK=[520,503],eT=["GET","HEAD","OPTIONS"];var uK=class extends Error{constructor(t){super(t.message),this.name="PostgrestError",this.details=t.details,this.hint=t.hint,this.code=t.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function pS(t,e){return new Promise(a=>{if(e?.aborted){a();return}const i=setTimeout(()=>{e?.removeEventListener("abort",r),a()},t);function r(){clearTimeout(i),a()}e?.addEventListener("abort",r)})}function dK(t,e,a,i){return!(!i||a>=X2||!eT.includes(t)||!cK.includes(e))}var pK=class{constructor(t){var e,a,i,r,s;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=t.method,this.url=t.url,this.headers=new Headers(t.headers),this.schema=t.schema,this.body=t.body,this.shouldThrowOnError=(e=t.shouldThrowOnError)!==null&&e!==void 0?e:!1,this.signal=t.signal,this.isMaybeSingle=(a=t.isMaybeSingle)!==null&&a!==void 0?a:!1,this.shouldStripNulls=(i=t.shouldStripNulls)!==null&&i!==void 0?i:!1,this.urlLengthLimit=(r=t.urlLengthLimit)!==null&&r!==void 0?r:8e3,this.retryEnabled=(s=t.retry)!==null&&s!==void 0?s:!0,t.fetch?this.fetch=t.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(t,e){return this.headers=new Headers(this.headers),this.headers.set(t,e),this}retry(t){return this.retryEnabled=t,this}then(t,e){var a=this;if(this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json"),this.shouldStripNulls){const c=this.headers.get("Accept");c==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!c||c==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const i=this.fetch;let s=(async()=>{let c=0;for(;;){const h=new Headers(a.headers);c>0&&h.set("X-Retry-Count",String(c));let f;try{f=await i(a.url.toString(),{method:a.method,headers:h,body:JSON.stringify(a.body,(m,g)=>typeof g=="bigint"?g.toString():g),signal:a.signal})}catch(m){if(m?.name==="AbortError"||m?.code==="ABORT_ERR"||!eT.includes(a.method))throw m;if(a.retryEnabled&&c<X2){const g=dS(c);c++,await pS(g,a.signal);continue}throw m}if(dK(a.method,f.status,c,a.retryEnabled)){var d,p;const m=(d=(p=f.headers)===null||p===void 0?void 0:p.get("Retry-After"))!==null&&d!==void 0?d:null,g=m!==null?Math.max(0,parseInt(m,10)||0)*1e3:dS(c);await f.text(),c++,await pS(g,a.signal);continue}return await a.processResponse(f)}})();return this.shouldThrowOnError||(s=s.catch(c=>{var d;let p="",h="",f="";const m=c?.cause;if(m){var g,z,j,v;const E=(g=m?.message)!==null&&g!==void 0?g:"",T=(z=m?.code)!==null&&z!==void 0?z:"";p=`${(j=c?.name)!==null&&j!==void 0?j:"FetchError"}: ${c?.message}`,p+=` 14 15Caused by: ${(v=m?.name)!==null&&v!==void 0?v:"Error"}: ${E}`,T&&(p+=` (${T})`),m?.stack&&(p+=` 16${m.stack}`)}else{var _;p=(_=c?.stack)!==null&&_!==void 0?_:""}const S=this.url.toString().length;return c?.name==="AbortError"||c?.code==="ABORT_ERR"?(f="",h="Request was aborted (timeout or manual cancellation)",S>this.urlLengthLimit&&(h+=`. Note: Your request URL is ${S} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`)):(m?.name==="HeadersOverflowError"||m?.code==="UND_ERR_HEADERS_OVERFLOW")&&(f="",h="HTTP headers exceeded server limits (typically 16KB)",S>this.urlLengthLimit&&(h+=`. Your request URL is ${S} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`)),{success:!1,error:{message:`${(d=c?.name)!==null&&d!==void 0?d:"FetchError"}: ${c?.message}`,details:p,hint:h,code:f},data:null,count:null,status:0,statusText:""}}
16)),s.then(t,e)}async processResponse(t){var e=this;let a=null,i=null,r=null,s=t.status,c=t.statusText;if(t.ok){var d,p;if(e.method!=="HEAD"){var h;const g=await t.text();g===""||(e.headers.get("Accept")==="text/csv"||e.headers.get("Accept")&&(!((h=e.headers.get("Accept"))===null||h===void 0)&&h.includes("application/vnd.pgrst.plan+text"))?i=g:i=JSON.parse(g))}const f=(d=e.headers.get("Prefer"))===null||d===void 0?void 0:d.match(/count=(exact|planned|estimated)/),m=(p=t.headers.get("content-range"))===null||p===void 0?void 0:p.split("/");f&&m&&m.length>1&&(r=parseInt(m[1])),e.isMaybeSingle&&Array.isArray(i)&&(i.length>1?(a={code:"PGRST116",details:`Results contain ${i.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},i=null,r=null,s=406,c="Not Acceptable"):i.length===1?i=i[0]:i=null)}else{const f=await t.text();try{a=JSON.parse(f),Array.isArray(a)&&t.status===404&&(i=[],a=null,s=200,c="OK")}catch{t.status===404&&f===""?(s=204,c="No Content"):a={message:f}}if(a&&e.shouldThrowOnError)throw new uK(a)}return{success:a===null,error:a,data:i,count:r,status:s,statusText:c}}returns(){return this}overrideTypes(){return this}},hK=class extends pK{select(t){let e=!1;const a=(t??"*").split("").map(i=>/\s/.test(i)&&!e?"":(i==='"'&&(e=!e),i)).join("");return this.url.searchParams.set("select",a),this.headers.append("Prefer","return=representation"),this}order(t,{ascending:e=!0,nullsFirst:a,foreignTable:i,referencedTable:r=i}={}){const s=r?`${r}.order`:"order",c=this.url.searchParams.get(s);return this.url.searchParams.set(s,`${c?`${c},`:""}${t}.${e?"asc":"desc"}${a===void 0?"":a?".nullsfirst":".nullslast"}`),this}limit(t,{foreignTable:e,referencedTable:a=e}={}){const i=typeof a>"u"?"limit":`${a}.limit`;return this.url.searchParams.set(i,`${t}`),this}range(t,e,{foreignTable:a,referencedTable:i=a}={}){const r=typeof i>"u"?"offset":`${i}.offset`,s=typeof i>"u"?"limit":`${i}.limit`;return this.url.searchParams.set(r,`${t}`),this.url.searchParams.set(s,`${e-t+1}`),this}abortSignal(t){return this.signal=t,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:t=!1,verbose:e=!1,settings:a=!1,buffers:i=!1,wal:r=!1,format:s="text"}={}){var c;const d=[t?"analyze":null,e?"verbose":null,a?"settings":null,i?"buffers":null,r?"wal":null].filter(Boolean).join("|"),p=(c=this.headers.get("Accept"))!==null&&c!==void 0?c:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${s}; for="${p}"; options=${d};`),s==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(t){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${t}`),this}};const hS=new RegExp("[,()]");var Ns=class extends hK{eq(t,e){return this.url.searchParams.append(t,`eq.${e}`),this}neq(t,e){return this.url.searchParams.append(t,`neq.${e}`),this}gt(t,e){return this.url.searchParams.append(t,`gt.${e}`),this}gte(t,e){return this.url.searchParams.append(t,`gte.${e}`),this}lt(t,e){return this.url.searchParams.append(t,`lt.${e}`),this}lte(t,e){return this.url.searchParams.append(t,`lte.${e}`),this}like(t,e){return this.url.searchParams.append(t,`like.${e}`),this}likeAllOf(t,e){return this.url.searchParams.append(t,`like(all).{${e.join(",")}}`),this}likeAnyOf(t,e){return this.url.searchParams.append(t,`like(any).{${e.join(",")}}`),this}ilike(t,e){return this.url.searchParams.append(t,`ilike.${e}`),this}ilikeAllOf(t,e){return this.url.searchParams.append(t,`ilike(all).{${e.join(",")}}`),this}ilikeAnyOf(t,e){return this.url.searchParams.append(t,`ilike(any).{${e.join(",")}}`),this}regexMatch(t,e){return this.url.searchParams.append(t,`match.${e}`),this}regexIMatch(t,e){return this.url.searchParams.append(t,`imatch.${e}`),this}is(t,e){return this.url.searchParams.append(t,`is.${e}`),this}isDistinct(t,e){return this.url.searchParams.append(t,`isdistinct.${e}`),this}in(t,e){const a=Array.from(new Set(e)).map(i=>typeof i=="string"&&hS.test(i)?`"${i}"`:`${i}`).join(",");return this.url.searchParams.append(t,`in.(${a})`),this}notIn(t,e){const a=Array.from(new Set(e)).map(i=>typeof i=="string"&&hS.test(i)?`"${i}"`:`${i}`).join(",");return this.url.searchParams.append(t,`not.in.(${a})`),this}contains(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cs.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cs.{${e.join(",")}}`):this.url.searchParams.append(t,`cs.${JSON.stringify(e)}`),this}containedBy(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cd.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cd.{${e.join(",")}}`):this.url.searchParams.append(t,`cd.${JSON.stringify(e)}`),this}rangeGt(t,e){return this.url.searchParams.append(t,`sr.${e}`),this}rangeGte(t,e){return this.url.searchParams.append(t,`nxl.${e}`),this}rangeLt(t,e){return this.url.searchParams.append(t,`sl.${e}`),this}rangeLte(t,e){return this.url.searchParams.append(t,`nxr.${e}`),this}rangeAdjacent(t,e){return this.url.searchParams.append(t,`adj.${e}`),this}overlaps(t,e){return typeof e=="string"?this.url.searchParams.append(t,`ov.${e}`):this.url.searchParams.append(t,`ov.{${e.join(",")}}`),this}textSearch(t,e,{config:a,type:i}={}){let r="";i==="plain"?r="pl":i==="phrase"?r="ph":i==="websearch"&&(r="w");const s=a===void 0?"":`(${a})`;return this.url.searchParams.append(t,`${r}fts${s}.${e}`),this}match(t){return Object.entries(t).filter(([e,a])=>
16a!==void 0).forEach(([e,a])=>{this.url.searchParams.append(e,`eq.${a}`)}),this}not(t,e,a){return this.url.searchParams.append(t,`not.${e}.${a}`),this}or(t,{foreignTable:e,referencedTable:a=e}={}){const i=a?`${a}.or`:"or";return this.url.searchParams.append(i,`(${t})`),this}filter(t,e,a){return this.url.searchParams.append(t,`${e}.${a}`),this}},yK=class{constructor(t,{headers:e={},schema:a,fetch:i,urlLengthLimit:r=8e3,retry:s}){this.url=t,this.headers=new Headers(e),this.schema=a,this.fetch=i,this.urlLengthLimit=r,this.retry=s}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(t,e){const{head:a=!1,count:i}=e??{},r=a?"HEAD":"GET";let s=!1;const c=(t??"*").split("").map(h=>/\s/.test(h)&&!s?"":(h==='"'&&(s=!s),h)).join(""),{url:d,headers:p}=this.cloneRequestState();return d.searchParams.set("select",c),i&&p.append("Prefer",`count=${i}`),new Ns({method:r,url:d,headers:p,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(t,{count:e,defaultToNull:a=!0}={}){var i;const r="POST",{url:s,headers:c}=this.cloneRequestState();if(e&&c.append("Prefer",`count=${e}`),a||c.append("Prefer","missing=default"),Array.isArray(t)){const d=t.reduce((p,h)=>p.concat(Object.keys(h)),[]);if(d.length>0){const p=[...new Set(d)].map(h=>`"${h}"`);s.searchParams.set("columns",p.join(","))}}return new Ns({method:r,url:s,headers:c,schema:this.schema,body:t,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(t,{onConflict:e,ignoreDuplicates:a=!1,count:i,defaultToNull:r=!0}={}){var s;const c="POST",{url:d,headers:p}=this.cloneRequestState();if(p.append("Prefer",`resolution=${a?"ignore":"merge"}-duplicates`),e!==void 0&&d.searchParams.set("on_conflict",e),i&&p.append("Prefer",`count=${i}`),r||p.append("Prefer","missing=default"),Array.isArray(t)){const h=t.reduce((f,m)=>f.concat(Object.keys(m)),[]);if(h.length>0){const f=[...new Set(h)].map(m=>`"${m}"`);d.searchParams.set("columns",f.join(","))}}return new Ns({method:c,url:d,headers:p,schema:this.schema,body:t,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(t,{count:e}={}){var a;const i="PATCH",{url:r,headers:s}=this.cloneRequestState();return e&&s.append("Prefer",`count=${e}`),new Ns({method:i,url:r,headers:s,schema:this.schema,body:t,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:t}={}){var e;const a="DELETE",{url:i,headers:r}=this.cloneRequestState();return t&&r.append("Prefer",`count=${t}`),new Ns({method:a,url:i,headers:r,schema:this.schema,fetch:(e=this.fetch)!==null&&e!==void 0?e:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function Fc(t){"@babel/helpers - typeof";return Fc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fc(t)}function mK(t,e){if(Fc(t)!="object"||!t)return t;var a=t[Symbol.toPrimitive];if(a!==void 0){var i=a.call(t,e);if(Fc(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function fK(t){var e=mK(t,"string");return Fc(e)=="symbol"?e:e+""}function wK(t,e,a){return(e=fK(e))in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function yS(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),a.push.apply(a,i)}return a}function Id(t){for(var e=1;e<arguments.length;e++){var a=arguments[e]!=null?arguments[e]:{};e%2?yS(Object(a),!0).forEach(function(i){wK(t,i,a[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):yS(Object(a)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(a,i))})}return t}var gK=class tT{constructor(e,{headers:a={},schema:i,fetch:r,timeout:s,urlLengthLimit:c=8e3,retry:d}={}){this.url=e,this.headers=new Headers(a),this.schemaName=i,this.urlLengthLimit=c;const p=r??globalThis.fetch;s!==void 0&&s>0?this.fetch=(h,f)=>{const m=new AbortController,g=setTimeout(()=>m.abort(),s),z=f?.signal;if(z){if(z.aborted)return clearTimeout(g),p(h,f);const j=()=>{clearTimeout(g),m.abort()};return z.addEventListener("abort",j,{once:!0}),p(h,Id(Id({},f),{},{signal:m.signal})).finally(()=>{clearTimeout(g),z.removeEventListener("abort",j)})}return p(h,Id(Id({},f),{},{signal:m.signal})).finally(()=>clearTimeout(g))}:this.fetch=p,this.retry=d}from(e){if(!e||typeof e!="string"||e.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new yK(new URL(`${this.url}/${e}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(e){return new tT(this.url,{headers:this.headers,schema:e,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}rpc(e,a={},{head:i=!1,get:r=!1,count:s}={}){var c;let d;const p=new URL(`${this.url}/rpc/${e}`);let h;const f=z=>z!==null&&typeof z=="object"&&(!Array.isArray(z)||z.some(f)),m=i&&Object.values(a).some(f);m?(d="POST",h=a):i||r?(d=i?"HEAD":"GET",Object.entries(a).filter(([z,j])=>j!==void 0).map(([z,j])=>[z,Array.isArray(j)?`{${j.join(",")}}`:`${j}
16`]).forEach(([z,j])=>{p.searchParams.append(z,j)})):(d="POST",h=a);const g=new Headers(this.headers);return m?g.set("Prefer",s?`count=${s},return=minimal`:"return=minimal"):s&&g.set("Prefer",`count=${s}`),new Ns({method:d,url:p,headers:g,schema:this.schemaName,body:h,fetch:(c=this.fetch)!==null&&c!==void 0?c:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class kK{constructor(){}static detectEnvironment(){var e;if(typeof WebSocket<"u")return{type:"native",wsConstructor:WebSocket};const a=globalThis;if(typeof globalThis<"u"&&typeof a.WebSocket<"u")return{type:"native",wsConstructor:a.WebSocket};const i=typeof global<"u"?global:void 0;if(i&&typeof i.WebSocket<"u")return{type:"native",wsConstructor:i.WebSocket};if(typeof globalThis<"u"&&typeof a.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&a.EdgeRuntime||typeof navigator<"u"&&(!((e=navigator.userAgent)===null||e===void 0)&&e.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};const r=globalThis.process;if(r){const s=r.versions;if(s&&s.node){const c=s.node,d=parseInt(c.replace(/^v/,"").split(".")[0]);return d>=22?typeof globalThis.WebSocket<"u"?{type:"native",wsConstructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${d} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${d} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option: 17import ws from "ws" 18new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const e=this.detectEnvironment();if(e.wsConstructor)return e.wsConstructor;let a=e.error||"WebSocket not supported in this environment.";throw e.workaround&&(a+=` 19 20Suggested solution: ${e.workaround}`),new Error(a)}static isWebSocketSupported(){try{const e=this.detectEnvironment();return e.type==="native"||e.type==="ws"}catch{return!1}}}const zK="2.106.2",bK=`realtime-js/${zK}`,jK="1.0.0",aT="2.0.0",vK=aT,SK=1e4,xK=100,jo={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},iT={close:"phx_close",error:"phx_error",join:"phx_join",leave:"phx_leave",access_token:"access_token"},Gw={connecting:"connecting",closing:"closing",closed:"closed"};class _K{constructor(e){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=e??[]}encode(e,a){if(e.event===this.BROADCAST_EVENT&&!(e.payload instanceof ArrayBuffer)&&typeof e.payload.event=="string")return a(this._binaryEncodeUserBroadcastPush(e));let i=[e.join_ref,e.ref,e.topic,e.event,e.payload];return a(JSON.stringify(i))}_binaryEncodeUserBroadcastPush(e){var a;return this._isArrayBuffer((a=e.payload)===null||a===void 0?void 0:a.payload)?this._encodeBinaryUserBroadcastPush(e):this._encodeJsonUserBroadcastPush(e)}_encodeBinaryUserBroadcastPush(e){var a,i;const r=(i=(a=e.payload)===null||a===void 0?void 0:a.payload)!==null&&i!==void 0?i:new ArrayBuffer(0);return this._encodeUserBroadcastPush(e,this.BINARY_ENCODING,r)}_encodeJsonUserBroadcastPush(e){var a,i;const r=(i=(a=e.payload)===null||a===void 0?void 0:a.payload)!==null&&i!==void 0?i:{},c=new TextEncoder().encode(JSON.stringify(r)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,c)}_encodeUserBroadcastPush(e,a,i){var r,s;const c=e.topic,d=(r=e.ref)!==null&&r!==void 0?r:"",p=(s=e.join_ref)!==null&&s!==void 0?s:"",h=e.payload.event,f=this.allowedMetadataKeys?this._pick(e.payload,this.allowedMetadataKeys):{},m=Object.keys(f).length===0?"":JSON.stringify(f);
20if(p.length>255)throw new Error(`joinRef length ${p.length} exceeds maximum of 255`);if(d.length>255)throw new Error(`ref length ${d.length} exceeds maximum of 255`);if(c.length>255)throw new Error(`topic length ${c.length} exceeds maximum of 255`);if(h.length>255)throw new Error(`userEvent length ${h.length} exceeds maximum of 255`);if(m.length>255)throw new Error(`metadata length ${m.length} exceeds maximum of 255`);const g=this.USER_BROADCAST_PUSH_META_LENGTH+p.length+d.length+c.length+h.length+m.length,z=new ArrayBuffer(this.HEADER_LENGTH+g);let j=new DataView(z),v=0;j.setUint8(v++,this.KINDS.userBroadcastPush),j.setUint8(v++,p.length),j.setUint8(v++,d.length),j.setUint8(v++,c.length),j.setUint8(v++,h.length),j.setUint8(v++,m.length),j.setUint8(v++,a),Array.from(p,S=>j.setUint8(v++,S.charCodeAt(0))),Array.from(d,S=>j.setUint8(v++,S.charCodeAt(0))),Array.from(c,S=>j.setUint8(v++,S.charCodeAt(0))),Array.from(h,S=>j.setUint8(v++,S.charCodeAt(0))),Array.from(m,S=>j.setUint8(v++,S.charCodeAt(0)));var _=new Uint8Array(z.byteLength+i.byteLength);return _.set(new Uint8Array(z),0),_.set(new Uint8Array(i),z.byteLength),_.buffer}decode(e,a){if(this._isArrayBuffer(e)){let i=this._binaryDecode(e);return a(i)}if(typeof e=="string"){const i=JSON.parse(e),[r,s,c,d,p]=i;return a({join_ref:r,ref:s,topic:c,event:d,payload:p})}return a({})}_binaryDecode(e){const a=new DataView(e),i=a.getUint8(0),r=new TextDecoder;if(i===this.KINDS.userBroadcast)return this._decodeUserBroadcast(e,a,r)}_decodeUserBroadcast(e,a,i){const r=a.getUint8(1),s=a.getUint8(2),c=a.getUint8(3),d=a.getUint8(4);let p=this.HEADER_LENGTH+4;const h=i.decode(e.slice(p,p+r));p=p+r;const f=i.decode(e.slice(p,p+s));p=p+s;const m=i.decode(e.slice(p,p+c));p=p+c;const g=e.slice(p,e.byteLength),z=d===this.JSON_ENCODING?JSON.parse(i.decode(g)):g,j={type:this.BROADCAST_EVENT,event:f,payload:z};return c>0&&(j.meta=JSON.parse(m)),{join_ref:null,ref:null,topic:h,event:this.BROADCAST_EVENT,payload:j}}_isArrayBuffer(e){var a;return e instanceof ArrayBuffer||((a=e?.constructor)===null||a===void 0?void 0:a.name)==="ArrayBuffer"}_pick(e,a){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).filter(([i])=>a.includes(i)))}}var gt;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.tsrange="tsrange",t.tstzrange="tstzrange"})(gt||(gt={}));const mS=(t,e,a={})=>{var i;const r=(i=a.skipTypes)!==null&&i!==void 0?i:[];return e?Object.keys(e).reduce((s,c)=>(s[c]=TK(c,t,e,r),s),{}):{}},TK=(t,e,a,i)=>{const r=e.find(d=>d.name===t),s=r?.type,c=a[t];return s&&!i.includes(s)?nT(s,c):Vw(c)},nT=(t,e)=>{if(t.charAt(0)==="_"){const a=t.slice(1,t.length);return CK(e,a)}switch(t){case gt.bool:return EK(e);case gt.float4:case gt.float8:case gt.int2:case gt.int4:case gt.int8:case gt.numeric:case gt.oid:return AK(e);case gt.json:case gt.jsonb:return PK(e);case gt.timestamp:return RK(e);case gt.abstime:case gt.date:case gt.daterange:case gt.int4range:case gt.int8range:case gt.money:case gt.reltime:case gt.text:case gt.time:case gt.timestamptz:case gt.timetz:case gt.tsrange:case gt.tstzrange:return Vw(e);default:return Vw(e)}},Vw=t=>t,EK=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},AK=t=>{if(typeof t=="string"){const e=parseFloat(t);if(!Number.isNaN(e))return e}return t},PK=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch{return t}return t},CK=(t,e)=>{if(typeof t!="string")return t;const a=t.length-1,i=t[a];if(t[0]==="{"&&i==="}"){let s;const c=t.slice(1,a);try{s=JSON.parse("["+c+"]")}catch{s=c?c.split(","):[]}return s.map(d=>nT(e,d))}return t},RK=t=>typeof t=="string"?t.replace(" ","T"):t,oT=t=>{const e=new URL(t);return e.protocol=e.protocol.replace(/^ws/i,"http"),e.pathname=e.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),e.pathname===""||e.pathname==="/"?e.pathname="/api/broadcast":e.pathname=e.pathname+"/api/broadcast",e.href};var Pc=t=>typeof t=="function"?t:function(){return t},DK=typeof self<"u"?self:null,Bs=typeof window<"u"?window:null,qi=DK||Bs||globalThis,OK="2.0.0",UK=1e4,LK=1e3,Yi={connecting:0,open:1,closing:2,closed:3},Na={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},An={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Fw={longpoll:"longpoll",websocket:"websocket"},KK={complete:4},Hw="base64url.bearer.phx.",Wd=class{constructor(t,e,a,i){this.channel=t,this.event=e,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=i,this.timeoutTimer=null,this.recHo
vendor: 8,700 bytes, line 20
20oks=[],this.sent=!1,this.ref=void 0}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:t,response:e,_ref:a}){this.recHooks.filter(i=>i.status===t).forEach(i=>i.callback(e))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},rT=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},MK=class{constructor(t,e,a){this.state=Na.closed,this.topic=t,this.params=Pc(e||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Wd(this,An.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new rT(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Na.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(i=>i.send()),this.pushBuffer=[]}),this.joinPush.receive("error",i=>{this.state=Na.errored,this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,i),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic}`),this.state=Na.closed,this.socket.remove(this)}),this.onError(i=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,i),this.isJoining()&&this.joinPush.reset(),this.state=Na.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),new Wd(this,An.leave,Pc({}),this.timeout).send(),this.state=Na.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(An.reply,(i,r)=>{this.trigger(this.replyEventName(r),i)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}teardown(){this.pushBuffer.forEach(t=>t.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=Na.closed,this.bindings=[]}onClose(t){this.on(An.close,t)}onError(t){return this.on(An.error,e=>t(e))}on(t,e){let a=this.bindingRef++;return this.bindings.push({event:t,ref:a,callback:e}),a}off(t,e){this.bindings=this.bindings.filter(a=>!(a.event===t&&(typeof e>"u"||e===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,a=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let i=new Wd(this,t,function(){return e},a);return this.canPush()?i.send():(i.startTimeout(),this.pushBuffer.push(i)),i}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Na.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(An.close,"leave")},a=new Wd(this,An.leave,Pc({}),t);return a.receive("ok",()=>e()).receive("timeout",()=>e()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(t,e,a){return e}filterBindings(t,e,a){return!0}isMember(t,e,a,i){return this.topic!==t?!1:i&&i!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:a,joinRef:i}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Na.joining,this.joinPush.resend(t))}trigger(t,e,a,i){let r=this.onMessage(t,e,a,i);if(e&&!r)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let s=this.bindings.filter(c=>c.event===t&&this.filterBindings(c,e,a));for(let c=0;c<s.length;c++)s[c].callback(r,a,i||this.joinRef())}replyEventName(t){return`chan_reply_${t}`}isClosed(){return this.state===Na.closed}isErrored(){return this.state===Na.errored}isJoined(){return this.state===Na.joined}isJoining(){return this.state===Na.joining}isLeaving(){return this.state===Na.leaving}},Yp=class{static request(t,e,a,i,r,s,c){if(qi.XDomainRequest){let d=new qi.XDomainRequest;return this.xdomainRequest(d,t,e,i,r,s,c)}else if(qi.XMLHttpRequest){let d=new qi.XMLHttpRequest;return this.xhrRequest(d,t,e,a,i,r,s,c)}else{if(qi.fetch&&qi.AbortController)return this.fetchRequest(t,e,a,i,r,s,c);throw new Error("No suitable XMLHttpRequest implementation found")}}static fetchRequest(t,e,a,i,r,s,c){let d={method:t,headers:a,body:i},p=null;return r&&(p=new AbortController,setTimeout(()=>p.abort(),r),d.signal=p.signal),qi.fetch(e,d).then(h=>h.text()).then(h=>this.parseJSON(h)).then(h=>c&&c(h)).catch(h=>{h.name==="AbortError"&&s?s():c&&c(null)}),p}static xdomainRequest(t,e,a,i,r,s,c){return t.timeout=r,t.open(e,a),t.onload=()=>{let d=this.parseJSON(t.responseText);c&&c(d)},s&&(t.ontimeout=s),t.onprogress=()=>{},t.send(i),t}static xhrRequest(t,e,a,i,r,s,c,d){t.open(e,a,!0),t.timeout=s;for(let[p,h]of Object.entries(i))t.setRequestHeader(p,h);return t.onerror=()=>d&&d(null),t.onreadystatechange=()=>{if(t.readyState===KK.complete&&d){let p=this.parseJSON(t.responseText);d(p)}},c&&(t.ontimeout=c),t.send(r),t}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let a=[];for(var i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;let r=e?`${e}[${i}]`:i,s=t[i];typeof s=="object"?a.push(this.serialize(s,r)):a.push(encodeURIComponent(r)+"="+encodeURIComponent(s))}return a.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let a=t.match(/\?/)?"&":"?";return`${t}${a}${this.serialize(e)}`}},NK=t=>{let e="",a=new Uint8Array(t),i=a.byteLength;for(let r=0;r<i;r++)e+=String.fromCharCode(a[r]);return btoa(e)},bs=class{constructor(t,e){e&&e.length===2&&e[1].startsWith(Hw)&&(this.authToken=atob(e[1].slice(Hw.length))),this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=Yi.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Fw.websocket),"$1/"+Fw.longpoll)}endpointURL(){return Yp.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(t,e,a){this.close(t,e,a),this.readyState=Yi.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Yi.open||this.readyState===Yi.connecting}poll(){const t={Accept:"application/json"};this.authToken&&(t["X-Phoenix-AuthToken"]=this.authToken),this.ajax("GET",t,null,()=>this.ontimeout(),e=>{if(e){var{status:a,token:i,messages:r}=e;if(a===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=i}else a=0;switch(a){case 200:r.forEach(s=>{setTimeout(()=>this.onmessage({data:s}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Yi.open,this.onopen({}),this.poll();break;
20case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${a}`)}})}send(t){typeof t!="string"&&(t=NK(t)),this.currentBatch?this.currentBatch.push(t):this.awaitingBatchAck?this.batchBuffer.push(t):(this.currentBatch=[t],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0))}batchSend(t){this.awaitingBatchAck=!0,this.ajax("POST",{"Content-Type":"application/x-ndjson"},t.join(` 21`),()=>this.onerror("timeout"),e=>{this.awaitingBatchAck=!1,!e||e.status!==200?(this.onerror(e&&e.status),this.closeAndRetry(1011,"internal server error",!1)):this.batchBuffer.length>0&&(this.batchSend(this.batchBuffer),this.batchBuffer=[])})}close(t,e,a){for(let r of this.reqs)r.abort();this.readyState=Yi.closed;let i=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:t,reason:e,wasClean:a});this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",i)):this.onclose(i)}ajax(t,e,a,i,r){let s,c=()=>{this.reqs.delete(s),i()};s=Yp.request(t,this.endpointURL(),e,a,this.timeout,c,d=>{this.reqs.delete(s),this.isActive()&&r(d)}),this.reqs.add(s)}},BK=class jc{constructor(e,a={}){let i=a.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=e,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(i.state,r=>{let{onJoin:s,onLeave:c,onSync:d}=this.caller;this.joinRef=this.channel.joinRef(),this.state=jc.syncState(this.state,r,s,c),this.pendingDiffs.forEach(p=>{this.state=jc.syncDiff(this.state,p,s,c)}),this.pendingDiffs=[],d()}),this.channel.on(i.diff,r=>{let{onJoin:s,onLeave:c,onSync:d}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=jc.syncDiff(this.state,r,s,c),d())})}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}list(e){return jc.list(this.state,e)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(e,a,i,r){let s=this.clone(e),c={},d={};return this.map(s,(p,h)=>{a[p]||(d[p]=h)}),this.map(a,(p,h)=>{let f=s[p];if(f){let m=h.metas.map(v=>v.phx_ref),g=f.metas.map(v=>v.phx_ref),z=h.metas.filter(v=>g.indexOf(v.phx_ref)<0),j=f.metas.filter(v=>m.indexOf(v.phx_ref)<0);z.length>0&&(c[p]=h,c[p].metas=z),j.length>0&&(d[p]=this.clone(f),d[p].metas=j)}else c[p]=h}),this.syncDiff(s,{joins:c,leaves:d},i,r)}static syncDiff(e,a,i,r){let{joins:s,leaves:c}=this.clone(a);return i||(i=function(){}),r||(r=function(){}),this.map(s,(d,p)=>{let h=e[d];if(e[d]=this.clone(p),h){let f=e[d].metas.map(g=>g.phx_ref),m=h.metas.filter(g=>f.indexOf(g.phx_ref)<0);e[d].metas.unshift(...m)}i(d,h,p)}),this.map(c,(d,p)=>{let h=e[d];if(!h)return;let f=p.metas.map(m=>m.phx_ref);h.metas=h.metas.filter(m=>f.indexOf(m.phx_ref)<0),r(d,h,p),h.metas.length===0&&delete e[d]}),e}static list(e,a){return a||(a=function(i,r){return r}),this.map(e,(i,r)=>a(i,r))}static map(e,a){return Object.getOwnPropertyNames(e).map(i=>a(i,e[i]))}static clone(e){return JSON.parse(JSON.stringify(e))}},Gd={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(a))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[a,i,r,s,c]=JSON.parse(t);return e({join_ref:a,ref:i,topic:r,event:s,payload:c})}},binaryEncode(t){let{join_ref:e,ref:a,event:i,topic:r,payload:s}=t,c=this.META_LENGTH+e.length+a.length+r.length+i.length,d=new ArrayBuffer(this.HEADER_LENGTH+c),p=new DataView(d),h=0;p.setUint8(h++,this.KINDS.push),p.setUint8(h++,e.length),p.setUint8(h++,a.length),p.setUint8(h++,r.length),p.setUint8(h++,i.length),Array.from(e,m=>p.setUint8(h++,m.charCodeAt(0))),Array.from(a,m=>p.setUint8(h++,m.charCodeAt(0))),Array.from(r,m=>p.setUint8(h++,m.charCodeAt(0))),Array.from(i,m=>p.setUint8(h++,m.charCodeAt(0)));var f=new Uint8Array(d.byteLength+s.byteLength);return f.set(new Uint8Array(d),0),f.set(new Uint8Array(s),d.byteLength),f.buffer},binaryDecode(t){let e=new DataView(t),a=e.getUint8(0),i=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(t,e,i);case this.KINDS.reply:return this.decodeReply(t,e,i);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,i)}},decodePush(t,e,a){let i=e.getUint8(1),r=e.getUint8(2),s=e.getUint8(3),c=this.HEADER_LENGTH+this.META_LENGTH-1,d=a.decode(t.slice(c,c+i));c=c+i;let p=a.decode(t.slice(c,c+r));c=c+r;let h=a.decode(t.slice(c,c+s));c=c+s;let f=t.slice(c,t.byteLength);return{join_ref:d,ref:null,topic:p,event:h,payload:f}},decodeReply(t,e,a){let i=e.getUint8(1),r=e.getUint8(2),s=e.getUint8(3),c=e.getUint8(4),d=this.HEADER_LENGTH+this.META_LENGTH,p=a.decode(t.slice(d,d+i));d=d+i;let h=a.decode(t.slice(d,d+r));d=d+r;let f=a.decode(t.slice(d,d+s));d=d+s;let m=a.decode(t.slice(d,d+c));d=d+c;let g=t.slice(d,t.byteLength),z={status:m,response:g};return{join_ref:p,ref:h,topic:f,event:An.reply,payload:z}},decodeBroadcast(t,e,a){let i=e.getUint8(1),r=e.getUint8(2),s=this.HEADER_LENGTH+2,c=a.decode(t.slice(s,s+i));s=s+i;let d=a.decode(t.slice(s,s+r));s=s+r;let p=t.slice(s,t.byteLength);return{join_ref:null,ref:null,topic:c,event:d,payload:p}}},$K=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=e.timeout||UK,this.transport=e.transport||qi.WebSocket||bs,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=e.longPollFallbackMs,this.fallbackTimer=null;let a=null;try{a=qi&&qi.sessionStorage}catch{}this.sessionStore=e.sessionStorage||a,this.establishedConnections=0,this.defaultEncoder=Gd.encode.bind(Gd),this.defaultDecoder=Gd.decode.bind(Gd),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==bs?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let i=null;Bs&&Bs.addEventListener&&(Bs.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),i=this.connectClock)}),Bs.addEventListener("pageshow",r=>{i===this.connectClock&&(i=null,this.connect())}),Bs.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?this.pageHidden=!0:(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean&&this.teardown(()=>this.connect()))})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.autoSendHeartbeat=e.autoSendHeartbeat??!0,this.heartbeatCallback=e.heartbeatCallback??(()=>{}),this.rejoinAfterMs=r=>e.rejoinAfterMs?e.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>e.reconnectAfterMs?e.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=e.logger||null,!this.logger&&e.debug&&(this.logger=(r,s,c)=>{console.log(`${r}: ${s}`,c)}),this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=Pc(e.params||{}),this.endPoint=`${t}/${Fw.websocket}`,this.vsn=e.vsn||OK,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new rT(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{e.beforeReconnect&&await e.beforeReconnect(),this.connect()})},this.reconnectAfterMs),this.authToken=e.authToken}getLongPollTransport(){return bs}replaceTransport(t){this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn&&(this.conn.
vendor: 4,337 bytes, line 21
21close(),this.conn=null),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=Yp.appendParams(Yp.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,a){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,t&&t()},e,a)}connect(t){t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=Pc(t)),!(this.conn&&!this.disconnecting)&&(this.longPollFallbackMs&&this.transport!==bs?this.connectWithFallback(bs,this.longPollFallbackMs):this.transportConnect())}log(t,e,a){this.logger&&this.logger(t,e,a)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onHeartbeat(t){this.heartbeatCallback=t}ping(t){if(!this.isConnected())return!1;let e=this.makeRef(),a=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:e});let i=this.onMessage(r=>{r.ref===e&&(this.off([i]),t(Date.now()-a))});return!0}transportName(t){return t===bs?"LongPoll":t.name}transportConnect(){this.connectClock++,this.closeWasClean=!1;let t;this.authToken&&(t=["phoenix",`${Hw}${btoa(this.authToken).replace(/=/g,"")}`]),this.conn=new this.transport(this.endPointURL(),t),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e)}getSession(t){return this.sessionStore&&this.sessionStore.getItem(t)}storeSession(t,e){this.sessionStore&&this.sessionStore.setItem(t,e)}connectWithFallback(t,e=2500){clearTimeout(this.fallbackTimer);let a=!1,i=!0,r,s,c=this.transportName(t),d=p=>{this.log("transport",`falling back to ${c}...`,p),this.off([r,s]),i=!1,this.replaceTransport(t),this.transportConnect()};if(this.getSession(`phx:fallback:${c}`))return d("memorized");this.fallbackTimer=setTimeout(d,e),s=this.onError(p=>{this.log("transport","error",p),i&&!a&&(clearTimeout(this.fallbackTimer),d(p))}),this.fallbackRef&&this.off([this.fallbackRef]),this.fallbackRef=this.onOpen(()=>{if(a=!0,!i){let p=this.transportName(t);return this.primaryPassedHealthCheck||this.storeSession(`phx:fallback:${p}`,"true"),this.log("transport",`established ${p} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(d,e),this.ping(p=>{this.log("transport","connected to primary after",p),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat&&this.resetHeartbeat(),this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(t){this.log("error","error in heartbeat callback",t)}this.triggerChanError(new Error("heartbeat timeout")),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),LK,"heartbeat timeout")}}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,a){if(!this.conn)return t&&t();const i=this.conn;this.waitForBufferDone(i,()=>{e?i.close(e,a||""):i.close(),this.waitForSocketClosed(i,()=>{this.conn===i&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){}
21,this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e,a=1){if(a===5||!t.bufferedAmount){e();return}setTimeout(()=>{this.waitForBufferDone(t,e,a+1)},150*a)}waitForSocketClosed(t,e,a=1){if(a===5||t.readyState===Yi.closed){e();return}setTimeout(()=>{this.waitForSocketClosed(t,e,a+1)},150*a)}onConnClose(t){this.conn&&(this.conn.onclose=()=>{}),this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(t),this.clearHeartbeats(),this.closeWasClean||this.reconnectTimer.scheduleTimeout(),this.triggerStateCallbacks("close",t)}onConnError(t){this.hasLogger()&&this.log("transport","error",t);let e=this.transport,a=this.establishedConnections;this.triggerStateCallbacks("error",t,e,a),(e===this.transport||a>0)&&this.triggerChanError(t)}triggerChanError(t){this.channels.forEach(e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(An.error,t)})}connectionState(){switch(this.conn&&this.conn.readyState){case Yi.connecting:return"connecting";case Yi.open:return"open";case Yi.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e!==t)}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([a])=>t.indexOf(a)===-1)}channel(t,e={}){let a=new MK(t,e,this);return this.channels.push(a),a}push(t){if(this.hasLogger()){let{topic:e,event:a,payload:i,ref:r,join_ref:s}=t;this.log("push",`${e} ${a} (${s}, ${r})`,i)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(t){this.log("error","error in heartbeat callback",t)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(t){this.log("error","error in heartbeat callback",t)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:a,event:i,payload:r,ref:s,join_ref:c}=e;if(s&&s===this.pendingHeartbeatRef){const d=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(r.status==="ok"?"ok":"error",d)}catch(p){this.log("error","error in heartbeat callback",p)}this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat&&(this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}this.hasLogger()&&this.log("receive",`${r.status||""} ${a} ${i} ${s&&"("+s+")"||""}`.trim(),r);for(let d=0;d<this.channels.length;d++){const p=this.channels[d];p.isMember(a,i,r,c)&&p.trigger(i,r,s,c)}this.triggerStateCallbacks("message",e)})}triggerStateCallbacks(t,...e){try{this.stateChangeCallbacks[t].forEach(([a,i])=>{try{i(...e)}catch(r){this.log("error",`error in ${t} callback`,r)}})}catch(a){this.log("error",`error triggering ${t} callbacks`,a)}}leaveOpenTopic(t){let e=this.channels.find(a=>a.topic===t&&(a.isJoined()||a.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}};class Cc{constructor(e,a){const i=WK(a);this.presence=new BK(e.getChannel(),i),this.presence.onJoin((r,s,c)=>{const d=Cc.onJoinPayload(r,s,c);e.getChannel().trigger("presence",d)}),this.presence.onLeave((r,s,c)=>{const d=Cc.onLeavePayload(r,s,c);e.getChannel().trigger("presence",d)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return Cc.transformState(this.presence.state)}static transformState(e){return e=IK(e),Object.getOwnPropertyNames(e).reduce((a,i)=>{const r=e[i];return a[i]=Cp(r),a},{})}static onJoinPayload(e,a,i){const r=fS(a),s=Cp(i);return{event:"join",key:e,currentPresences:r,newPresences:s}}static onLeavePayload(e,a,i){const r=fS(a),s=Cp(i);return{event:"leave",key:e,currentPresences:r,leftPresences:s}}}function Cp(t){return t.metas.map(e=>(e.presence_ref=e.phx_ref,delete e.phx_ref,delete e.phx_ref_prev,e))}function IK(t){return JSON.parse(JSON.stringify(t))}function WK(t){return t?.events&&{events:t.events}}function fS(t){return t?.metas?Cp(t):[]}var wS;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(wS||(wS={}));class GK{get state(){return this.presenceAdapter.state}constructor(e,a){this.channel=e,this.presenceAdapter=new Cc(this.channel.channelAdapter,a)}}function VK(t){if(t instanceof Error)return t;if(typeof t=="string")return new Error(t);if(t&&typeof t=="object"){const e=t;
21if(typeof e.code=="number"){const a=typeof e.reason=="string"&&e.reason?` (${e.reason})`:"";return new Error(`socket closed: ${e.code}${a}`,{cause:t})}return new Error("channel error: transport failure",{cause:t})}return new Error("channel error: connection lost")}class FK{constructor(e,a,i){const r=HK(i);this.channel=e.getSocket().channel(a,r),this.socket=e}get state(){return this.channel.state}set state(e){this.channel.state=e}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(e,a){return this.channel.on(e,a)}off(e,a){this.channel.off(e,a)}subscribe(e){return this.channel.join(e)}unsubscribe(e){return this.channel.leave(e)}teardown(){this.channel.teardown()}onClose(e){this.channel.onClose(e)}onError(e){return this.channel.onError(e)}push(e,a,i){let r;try{r=this.channel.push(e,a,i)}catch{throw new Error(`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`)}if(this.channel.pushBuffer.length>xK){const s=this.channel.pushBuffer.shift();s.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${s.event}`,s.payload())}return r}updateJoinPayload(e){const a=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},a),e)}canPush(){return this.socket.isConnected()&&this.state===jo.joined}isJoined(){return this.state===jo.joined}isJoining(){return this.state===jo.joining}isClosed(){return this.state===jo.closed}isLeaving(){return this.state===jo.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function HK(t){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},t.config)}}var gS;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELETE="DELETE"})(gS||(gS={}));var qs;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes",t.SYSTEM="system"})(qs||(qs={}));var Pn;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(Pn||(Pn={}));class Rc{get state(){return this.channelAdapter.state}set state(e){this.channelAdapter.state=e}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(e,a={config:{}},i){var r,s;if(this.topic=e,this.params=a,this.socket=i,this.bindings={},this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},a.config),this.channelAdapter=new FK(this.socket.socketAdapter,e,this.params),this.presence=new GK(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=oT(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&(!((s=(r=this.params.config)===null||r===void 0?void 0:r.broadcast)===null||s===void 0)&&s.replay))throw new Error(`tried to use replay on public channel '${this.topic}'. It must be a private channel.`)}subscribe(e,a=this.timeout){var i,r,s;if(this.socket.isConnected()||this.socket.connect(),this.channelAdapter.isClosed()){const{config:{broadcast:c,presence:d,private:p}}=this.params,h=(r=(i=this.bindings.postgres_changes)===null||i===void 0?void 0:i.map(z=>z.filter))!==null&&r!==void 0?r:[],f=!!this.bindings[qs.PRESENCE]&&this.bindings[qs.PRESENCE].length>0||((s=this.params.config.presence)===null||s===void 0?void 0:s.enabled)===!0,m={},g={broadcast:c,presence:Object.assign(Object.assign({},d),{enabled:f}),postgres_changes:h,private:p};this.socket.accessTokenValue&&(m.access_token=this.socket.accessTokenValue),this._onError(z=>{e?.(Pn.CHANNEL_ERROR,VK(z))}),this._onClose(()=>e?.(Pn.CLOSED)),this.updateJoinPayload(Object.assign({config:g},m)),this._updateFilterMessage(),this.channelAdapter.subscribe(a).receive("ok",async({postgres_changes:z})=>{if(this.socket._isManualToken()||this.socket.setAuth(),z===void 0){e?.(Pn.SUBSCRIBED);return}this._updatePostgresBindings(z,e)}).receive("error",z=>{this.state=jo.errored;const j=Object.values(z).join(", ")||"error";e?.(Pn.CHANNEL_ERROR,new Error(j,{cause:z}))}).receive("timeout",()=>{e?.(Pn.TIMED_OUT)})}return this}_updatePostgresBindings(e,a){var i;const r=this.bindings.postgres_changes,s=(i=r?.length)!==null&&i!==void 0?i:0,c=[];for(let d=0;d<s;d++){const p=r[d],{filter:{event:h,schema:f,table:m,filter:g}}=p,z=e&&e[d];if(z&&z.event===h&&Rc.isFilterValueEqual(z.schema,f)&&Rc.isFilterValueEqual(z.table,m)&&Rc.isFilterValueEqual(z.filter,g))c.push(Object.assign(Object.assign({},p),{id:z.id}));else{this.unsubscribe(),this.state=jo.errored,a?.(Pn.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=c,this.state!=jo.errored&&a&&a(Pn.SUBSCRIBED)}presenceState(){return this.presence.state}async track(e,a={}){return await this.send({type:"presence",event:"track",payload:e},a.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,a,i){const r=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),s=e===qs.PRESENCE||e===qs.POSTGRES_CHANGES;if(r&&s)throw this.socket.log("channel",`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`),new Error(`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(e,a,i)}async httpSend(e,a,i={}){var r;if(a==null)return Promise.reject(new Error("Payload is required for httpSend()"));const s={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(s.Authorization=`Bearer ${this.socket.accessTokenValue}`);const c={method:"POST",headers:s,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:a,private:this.private}]})},d=await this._fetchWithTimeout(this.broadcastEndpointURL,c,(r=i.timeout)!==null&&r!==void 0?r:this.timeout);if(d.status===202)return{success:!0};let p=d.statusText;
21try{const h=await d.json();p=h.error||h.message||p}catch{}return Promise.reject(new Error(p))}async send(e,a={}){var i,r;if(!this.channelAdapter.canPush()&&e.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");const{event:s,payload:c}=e,d={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(d.Authorization=`Bearer ${this.socket.accessTokenValue}`);const p={method:"POST",headers:d,body:JSON.stringify({messages:[{topic:this.subTopic,event:s,payload:c,private:this.private}]})};try{const h=await this._fetchWithTimeout(this.broadcastEndpointURL,p,(i=a.timeout)!==null&&i!==void 0?i:this.timeout);return await((r=h.body)===null||r===void 0?void 0:r.cancel()),h.ok?"ok":"error"}catch(h){return h instanceof Error&&h.name==="AbortError"?"timed out":"error"}}else return new Promise(s=>{var c,d,p;const h=this.channelAdapter.push(e.type,e,a.timeout||this.timeout);e.type==="broadcast"&&!(!((p=(d=(c=this.params)===null||c===void 0?void 0:c.config)===null||d===void 0?void 0:d.broadcast)===null||p===void 0)&&p.ack)&&s("ok"),h.receive("ok",()=>s("ok")),h.receive("error",()=>s("error")),h.receive("timeout",()=>s("timed out"))})}updateJoinPayload(e){this.channelAdapter.updateJoinPayload(e)}async unsubscribe(e=this.timeout){return new Promise(a=>{this.channelAdapter.unsubscribe(e).receive("ok",()=>a("ok")).receive("timeout",()=>a("timed out")).receive("error",()=>a("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(e,a,i){const r=new AbortController,s=setTimeout(()=>r.abort(),i),c=await this.socket.fetch(e,Object.assign(Object.assign({},a),{signal:r.signal}));return clearTimeout(s),c}_on(e,a,i){const r=e.toLocaleLowerCase(),s=this.channelAdapter.on(e,i),c={type:r,filter:a,callback:i,ref:s};return this.bindings[r]?this.bindings[r].push(c):this.bindings[r]=[c],this._updateFilterMessage(),this}_onClose(e){this.channelAdapter.onClose(e)}_onError(e){this.channelAdapter.onError(e)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((e,a,i)=>{var r,s,c,d,p,h,f;const m=e.event.toLocaleLowerCase();if(this._notThisChannelEvent(m,i))return!1;const g=(r=this.bindings[m])===null||r===void 0?void 0:r.find(z=>z.ref===e.ref);if(!g)return!0;if(["broadcast","presence","postgres_changes"].includes(m))if("id"in g){const z=g.id,j=(s=g.filter)===null||s===void 0?void 0:s.event;return z&&((c=a.ids)===null||c===void 0?void 0:c.includes(z))&&(j==="*"||j?.toLocaleLowerCase()===((d=a.data)===null||d===void 0?void 0:d.type.toLocaleLowerCase()))}else{const z=(h=(p=g?.filter)===null||p===void 0?void 0:p.event)===null||h===void 0?void 0:h.toLocaleLowerCase();return z==="*"||z===((f=a?.event)===null||f===void 0?void 0:f.toLocaleLowerCase())}else return g.type.toLocaleLowerCase()===m})}_notThisChannelEvent(e,a){const{close:i,error:r,leave:s,join:c}=iT;return a&&[i,r,s,c].includes(e)&&a!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((e,a,i)=>{if(typeof a=="object"&&"ids"in a){const r=a.data,{schema:s,table:c,commit_timestamp:d,type:p,errors:h}=r;return Object.assign(Object.assign({},{schema:s,table:c,commit_timestamp:d,eventType:p,new:{},old:{},errors:h}),this._getPayloadRecords(r))}return a})}copyBindings(e){if(this.joinedOnce)throw new Error("cannot copy bindings into joined channel");for(const a in e.bindings)for(const i of e.bindings[a])this._on(i.type,i.filter,i.callback)}static isFilterValueEqual(e,a){return(e??void 0)===(a??void 0)}_getPayloadRecords(e){const a={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(a.new=mS(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(a.old=mS(e.columns,e.old_record)),a}}class qK{constructor(e,a){this.socket=new $K(e,a)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(e){this.socket.heartbeatCallback=e}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(e,a,i,r=1e4){return new Promise(s=>{setTimeout(()=>s("timeout"),r),this.socket.disconnect(()=>{e(),s("ok")},a,i)})}push(e){this.socket.push(e)}log(e,a,i){this.socket.log(e,a,i)}makeRef(){return this.socket.makeRef()}onOpen(e){this.socket.onOpen(e)}onClose(e){this.socket.onClose(e)}onError(e){this.socket.onError(e)}onMessage(e){this.socket.onMessage(e)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==Gw.connecting}isDisconnecting(){return this.socket.connectionState()==Gw.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}const kS={HEARTBEAT_INTERVAL:25e3},ZK=[1e3,2e3,5e3,1e4],YK=1e4;function JK(){const t=new Map;return{get length(){return t.size},clear(){t.clear()},getItem(e){return t.has(e)?t.get(e):null},key(e){var a;return(a=Array.from(t.keys())[e])!==null&&a!==void 0?a:null},removeItem(e){t.delete(e)},setItem(e,a){t.set(e,String(a))}}}function QK(){try{if(typeof globalThis<"u"&&globalThis.sessionStorage)return globalThis.sessionStorage}catch{}return JK()}const XK=` 22 addEventListener("message", (e) => { 23 if (e.data.event === "start") { 24 setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); 25 } 26 });`;class eM{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){return this.worker?this._workerHeartbeatTimer:this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){return this.worker?this._pendingWorkerHeartbeatRef:this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(e,a){var i;if(this.channels=new Array,this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={}
26,this.ref=0,this.serializer=new _K,this._manuallySetToken=!1,this._authPromise=null,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._pendingDisconnectTimer=null,this._disconnectOnEmptyChannelsAfterMs=0,this._resolveFetch=s=>s?(...c)=>s(...c):(...c)=>fetch(...c),!(!((i=a?.params)===null||i===void 0)&&i.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=a.params.apikey;const r=this._initializeOptions(a);this.socketAdapter=new qK(e,r),this.httpEndpoint=oT(e),this.fetch=this._resolveFetch(a?.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.isConnected())){this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(e){const a=e.message;throw a.includes("Node.js")?new Error(`${a} 27 28To use Realtime in Node.js, you need to provide a WebSocket implementation: 29 30Option 1: Use Node.js 22+ which has native WebSocket support 31Option 2: Install and provide the "ws" package: 32 33 npm install ws 34 35 import ws from "ws" 36 const client = new RealtimeClient(url, { 37 ...options, 38 transport: ws 39 })`):new Error(`WebSocket not available: ${a}`)}this._handleNodeJsRaceCondition()}}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(e,a){return this._cancelPendingDisconnect(),this.isDisconnecting()?"ok":await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},e,a)}getChannels(){return this.channels}async removeChannel(e){const a=await e.unsubscribe();return a==="ok"&&e.teardown(),a}async removeAllChannels(){const e=this.channels.map(async i=>{const r=await i.unsubscribe();return i.teardown(),r}),a=await Promise.all(e);return await this.disconnect(),a}log(e,a,i){this.socketAdapter.log(e,a,i)}connectionState(){return this.socketAdapter.connectionState()||Gw.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(e,a={config:{}}){const i=`realtime:${e}`,r=this.getChannels().find(s=>s.topic===i);if(r)return r;{const s=new Rc(`realtime:${e}`,a,this);return this._cancelPendingDisconnect(),this.channels.push(s),s}}push(e){this.socketAdapter.push(e)}async setAuth(e=null){this._authPromise=this._performAuth(e);try{await this._authPromise}finally{this._authPromise=null}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(e){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(e)}_makeRef(){return this.socketAdapter.makeRef()}_remove(e){this.channels=this.channels.filter(a=>a.topic!==e.topic),this.channels.length===0&&(this.log("transport","no channels remaining, scheduling disconnect"),this._schedulePendingDisconnect())}_schedulePendingDisconnect(){if(this._cancelPendingDisconnect(),this._disconnectOnEmptyChannelsAfterMs===0){this.log("transport","disconnecting immediately - no channels"),this.disconnect();return}
39this._pendingDisconnectTimer=setTimeout(()=>{this._pendingDisconnectTimer=null,this.channels.length===0&&(this.log("transport","deferred disconnect fired - no channels, disconnecting"),this.disconnect())},this._disconnectOnEmptyChannelsAfterMs),this.log("transport",`deferred disconnect scheduled in ${this._disconnectOnEmptyChannelsAfterMs}ms`)}_cancelPendingDisconnect(){this._pendingDisconnectTimer!==null&&(this.log("transport","pending disconnect cancelled - channel activity detected"),clearTimeout(this._pendingDisconnectTimer),this._pendingDisconnectTimer=null)}async _performAuth(e=null){let a,i=!1;if(e)a=e,i=!0;else if(this.accessToken)try{a=await this.accessToken()}catch(r){this.log("error","Error fetching access token from callback",r),a=this.accessTokenValue}else a=this.accessTokenValue;i?this._manuallySetToken=!0:this.accessToken&&(this._manuallySetToken=!1),this.accessTokenValue!=a&&(this.accessTokenValue=a,this.channels.forEach(r=>{const s={access_token:a,version:bK};a&&r.updateJoinPayload(s),r.joinedOnce&&r.channelAdapter.isJoined()&&r.channelAdapter.push(iT.access_token,{access_token:a})}))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(e="general"){this._isManualToken()||this.setAuth().catch(a=>{this.log("error",`Error setting auth in ${e}`,a)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch(a=>{this.log("error","error waiting for auth on connect",a)}),this.worker&&!this.workerRef&&this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{this.worker&&this.workerRef&&this._terminateWorker()}),this.socketAdapter.onMessage(e=>{e.ref&&e.ref===this._pendingWorkerHeartbeatRef&&(this._pendingWorkerHeartbeatRef=null)})}_handleNodeJsRaceCondition(){this.socketAdapter.isConnected()&&this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(e){return(a,i)=>{a=="sent"&&this._setAuthSafely(),e&&e(a,i)}}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const e=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(e),this.workerRef.onerror=a=>{this.log("worker","worker error",a.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=a=>{a.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){this.workerRef&&(this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0)}_workerObjectUrl(e){let a;if(e)a=e;else{const i=new Blob([XK],{type:"application/javascript"});a=URL.createObjectURL(i)}return a}_initializeOptions(e){var a,i,r,s,c,d,p,h,f,m,g,z;this.worker=(a=e?.worker)!==null&&a!==void 0?a:!1,this.accessToken=(i=e?.accessToken)!==null&&i!==void 0?i:null;const j={};j.timeout=(r=e?.timeout)!==null&&r!==void 0?r:SK,j.heartbeatIntervalMs=(s=e?.heartbeatIntervalMs)!==null&&s!==void 0?s:kS.HEARTBEAT_INTERVAL,this._disconnectOnEmptyChannelsAfterMs=(c=e?.disconnectOnEmptyChannelsAfterMs)!==null&&c!==void 0?c:2*((d=e?.heartbeatIntervalMs)!==null&&d!==void 0?d:kS.HEARTBEAT_INTERVAL),j.transport=(p=e?.transport)!==null&&p!==void 0?p:kK.getWebSocketConstructor(),j.params=e?.params,j.logger=e?.logger,j.heartbeatCallback=this._wrapHeartbeatCallback(e?.heartbeatCallback),j.sessionStorage=(h=e?.sessionStorage)!==null&&h!==void 0?h:QK(),j.reconnectAfterMs=(f=e?.reconnectAfterMs)!==null&&f!==void 0?f:(E=>ZK[E-1]||YK);let v,_;const S=(m=e?.vsn)!==null&&m!==void 0?m:vK;switch(S){case jK:v=(E,T)=>T(JSON.stringify(E)),_=(E,T)=>T(JSON.parse(E));break;case aT:v=this.serializer.encode.bind(this.serializer),_=this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${j.vsn}`)}if(j.vsn=S,j.encode=(g=e?.encode)!==null&&g!==void 0?g:v,j.decode=(z=e?.decode)!==null&&z!==void 0?z:_,j.beforeReconnect=this._reconnectAuth.bind(this),(e?.logLevel||e?.log_level)&&(this.logLevel=e.logLevel||e.log_level,j.params=Object.assign(Object.assign({},j.params),{log_level:this.logLevel})),this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=e?.workerUrl,j.autoSendHeartbeat=!this.worker}return j}async _reconnectAuth(){await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()}}
39var Hc=class extends Error{constructor(t,e){super(t),this.name="IcebergError",this.status=e.status,this.icebergType=e.icebergType,this.icebergCode=e.icebergCode,this.details=e.details,this.isCommitStateUnknown=e.icebergType==="CommitStateUnknownException"||[500,502,504].includes(e.status)&&e.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function tM(t,e,a){const i=new URL(e,t);if(a)for(const[r,s]of Object.entries(a))s!==void 0&&i.searchParams.set(r,s);return i.toString()}async function aM(t){return!t||t.type==="none"?{}:t.type==="bearer"?{Authorization:`Bearer ${t.token}`}:t.type==="header"?{[t.name]:t.value}:t.type==="custom"?await t.getHeaders():{}}function iM(t){const e=t.fetchImpl??globalThis.fetch;return{async request({method:a,path:i,query:r,body:s,headers:c}){const d=tM(t.baseUrl,i,r),p=await aM(t.auth),h=await e(d,{method:a,headers:{...s?{"Content-Type":"application/json"}:{},...p,...c},body:s?JSON.stringify(s):void 0}),f=await h.text(),m=(h.headers.get("content-type")||"").includes("application/json"),g=m&&f?JSON.parse(f):f;if(!h.ok){const z=m?g:void 0,j=z?.error;throw new Hc(j?.message??`Request failed with status ${h.status}`,{status:h.status,icebergType:j?.type,icebergCode:j?.code,details:z})}return{status:h.status,headers:h.headers,data:g}}}}function Vd(t){return t.join("�")}var nM=class{constructor(t,e=""){this.client=t,this.prefix=e}async listNamespaces(t){const e=t?{parent:Vd(t.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:e})).data.namespaces.map(i=>({namespace:i}))}async createNamespace(t,e){const a={namespace:t.namespace,properties:e?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:a})).data}async dropNamespace(t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Vd(t.namespace)}`})}async loadNamespaceMetadata(t){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Vd(t.namespace)}`})).data.properties}}async namespaceExists(t){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Vd(t.namespace)}`}),!0}catch(e){if(e instanceof Hc&&e.status===404)return!1;throw e}}async createNamespaceIfNotExists(t,e){try{return await this.createNamespace(t,e)}catch(a){if(a instanceof Hc&&a.status===409)return;throw a}}};function js(t){return t.join("�")}var oM=class{constructor(t,e="",a){this.client=t,this.prefix=e,this.accessDelegation=a}async listTables(t){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables`})).data.identifiers}async createTable(t,e){const a={};return this.accessDelegation&&(a["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables`,body:e,headers:a})).data.metadata}async updateTable(t,e){const a=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables/${t.name}`,body:e});return{"metadata-location":a.data["metadata-location"],metadata:a.data.metadata}}async dropTable(t,e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables/${t.name}`,query:{purgeRequested:String(e?.purge??!1)}})}async loadTable(t){const e={};return this.accessDelegation&&(e["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables/${t.name}`,headers:e})).data.metadata}async tableExists(t){const e={};this.accessDelegation&&(e["X-Iceberg-Access-Delegation"]=this.accessDelegation);try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${js(t.namespace)}/tables/${t.name}`,headers:e}),!0}catch(a){if(a instanceof Hc&&a.status===404)return!1;throw a}}async createTableIfNotExists(t,e){try{return await this.createTable(t,e)}catch(a){if(a instanceof Hc&&a.status===409)return await this.loadTable({namespace:t.namespace,name:e.name});throw a}}},rM=class{constructor(t){let e="v1";t.catalogName&&(e+=`/${t.catalogName}`);const a=t.baseUrl.endsWith("/")?t.baseUrl:`${t.baseUrl}/`;this.client=iM({baseUrl:a,auth:t.auth,fetchImpl:t.fetch}),this.accessDelegation=t.accessDelegation?.join(","),this.namespaceOps=new nM(this.client,e),this.tableOps=new oM(this.client,e,this.accessDelegation)}async listNamespaces(t){return this.namespaceOps.listNamespaces(t)}async createNamespace(t,e){return this.namespaceOps.createNamespace(t,e)}async dropNamespace(t){await this.namespaceOps.dropNamespace(t)}async loadNamespaceMetadata(t){return this.namespaceOps.loadNamespaceMetadata(t)}async listTables(t){return this.tableOps.listTables(t)}
39async createTable(t,e){return this.tableOps.createTable(t,e)}async updateTable(t,e){return this.tableOps.updateTable(t,e)}async dropTable(t,e){await this.tableOps.dropTable(t,e)}async loadTable(t){return this.tableOps.loadTable(t)}async namespaceExists(t){return this.namespaceOps.namespaceExists(t)}async tableExists(t){return this.tableOps.tableExists(t)}async createNamespaceIfNotExists(t,e){return this.namespaceOps.createNamespaceIfNotExists(t,e)}async createTableIfNotExists(t,e){return this.tableOps.createTableIfNotExists(t,e)}};function qc(t){"@babel/helpers - typeof";return qc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qc(t)}function sM(t,e){if(qc(t)!="object"||!t)return t;var a=t[Symbol.toPrimitive];if(a!==void 0){var i=a.call(t,e);if(qc(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function lM(t){var e=sM(t,"string");return qc(e)=="symbol"?e:e+""}function cM(t,e,a){return(e=lM(e))in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function zS(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),a.push.apply(a,i)}return a}function Pe(t){for(var e=1;e<arguments.length;e++){var a=arguments[e]!=null?arguments[e]:{};e%2?zS(Object(a),!0).forEach(function(i){cM(t,i,a[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):zS(Object(a)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(a,i))})}return t}var Oh=class extends Error{constructor(t,e="storage",a,i){super(t),this.__isStorageError=!0,this.namespace=e,this.name=e==="vectors"?"StorageVectorsError":"StorageError",this.status=a,this.statusCode=i}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}};function Uh(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}var qw=class extends Oh{constructor(t,e,a,i="storage"){super(t,i,e,a),this.name=i==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=e,this.statusCode=a}toJSON(){return Pe({},super.toJSON())}},sT=class extends Oh{constructor(t,e,a="storage"){super(t,a),this.name=a==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=e}};function Jp(t,e,a){const i=Pe({},t),r=e.toLowerCase();for(const s of Object.keys(i))s.toLowerCase()===r&&delete i[s];return i[r]=a,i}function uM(t){const e={};for(const[a,i]of Object.entries(t))e[a.toLowerCase()]=i;return e}const dM=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),pM=t=>{if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},Zw=t=>{if(Array.isArray(t))return t.map(a=>Zw(a));if(typeof t=="function"||t!==Object(t))return t;const e={};return Object.entries(t).forEach(([a,i])=>{const r=a.replace(/([-_][a-z])/gi,s=>s.toUpperCase().replace(/[-_]/g,""));e[r]=Zw(i)}),e},hM=t=>!t||typeof t!="string"||t.length===0||t.length>100||t.trim()!==t||t.includes("/")||t.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(t),bS=t=>{if(typeof t=="object"&&t!==null){const e=t;if(typeof e.msg=="string")return e.msg;if(typeof e.message=="string")return e.message;if(typeof e.error_description=="string")return e.error_description;if(typeof e.error=="string")return e.error;if(typeof e.error=="object"&&e.error!==null){const a=e.error;if(typeof a.message=="string")return a.message}}return JSON.stringify(t)},yM=async(t,e,a,i)=>{if(t!==null&&typeof t=="object"&&"json"in t&&typeof t.json=="function"){const r=t;let s=parseInt(String(r.status),10);Number.isFinite(s)||(s=500),r.json().then(c=>{const d=c?.statusCode||c?.code||s+"";e(new qw(bS(c),s,d,i))}).catch(()=>{const c=s+"";e(new qw(r.statusText||`HTTP ${s}
39 error`,s,c,i))})}else e(new sT(bS(t),t,i))},mM=(t,e,a,i)=>{const r={method:t,headers:e?.headers||{}};if(t==="GET"||t==="HEAD"||!i)return Pe(Pe({},r),a);if(pM(i)){var s;const c=e?.headers||{};let d;for(const[p,h]of Object.entries(c))p.toLowerCase()==="content-type"&&(d=h);r.headers=Jp(c,"Content-Type",(s=d)!==null&&s!==void 0?s:"application/json"),r.body=JSON.stringify(i)}else r.body=i;return e?.duplex&&(r.duplex=e.duplex),Pe(Pe({},r),a)};async function gc(t,e,a,i,r,s,c){return new Promise((d,p)=>{t(a,mM(e,i,r,s)).then(h=>{if(!h.ok)throw h;if(i?.noResolveJson)return h;if(c==="vectors"){const f=h.headers.get("content-type");if(h.headers.get("content-length")==="0"||h.status===204)return{};if(!f||!f.includes("application/json"))return{}}return h.json()}).then(h=>d(h)).catch(h=>yM(h,p,i,c))})}function lT(t="storage"){return{get:async(e,a,i,r)=>gc(e,"GET",a,i,r,void 0,t),post:async(e,a,i,r,s)=>gc(e,"POST",a,r,s,i,t),put:async(e,a,i,r,s)=>gc(e,"PUT",a,r,s,i,t),head:async(e,a,i,r)=>gc(e,"HEAD",a,Pe(Pe({},i),{},{noResolveJson:!0}),r,void 0,t),remove:async(e,a,i,r,s)=>gc(e,"DELETE",a,r,s,i,t)}}const fM=lT("storage"),{get:Zc,post:Ci,put:Yw,head:wM,remove:Ck}=fM,Xa=lT("vectors");var ul=class{constructor(t,e={},a,i="storage"){this.shouldThrowOnError=!1,this.url=t,this.headers=uM(e),this.fetch=dM(a),this.namespace=i}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(t,e){return this.headers=Jp(this.headers,t,e),this}async handleOperation(t){var e=this;try{return{data:await t(),error:null}}catch(a){if(e.shouldThrowOnError)throw a;if(Uh(a))return{data:null,error:a};throw a}}};let cT;cT=Symbol.toStringTag;var gM=class{constructor(t,e){this.downloadFn=t,this.shouldThrowOnError=e,this[cT]="StreamDownloadBuilder",this.promise=null}then(t,e){return this.getPromise().then(t,e)}catch(t){return this.getPromise().catch(t)}finally(t){return this.getPromise().finally(t)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var t=this;try{return{data:(await t.downloadFn()).body,error:null}}catch(e){if(t.shouldThrowOnError)throw e;if(Uh(e))return{data:null,error:e};throw e}}};let uT;uT=Symbol.toStringTag;var kM=class{constructor(t,e){this.downloadFn=t,this.shouldThrowOnError=e,this[uT]="BlobDownloadBuilder",this.promise=null}asStream(){return new gM(this.downloadFn,this.shouldThrowOnError)}then(t,e){return this.getPromise().then(t,e)}catch(t){return this.getPromise().catch(t)}finally(t){return this.getPromise().finally(t)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var t=this;try{return{data:await(await t.downloadFn()).blob(),error:null}}catch(e){if(t.shouldThrowOnError)throw e;if(Uh(e))return{data:null,error:e};throw e}}};const zM={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},jS={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var bM=class extends ul{constructor(t,e={},a,i){super(t,e,i,"storage"),this.bucketId=a}async uploadOrUpdate(t,e,a,i){var r=this;return r.handleOperation(async()=>{let s;const c=Pe(Pe({},jS),i);let d=Pe(Pe({},r.headers),t==="POST"&&{"x-upsert":String(c.upsert)});const p=c.metadata;if(typeof Blob<"u"&&a instanceof Blob?(s=new FormData,s.append("cacheControl",c.cacheControl),p&&s.append("metadata",r.encodeMetadata(p)),s.append("",a)):typeof FormData<"u"&&a instanceof FormData?(s=a,s.has("cacheControl")||s.append("cacheControl",c.cacheControl),p&&!s.has("metadata")&&s.append("metadata",r.encodeMetadata(p))):(s=a,d["cache-control"]=`max-age=${c.cacheControl}`,d["content-type"]=c.contentType,p&&(d["x-metadata"]=r.toBase64(r.encodeMetadata(p))),(typeof ReadableStream<"u"&&s instanceof ReadableStream||s&&typeof s=="object"&&"pipe"in s&&typeof s.pipe=="function")&&!c.duplex&&(c.duplex="half")),i?.headers)for(const[g,z]of Object.entries(i.headers))d=Jp(d,g,z);const h=r._removeEmptyFolders(e),f=r._getFinalPath(h),m=await(t=="PUT"?Yw:Ci)(r.fetch,`${r.url}/object/${f}`,s,Pe({headers:d},c?.duplex?{duplex:c.duplex}:{}));return{path:h,id:m.Id,fullPath:m.Key}})}async upload(t,e,a){return this.uploadOrUpdate("POST",t,e,a)}async uploadToSignedUrl(t,e,a,i){var r=this;const s=r._removeEmptyFolders(t),c=r._getFinalPath(s),d=new URL(r.url+`/object/upload/sign/${c}`);return d.searchParams.set("token",e),r.handleOperation(async()=>{let p;const h=Pe(Pe({},jS),i);let f=Pe(Pe({},r.headers),{"x-upsert":String(h.upsert)});const m=h.metadata;
39if(typeof Blob<"u"&&a instanceof Blob?(p=new FormData,p.append("cacheControl",h.cacheControl),m&&p.append("metadata",r.encodeMetadata(m)),p.append("",a)):typeof FormData<"u"&&a instanceof FormData?(p=a,p.has("cacheControl")||p.append("cacheControl",h.cacheControl),m&&!p.has("metadata")&&p.append("metadata",r.encodeMetadata(m))):(p=a,f["cache-control"]=`max-age=${h.cacheControl}`,f["content-type"]=h.contentType,m&&(f["x-metadata"]=r.toBase64(r.encodeMetadata(m))),(typeof ReadableStream<"u"&&p instanceof ReadableStream||p&&typeof p=="object"&&"pipe"in p&&typeof p.pipe=="function")&&!h.duplex&&(h.duplex="half")),i?.headers)for(const[g,z]of Object.entries(i.headers))f=Jp(f,g,z);return{path:s,fullPath:(await Yw(r.fetch,d.toString(),p,Pe({headers:f},h?.duplex?{duplex:h.duplex}:{}))).Key}})}async createSignedUploadUrl(t,e){var a=this;return a.handleOperation(async()=>{let i=a._getFinalPath(t);const r=Pe({},a.headers);e?.upsert&&(r["x-upsert"]="true");const s=await Ci(a.fetch,`${a.url}/object/upload/sign/${i}`,{},{headers:r}),c=new URL(a.url+s.url),d=c.searchParams.get("token");if(!d)throw new Oh("No token returned by API");return{signedUrl:c.toString(),path:t,token:d}})}async update(t,e,a){return this.uploadOrUpdate("PUT",t,e,a)}async move(t,e,a){var i=this;return i.handleOperation(async()=>await Ci(i.fetch,`${i.url}/object/move`,{bucketId:i.bucketId,sourceKey:t,destinationKey:e,destinationBucket:a?.destinationBucket},{headers:i.headers}))}async copy(t,e,a){var i=this;return i.handleOperation(async()=>({path:(await Ci(i.fetch,`${i.url}/object/copy`,{bucketId:i.bucketId,sourceKey:t,destinationKey:e,destinationBucket:a?.destinationBucket},{headers:i.headers})).Key}))}async createSignedUrl(t,e,a){var i=this;return i.handleOperation(async()=>{let r=i._getFinalPath(t);const s=typeof a?.transform=="object"&&a.transform!==null&&Object.keys(a.transform).length>0;let c=await Ci(i.fetch,`${i.url}/object/sign/${r}`,Pe({expiresIn:e},s?{transform:a.transform}:{}),{headers:i.headers});const d=new URLSearchParams;a?.download&&d.set("download",a.download===!0?"":a.download),a?.cacheNonce!=null&&d.set("cacheNonce",String(a.cacheNonce));const p=d.toString();return{signedUrl:encodeURI(`${i.url}${c.signedURL}${p?`&${p}`:""}`)}})}async createSignedUrls(t,e,a){var i=this;return i.handleOperation(async()=>{const r=await Ci(i.fetch,`${i.url}/object/sign/${i.bucketId}`,{expiresIn:e,paths:t},{headers:i.headers}),s=new URLSearchParams;a?.download&&s.set("download",a.download===!0?"":a.download),a?.cacheNonce!=null&&s.set("cacheNonce",String(a.cacheNonce));const c=s.toString();return r.map(d=>Pe(Pe({},d),{},{signedUrl:d.signedURL?encodeURI(`${i.url}${d.signedURL}${c?`&${c}`:""}`):null}))})}download(t,e,a){const i=typeof e?.transform=="object"&&e.transform!==null&&Object.keys(e.transform).length>0?"render/image/authenticated":"object",r=new URLSearchParams;e?.transform&&this.applyTransformOptsToQuery(r,e.transform),e?.cacheNonce!=null&&r.set("cacheNonce",String(e.cacheNonce));const s=r.toString(),c=this._getFinalPath(t),d=()=>Zc(this.fetch,`${this.url}/${i}/${c}${s?`?${s}`:""}`,{headers:this.headers,noResolveJson:!0},a);return new kM(d,this.shouldThrowOnError)}async info(t){var e=this;const a=e._getFinalPath(t);return e.handleOperation(async()=>Zw(await Zc(e.fetch,`${e.url}/object/info/${a}`,{headers:e.headers})))}async exists(t){var e=this;const a=e._getFinalPath(t);try{return await wM(e.fetch,`${e.url}/object/${a}`,{headers:e.headers}),{data:!0,error:null}}catch(r){if(e.shouldThrowOnError)throw r;if(Uh(r)){var i;const s=r instanceof qw?r.status:r instanceof sT?(i=r.originalError)===null||i===void 0?void 0:i.status:void 0;if(s!==void 0&&[400,404].includes(s))return{data:!1,error:r}}throw r}}getPublicUrl(t,e){const a=this._getFinalPath(t),i=new URLSearchParams;e?.download&&i.set("download",e.download===!0?"":e.download),e?.transform&&this.applyTransformOptsToQuery(i,e.transform),e?.cacheNonce!=null&&i.set("cacheNonce",String(e.cacheNonce));const r=i.toString(),s=typeof e?.transform=="object"&&e.transform!==null&&Object.keys(e.transform).length>0?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${s}/public/${a}`)+(r?`?${r}`:"")}}}async remove(t){var e=this;return e.handleOperation(async()=>await Ck(e.fetch,`${e.url}/object/${e.bucketId}`,{prefixes:t},{headers:e.headers}))}async list(t,e,a){var i=this;return i.handleOperation(async()=>{const r=Pe(Pe(Pe({},zM),e),{},{prefix:t||""});return await Ci(i.fetch,`${i.url}/object/list/${i.bucketId}`,r,{headers:i.headers},a)})}async listV2(t,e){var a=this;return a.handleOperation(async()=>{const i=Pe({},t);return await Ci(a.fetch,`${a.url}/object/list-v2/${a.bucketId}`,i,{headers:a.headers},e)})}encodeMetadata(t){return JSON.stringify(t)}toBase64(t){return typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t)}_getFinalPath(t){return`${this.bucketId}/${t.replace(/^\/+/,"")}`}_removeEmptyFolders(t){return t.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(t,e){return e.width&&t.set("width",e.width.toString()),e.height&&t.set("height",e.height.toString()),e.resize&&t.set("resize",e.resize),e.format&&t.set("format",e.format),e.quality&&t.set("qual
39ity",e.quality.toString()),t}};const jM="2.106.2",du={"X-Client-Info":`storage-js/${jM}`};var vM=class extends ul{constructor(t,e={},a,i){const r=new URL(t);i?.useNewHostname&&/supabase\.(co|in|red)$/.test(r.hostname)&&!r.hostname.includes("storage.supabase.")&&(r.hostname=r.hostname.replace("supabase.","storage.supabase."));const s=r.href.replace(/\/$/,""),c=Pe(Pe({},du),e);super(s,c,a,"storage")}async listBuckets(t){var e=this;return e.handleOperation(async()=>{const a=e.listBucketOptionsToQueryString(t);return await Zc(e.fetch,`${e.url}/bucket${a}`,{headers:e.headers})})}async getBucket(t){var e=this;return e.handleOperation(async()=>await Zc(e.fetch,`${e.url}/bucket/${t}`,{headers:e.headers}))}async createBucket(t,e={public:!1}){var a=this;return a.handleOperation(async()=>await Ci(a.fetch,`${a.url}/bucket`,{id:t,name:t,type:e.type,public:e.public,file_size_limit:e.fileSizeLimit,allowed_mime_types:e.allowedMimeTypes},{headers:a.headers}))}async updateBucket(t,e){var a=this;return a.handleOperation(async()=>await Yw(a.fetch,`${a.url}/bucket/${t}`,{id:t,name:t,public:e.public,file_size_limit:e.fileSizeLimit,allowed_mime_types:e.allowedMimeTypes},{headers:a.headers}))}async emptyBucket(t){var e=this;return e.handleOperation(async()=>await Ci(e.fetch,`${e.url}/bucket/${t}/empty`,{},{headers:e.headers}))}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await Ck(e.fetch,`${e.url}/bucket/${t}`,{},{headers:e.headers}))}listBucketOptionsToQueryString(t){const e={};return t&&("limit"in t&&(e.limit=String(t.limit)),"offset"in t&&(e.offset=String(t.offset)),t.search&&(e.search=t.search),t.sortColumn&&(e.sortColumn=t.sortColumn),t.sortOrder&&(e.sortOrder=t.sortOrder)),Object.keys(e).length>0?"?"+new URLSearchParams(e).toString():""}},SM=class extends ul{constructor(t,e={},a){const i=t.replace(/\/$/,""),r=Pe(Pe({},du),e);super(i,r,a,"storage")}async createBucket(t){var e=this;return e.handleOperation(async()=>await Ci(e.fetch,`${e.url}/bucket`,{name:t},{headers:e.headers}))}async listBuckets(t){var e=this;return e.handleOperation(async()=>{const a=new URLSearchParams;t?.limit!==void 0&&a.set("limit",t.limit.toString()),t?.offset!==void 0&&a.set("offset",t.offset.toString()),t?.sortColumn&&a.set("sortColumn",t.sortColumn),t?.sortOrder&&a.set("sortOrder",t.sortOrder),t?.search&&a.set("search",t.search);const i=a.toString(),r=i?`${e.url}/bucket?${i}`:`${e.url}/bucket`;return await Zc(e.fetch,r,{headers:e.headers})})}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await Ck(e.fetch,`${e.url}/bucket/${t}`,{},{headers:e.headers}))}from(t){var e=this;if(!hM(t))throw new Oh("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");const a=new rM({baseUrl:this.url,catalogName:t,auth:{type:"custom",getHeaders:async()=>e.headers},fetch:this.fetch}),i=this.shouldThrowOnError;return new Proxy(a,{get(r,s){const c=r[s];return typeof c!="function"?c:async(...d)=>{try{return{data:await c.apply(r,d),error:null}}catch(p){if(i)throw p;return{data:null,error:p}}}}})}},xM=class extends ul{constructor(t,e={},a){const i=t.replace(/\/$/,""),r=Pe(Pe({},du),{},{"Content-Type":"application/json"},e);super(i,r,a,"vectors")}async createIndex(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/CreateIndex`,t,{headers:e.headers})||{})}async getIndex(t,e){var a=this;return a.handleOperation(async()=>await Xa.post(a.fetch,`${a.url}/GetIndex`,{vectorBucketName:t,indexName:e},{headers:a.headers}))}async listIndexes(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/ListIndexes`,t,{headers:e.headers}))}async deleteIndex(t,e){var a=this;return a.handleOperation(async()=>await Xa.post(a.fetch,`${a.url}/DeleteIndex`,{vectorBucketName:t,indexName:e},{headers:a.headers})||{})}},_M=class extends ul{constructor(t,e={},a){const i=t.replace(/\/$/,""),r=Pe(Pe({},du),{},{"Content-Type":"application/json"},e);super(i,r,a,"vectors")}async putVectors(t){var e=this;if(t.vectors.length<1||t.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/PutVectors`,t,{headers:e.headers})||{})}async getVectors(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/GetVectors`,t,{headers:e.headers}))}async listVectors(t){var e=this;if(t.segmentCount!==void 0){if(t.segmentCount<1||t.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");
39if(t.segmentIndex!==void 0&&(t.segmentIndex<0||t.segmentIndex>=t.segmentCount))throw new Error(`segmentIndex must be between 0 and ${t.segmentCount-1}`)}return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/ListVectors`,t,{headers:e.headers}))}async queryVectors(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/QueryVectors`,t,{headers:e.headers}))}async deleteVectors(t){var e=this;if(t.keys.length<1||t.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/DeleteVectors`,t,{headers:e.headers})||{})}},TM=class extends ul{constructor(t,e={},a){const i=t.replace(/\/$/,""),r=Pe(Pe({},du),{},{"Content-Type":"application/json"},e);super(i,r,a,"vectors")}async createBucket(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/CreateVectorBucket`,{vectorBucketName:t},{headers:e.headers})||{})}async getBucket(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/GetVectorBucket`,{vectorBucketName:t},{headers:e.headers}))}async listBuckets(t={}){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/ListVectorBuckets`,t,{headers:e.headers}))}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await Xa.post(e.fetch,`${e.url}/DeleteVectorBucket`,{vectorBucketName:t},{headers:e.headers})||{})}},EM=class extends TM{constructor(t,e={}){super(t,e.headers||{},e.fetch)}from(t){return new AM(this.url,this.headers,t,this.fetch)}async createBucket(t){var e=()=>super.createBucket,a=this;return e().call(a,t)}async getBucket(t){var e=()=>super.getBucket,a=this;return e().call(a,t)}async listBuckets(t={}){var e=()=>super.listBuckets,a=this;return e().call(a,t)}async deleteBucket(t){var e=()=>super.deleteBucket,a=this;return e().call(a,t)}},AM=class extends xM{constructor(t,e,a,i){super(t,e,i),this.vectorBucketName=a}async createIndex(t){var e=()=>super.createIndex,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName}))}async listIndexes(t={}){var e=()=>super.listIndexes,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName}))}async getIndex(t){var e=()=>super.getIndex,a=this;return e().call(a,a.vectorBucketName,t)}async deleteIndex(t){var e=()=>super.deleteIndex,a=this;return e().call(a,a.vectorBucketName,t)}index(t){return new PM(this.url,this.headers,this.vectorBucketName,t,this.fetch)}},PM=class extends _M{constructor(t,e,a,i,r){super(t,e,r),this.vectorBucketName=a,this.indexName=i}async putVectors(t){var e=()=>super.putVectors,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async getVectors(t){var e=()=>super.getVectors,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async listVectors(t={}){var e=()=>super.listVectors,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async queryVectors(t){var e=()=>super.queryVectors,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async deleteVectors(t){var e=()=>super.deleteVectors,a=this;return e().call(a,Pe(Pe({},t),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}},CM=class extends vM{constructor(t,e={},a,i){super(t,e,a,i)}from(t){return new bM(this.url,this.headers,t,this.fetch)}get vectors(){return new EM(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new SM(this.url+"/iceberg",this.headers,this.fetch)}};const dT="2.106.2",$s=30*1e3,Jw=3,_f=Jw*$s,RM="http://localhost:9999",DM="supabase.auth.token",OM={"X-Client-Info":`gotrue-js/${dT}`},Qw="X-Supabase-Api-Version",pT={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},UM=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,LM=600*1e3;class il extends Error{constructor(e,a,i){super(e),this.__isAuthError=!0,this.name="AuthError",this.status=a,this.code=i}toJSON(){return{name:this.name,message:this.message,status:this.status,code:this.code}}}function pe(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class KM extends il{constructor(e,a,i){super(e,a,i),this.name="AuthApiError",this.status=a,this.code=i}
39}function MM(t){return pe(t)&&t.name==="AuthApiError"}class Oi extends il{constructor(e,a){super(e),this.name="AuthUnknownError",this.originalError=a}}class $n extends il{constructor(e,a,i,r){super(e,i,r),this.name=a,this.status=i}}class ea extends $n{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Fd(t){return pe(t)&&t.name==="AuthSessionMissingError"}class vs extends $n{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Hd extends $n{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class qd extends $n{constructor(e,a=null){super(e,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=a}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}function NM(t){return pe(t)&&t.name==="AuthImplicitGrantRedirectError"}class vS extends $n{constructor(e,a=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=a}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}class BM extends $n{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class Xw extends $n{constructor(e,a){super(e,"AuthRetryableFetchError",a,void 0)}}function Tf(t){return pe(t)&&t.name==="AuthRetryableFetchError"}class SS extends $n{constructor(e,a,i){super(e,"AuthWeakPasswordError",a,"weak_password"),this.reasons=i}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{reasons:this.reasons})}}class eg extends $n{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}const Qp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),xS=` 40\r=`.split(""),$M=(()=>{const t=new Array(128);for(let e=0;e<t.length;e+=1)t[e]=-1;for(let e=0;e<xS.length;e+=1)t[xS[e].charCodeAt(0)]=-2;for(let e=0;e<Qp.length;e+=1)t[Qp[e].charCodeAt(0)]=e;return t})();function _S(t,e,a){if(t!==null)for(e.queue=e.queue<<8|t,e.queuedBits+=8;e.queuedBits>=6;){const i=e.queue>>e.queuedBits-6&63;a(Qp[i]),e.queuedBits-=6}else if(e.queuedBits>0)for(e.queue=e.queue<<6-e.queuedBits,e.queuedBits=6;e.queuedBits>=6;){const i=e.queue>>e.queuedBits-6&63;a(Qp[i]),e.queuedBits-=6}}function hT(t,e,a){const i=$M[t];if(i>-1)for(e.queue=e.queue<<6|i,e.queuedBits+=6;e.queuedBits>=8;)a(e.queue>>e.queuedBits-8&255),e.queuedBits-=8;else{if(i===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(t)}"`)}}function TS(t){const e=[],a=c=>{e.push(String.fromCodePoint(c))},i={utf8seq:0,codepoint:0},r={queue:0,queuedBits:0},s=c=>{GM(c,i,a)};for(let c=0;c<t.length;c+=1)hT(t.charCodeAt(c),r,s);return e.join("")}function IM(t,e){if(t<=127){e(t);return}else if(t<=2047){e(192|t>>6),e(128|t&63);return}else if(t<=65535){e(224|t>>12),e(128|t>>6&63),e(128|t&63);return}else if(t<=1114111){e(240|t>>18),e(128|t>>12&63),e(128|t>>6&63),e(128|t&63);return}throw new Error(`Unrecognized Unicode codepoint: ${t.toString(16)}`)}function WM(t,e){for(let a=0;a<t.length;a+=1){let i=t.charCodeAt(a);if(i>55295&&i<=56319){const r=(i-55296)*1024&65535;i=(t.charCodeAt(a+1)-56320&65535|r)+65536,a+=1}IM(i,e)}}function GM(t,e,a){if(e.utf8seq===0){if(t<=127){a(t);return}for(let i=1;i<6;i+=1)if((t>>7-i&1)===0){e.utf8seq=i;break}if(e.utf8seq===2)e.codepoint=t&31;else if(e.utf8seq===3)e.codepoint=t&15;else if(e.utf8seq===4)e.codepoint=t&7;else throw new Error("Invalid UTF-8 sequence");e.utf8seq-=1}else if(e.utf8seq>0){if(t<=127)throw new Error("Invalid UTF-8 sequence");e.codepoint=e.codepoint<<6|t&63,e.utf8seq-=1,e.utf8seq===0&&a(e.codepoint)}}function al(t){const e=[],a={queue:0,queuedBits:0},i=r=>{e.push(r)};for(let r=0;r<t.length;r+=1)hT(t.charCodeAt(r),a,i);return new Uint8Array(e)}function VM(t){const e=[];return WM(t,a=>e.push(a)),new Uint8Array(e)}function wr(t){const e=[],a={queue:0,queuedBits:0},i=r=>{e.push(r)};return t.forEach(r=>_S(r,a,i)),_S(null,a,i),e.join("")}function FM(t){return Math.round(Date.now()/1e3)+t}function HM(){return Symbol("auth-callback")}const ua=()=>typeof window<"u"&&typeof document<"u",cr={tested:!1,writable:!1},yT=()=>{if(!ua())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(cr.tested)return cr.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),cr.tested=!0,cr.writable=!0}catch{cr.tested=!0,cr.writable=!1}return cr.writable};function qM(t){const e={},a=new URL(t);if(a.hash&&a.hash[0]==="#")try{new URLSearchParams(a.hash.substring(1)).forEac
40h((r,s)=>{e[s]=r})}catch{}return a.searchParams.forEach((i,r)=>{e[r]=i}),e}const mT=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),ZM=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",Is=async(t,e,a)=>{await t.setItem(e,JSON.stringify(a))},ur=async(t,e)=>{const a=await t.getItem(e);if(!a)return null;try{return JSON.parse(a)}catch{return null}},ca=async(t,e)=>{await t.removeItem(e)};class Lh{constructor(){this.promise=new Lh.promiseConstructor((e,a)=>{this.resolve=e,this.reject=a})}}Lh.promiseConstructor=Promise;function Zd(t){const e=t.split(".");if(e.length!==3)throw new eg("Invalid JWT structure");for(let i=0;i<e.length;i++)if(!UM.test(e[i]))throw new eg("JWT not in base64url format");return{header:JSON.parse(TS(e[0])),payload:JSON.parse(TS(e[1])),signature:al(e[2]),raw:{header:e[0],payload:e[1]}}}async function YM(t){return await new Promise(e=>{setTimeout(()=>e(null),t)})}function JM(t,e){return new Promise((i,r)=>{(async()=>{for(let s=0;s<1/0;s++)try{const c=await t(s);if(!e(s,null,c)){i(c);return}}catch(c){if(!e(s,c)){r(c);return}}})()})}function QM(t){return("0"+t.toString(16)).substr(-2)}function XM(){const e=new Uint32Array(56);if(typeof crypto>"u"){const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",i=a.length;let r="";for(let s=0;s<56;s++)r+=a.charAt(Math.floor(Math.random()*i));return r}return crypto.getRandomValues(e),Array.from(e,QM).join("")}async function e4(t){const a=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",a),r=new Uint8Array(i);return Array.from(r).map(s=>String.fromCharCode(s)).join("")}async function t4(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),t;const a=await e4(t);return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Ss(t,e,a=!1){const i=XM();let r=i;a&&(r+="/recovery"),await Is(t,`${e}-code-verifier`,r);const s=await t4(i);return[s,i===s?"plain":"s256"]}const a4=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function i4(t){const e=t.headers.get(Qw);if(!e||!e.match(a4))return null;try{return new Date(`${e}T00:00:00.0Z`)}catch{return null}}function n4(t){if(!t)throw new Error("Missing exp claim");const e=Math.floor(Date.now()/1e3);if(t<=e)throw new Error("JWT has expired")}function o4(t){switch(t){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const r4=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Sn(t){if(!r4.test(t))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Ei(t){if(!t.passkey)throw new Error("@supabase/auth-js: the passkey API is experimental and disabled by default. Enable it by passing `auth: { experimental: { passkey: true } }` to createClient (or to the GoTrueClient constructor).")}function Ef(){const t={};return new Proxy(t,{get:(e,a)=>{if(a==="__isUserNotAvailableProxy")return!0;if(typeof a=="symbol"){const i=a.toString();if(i==="Symbol(Symbol.toPrimitive)"||i==="Symbol(Symbol.toStringTag)"||i==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${a}" property of the session object is not supported. Please use getUser() instead.`)},set:(e,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(e,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function s4(t,e){return new Proxy(t,{get:(a,i,r)=>{if(i==="__isInsecureUserWarningProxy")return!0;
40if(typeof i=="symbol"){const s=i.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)"||s==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(a,i,r)}return!e.value&&typeof i=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),e.value=!0),Reflect.get(a,i,r)}})}function ES(t){return JSON.parse(JSON.stringify(t))}const pr=t=>{if(typeof t=="object"&&t!==null){const e=t;if(typeof e.msg=="string")return e.msg;if(typeof e.message=="string")return e.message;if(typeof e.error_description=="string")return e.error_description;if(typeof e.error=="string")return e.error}return JSON.stringify(t)},l4=[502,503,504,520,521,522,523,524,530];async function AS(t){var e;if(!ZM(t))throw new Xw(pr(t),0);if(l4.includes(t.status))throw new Xw(pr(t),t.status);let a;try{a=await t.json()}catch(s){throw new Oi(pr(s),s)}let i;const r=i4(t);if(r&&r.getTime()>=pT["2024-01-01"].timestamp&&typeof a=="object"&&a&&typeof a.code=="string"?i=a.code:typeof a=="object"&&a&&typeof a.error_code=="string"&&(i=a.error_code),i){if(i==="weak_password")throw new SS(pr(a),t.status,((e=a.weak_password)===null||e===void 0?void 0:e.reasons)||[]);if(i==="session_not_found")throw new ea}else if(typeof a=="object"&&a&&typeof a.weak_password=="object"&&a.weak_password&&Array.isArray(a.weak_password.reasons)&&a.weak_password.reasons.length&&a.weak_password.reasons.reduce((s,c)=>s&&typeof c=="string",!0))throw new SS(pr(a),t.status,a.weak_password.reasons);throw new KM(pr(a),t.status||500,i)}const c4=(t,e,a,i)=>{const r={method:t,headers:e?.headers||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},e?.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),a))};async function be(t,e,a,i){var r;const s=Object.assign({},i?.headers);s[Qw]||(s[Qw]=pT["2024-01-01"].name),i?.jwt&&(s.Authorization=`Bearer ${i.jwt}`);const c=(r=i?.query)!==null&&r!==void 0?r:{};i?.redirectTo&&(c.redirect_to=i.redirectTo);const d=Object.keys(c).length?"?"+new URLSearchParams(c).toString():"",p=await u4(t,e,a+d,{headers:s,noResolveJson:i?.noResolveJson},{},i?.body);return i?.xform?i?.xform(p):{data:Object.assign({},p),error:null}}async function u4(t,e,a,i,r,s){const c=c4(e,i,r,s);let d;try{d=await t(a,Object.assign({},c))}catch(p){throw console.error(p),new Xw(pr(p),0)}if(d.ok||await AS(d),i?.noResolveJson)return d;try{return await d.json()}catch(p){await AS(p)}}function hi(t){var e;let a=null;h4(t)&&(a=Object.assign({},t),t.expires_at||(a.expires_at=FM(t.expires_in)));const i=(e=t.user)!==null&&e!==void 0?e:typeof t?.id=="string"?t:null;return{data:{session:a,user:i},error:null}}function PS(t){const e=hi(t);return!e.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((a,i)=>a&&typeof i=="string",!0)&&(e.data.weak_password=t.weak_password),e}function vo(t){var e;return{data:{user:(e=t.user)!==null&&e!==void 0?e:t},error:null}}function d4(t){return{data:t,error:null}}function p4(t){const{action_link:e,email_otp:a,hashed_token:i,redirect_to:r,verification_type:s}=t,c=Dh(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),d={action_link:e,email_otp:a,hashed_token:i,redirect_to:r,verification_type:s},p=Object.assign({},c);return{data:{properties:d,user:p},error:null}}function CS(t){return t}function h4(t){return!!t.access_token&&!!t.refresh_token&&!!t.expires_in}const Af=["global","local","others"];class y4{_encodePathSegment(e){if(e==="."||e==="..")throw new il("Invalid path segment");return encodeURIComponent(e)}constructor({url:e="",headers:a={},fetch:i,experimental:r}){this.url=e,this.headers=a,this.fetch=mT(i),this.experimental=r??{},this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)},this.passkey={listPasskeys:this._adminListPasskeys.bind(this),deletePasskey:this._adminDeletePasskey.bind(this)}}async signOut(e,a=Af[0]){if(Af.indexOf(a)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${Af.join(", ")}`);try{return await be(this.fetch,"POST",`${this.url}/logout?scope=${a}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(i){if(pe(i))return{data:null,error:i};throw i}}async inviteUserByEmail(e,a={}){try{return await be(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:a.data},headers:this.headers,redirectTo:a.redirectTo,xform:vo})}catch(i){if(pe(i))return{data:{user:null},error:i};throw i}}async generateLink(e){try{const{options:a}=e,i=Dh(e,["options"]),r=Object.assign(Object.assign({},i),a);return"newEmail"in i&&(r.new_email=i?.newEmail,delete r.newEmail),await be(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:p4,redirectTo:a?.redirectTo})}catch(a){if(pe(a))return{data:{properties:null,user:null},error:a};throw a}}async createUser(e){try{return await be(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:vo})}catch(a){if(pe(a))return{data:{user:null},error:a};throw a}}async listUsers(e){var a,i,r,s,c,d,p;try{const h={nextPage:null,lastPage:0,total:0},f=await be(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(a=e?.page)===null||a===void 0?void 0:a.toString())!==null&&i!==void 0?i:"",per_page:(s=(r=e?.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:CS});if(f.error)throw f.error;const m=await f.json(),g=(c=f.headers.get("x-total-count"))!==null&&c!==void 0?c:0,z=(p=(d=f.headers.get("link"))===null||d===void 0?void 0:d.split(","))!==null&&p!==void 0?p:[];return z.length>0&&(z.forEach(j=>{const v=parseInt(j.split(";")[0].split("=")[1].substring(0,1)),_=JSON.parse(j.split(";")[1].split("=")[1]);h[`${_}Page`]=v}),h.total=parseInt(g)),{data:Object.assign(Object.assign({},m),h),error:null}}catch(h){if(pe(h))return{data:{users:[]},error:h};throw h}}async getUserById(e){Sn(e);try{return await be(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:vo})}catch(a){if(pe(a))return{data:{user:null},error:a};throw a}}async updateUserById(e,a){Sn(e);try{return await be(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:a,headers:this.headers,xform:vo})}catch(i){if(pe(i))return{data:{user:null},error:i};throw i}}async deleteUser(e,a=!1){Sn(e);
40try{return await be(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:a},xform:vo})}catch(i){if(pe(i))return{data:{user:null},error:i};throw i}}async _listFactors(e){Sn(e.userId);try{const{data:a,error:i}=await be(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:a,error:i}}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _deleteFactor(e){Sn(e.userId),Sn(e.id);try{return{data:await be(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _listOAuthClients(e){var a,i,r,s,c,d,p;try{const h={nextPage:null,lastPage:0,total:0},f=await be(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(a=e?.page)===null||a===void 0?void 0:a.toString())!==null&&i!==void 0?i:"",per_page:(s=(r=e?.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:CS});if(f.error)throw f.error;const m=await f.json(),g=(c=f.headers.get("x-total-count"))!==null&&c!==void 0?c:0,z=(p=(d=f.headers.get("link"))===null||d===void 0?void 0:d.split(","))!==null&&p!==void 0?p:[];return z.length>0&&(z.forEach(j=>{const v=parseInt(j.split(";")[0].split("=")[1].substring(0,1)),_=JSON.parse(j.split(";")[1].split("=")[1]);h[`${_}Page`]=v}),h.total=parseInt(g)),{data:Object.assign(Object.assign({},m),h),error:null}}catch(h){if(pe(h))return{data:{clients:[]},error:h};throw h}}async _createOAuthClient(e){try{return await be(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _getOAuthClient(e){try{const a=this._encodePathSegment(e);return await be(this.fetch,"GET",`${this.url}/admin/oauth/clients/${a}`,{headers:this.headers,xform:i=>({data:i,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _updateOAuthClient(e,a){try{const i=this._encodePathSegment(e);return await be(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${i}`,{body:a,headers:this.headers,xform:r=>({data:r,error:null})})}catch(i){if(pe(i))return{data:null,error:i};throw i}}async _deleteOAuthClient(e){try{const a=this._encodePathSegment(e);return await be(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${a}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _regenerateOAuthClientSecret(e){try{const a=this._encodePathSegment(e);return await be(this.fetch,"POST",`${this.url}/admin/oauth/clients/${a}/regenerate_secret`,{headers:this.headers,xform:i=>({data:i,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _listCustomProviders(e){try{const a={};return e?.type&&(a.type=e.type),await be(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:a,xform:i=>{var r;return{data:{providers:(r=i?.providers)!==null&&r!==void 0?r:[]},error:null}}})}catch(a){if(pe(a))return{data:{providers:[]},error:a};throw a}}async _createCustomProvider(e){try{return await be(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _getCustomProvider(e){try{const a=this._encodePathSegment(e);return await be(this.fetch,"GET",`${this.url}/admin/custom-providers/${a}`,{headers:this.headers,xform:i=>({data:i,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _updateCustomProvider(e,a){try{const i=this._encodePathSegment(e);return await be(this.fetch,"PUT",`${this.url}/admin/custom-providers/${i}`,{body:a,headers:this.headers,xform:r=>({data:r,error:null})})}catch(i){if(pe(i))return{data:null,error:i};throw i}}async _deleteCustomProvider(e){try{const a=this._encodePathSegment(e);return await be(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${a}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _adminListPasskeys(e){Ei(this.experimental),Sn(e.userId);try{return await be(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/passkeys`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(pe(a))return{data:null,error:a};throw a}}async _adminDeletePasskey(e){Ei(this.experimental),Sn(e.userId),Sn(e.passkeyId);
40try{return await be(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/passkeys/${e.passkeyId}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(pe(a))return{data:null,error:a};throw a}}}function RS(t={}){return{getItem:e=>t[e]||null,setItem:(e,a)=>{t[e]=a},removeItem:e=>{delete t[e]}}}const Vi={debug:!!(globalThis&&yT()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class fT extends Error{constructor(e){super(e),this.isAcquireTimeout=!0}}class DS extends fT{}async function m4(t,e,a){Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",t,e);const i=new globalThis.AbortController;let r;e>0&&(r=setTimeout(()=>{i.abort(),Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",t)},e)),await Promise.resolve();try{return await globalThis.navigator.locks.request(t,e===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:i.signal},async s=>{if(s){clearTimeout(r),Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",t,s.name);try{return await a()}finally{Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",t,s.name)}}else{if(e===0)throw Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",t),new DS(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(Vi.debug)try{const c=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(c,null," "))}catch(c){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",c)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),clearTimeout(r),await a()}})}catch(s){if(e>0&&clearTimeout(r),s!==null&&typeof s=="object"&&"name"in s&&s.name==="AbortError"&&e>0){if(i.signal.aborted)return Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock",t),console.warn(`@supabase/gotrue-js: Lock "${t}" was not released within ${e}ms. This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). Forcefully acquiring the lock to recover.`),await Promise.resolve().then(()=>globalThis.navigator.locks.request(t,{mode:"exclusive",steal:!0},async c=>{if(c){Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",t,c.name);try{return await a()}finally{Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: released (stolen)",t,c.name)}}else return console.warn("@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true"),await a()}));throw Vi.debug&&console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",t),new DS(`Lock "${t}" was released because another request stole it`)}throw s}}function f4(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function wT(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error(`@supabase/auth-js: Address "${t}" is invalid.`);return t.toLowerCase()}function w4(t){return parseInt(t,16)}function g4(t){const e=new TextEncoder().encode(t);return"0x"+Array.from(e,i=>i.toString(16).padStart(2,"0")).join("")}function k4(t){var e;const{chainId:a,domain:i,expirationTime:r,issuedAt:s=new Date,nonce:c,notBefore:d,requestId:p,resources:h,scheme:f,uri:m,version:g}=t;{if(!Number.isInteger(a))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${a}`);if(!i)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(c&&c.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${c}`);if(!m)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(g!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${g}`);if(!((e=t.statement)===null||e===void 0)&&e.includes(` 41`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${t.statement}`)}const z=wT(t.address),j=f?`${f}://${i}`:i,v=t.statement?`${t.statement} 42`:"",_=`${j} wants you to sign in with your Ethereum account: 43${z} 44 45${v}`;let S=`URI: ${m} 46Version: ${g} 47Chain ID: ${a}${c?` 48Nonce: ${c}`:""} 49Issued At: ${s.toISOString()}`;if(r&&(S+=` 50Expiration Time: ${r.toISOString()}`),d&&(S+=` 51Not Before: ${d.toISOString()}`),p&&(S+=` 52Request ID: ${p}`),h){let E=` 53Resources:`;for(const T of h){if(!T||typeof T!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${T}`);E+=` 54- ${T}`}S+=E}return`${_} 55${S}`}
55class It extends Error{constructor({message:e,code:a,cause:i,name:r}){var s;super(e,{cause:i}),this.__isWebAuthnError=!0,this.name=(s=r??(i instanceof Error?i.name:void 0))!==null&&s!==void 0?s:"Unknown Error",this.code=a}toJSON(){return{name:this.name,message:this.message,code:this.code}}}class Xp extends It{constructor(e,a){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:a,message:e}),this.name="WebAuthnUnknownError",this.originalError=a}}function z4({error:t,options:e}){var a,i,r;const{publicKey:s}=e;if(!s)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new It({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if(t.name==="ConstraintError"){if(((a=s.authenticatorSelection)===null||a===void 0?void 0:a.requireResidentKey)===!0)return new It({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if(e.mediation==="conditional"&&((i=s.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new It({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:t});if(((r=s.authenticatorSelection)===null||r===void 0?void 0:r.userVerification)==="required")return new It({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if(t.name==="InvalidStateError")return new It({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if(t.name==="NotAllowedError")return new It({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="NotSupportedError")return s.pubKeyCredParams.filter(d=>d.type==="public-key").length===0?new It({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new It({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if(t.name==="SecurityError"){const c=window.location.hostname;if(gT(c)){if(s.rp.id!==c)return new It({message:`The RP ID "${s.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new It({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="TypeError"){if(s.user.id.byteLength<1||s.user.id.byteLength>64)return new It({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if(t.name==="UnknownError")return new It({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new It({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}function b4({error:t,options:e}){const{publicKey:a}=e;if(!a)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new It({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if(t.name==="NotAllowedError")return new It({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="SecurityError"){const i=window.location.hostname;if(gT(i)){if(a.rpId!==i)return new It({message:`The RP ID "${a.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new It({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="UnknownError")return new It({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new It({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}class j4{createNewAbortSignal(){if(this.controller){const a=new Error("Cancelling existing WebAuthn API call for new one");a.name="AbortError",this.controller.abort(a)}const e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){const e=new Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}}const tg=new j4;function OS(t){if(!t)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(t);const{challenge:e,user:a,excludeCredentials:i}=t,r=Dh(t,["challenge","user","excludeCredentials"]),s=al(e).buffer,c=Object.assign(Object.assign({},a),{id:al(a.id).buffer}),d=Object.assign(Object.assign({},r),{challenge:s,user:c});if(i&&i.length>0){d.excludeCredentials=new Array(i.length);for(let p=0;p<i.length;p++){const h=i[p];d.excludeCredentials[p]=Object.assign(Object.assign({},h),{id:al(h.id).buffer,type:h.type||"public-key",transports:h.transports})}}return d}function US(t){if(!t)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(t);const{challenge:e,allowCredentials:a}=t,i=Dh(t,["challenge","allowCredentials"]),r=al(e).buffer,s=Object.assign(Object.assign({},i),{challenge:r});if(a&&a.length>0){s.allowCredentials=new Array(a.length);for(let c=0;c<a.length;c++){const d=a[c];s.allowCredentials[c]=Object.assign(Object.assign({},d),{id:al(d.id).buffer,type:d.type||"public-key",transports:d.transports})}}return s}function LS(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const a=t;return{id:t.id,rawId:t.id,response:{attestationObject:wr(new Uint8Array(t.response.attestationObject)),clientDataJSON:wr(new
55Uint8Array(t.response.clientDataJSON))},type:"public-key",clientExtensionResults:t.getClientExtensionResults(),authenticatorAttachment:(e=a.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function KS(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const a=t,i=t.getClientExtensionResults(),r=t.response;return{id:t.id,rawId:t.id,response:{authenticatorData:wr(new Uint8Array(r.authenticatorData)),clientDataJSON:wr(new Uint8Array(r.clientDataJSON)),signature:wr(new Uint8Array(r.signature)),userHandle:r.userHandle?wr(new Uint8Array(r.userHandle)):void 0},type:"public-key",clientExtensionResults:i,authenticatorAttachment:(e=a.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function gT(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function eh(){var t,e;return!!(ua()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((t=navigator?.credentials)===null||t===void 0?void 0:t.create)=="function"&&typeof((e=navigator?.credentials)===null||e===void 0?void 0:e.get)=="function")}async function kT(t){try{const e=await navigator.credentials.create(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new Xp("Browser returned unexpected credential type",e)}:{data:null,error:new Xp("Empty credential response",e)}}catch(e){return{data:null,error:z4({error:e,options:t})}}}async function zT(t){try{const e=await navigator.credentials.get(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new Xp("Browser returned unexpected credential type",e)}:{data:null,error:new Xp("Empty credential response",e)}}catch(e){return{data:null,error:b4({error:e,options:t})}}}const v4={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},S4={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function th(...t){const e=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),a=r=>r instanceof ArrayBuffer||ArrayBuffer.isView(r),i={};for(const r of t)if(r)for(const s in r){const c=r[s];if(c!==void 0)if(Array.isArray(c))i[s]=c;else if(a(c))i[s]=c;else if(e(c)){const d=i[s];e(d)?i[s]=th(d,c):i[s]=th(c)}else i[s]=c}return i}function x4(t,e){return th(v4,t,e||{})}function _4(t,e){return th(S4,t,e||{})}class T4{constructor(e){this.client=e,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(e){return this.client.mfa.enroll(Object.assign(Object.assign({},e),{factorType:"webauthn"}))}async _challenge({factorId:e,webauthn:a,friendlyName:i,signal:r},s){var c;try{const{data:d,error:p}=await this.client.mfa.challenge({factorId:e,webauthn:a});if(!d)return{data:null,error:p};const h=r??tg.createNewAbortSignal();if(d.webauthn.type==="create"){const{user:f}=d.webauthn.credential_options.publicKey;if(!f.name){const m=i;if(m)f.name=`${f.id}:${m}`;else{const z=(await this.client.getUser()).data.user,j=((c=z?.user_metadata)===null||c===void 0?void 0:c.name)||z?.email||z?.id||"User";f.name=`${f.id}:${j}`}}f.displayName||(f.displayName=f.name)}switch(d.webauthn.type){case"create":{const f=x4(d.webauthn.credential_options.publicKey,s?.create),{data:m,error:g}=await kT({publicKey:f,signal:h});return m?{data:{factorId:e,challengeId:d.id,webauthn:{type:d.webauthn.type,credential_response:m}},error:null}:{data:null,error:g}}case"request":{const f=_4(d.webauthn.credential_options.publicKey,s?.request),{data:m,error:g}=await zT(Object.assign(Object.assign({},d.webauthn.credential_options),{publicKey:f,signal:h}));return m?{data:{factorId:e,challengeId:d.id,webauthn:{type:d.webauthn.type,credential_response:m}},error:null}:{data:null,error:g}}}}catch(d){return pe(d)?{data:null,error:d}:{data:null,error:new Oi("Unexpected error in challenge",d)}}}async _verify({challengeId:e,factorId:a,webauthn:i}){return this.client.mfa.verify({factorId:a,challengeId:e,webauthn:i})}async _authenticate({factorId:e,webauthn:{rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:i=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},s){if(!a)return{data:null,error:new il("rpId is required for WebAuthn authentication")};try{if(!eh())return{data:null,error:new Oi("Browser does not support WebAuthn",null)};const{data:c,error:d}=await this.challenge({factorId:e,webauthn:{rpId:a,rpOrigins:i},signal:r},{request:s});if(!c)return{data:null,error:d};const{webauthn:p}=c;return this._verify({factorId:e,challengeId:c.challengeId,webauthn:{type:p.type,rpId:a,rpOrigins:i,credential_response:p.credential_response}})}catch(c){return pe(c)?{data:null,error:c}:{data:null,error:new Oi("Unexpected error in authenticate",c)}}}async _register({friendlyName:e,webauthn:{rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:i=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},s){if(!a)return{data:null,error:new il("rpId is required for WebAuthn registration")};try{if(!eh())return{data:null,error:new Oi("Browser does not support WebAuthn",null)};const{data:c,error:d}=await this._enroll({friendlyName:e});if(!c)return await this.client.mfa.listFactors().then(f=>{var m;return(m=f.data)===null||m===void 0?void 0:m.all.find(g=>g.factor_type==="webauthn"&&g.friendly_name===e&&g.status!=="unverified")}).then(f=>f?this.client.mfa.unenroll({factorId:f?.id}):void 0),{data:null,error:d};const{data:p,error:h}=await this._challenge({factorId:c.id,friendlyName:c.friendly_name,webauthn:{rpId:a,rpOrigins:i},signal:r},{create:s});return p?this._verify({factorId:c.id,challengeId:p.challengeId,webauthn:{rpId:a,rpOrigins:i,type:p.webauthn.type,credential_response:p.webauthn.credential_response}}):{data:null,error:h}}catch(c){return pe(c)?{data:null,error:c}:{data:null,error:new Oi("Unexpected error in register",c)}}}}f4();const E4={url:RM,storageKey:DM,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:OM,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5e3,skipAutoInitialize:!1,experimental:{}};async function MS(t,e,a){return await a()}const xs={};class Yc{get jwks(){var e,a;return(a=(e=xs[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&a!==void 0?a:{keys:[]}}set jwks(e){xs[this.storageKey]=Object.assign(Object.assign({},xs[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,a;return(a=(e=xs[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&a!==void 0?a:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){xs[this.storageKey]=Object.assign(Object.assign({},xs[this.storageKey]),{cachedAt:e})}constructor(e){var a,i,r,s;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const c=Object.assign(Object.assign({},E4),e);if(this.storageKey=c.storageKey,this.instanceID=(a=Yc.nextInstanceID[this.storageKey])!==null&&a!==void 0?a:0,Yc.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!c.debug,typeof c.debug=="function"&&(this.logger=c.debug),this.instanceID>0&&ua()){const d=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(d),this.logDebugMessages&&console.trace(d)}if(this.persistSession=c.persistSession,this.autoRefreshToken=c.autoRefreshToken,this.experimental=(i=c.experimental)!==null&&i!==void 0?i:{},this.admin=new y4({url:c.url,headers:c.headers,fetch:c.fetch,experimental:this.experimental}),this.url=c.url,this.headers=c.headers,this.fetch=mT(c.fetch),this.lock=c.lock||MS,this.detectSessionInUrl=c.detectSessionInUrl,this.flowType=c.flowType,this.hasCustomAuthorizationHeader=c.hasCustomAuthorizationHeader,this.throwOnError=c.throwOnError,this.lockAcquireTimeout=c.lockAcquireTimeout,c.lock?this.lock=c.lock:this.persistSession&&ua()&&(!((r=globalThis?.navigator)===null||r===void 0)&&r.locks)?this.lock=m4:this.lock=MS,this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new T4(this)}
55,this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.passkey={startRegistration:this._startPasskeyRegistration.bind(this),verifyRegistration:this._verifyPasskeyRegistration.bind(this),startAuthentication:this._startPasskeyAuthentication.bind(this),verifyAuthentication:this._verifyPasskeyAuthentication.bind(this),list:this._listPasskeys.bind(this),update:this._updatePasskey.bind(this),delete:this._deletePasskey.bind(this)},this.persistSession?(c.storage?this.storage=c.storage:yT()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=RS(this.memoryStorage)),c.userStorage&&(this.userStorage=c.userStorage)):(this.memoryStorage={},this.storage=RS(this.memoryStorage)),ua()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(d){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",d)}(s=this.broadcastChannel)===null||s===void 0||s.addEventListener("message",async d=>{this._debug("received broadcast notification from other tab or client",d);try{await this._notifyAllSubscribers(d.data.event,d.data.session,!1)}catch(p){this._debug("#broadcastChannel","error",p)}})}c.skipAutoInitialize||this.initialize().catch(d=>{this._debug("#initialize()","error",d)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${dT}) ${new Date().toISOString()}`}_debug(...e){return this.logDebugMessages&&this.logger(this._logPrefix(),...e),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){var e;try{let a={},i="none";if(ua()&&(a=qM(window.location.href),this._isImplicitGrantCallback(a)?i="implicit":await this._isPKCECallback(a)&&(i="pkce")),ua()&&this.detectSessionInUrl&&i!=="none"){const{data:r,error:s}=await this._getSessionFromURL(a,i);if(s){if(this._debug("#_initialize()","error detecting session from URL",s),NM(s)){const p=(e=s.details)===null||e===void 0?void 0:e.code;if(p==="identity_already_exists"||p==="identity_not_found"||p==="single_identity_not_deletable")return{error:s}}return{error:s}}const{session:c,redirectType:d}=r;return this._debug("#_initialize()","detected session in URL",c,"redirect type",d),await this._saveSession(c),setTimeout(async()=>{d==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",c):await this._notifyAllSubscribers("SIGNED_IN",c)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(a){return pe(a)?this._returnResult({error:a}):this._returnResult({error:new Oi("Unexpected error during initialization",a)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var a,i,r;try{const s=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(i=(a=e?.options)===null||a===void 0?void 0:a.data)!==null&&i!==void 0?i:{},gotrue_meta_security:{captcha_token:(r=e?.options)===null||r===void 0?void 0:r.captchaToken}},xform:hi}),{data:c,error:d}=s;if(d||!c)return this._returnResult({data:{user:null,session:null},error:d});const p=c.session,h=c.user;return c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",p)),this._returnResult({data:{user:h,session:p},error:null})}catch(s){if(pe(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signUp(e){var a,i,r;try{let s;if("email"in e){const{email:f,password:m,options:g}=e;let z=null,j=null;this.flowType==="pkce"&&([z,j]=await Ss(this.storage,this.storageKey)),s=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:g?.emailRedirectTo,body:{email:f,password:m,data:(a=g?.data)!==null&&a!==void 0?a:{},gotrue_meta_security:{captcha_token:g?.captchaToken},code_challenge:z,code_challenge_method:j},xform:hi})}else if("phone"in e){const{phone:f,password:m,options:g}=e;s=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:f,password:m,data:(i=g?.data)!==null&&i!==void 0?i:{},channel:(r=g?.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:g?.captchaToken}},xform:hi})}else throw new Hd("You must provide either an email or phone number and a password");const{data:c,error:d}=s;
55if(d||!c)return await ca(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:d});const p=c.session,h=c.user;return c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",p)),this._returnResult({data:{user:h,session:p},error:null})}catch(s){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signInWithPassword(e){try{let a;if("email"in e){const{email:s,password:c,options:d}=e;a=await be(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:c,gotrue_meta_security:{captcha_token:d?.captchaToken}},xform:PS})}else if("phone"in e){const{phone:s,password:c,options:d}=e;a=await be(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:c,gotrue_meta_security:{captcha_token:d?.captchaToken}},xform:PS})}else throw new Hd("You must provide either an email or phone number and a password");const{data:i,error:r}=a;if(r)return this._returnResult({data:{user:null,session:null},error:r});if(!i||!i.session||!i.user){const s=new vs;return this._returnResult({data:{user:null,session:null},error:s})}return i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session)),this._returnResult({data:Object.assign({user:i.user,session:i.session},i.weak_password?{weakPassword:i.weak_password}:null),error:r})}catch(a){if(pe(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signInWithOAuth(e){var a,i,r,s;return await this._handleProviderSignIn(e.provider,{redirectTo:(a=e.options)===null||a===void 0?void 0:a.redirectTo,scopes:(i=e.options)===null||i===void 0?void 0:i.scopes,queryParams:(r=e.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(s=e.options)===null||s===void 0?void 0:s.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(e))}async signInWithWeb3(e){const{chain:a}=e;switch(a){case"ethereum":return await this.signInWithEthereum(e);case"solana":return await this.signInWithSolana(e);default:throw new Error(`@supabase/auth-js: Unsupported chain "${a}"`)}}async signInWithEthereum(e){var a,i,r,s,c,d,p,h,f,m,g;let z,j;if("message"in e)z=e.message,j=e.signature;else{const{chain:v,wallet:_,statement:S,options:E}=e;let T;if(ua())if(typeof _=="object")T=_;else{const ae=window;if("ethereum"in ae&&typeof ae.ethereum=="object"&&"request"in ae.ethereum&&typeof ae.ethereum.request=="function")T=ae.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof _!="object"||!E?.url)throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");T=_}const O=new URL((a=E?.url)!==null&&a!==void 0?a:window.location.href),H=await T.request({method:"eth_requestAccounts"}).then(ae=>ae).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!H||H.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const U=wT(H[0]);let R=(i=E?.signInWithEthereum)===null||i===void 0?void 0:i.chainId;if(!R){const ae=await T.request({method:"eth_chainId"});R=w4(ae)}const I={domain:O.host,address:U,statement:S,uri:O.href,version:"1",chainId:R,nonce:(r=E?.signInWithEthereum)===null||r===void 0?void 0:r.nonce,issuedAt:(c=(s=E?.signInWithEthereum)===null||s===void 0?void 0:s.issuedAt)!==null&&c!==void 0?c:new Date,expirationTime:(d=E?.signInWithEthereum)===null||d===void 0?void 0:d.expirationTime,notBefore:(p=E?.signInWithEthereum)===null||p===void 0?void 0:p.notBefore,requestId:(h=E?.signInWithEthereum)===null||h===void 0?void 0:h.requestId,resources:(f=E?.signInWithEthereum)===null||f===void 0?void 0:f.resources};z=k4(I),j=await T.request({method:"personal_sign",params:[g4(z),U]})}try{const{data:v,error:_}=await be(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:z,signature:j},!((m=e.options)===null||m===void 0)&&m.captchaToken?{gotrue_meta_security:{captcha_token:(g=e.options)===null||g===void 0?void 0:g.captchaToken}}:null),xform:hi});if(_)throw _;if(!v||!v.session||!v.user){const S=new vs;return this._returnResult({data:{user:null,session:null},error:S})}return v.session&&(await this._saveSession(v.session),await this._notifyAllSubscribers("SIGNED_IN",v.session)),this._returnResult({data:Object.assign({},v),error:_})}catch(v){if(pe(v))return this._returnResult({data:{user:null,session:null},error:v});throw v}}async signInWithSolana(e){var a,i,r,s,c,d,p,h,f,m,g,z;let j,v;if("message"in e)j=e.message,v=e.signature;else{const{chain:_,wallet:S,statement:E,options:T}=e;let O;if(ua())if(typeof S=="object")O=S;else{const U=window;if("solana"in U&&typeof U.solana=="object"&&("signIn"in U.solana&&typeof U.solana.signIn=="function"||"signMessage"in U.solana&&typeof U.solana.signMessage=="function"))O=U.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof S!="object"||!T?.url)throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");O=S}const H=new URL((a=T?.url)!==null&&a!==void 0?a:window.location.href);if("signIn"in O&&O.signIn){const U=await O.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},T?.signInWithSolana),{version:"1",domain:H.host,uri:H.href}),E?{statement:E}:null));let R;if(Array.isArray(U)&&U[0]&&typeof U[0]=="object")R=U[0];else if(U&&typeof U=="object"&&"signedMessage"in U&&"signature"in U)R=U;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in R&&"signature"in R&&(typeof R.signedMessage=="string"||R.signedMessage instanceof Uint8Array)&&R.signature instanceof Uint8Array)j=typeof R.signedMessage=="string"?R.signedMessage:new TextDecoder().decode(R.signedMessage),v=R.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in O)||typeof O.signMessage!="function"||!("publicKey"in O)||typeof O!="object"||!O.publicKey||!("toBase58"in O.publicKey)||typeof O.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");j=[`${H.host} wants you to sign in with your Solana account:`,O.publicKey.toBase58(),...E?["",E,""]:[""],"Version: 1",`URI: ${H.href}`,`Issued At: ${(r=(i=T?.signInWithSolana)===null||i===void 0?void 0:i.issuedAt)!==null&&r!==void 0?r:new Date().toISOString()}`,...!((s=T?.signInWithSolana)===null||s===void 0)&&s.notBefore?[`Not Before: ${T.signInWithSolana.notBefore}
55`]:[],...!((c=T?.signInWithSolana)===null||c===void 0)&&c.expirationTime?[`Expiration Time: ${T.signInWithSolana.expirationTime}`]:[],...!((d=T?.signInWithSolana)===null||d===void 0)&&d.chainId?[`Chain ID: ${T.signInWithSolana.chainId}`]:[],...!((p=T?.signInWithSolana)===null||p===void 0)&&p.nonce?[`Nonce: ${T.signInWithSolana.nonce}`]:[],...!((h=T?.signInWithSolana)===null||h===void 0)&&h.requestId?[`Request ID: ${T.signInWithSolana.requestId}`]:[],...!((m=(f=T?.signInWithSolana)===null||f===void 0?void 0:f.resources)===null||m===void 0)&&m.length?["Resources",...T.signInWithSolana.resources.map(R=>`- ${R}`)]:[]].join(` 56`);const U=await O.signMessage(new TextEncoder().encode(j),"utf8");if(!U||!(U instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");v=U}}try{const{data:_,error:S}=await be(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:j,signature:wr(v)},!((g=e.options)===null||g===void 0)&&g.captchaToken?{gotrue_meta_security:{captcha_token:(z=e.options)===null||z===void 0?void 0:z.captchaToken}}:null),xform:hi});if(S)throw S;if(!_||!_.session||!_.user){const E=new vs;return this._returnResult({data:{user:null,session:null},error:E})}return _.session&&(await this._saveSession(_.session),await this._notifyAllSubscribers("SIGNED_IN",_.session)),this._returnResult({data:Object.assign({},_),error:S})}catch(_){if(pe(_))return this._returnResult({data:{user:null,session:null},error:_});throw _}}async _exchangeCodeForSession(e){const a=await ur(this.storage,`${this.storageKey}-code-verifier`),[i,r]=(a??"").split("/");try{if(!i&&this.flowType==="pkce")throw new BM;const{data:s,error:c}=await be(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:i},xform:hi});if(await ca(this.storage,`${this.storageKey}-code-verifier`),c)throw c;if(!s||!s.session||!s.user){const d=new vs;return this._returnResult({data:{user:null,session:null,redirectType:null},error:d})}return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers(r==="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",s.session)),this._returnResult({data:Object.assign(Object.assign({},s),{redirectType:r??null}),error:c})}catch(s){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(s))return this._returnResult({data:{user:null,session:null,redirectType:null},error:s});throw s}}async signInWithIdToken(e){try{const{options:a,provider:i,token:r,access_token:s,nonce:c}=e,d=await be(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:i,id_token:r,access_token:s,nonce:c,gotrue_meta_security:{captcha_token:a?.captchaToken}},xform:hi}),{data:p,error:h}=d;if(h)return this._returnResult({data:{user:null,session:null},error:h});if(!p||!p.session||!p.user){const f=new vs;return this._returnResult({data:{user:null,session:null},error:f})}return p.session&&(await this._saveSession(p.session),await this._notifyAllSubscribers("SIGNED_IN",p.session)),this._returnResult({data:p,error:h})}catch(a){if(pe(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signInWithOtp(e){var a,i,r,s,c;try{if("email"in e){const{email:d,options:p}=e;let h=null,f=null;this.flowType==="pkce"&&([h,f]=await Ss(this.storage,this.storageKey));const{error:m}=await be(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:d,data:(a=p?.data)!==null&&a!==void 0?a:{},create_user:(i=p?.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:p?.captchaToken},code_challenge:h,code_challenge_method:f},redirectTo:p?.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:m})}if("phone"in e){const{phone:d,options:p}=e,{data:h,error:f}=await be(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:d,data:(r=p?.data)!==null&&r!==void 0?r:{},create_user:(s=p?.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:p?.captchaToken},channel:(c=p?.channel)!==null&&c!==void 0?c:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:h?.message_id},error:f})}throw new Hd("You must provide either an email or phone number.")}catch(d){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(d))return this._returnResult({data:{user:null,session:null},error:d});throw d}}async verifyOtp(e){var a,i;try{let r,s;"options"in e&&(r=(a=e.options)===null||a===void 0?void 0:a.redirectTo,s=(i=e.options)===null||i===void 0?void 0:i.captchaToken);const{data:c,error:d}=await be(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:s}}),redirectTo:r,xform:hi});if(d)throw d;if(!c)throw new Error("An error occurred on token verification.");const p=c.session,h=c.user;return p?.access_token&&(await this._saveSession(p),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",p)),this._returnResult({data:{user:h,session:p},error:null})}catch(r){if(pe(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithSSO(e){var a,i,r,s,c;try{let d=null,p=null;this.flowType==="pkce"&&([d,p]=await Ss(this.storage,this.storageKey));const h=await be(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(i=(a=e.options)===null||a===void 0?void 0:a.redirectTo)!==null&&i!==void 0?i:void 0}),!((r=e?.options)===null||r===void 0)&&r.captchaToken?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:d,code_challenge_method:p}),headers:this.headers,xform:d4});return!((s=h.data)===null||s===void 0)&&s.url&&ua()&&!(!((c=e.options)===null||c===void 0)&&c.skipBrowserRedirect)&&window.location.assign(h.data.url),this._returnResult(h)}catch(d){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(d))return this._returnResult({data:null,error:d});throw d}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async e=>{const{data:{session:a},error:i}=e;if(i)throw i;if(!a)throw new ea;const{error:r}=await be(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:a.access_token});return this._returnResult({data:{user:null,session:null},error:r})})}catch(e){if(pe(e))return this._returnResult({data:{user:null,session:null},error:e});throw e}}async resend(e){try{const a=`${this.url}/resend`;if("email"in e){const{email:i,type:r,options:s}=e,{error:c}=await be(this.fetch,"POST",a,{headers:this.headers,body:{email:i,type:r,gotrue_meta_security:{captcha_token:s?.captchaToken}},redirectTo:s?.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:c})}else if("phone"in e){const{phone:i,type:r,options:s}=e,{data:c,error:d}=await be(this.fetch,"POST",a,{headers:this.headers,body:{phone:i,type:r,gotrue_meta_security:{captcha_token:s?.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:c?.message_id},error:d})}throw new Hd("You must provide either an email or phone number and a type")}catch(a){if(pe(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async getSession(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async a=>a))}async _acquireLock(e,a){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){const i=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await i,await a()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const i=a();for(this.pendingInLock.push((async()=>{try{await i}catch{}})()),await i;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await i}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{const a=await this.__loadSession();return await e(a)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let e=null;const a=await ur(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",a),a!==null&&(this._isValidSession(a)?e=a:(this._debug("#getSession()","session from storage is not val
56id"),await this._removeSession())),!e)return{data:{session:null},error:null};const i=e.expires_at?e.expires_at*1e3-Date.now()<_f:!1;if(this._debug("#__loadSession()",`session has${i?"":" not"} expired`,"expires_at",e.expires_at),!i){if(this.userStorage){const c=await ur(this.userStorage,this.storageKey+"-user");c?.user?e.user=c.user:e.user=Ef()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){const c={value:this.suppressGetSessionWarning};e.user=s4(e.user,c),c.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:e},error:null}}const{data:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?this._returnResult({data:{session:null},error:s}):this._returnResult({data:{session:r},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(e){if(e)return await this._getUser(e);await this.initializePromise;const a=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());return a.data.user&&(this.suppressGetSessionWarning=!0),a}async _getUser(e){try{return e?await be(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:vo}):await this._useSession(async a=>{var i,r,s;const{data:c,error:d}=a;if(d)throw d;return!(!((i=c.session)===null||i===void 0)&&i.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new ea}:await be(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(r=c.session)===null||r===void 0?void 0:r.access_token)!==null&&s!==void 0?s:void 0,xform:vo})})}catch(a){if(pe(a))return Fd(a)&&(await this._removeSession(),await ca(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({data:{user:null},error:a});throw a}}async updateUser(e,a={}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(e,a))}async _updateUser(e,a={}){try{return await this._useSession(async i=>{const{data:r,error:s}=i;if(s)throw s;if(!r.session)throw new ea;const c=r.session;let d=null,p=null;this.flowType==="pkce"&&e.email!=null&&([d,p]=await Ss(this.storage,this.storageKey));const{data:h,error:f}=await be(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:a?.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:d,code_challenge_method:p}),jwt:c.access_token,xform:vo});if(f)throw f;return c.user=h.user,await this._saveSession(c),await this._notifyAllSubscribers("USER_UPDATED",c),this._returnResult({data:{user:c.user},error:null})})}catch(i){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(i))return this._returnResult({data:{user:null},error:i});throw i}}async setSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new ea;const a=Date.now()/1e3;let i=a,r=!0,s=null;const{payload:c}=Zd(e.access_token);if(c.exp&&(i=c.exp,r=i<=a),r){const{data:d,error:p}=await this._callRefreshToken(e.refresh_token);if(p)return this._returnResult({data:{user:null,session:null},error:p});if(!d)return{data:{user:null,session:null},error:null};s=d}else{const{data:d,error:p}=await this._getUser(e.access_token);if(p)return this._returnResult({data:{user:null,session:null},error:p});s={access_token:e.access_token,refresh_token:e.refresh_token,user:d.user,token_type:"bearer",expires_in:i-a,expires_at:i},await this._saveSession(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return this._returnResult({data:{user:s.user,session:s},error:null})}catch(a){if(pe(a))return this._returnResult({data:{session:null,user:null},error:a});throw a}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async a=>{var i;if(!e){const{data:c,error:d}=a;if(d)throw d;e=(i=c.session)!==null&&i!==void 0?i:void 0}if(!e?.refresh_token)throw new ea;const{data:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?this._returnResult({data:{user:null,session:null},error:s}):r?this._returnResult({data:{user:r.user,session:r},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(a){if(pe(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async _getSessionFromURL(e,a){var i;try{if(!ua())throw new qd("No browser detected.");
56if(e.error||e.error_description||e.error_code)throw new qd(e.error_description||"Error in URL with unspecified error_description",{error:e.error||"unspecified_error",code:e.error_code||"unspecified_code"});switch(a){case"implicit":if(this.flowType==="pkce")throw new vS("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new qd("Not a valid implicit grant flow url.");break;default:}if(a==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!e.code)throw new vS("No code detected.");const{data:T,error:O}=await this._exchangeCodeForSession(e.code);if(O)throw O;const H=new URL(window.location.href);return H.searchParams.delete("code"),window.history.replaceState(window.history.state,"",H.toString()),{data:{session:T.session,redirectType:(i=T.redirectType)!==null&&i!==void 0?i:null},error:null}}const{provider_token:r,provider_refresh_token:s,access_token:c,refresh_token:d,expires_in:p,expires_at:h,token_type:f}=e;if(!c||!p||!d||!f)throw new qd("No session defined in URL");const m=Math.round(Date.now()/1e3),g=parseInt(p);let z=m+g;h&&(z=parseInt(h));const j=z-m;j*1e3<=$s&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${j}s, should have been closer to ${g}s`);const v=z-g;m-v>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",v,z,m):m-v<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",v,z,m);const{data:_,error:S}=await this._getUser(c);if(S)throw S;const E={provider_token:r,provider_refresh_token:s,access_token:c,expires_in:g,expires_at:z,refresh_token:d,token_type:f,user:_.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:E,redirectType:e.type},error:null})}catch(r){if(pe(r))return this._returnResult({data:{session:null,redirectType:null},error:r});throw r}}_isImplicitGrantCallback(e){return typeof this.detectSessionInUrl=="function"?this.detectSessionInUrl(new URL(window.location.href),e):!!(e.access_token||e.error_description)}async _isPKCECallback(e){const a=await ur(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&a)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async a=>{var i;const{data:r,error:s}=a;if(s&&!Fd(s))return this._returnResult({error:s});const c=(i=r.session)===null||i===void 0?void 0:i.access_token;if(c){const{error:d}=await this.admin.signOut(c,e);if(d&&!(MM(d)&&(d.status===404||d.status===401||d.status===403)||Fd(d)))return this._returnResult({error:d})}return e!=="others"&&(await this._removeSession(),await ca(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({error:null})})}onAuthStateChange(e){const a=HM(),i={id:a,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",a),this.stateChangeEmitters.delete(a)}};return this._debug("#onAuthStateChange()","registered callback with id",a),this.stateChangeEmitters.set(a,i),(async()=>(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(a)})))(),{data:{subscription:i}}}async _emitInitialSession(e){return await this._useSession(async a=>{var i,r;try{const{data:{session:s},error:c}=a;if(c)throw c;await((i=this.stateChangeEmitters.get(e))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",e,"session",s)}catch(s){await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",s),Fd(s)?console.warn(s):console.error(s)}})}async resetPasswordForEmail(e,a={}){let i=null,r=null;this.flowType==="pkce"&&([i,r]=await Ss(this.storage,this.storageKey,!0));try{return await be(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:i,code_challenge_method:r,gotrue_meta_security:{captcha_token:a.captchaToken}},headers:this.headers,redirectTo:a.redirectTo})}catch(s){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(s))return this._returnResult({data:null,error:s});throw s}}async getUserIdentities(){var e;try{const{data:a,error:i}=await this.getUser();if(i)throw i;return this._returnResult({data:{identities:(e=a.user.identities)!==null&&e!==void 0?e:[]},error:null})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async linkIdentity(e){return"token"in e?this.linkIdentityIdToken(e):this.linkIdentityOAuth(e)}async linkIdentityOAuth(e){var a;try{const{data:i,error:r}=await this._useSession(async s=>{var c,d,p,h,f;const{data:m,error:g}=s;if(g)throw g;const z=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(c=e.options)===null||c===void 0?void 0:c.redirectTo,scopes:(d=e.options)===null||d===void 0?void 0:d.scopes,queryParams:(p=e.options)===null||p===void 0?void 0:p.queryParams,skipBrowserRedirect:!0});return await be(this.fetch,"GET",z,{headers:this.headers,jwt:(f=(h=m.session)===null||h===void 0?void 0:h.access_token)!==null&&f!==void 0?f:void 0})});if(r)throw r;
56return ua()&&!(!((a=e.options)===null||a===void 0)&&a.skipBrowserRedirect)&&window.location.assign(i?.url),this._returnResult({data:{provider:e.provider,url:i?.url},error:null})}catch(i){if(pe(i))return this._returnResult({data:{provider:e.provider,url:null},error:i});throw i}}async linkIdentityIdToken(e){return await this._useSession(async a=>{var i;try{const{error:r,data:{session:s}}=a;if(r)throw r;const{options:c,provider:d,token:p,access_token:h,nonce:f}=e,m=await be(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(i=s?.access_token)!==null&&i!==void 0?i:void 0,body:{provider:d,id_token:p,access_token:h,nonce:f,link_identity:!0,gotrue_meta_security:{captcha_token:c?.captchaToken}},xform:hi}),{data:g,error:z}=m;return z?this._returnResult({data:{user:null,session:null},error:z}):!g||!g.session||!g.user?this._returnResult({data:{user:null,session:null},error:new vs}):(g.session&&(await this._saveSession(g.session),await this._notifyAllSubscribers("USER_UPDATED",g.session)),this._returnResult({data:g,error:z}))}catch(r){if(await ca(this.storage,`${this.storageKey}-code-verifier`),pe(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}})}async unlinkIdentity(e){try{return await this._useSession(async a=>{var i,r;const{data:s,error:c}=a;if(c)throw c;return await be(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(r=(i=s.session)===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _refreshAccessToken(e){const a=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(a,"begin");try{const i=Date.now();return await JM(async r=>(r>0&&await YM(200*Math.pow(2,r-1)),this._debug(a,"refreshing attempt",r),await be(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:hi})),(r,s)=>{const c=200*Math.pow(2,r);return s&&Tf(s)&&Date.now()+c-i<$s})}catch(i){if(this._debug(a,"error",i),pe(i))return this._returnResult({data:{session:null,user:null},error:i});throw i}finally{this._debug(a,"end")}}_isValidSession(e){return typeof e=="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,a){const i=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:a.redirectTo,scopes:a.scopes,queryParams:a.queryParams});return this._debug("#_handleProviderSignIn()","provider",e,"options",a,"url",i),ua()&&!a.skipBrowserRedirect&&window.location.assign(i),{data:{provider:e,url:i},error:null}}async _recoverAndRefresh(){var e,a;const i="#_recoverAndRefresh()";this._debug(i,"begin");try{const r=await ur(this.storage,this.storageKey);if(r&&this.userStorage){let c=await ur(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!c&&(c={user:r.user},await Is(this.userStorage,this.storageKey+"-user",c)),r.user=(e=c?.user)!==null&&e!==void 0?e:Ef()}else if(r&&!r.user&&!r.user){const c=await ur(this.storage,this.storageKey+"-user");c&&c?.user?(r.user=c.user,await ca(this.storage,this.storageKey+"-user"),await Is(this.storage,this.storageKey,r)):r.user=Ef()}if(this._debug(i,"session from storage",r),!this._isValidSession(r)){this._debug(i,"session is not valid"),r!==null&&await this._removeSession();return}const s=((a=r.expires_at)!==null&&a!==void 0?a:1/0)*1e3-Date.now()<_f;if(this._debug(i,`session has${s?"":" not"} expired with margin of ${_f}s`),s){if(this.autoRefreshToken&&r.refresh_token){const{error:c}=await this._callRefreshToken(r.refresh_token);c&&(console.error(c),Tf(c)||(this._debug(i,"refresh failed with a non-retryable error, removing the session",c),await this._removeSession()))}}else if(r.user&&r.user.__isUserNotAvailableProxy===!0)try{const{data:c,error:d}=await this._getUser(r.access_token);!d&&c?.user?(r.user=c.user,await this._saveSession(r),await this._notifyAllSubscribers("SIGNED_IN",r)):this._debug(i,"could not get user data, skipping SIGNED_IN notification")}catch(c){console.error("Error getting user data:",c),this._debug(i,"error getting user data, skipping SIGNED_IN notification",c)}else await this._notifyAllSubscribers("SIGNED_IN",r)}catch(r){this._debug(i,"error",r),console.error(r);return}finally{this._debug(i,"end")}}async _callRefreshToken(e){var a,i;if(!e)throw new ea;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const r=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(r,"begin");try{this.refreshingDeferred=new Lh;const{data:s,error:c}=await this._refreshAccessToken(e);if(c)throw c;if(!s.session)throw new ea;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);const d={data:s.session,error:null};return this.refreshingDeferred.resolve(d),d}catch(s){if(this._debug(r,"error",s),pe(s)){const c={data:null,error:s};return Tf(s)||await this._removeSession(),(a=this.refreshingDeferred)===null||a===void 0||a.resolve(c),c}throw(i=this.refreshingDeferred)===null||i===void 0||i.reject(s),s}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(e,a,i=!0){const r=`#_notifyAllSubscribers(${e})`;this._debug(r,"begin",a,`broadcast = ${i}`);try{this.broadcastChannel&&i&&this.broadcastChannel.postMessage({event:e,session:a});const s=[],c=Array.from(this.stateChangeEmitters.values()).map(async d=>{try{await d.callback(e,a)}
56catch(p){s.push(p)}});if(await Promise.all(c),s.length>0){for(let d=0;d<s.length;d+=1)console.error(s[d]);throw s[0]}}finally{this._debug(r,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await ca(this.storage,`${this.storageKey}-code-verifier`);const a=Object.assign({},e),i=a.user&&a.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!i&&a.user&&await Is(this.userStorage,this.storageKey+"-user",{user:a.user});const r=Object.assign({},a);delete r.user;const s=ES(r);await Is(this.storage,this.storageKey,s)}else{const r=ES(a);await Is(this.storage,this.storageKey,r)}}async _removeSession(){this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await ca(this.storage,this.storageKey),await ca(this.storage,this.storageKey+"-code-verifier"),await ca(this.storage,this.storageKey+"-user"),this.userStorage&&await ca(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&&ua()&&window?.removeEventListener&&window.removeEventListener("visibilitychange",e)}catch(a){console.error("removing visibilitychange callback failed",a)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const e=setInterval(()=>this._autoRefreshTokenTick(),$s);this.autoRefreshTicker=e,e&&typeof e=="object"&&typeof e.unref=="function"?e.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(e);const a=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);this.autoRefreshTickTimeout=a,a&&typeof a=="object"&&typeof a.unref=="function"?a.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(a)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const e=this.autoRefreshTicker;this.autoRefreshTicker=null,e&&clearInterval(e);const a=this.autoRefreshTickTimeout;this.autoRefreshTickTimeout=null,a&&clearTimeout(a)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const e=Date.now();try{return await this._useSession(async a=>{const{data:{session:i}}=a;if(!i||!i.refresh_token||!i.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((i.expires_at*1e3-e)/$s);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${$s}ms, refresh threshold is ${Jw} ticks`),r<=Jw&&await this._callRefreshToken(i.refresh_token)})}catch(a){console.error("Auto refresh tick failed with error. This is likely a transient error.",a)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e instanceof fT)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!ua()||!window?.addEventListener)return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(e){this._debug("#visibilityChangedCallback","error",e)}},window?.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){const a=`#_onVisibilityChanged(${e})`;this._debug(a,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),e||(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(a,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(e,a,i){const r=[`provider=${encodeURIComponent(a)}`];if(i?.redirectTo&&r.push(`redirect_to=${encodeURIComponent(i.redirectTo)}`),i?.scopes&&r.push(`scopes=${encodeURIComponent(i.scopes)}`),this.flowType==="pkce"){const[s,c]=await Ss(this.storage,this.storageKey),d=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(c)}`});
56r.push(d.toString())}if(i?.queryParams){const s=new URLSearchParams(i.queryParams);r.push(s.toString())}return i?.skipBrowserRedirect&&r.push(`skip_http_redirect=${i.skipBrowserRedirect}`),`${e}?${r.join("&")}`}async _unenroll(e){try{return await this._useSession(async a=>{var i;const{data:r,error:s}=a;return s?this._returnResult({data:null,error:s}):await be(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(i=r?.session)===null||i===void 0?void 0:i.access_token})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _enroll(e){try{return await this._useSession(async a=>{var i,r;const{data:s,error:c}=a;if(c)return this._returnResult({data:null,error:c});const d=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:p,error:h}=await be(this.fetch,"POST",`${this.url}/factors`,{body:d,headers:this.headers,jwt:(i=s?.session)===null||i===void 0?void 0:i.access_token});return h?this._returnResult({data:null,error:h}):(e.factorType==="totp"&&p.type==="totp"&&(!((r=p?.totp)===null||r===void 0)&&r.qr_code)&&(p.totp.qr_code=`data:image/svg+xml;utf-8,${p.totp.qr_code}`),this._returnResult({data:p,error:null}))})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _verify(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async a=>{var i;const{data:r,error:s}=a;if(s)return this._returnResult({data:null,error:s});const c=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?LS(e.webauthn.credential_response):KS(e.webauthn.credential_response)})}:{code:e.code}),{data:d,error:p}=await be(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:c,headers:this.headers,jwt:(i=r?.session)===null||i===void 0?void 0:i.access_token});return p?this._returnResult({data:null,error:p}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+d.expires_in},d)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",d),this._returnResult({data:d,error:p}))})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}})}async _challenge(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async a=>{var i;const{data:r,error:s}=a;if(s)return this._returnResult({data:null,error:s});const c=await be(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(i=r?.session)===null||i===void 0?void 0:i.access_token});if(c.error)return c;const{data:d}=c;if(d.type!=="webauthn")return{data:d,error:null};switch(d.webauthn.type){case"create":return{data:Object.assign(Object.assign({},d),{webauthn:Object.assign(Object.assign({},d.webauthn),{credential_options:Object.assign(Object.assign({},d.webauthn.credential_options),{publicKey:OS(d.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},d),{webauthn:Object.assign(Object.assign({},d.webauthn),{credential_options:Object.assign(Object.assign({},d.webauthn.credential_options),{publicKey:US(d.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}})}async _challengeAndVerify(e){const{data:a,error:i}=await this._challenge({factorId:e.factorId});return i?this._returnResult({data:null,error:i}):await this._verify({factorId:e.factorId,challengeId:a.id,code:e.code})}async _listFactors(){var e;const{data:{user:a},error:i}=await this.getUser();if(i)return{data:null,error:i};const r={all:[],phone:[],totp:[],webauthn:[]};for(const s of(e=a?.factors)!==null&&e!==void 0?e:[])r.all.push(s),s.status==="verified"&&r[s.factor_type].push(s);return{data:r,error:null}}async _getAuthenticatorAssuranceLevel(e){var a,i,r,s;if(e)try{const{payload:z}=Zd(e);let j=null;z.aal&&(j=z.aal);let v=j;const{data:{user:_},error:S}=await this.getUser(e);if(S)return this._returnResult({data:null,error:S});((i=(a=_?.factors)===null||a===void 0?void 0:a.filter(O=>O.status==="verified"))!==null&&i!==void 0?i:[]).length>0&&(v="aal2");const T=z.amr||[];return{data:{currentLevel:j,nextLevel:v,currentAuthenticationMethods:T},error:null}}catch(z){if(pe(z))return this._returnResult({data:null,error:z});throw z}const{data:{session:c},error:d}
56=await this.getSession();if(d)return this._returnResult({data:null,error:d});if(!c)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:p}=Zd(c.access_token);let h=null;p.aal&&(h=p.aal);let f=h;((s=(r=c.user.factors)===null||r===void 0?void 0:r.filter(z=>z.status==="verified"))!==null&&s!==void 0?s:[]).length>0&&(f="aal2");const g=p.amr||[];return{data:{currentLevel:h,nextLevel:f,currentAuthenticationMethods:g},error:null}}async _getAuthorizationDetails(e){try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;return r?this._returnResult({data:null,error:r}):i?await be(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:i.access_token,xform:s=>({data:s,error:null})}):this._returnResult({data:null,error:new ea})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _approveAuthorization(e,a){try{return await this._useSession(async i=>{const{data:{session:r},error:s}=i;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new ea});const c=await be(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"approve"},xform:d=>({data:d,error:null})});return c.data&&c.data.redirect_url&&ua()&&!a?.skipBrowserRedirect&&window.location.assign(c.data.redirect_url),c})}catch(i){if(pe(i))return this._returnResult({data:null,error:i});throw i}}async _denyAuthorization(e,a){try{return await this._useSession(async i=>{const{data:{session:r},error:s}=i;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new ea});const c=await be(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"deny"},xform:d=>({data:d,error:null})});return c.data&&c.data.redirect_url&&ua()&&!a?.skipBrowserRedirect&&window.location.assign(c.data.redirect_url),c})}catch(i){if(pe(i))return this._returnResult({data:null,error:i});throw i}}async _listOAuthGrants(){try{return await this._useSession(async e=>{const{data:{session:a},error:i}=e;return i?this._returnResult({data:null,error:i}):a?await be(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:a.access_token,xform:r=>({data:r,error:null})}):this._returnResult({data:null,error:new ea})})}catch(e){if(pe(e))return this._returnResult({data:null,error:e});throw e}}async _revokeOAuthGrant(e){try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;return r?this._returnResult({data:null,error:r}):i?(await be(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:i.access_token,query:{client_id:e.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new ea})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async fetchJwk(e,a={keys:[]}){let i=a.keys.find(d=>d.kid===e);if(i)return i;const r=Date.now();if(i=this.jwks.keys.find(d=>d.kid===e),i&&this.jwks_cached_at+LM>r)return i;const{data:s,error:c}=await be(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(c)throw c;return!s.keys||s.keys.length===0||(this.jwks=s,this.jwks_cached_at=r,i=s.keys.find(d=>d.kid===e),!i)?null:i}async getClaims(e,a={}){try{let i=e;if(!i){const{data:z,error:j}
56=await this.getSession();if(j||!z.session)return this._returnResult({data:null,error:j});i=z.session.access_token}const{header:r,payload:s,signature:c,raw:{header:d,payload:p}}=Zd(i);a?.allowExpired||n4(s.exp);const h=!r.alg||r.alg.startsWith("HS")||!r.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(r.kid,a?.keys?{keys:a.keys}:a?.jwks);if(!h){const{error:z}=await this.getUser(i);if(z)throw z;return{data:{claims:s,header:r,signature:c},error:null}}const f=o4(r.alg),m=await crypto.subtle.importKey("jwk",h,f,!0,["verify"]);if(!await crypto.subtle.verify(f,m,c,VM(`${d}.${p}`)))throw new eg("Invalid JWT signature");return{data:{claims:s,header:r,signature:c},error:null}}catch(i){if(pe(i))return this._returnResult({data:null,error:i});throw i}}async signInWithPasskey(e){var a,i,r;Ei(this.experimental);try{if(!eh())return this._returnResult({data:null,error:new Oi("Browser does not support WebAuthn",null)});const{data:s,error:c}=await this._startPasskeyAuthentication({options:{captchaToken:(a=e?.options)===null||a===void 0?void 0:a.captchaToken}});if(c||!s)return this._returnResult({data:null,error:c});const d=US(s.options),p=(r=(i=e?.options)===null||i===void 0?void 0:i.signal)!==null&&r!==void 0?r:tg.createNewAbortSignal(),{data:h,error:f}=await zT({publicKey:d,signal:p});if(f||!h)return this._returnResult({data:null,error:f??new Oi("WebAuthn ceremony failed",null)});const m=KS(h);return this._verifyPasskeyAuthentication({challengeId:s.challenge_id,credential:m})}catch(s){if(pe(s))return this._returnResult({data:null,error:s});throw s}}async registerPasskey(e){var a,i;Ei(this.experimental);try{if(!eh())return this._returnResult({data:null,error:new Oi("Browser does not support WebAuthn",null)});const{data:r,error:s}=await this._startPasskeyRegistration();if(s||!r)return this._returnResult({data:null,error:s});const c=OS(r.options),d=(i=(a=e?.options)===null||a===void 0?void 0:a.signal)!==null&&i!==void 0?i:tg.createNewAbortSignal(),{data:p,error:h}=await kT({publicKey:c,signal:d});if(h||!p)return this._returnResult({data:null,error:h??new Oi("WebAuthn ceremony failed",null)});const f=LS(p);return this._verifyPasskeyRegistration({challengeId:r.challenge_id,credential:f})}catch(r){if(pe(r))return this._returnResult({data:null,error:r});throw r}}async _startPasskeyRegistration(){Ei(this.experimental);try{return await this._useSession(async e=>{const{data:{session:a},error:i}=e;if(i)return this._returnResult({data:null,error:i});if(!a)return this._returnResult({data:null,error:new ea});const{data:r,error:s}=await be(this.fetch,"POST",`${this.url}/passkeys/registration/options`,{headers:this.headers,jwt:a.access_token,body:{}});return s?this._returnResult({data:null,error:s}):this._returnResult({data:r,error:null})})}catch(e){if(pe(e))return this._returnResult({data:null,error:e});throw e}}async _verifyPasskeyRegistration(e){Ei(this.experimental);try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!i)return this._returnResult({data:null,error:new ea});const{data:s,error:c}=await be(this.fetch,"POST",`${this.url}/passkeys/registration/verify`,{headers:this.headers,jwt:i.access_token,body:{challenge_id:e.challengeId,credential:e.credential}});return c?this._returnResult({data:null,error:c}):this._returnResult({data:s,error:null})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _startPasskeyAuthentication(e){var a;Ei(this.experimental);try{const{data:i,error:r}=await be(this.fetch,"POST",`${this.url}/passkeys/authentication/options`,{headers:this.headers,body:{gotrue_meta_security:{captcha_token:(a=e?.options)===null||a===void 0?void 0:a.captchaToken}}});return r?this._returnResult({data:null,error:r}):this._returnResult({data:i,error:null})}catch(i){if(pe(i))return this._returnResult({data:null,error:i});throw i}}async _verifyPasskeyAuthentication(e){Ei(this.experimental);try{const{data:a,error:i}=await be(this.fetch,"POST",`${this.url}/passkeys/authentication/verify`,{headers:this.headers,body:{challenge_id:e.challengeId,credential:e.credential},xform:hi});return i?this._returnResult({data:null,error:i}):(a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session)),this._returnResult({data:a,error:null}))}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _listPasskeys(){Ei(this.experimental);try{return await this._useSession(async e=>{const{data:{session:a},error:i}=e;if(i)return this._returnResult({data:null,error:i});if(!a)return this._returnResult({data:null,error:new ea});const{data:r,error:s}=await be(this.fetch,"GET",`${this.url}/passkeys`,{headers:this.headers,jwt:a.access_token,xform:c=>({data:c,error:null})});return s?this._returnResult({data:null,error:s}):this._returnResult({data:r,error:null})})}catch(e){if(pe(e))return this._returnResult({data:null,error:e});throw e}}async _updatePasskey(e){Ei(this.experimental);try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!i)return this._returnResult({data:null,error:new ea});const{data:s,error:c}=await be(this.fetch,"PATCH",`${this.url}/passkeys/${e.passkeyId}`,{headers:this.headers,jwt:i.access_token,body:{friendly_name:e.friendlyName}});return c?this._returnResult({data:null,error:c}):this._returnResult({data:s,error:null})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}async _deletePasskey(e){Ei(this.experimental);try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!i)return this._returnResult({data:null,error:new ea});const{error:s}
56=await be(this.fetch,"DELETE",`${this.url}/passkeys/${e.passkeyId}`,{headers:this.headers,jwt:i.access_token,noResolveJson:!0});return s?this._returnResult({data:null,error:s}):this._returnResult({data:null,error:null})})}catch(a){if(pe(a))return this._returnResult({data:null,error:a});throw a}}}Yc.nextInstanceID={};const A4=Yc,P4="2.106.2";let vc="";typeof Deno<"u"?vc="deno":typeof document<"u"?vc="web":typeof navigator<"u"&&navigator.product==="ReactNative"?vc="react-native":vc="node";const C4={"X-Client-Info":`supabase-js-${vc}/${P4}`},R4={headers:C4},D4={schema:"public"},O4={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},U4={},L4={enabled:!1,respectSamplingDecision:!0};function K4(t,e,a,i){function r(s){return s instanceof a?s:new a(function(c){c(s)})}return new(a||(a=Promise))(function(s,c){function d(f){try{h(i.next(f))}catch(m){c(m)}}function p(f){try{h(i.throw(f))}catch(m){c(m)}}function h(f){f.done?s(f.value):r(f.value).then(d,p)}h((i=i.apply(t,[])).next())})}let Pf=null;const M4="@opentelemetry/api";function N4(){return Pf===null&&(Pf=import(M4).catch(()=>null)),Pf}function B4(){return K4(this,void 0,void 0,function*(){try{const t=yield N4();if(!t||!t.propagation||!t.context)return null;const e={};t.propagation.inject(t.context.active(),e);const a=e.traceparent;return a?{traceparent:a,tracestate:e.tracestate,baggage:e.baggage}:null}catch{return null}})}function $4(t){if(!t||typeof t!="string")return null;const e=t.split("-");if(e.length!==4)return null;const[a,i,r,s]=e;if(a.length!==2||i.length!==32||r.length!==16||s.length!==2)return null;const c=/^[0-9a-f]+$/i;return!c.test(a)||!c.test(i)||!c.test(r)||!c.test(s)||i==="00000000000000000000000000000000"||r==="0000000000000000"?null:{version:a,traceId:i,parentId:r,traceFlags:s,isSampled:(parseInt(s,16)&1)===1}}function I4(t,e){if(!t||!e||e.length===0)return!1;let a;if(t instanceof URL)a=t;else try{a=new URL(t)}catch{return!1}for(const i of e)try{if(typeof i=="string"){if(W4(a.hostname,i))return!0}else if(i instanceof RegExp){if(i.test(a.hostname))return!0}else if(typeof i=="function"&&i(a))return!0}catch{continue}return!1}function W4(t,e){if(e===t)return!0;if(e.startsWith("*.")){const a=e.slice(2);if(t.endsWith(a)&&(t===a||t.endsWith("."+a)))return!0}return!1}function G4(t){const e=[];try{const a=new URL(t);e.push(a.hostname)}catch{}return e.push("*.supabase.co","*.supabase.in"),e.push("localhost","127.0.0.1","[::1]"),e}function Jc(t){"@babel/helpers - typeof";return Jc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jc(t)}function V4(t,e){if(Jc(t)!="object"||!t)return t;var a=t[Symbol.toPrimitive];if(a!==void 0){var i=a.call(t,e);if(Jc(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function F4(t){var e=V4(t,"string");return Jc(e)=="symbol"?e:e+""}function H4(t,e,a){return(e=F4(e))in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function NS(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),a.push.apply(a,i)}return a}function At(t){for(var e=1;e<arguments.length;e++){var a=arguments[e]!=null?arguments[e]:{};e%2?NS(Object(a),!0).forEach(function(i){H4(t,i,a[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):NS(Object(a)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(a,i))})}return t}const q4=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),Z4=()=>Headers,Y4=(t,e,a,i,r)=>{const s=q4(i),c=Z4(),d=r?.enabled===!0,p=r?.respectSamplingDecision!==!1,h=d?G4(e):null;return async(f,m)=>{var g;const z=(g=await a())!==null&&g!==void 0?g:t;let j=new c(m?.headers);if(j.has("apikey")||j.set("apikey",t),j.has("Authorization")||j.set("Authorization",`Bearer ${z}`),h){const v=await J4(f,h,p);v&&(v.traceparent&&!j.has("traceparent")&&j.set("traceparent",v.traceparent),v.tracestate&&!j.has("tracestate")&&j.set("tracestate",v.tracestate),v.baggage&&!j.has("baggage")&&j.set("baggage",v.baggage))}return s(f,At(At({},m),{},{headers:j}))}};async function J4(t,e,a){if(!I4(typeof t=="string"||t instanceof URL?t:t.url,e))return null;const i=await B4();if(!i||!i.traceparent)return null;if(a){const r=$4(i.traceparent);if(r&&!r.isSampled)return null}return i}function BS(t){return typeof t=="boolean"?{enabled:t}:t}function Q4(t){return t.endsWith("/")?t:t+"/"}function X4(t,e){var a,i,r,s,c,d;const{db:p,auth:h,realtime:f,global:m}=t,{db:g,auth:z,realtime:j,global:v}=e,_=BS(t.tracePropagation),S=BS(e.tracePropagation),E={db:At(At({},g),p),auth:At(At({},z),h),realtime:At(At({},j),f),storage:{},global:At(At(At({},v),m),{},{headers:At(At({},(a=v?.headers)!==null&&a!==void 0?a:{}),(i=m?.headers)!==null&&i!==void 0?i:{})}),tracePropagation:{enabled:(r=(s=_?.enabled)!==null&&s!==void 0?s:S?.enabled)!==null&&r!==void 0?r:!1,respectSamplingDecision:(c=(d=_?.respectSamplingDecision)!==null&&d!==void 0?d:S?.respectSamplingDecision)!==null&&c!==void 0?c:!0},accessToken:async()=>""};return t.accessToken?E.accessToken=t.accessToken:delete E.accessToken,E}function eN(t){const e=t?.trim();if(!e)throw new Error("supabaseUrl is required.");
56if(!e.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(Q4(e))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var tN=class extends A4{constructor(t){super(t)}},aN=class{constructor(t,e,a){var i,r;this.supabaseUrl=t,this.supabaseKey=e;const s=eN(t);if(!e)throw new Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",s),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",s),this.storageUrl=new URL("storage/v1",s),this.functionsUrl=new URL("functions/v1",s);const c=`sb-${s.hostname.split(".")[0]}-auth-token`,d={db:D4,realtime:U4,auth:At(At({},O4),{},{storageKey:c}),global:R4,tracePropagation:L4},p=X4(a??{},d);if(this.settings=p,this.storageKey=(i=p.auth.storageKey)!==null&&i!==void 0?i:"",this.headers=(r=p.global.headers)!==null&&r!==void 0?r:{},p.accessToken)this.accessToken=p.accessToken,this.auth=new Proxy({},{get:(f,m)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(m)} is not possible`)}});else{var h;this.auth=this._initSupabaseAuthClient((h=p.auth)!==null&&h!==void 0?h:{},this.headers,p.global.fetch)}this.fetch=Y4(e,t,this._getAccessToken.bind(this),p.global.fetch,p.tracePropagation),this.realtime=this._initRealtimeClient(At({headers:this.headers,accessToken:this._getAccessToken.bind(this),fetch:this.fetch},p.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(f=>this.realtime.setAuth(f)).catch(f=>console.warn("Failed to set initial Realtime auth token:",f)),this.rest=new gK(new URL("rest/v1",s).href,{headers:this.headers,schema:p.db.schema,fetch:this.fetch,timeout:p.db.timeout,urlLengthLimit:p.db.urlLengthLimit}),this.storage=new CM(this.storageUrl.href,this.headers,this.fetch,a?.storage),p.accessToken||this._listenForAuthEvents()}get functions(){return new lK(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(t){return this.rest.from(t)}schema(t){return this.rest.schema(t)}rpc(t,e={},a={head:!1,get:!1,count:void 0}){return this.rest.rpc(t,e,a)}channel(t,e={config:{}}){return this.realtime.channel(t,e)}getChannels(){return this.realtime.getChannels()}removeChannel(t){return this.realtime.removeChannel(t)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var t=this,e,a;if(t.accessToken)return await t.accessToken();const{data:i}=await t.auth.getSession();return(e=(a=i.session)===null||a===void 0?void 0:a.access_token)!==null&&e!==void 0?e:t.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:t,persistSession:e,detectSessionInUrl:a,storage:i,userStorage:r,storageKey:s,flowType:c,lock:d,debug:p,throwOnError:h,experimental:f,lockAcquireTimeout:m,skipAutoInitialize:g},z,j){const v={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new tN({url:this.authUrl.href,headers:At(At({},v),z),storageKey:s,autoRefreshToken:t,persistSession:e,detectSessionInUrl:a,storage:i,userStorage:r,flowType:c,lock:d,debug:p,throwOnError:h,experimental:f,fetch:j,lockAcquireTimeout:m,skipAutoInitialize:g,hasCustomAuthorizationHeader:Object.keys(this.headers).some(_=>_.toLowerCase()==="authorization")})}_initRealtimeClient(t){return new eM(this.realtimeUrl.href,At(At({},t),{},{params:At(At({},{apikey:this.supabaseKey}),t?.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((t,e)=>{this._handleTokenChanged(t,"CLIENT",e?.access_token)})}_handleTokenChanged(t,e,a){(t==="TOKEN_REFRESHED"||t==="SIGNED_IN")&&this.changedAccessToken!==a?(this.changedAccessToken=a,this.realtime.setAuth(a)):t==="SIGNED_OUT"&&(this.realtime.setAuth(),e=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}};const iN=(t,e,a)=>new aN(t,e,a);function nN(){if(typeof window<"u")return!1;const t=globalThis.process;if(!t)return!1;const e=t.version;if(e==null)return!1;const a=e.match(/^v(\d+)\./);return a?parseInt(a[1],10)<=18:!1}nN()&&console.warn("â ï¸ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to N
56ode.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");function oN(){if(typeof window>"u")return;const t=location.hostname,a=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(_=>t===_||t.endsWith("."+_)),i="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",r=a?t.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+i+")(?:-dev)?(?=\\.|$)","i"))?.[1]??t.match(new RegExp("^("+i+")(?=[.-])","i"))?.[1]:void 0,s=window.parent&&window.parent!==window;if(!r||!s)return localStorage;const c=t.endsWith(".lovableproject-dev.com")||t.endsWith(".gpt-eng.com"),d=c?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,p=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),h=p&&d.test(p)?[p]:c?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],f="lovable-preview-auth:result",m=2e3,g=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),z=(_,S,E)=>new Promise(T=>{const O=g();let H=!1,U;const R=ee=>{H||(H=!0,clearTimeout(U),window.removeEventListener("message",I),T(ee))},I=ee=>{if(h.indexOf(ee.origin)<0)return;const F=ee.data;F&&F.type===f&&F.requestId===O&&R(F)};window.addEventListener("message",I);const ae={type:_,requestId:O,projectId:r,key:S};E!==void 0&&(ae.value=E);for(const ee of h)window.parent.postMessage(ae,ee);U=setTimeout(()=>R(null),m)});let j=!0;const v=250;return{getItem:async _=>{let S=await z("lovable-preview-auth:get",_);return!S&&j&&(await new Promise(E=>setTimeout(E,v)),S=await z("lovable-preview-auth:get",_)),j=!1,S&&S.ok&&typeof S.value=="string"?S.value===""?(localStorage.removeItem(_),null):S.value:localStorage.getItem(_)},setItem:(_,S)=>(localStorage.setItem(_,S),z("lovable-preview-auth:set",_,S).then(E=>{E&&E.ok&&typeof E.value=="string"&&localStorage.getItem(_)===S&&(E.value===""?localStorage.removeItem(_):localStorage.setItem(_,E.value))})),removeItem:_=>(localStorage.removeItem(_),z("lovable-preview-auth:remove",_).then(()=>{}))}}function rN(){return iN("https://xvzdmaupohgklwfvsjcn.supabase.co","sb_publishable_fLSOb9gEi-Z6bPL5qCo_sw_1tXAddUN",{auth:{storage:oN(),persistSession:!0,autoRefreshToken:!0}})}let Cf;const Rk=new Proxy({},{get(t,e,a){return Cf||(Cf=rN()),Reflect.get(Cf,e,a)}}),eee=Object.freeze(Object.defineProperty({__proto__:null,supabase:Rk},Symbol.toStringTag,{value:"Module"})),sN=fr({type:"function"}).client(async({next:t})=>{const{data:e}=await Rk.auth.getSession(),a=e.session?.access_token;return t({headers:a?{Authorization:`Bearer ${a}`}:{}})}),lN=fr(),$S=nK(()=>({requestMiddleware:[lN],functionMiddleware:[sN]}));var Kh=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},cN=class extends Kh{#e;#a;#t;constructor(){super(),this.#t=t=>{if(typeof window<"u"&&window.addEventListener){const e=()=>t();return window.addEventListener("visibilitychange",e,!1),()=>{window.removeEventListener("visibilitychange",e)}}}}onSubscribe(){this.#a||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#a?.(),this.#a=void 0)}setEventListener(t){this.#t=t,this.#a?.(),this.#a=t(e=>{typeof e=="boolean"?this.setFocused(e):this.onFocus()})}setFocused(t){this.#e!==t&&(this.#e=t,this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(e=>{e(t)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},bT=new cN,uN={setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t),setInterval:(t,e)=>setInterval(t,e),clearInterval:t=>clearInterval(t)},dN=class{#e=uN;#a=!1;setTimeoutProvider(t){this.#e=t}setTimeout(t,e){return this.#e.setTimeout(t,e)}clearTimeout(t){this.#e.clearTimeout(t)}setInterval(t,e){return this.#e.setInterval(t,e)}clearInterval(t){this.#e.clearInterval(t)}},ag=new dN;function pN(t){setTimeout(t,0)}var hN=typeof window>"u"||"Deno"in globalThis;function Ri(){}function yN(t,e){return typeof t=="function"?t(e):t}function mN(t){return typeof t=="number"&&t>=0&&t!==1/0}function fN(t,e){return Math.max(t+(e||0)-Date.now(),0)}function ig(t,e){return typeof t=="function"?t(e):t}function wN(t,e){return typeof t=="function"?t(e):t}function IS(t,e){const{type:a="all",exact:i,fetchStatus:r,predicate:s,queryKey:c,stale:d}=t;if(c){if(i){if(e.queryHash!==Dk(c,e.options))return!1}else if(!Xc(e.queryKey,c))return!1}if(a!=="all"){const p=e.isActive();if(a==="active"&&!p||a==="inactive"&&p)return!1}return!(typeof d=="boolean"&&e.isStale()!==d||r&&r!==e.state.fetchStatus||s&&!s(e))}function WS(t,e){const{exact:a,status:i,predicate:r,mutationKey:s}=t;if(s){if(!e.options.mutationKey)return!1;if(a){if(Qc(e.options.mutationKey)!==Qc(s))return!1}else if(!Xc(e.options.mutationKey,s))return!1}return!(i&&e.state.status!==i||r&&!r(e))}function Dk(t,e){return(e?.queryKeyHashFn||Qc)(t)}function Qc(t){return JSON.stringify(t,(e,a)=>ng(a)?Object.keys(a).sort().reduce((i,r)=>(i[r]=a[r],i),{}):a)}function Xc(t,e){return t===e?!0:typeof t!=typeof e?!1:t&&e&&typeof t=="object"&&typeof e=="object"?Object.keys(e).every(a=>Xc(t[a],e[a])):!1}var gN=Object.prototype.hasOwnProperty;function jT(t,e,a=0){if(t===e)return t;if(a>500)return e;const i=GS(t)&&GS(e);if(!i&&!(ng(t)&&ng(e)))return e;const s=(i?t:Object.keys(t)).length,c=i?e:Object.keys(e),d=c.length,p=i?new Array(d):{};let h=0;for(let f=0;f<d;f++){const m=i?f:c[f],g=t[m],z=e[m];if(g===z){p[m]=g,(i?f<s:gN.call(t,m))&&h++;continue}if(g===null||z===null||typeof g!="object"||typeof z!="object"){p[m]=z;continue}const j=jT(g,z,a+1);p[m]=j,j===g&&h++}return s===d&&h===s?t:p}function tee(t,e){if(!e||Object.keys(t).length!==Object.keys(e).length)return!1;for(const a in t)if(t[a]!==e[a])return!1;return!0}function GS(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function ng(t){if(!VS(t))return!1;const e=t.constructor;if(e===void 0)return!0;const a=e.prototype;return!(!VS(a)||!a.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function VS(t){return Object.prototype.toString.call(t)==="[object Object]"}function kN(t){return new Promise(e=>{ag.setTimeout(e,t)})}function zN(t,e,a){return typeof a.structuralSharing=="function"?a.structuralSharing(t,e):a.structuralSharing!==!1?jT(t,e):e}function bN(t,e,a=0){const i=[...t,e];return a&&i.length>a?i.slice(1):i}function jN(t,e,a=0){const i=[e,...t];return a&&i.length>a?i.slice(0,-1):i}var Ok=Symbol();function vT(t,e){return!t.queryFn&&e?.initialPromise?()=>e.initialPromise:!t.queryFn||t.queryFn===Ok?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}function aee(t,e){return typeof t=="function"?t(...e):!!t}function vN(t,e,a){let i=!1,r;return Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(r??=e(),i||(i=!0,r.aborted?a():r.addEventListener("abort",a,{once:!0})),r)}),t}var ST=(()=>{let t=()=>hN;return{isServer(){return t()},setIsServer(e){t=e}}})();function SN(){let t,e;const a=new Promise((r,s)=>{t=r,e=s});
vendor: 23,940 bytes, line 56
56a.status="pending",a.catch(()=>{});function i(r){Object.assign(a,r),delete a.resolve,delete a.reject}return a.resolve=r=>{i({status:"fulfilled",value:r}),t(r)},a.reject=r=>{i({status:"rejected",reason:r}),e(r)},a}var xN=pN;function _N(){let t=[],e=0,a=d=>{d()},i=d=>{d()},r=xN;const s=d=>{e?t.push(d):r(()=>{a(d)})},c=()=>{const d=t;t=[],d.length&&r(()=>{i(()=>{d.forEach(p=>{a(p)})})})};return{batch:d=>{let p;e++;try{p=d()}finally{e--,e||c()}return p},batchCalls:d=>(...p)=>{s(()=>{d(...p)})},schedule:s,setNotifyFunction:d=>{a=d},setBatchNotifyFunction:d=>{i=d},setScheduler:d=>{r=d}}}var Sa=_N(),TN=class extends Kh{#e=!0;#a;#t;constructor(){super(),this.#t=t=>{if(typeof window<"u"&&window.addEventListener){const e=()=>t(!0),a=()=>t(!1);return window.addEventListener("online",e,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",a)}}}}onSubscribe(){this.#a||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#a?.(),this.#a=void 0)}setEventListener(t){this.#t=t,this.#a?.(),this.#a=t(this.setOnline.bind(this))}setOnline(t){this.#e!==t&&(this.#e=t,this.listeners.forEach(a=>{a(t)}))}isOnline(){return this.#e}},ah=new TN;function EN(t){return Math.min(1e3*2**t,3e4)}function xT(t){return(t??"online")==="online"?ah.isOnline():!0}var og=class extends Error{constructor(t){super("CancelledError"),this.revert=t?.revert,this.silent=t?.silent}};function _T(t){let e=!1,a=0,i;const r=SN(),s=()=>r.status!=="pending",c=v=>{if(!s()){const _=new og(v);g(_),t.onCancel?.(_)}},d=()=>{e=!0},p=()=>{e=!1},h=()=>bT.isFocused()&&(t.networkMode==="always"||ah.isOnline())&&t.canRun(),f=()=>xT(t.networkMode)&&t.canRun(),m=v=>{s()||(i?.(),r.resolve(v))},g=v=>{s()||(i?.(),r.reject(v))},z=()=>new Promise(v=>{i=_=>{(s()||h())&&v(_)},t.onPause?.()}).then(()=>{i=void 0,s()||t.onContinue?.()}),j=()=>{if(s())return;let v;const _=a===0?t.initialPromise:void 0;try{v=_??t.fn()}catch(S){v=Promise.reject(S)}Promise.resolve(v).then(m).catch(S=>{if(s())return;const E=t.retry??(ST.isServer()?0:3),T=t.retryDelay??EN,O=typeof T=="function"?T(a,S):T,H=E===!0||typeof E=="number"&&a<E||typeof E=="function"&&E(a,S);if(e||!H){g(S);return}a++,t.onFail?.(a,S),kN(O).then(()=>h()?void 0:z()).then(()=>{e?g(S):j()})})};return{promise:r,status:()=>r.status,cancel:c,continue:()=>(i?.(),r),cancelRetry:d,continueRetry:p,canStart:f,start:()=>(f()?j():z().then(j),r)}}var TT=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),mN(this.gcTime)&&(this.#e=ag.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(ST.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(ag.clearTimeout(this.#e),this.#e=void 0)}},AN=class extends TT{#e;#a;#t;#n;#i;#o;#r;constructor(t){super(),this.#r=!1,this.#o=t.defaultOptions,this.setOptions(t.options),this.observers=[],this.#n=t.client,this.#t=this.#n.getQueryCache(),this.queryKey=t.queryKey,this.queryHash=t.queryHash,this.#e=HS(this.options),this.state=t.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#i?.promise}setOptions(t){if(this.options={...this.#o,...t},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const e=HS(this.options);e.data!==void 0&&(this.setState(FS(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#t.remove(this)}setData(t,e){const a=zN(this.state.data,t,this.options);return this.#s({data:a,type:"success",dataUpdatedAt:e?.updatedAt,manual:e?.manual}),a}setState(t,e){this.#s({type:"setState",state:t,setStateOptions:e})}cancel(t){const e=this.#i?.promise;return this.#i?.cancel(t),e?e.then(Ri).catch(Ri):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(t=>wN(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Ok||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>ig(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!fN(this.state.dataUpdatedAt,t)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#i?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#i?.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(e=>e!==t),this.observers.length||(this.#i&&(this.#r||this.#l()?this.#i.cancel({revert:!0}):this.#i.cancelRetry()),this.scheduleGc()),this.#t.notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}#l(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}async fetch(t,e){if(this.state.fetchStatus!=="idle"&&this.#i?.status()!=="rejected"){if(this.state.data!==void 0&&e?.cancelRefetch)this.cancel({silent:!0});else if(this.#i)return this.#i.continueRetry(),this.#i.promise}if(t&&this.setOptions(t),!this.options.queryFn){const d=this.observers.find(p=>p.options.queryFn);d&&this.setOptions(d.options)}const a=new AbortController,i=d=>{Object.defineProperty(d,"signal",{enumerable:!0,get:()=>(this.#r=!0,a.signal)})},r=()=>{const d=vT(this.options,e),h=(()=>{const f={client:this.#n,queryKey:this.queryKey,meta:this.meta};return i(f),f})();return this.#r=!1,this.options.persister?this.options.persister(d,h,this):d(h)},c=(()=>{const d={fetchOptions:e,options:this.options,queryKey:this.queryKey,client:this.#n,state:this.state,fetchFn:r};return i(d),d})();this.options.behavior?.onFetch(c,this),this.#a=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==c.fetchOptions?.meta)&&this.#s({type:"fetch",meta:c.fetchOptions?.meta}),this.#i=_T({initialPromise:e?.initialPromise,fn:c.fetchFn,onCancel:d=>{d instanceof og&&d.revert&&this.setState({...this.#a,fetchStatus:"idle"}),a.abort()},onFail:(d,p)=>{this.#s({type:"failed",failureCount:d,error:p})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:c.options.retry,retryDelay:c.options.retryDelay,networkMode:c.options.networkMode,canRun:()=>!0});try{const d=await this.#i.start();if(d===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(d),this.#t.config.onSuccess?.(d,this),this.#t.config.onSettled?.(d,this.state.error,this),d}catch(d){if(d instanceof og){if(d.silent)return this.#i.promise;if(d.revert){if(this.state.data===void 0)throw d;return this.state.data}}throw this.#s({type:"error",error:d}),this.#t.config.onError?.(d,this),this.#t.config.onSettled?.(this.state.data,d,this),d}finally{this.scheduleGc()}}#s(t){const e=a=>{switch(t.type){case"failed":return{...a,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...a,fetchStatus:"paused"};case"continue":return{...a,fetchStatus:"fetching"};case"fetch":return{...a,...PN(a.data,this.options),fetchMeta:t.meta??null};case"success":const i={...a,...FS(t.data,t.dataUpdatedAt),dataUpdateCount:a.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#a=t.manual?i:void 0,i;case"error":const r=t.error;return{...a,error:r,errorUpdateCount:a.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:a.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...a,isInvalidated:!0};case"setState":return{...a,...t.state}}};this.state=e(this.state),Sa.batch(()=>{this.observers.forEach(a=>{a.onQueryUpdate()}),this.#t.notify({query:this,type:"updated",action:t})})}};function PN(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:xT(e.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function FS(t,e){return{data:t,dataUpdatedAt:e??Date.now(),error:null,isInvalidated:!1,status:"success"}}function HS(t){const e=typeof t.initialData=="function"?t.initialData():t.initialData,a=e!==void 0,i=a?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:a?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:a?"success":"pending",fetchStatus:"idle"}}function qS(t){return{onFetch:(e,a)=>{const i=e.options,r=e.fetchOptions?.meta?.fetchMore?.direction,s=e.state.data?.pages||[],c=e.state.data?.pageParams||[];let d={pages:[],pageParams:[]},p=0;const h=async()=>{let f=!1;const m=j=>{vN(j,()=>e.signal,()=>f=!0)},g=vT(e.options,e.fetchOptions),z=async(j,v,_)=>{if(f)return Promise.reject();if(v==null&&j.pages.length)return Promise.resolve(j);const E=(()=>{const U={client:e.client,queryKey:e.queryKey,pageParam:v,direction:_?"backward":"forward",meta:e.options.meta};return m(U),U})(),T=await g(E),{maxPages:O}=e.options,H=_?jN:bN;return{pages:H(j.pages,T,O),pageParams:H(j.pageParams,v,O)}};if(r&&s.length){const j=r==="backward",v=j?CN:ZS,_={pages:s,pageParams:c},S=v(i,_);d=await z(_,S,j)}else{const j=t??s.length;do{const v=p===0?c[0]??i.initialPageParam:ZS(i,d);if(p>0&&v==null)break;d=await z(d,v),p++}while(p<j)}return d};e.options.persister?e.fetchFn=()=>e.options.persister?.(h,{client:e.client,queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},a):e.fetchFn=h}}}function ZS(t,{pages:e,pageParams:a}){const i=e.length-1;return e.length>0?t.getNextPageParam(e[i],e,a[i],a):void 0}function CN(t,{pages:e,pageParams:a}){return e.length>0?t.getPreviousPageParam?.(e[0],e,a[0],a):void 0}var RN=class extends TT{#e;#a;#t;#n;constructor(t){super(),this.#e=t.client,this.mutationId=t.mutationId,this.#t=t.mutationCache,this.#a=[],this.state=t.state||DN(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){this.#a.includes(t)||(this.#a.push(t),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){this.#a=this.#a.filter(e=>e!==t),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){this.#a.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#n?.continue()??this.execute(this.state.variables)}async execute(t){const e=()=>{this.#i({type:"continue"})},a={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#n=_T({fn:()=>this.options.mutationFn?this.options.mutationFn(t,a):Promise.reject(new Error("No mutationFn found")),onFail:(s,c)=>{this.#i({type:"failed",failureCount:s,error:c})},onPause:()=>{this.#i({type:"pause"})},onContinue:e,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});const i=this.state.status==="pending",r=!this.#n.canStart();try{if(i)e();else{this.#i({type:"pending",variables:t,isPaused:r}),this.#t.config.onMutate&&await this.#t.config.onMutate(t,this,a);const c=await this.options.onMutate?.(t,a);c!==this.state.context&&this.#i({type:"pending",context:c,variables:t,isPaused:r})}const s=await this.#n.start();return await this.#t.config.onSuccess?.(s,t,this.state.context,this,a),await this.options.onSuccess?.(s,t,this.state.context,a),await this.#t.config.onSettled?.(s,null,this.state.variables,this.state.context,this,a),await this.options.onSettled?.(s,null,t,this.state.context,a),this.#i({type:"success",data:s}),s}catch(s){try{await this.#t.config.onError?.(s,t,this.state.context,this,a)}catch(c){Promise.reject(c)}try{await this.options.onError?.(s,t,this.state.context,a)}catch(c){Promise.reject(c)}try{await this.#t.config.onSettled?.(void 0,s,this.state.variables,this.state.context,this,a)}catch(c){Promise.reject(c)}try{await this.options.onSettled?.(void 0,s,t,this.state.context,a)}catch(c){Promise.reject(c)}throw this.#i({type:"error",error:s}),s}finally{this.#t.runNext(this)}}#i(t){const e=a=>{switch(t.type){case"failed":return{...a,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...a,isPaused:!0};case"continue":return{...a,isPaused:!1};case"pending":return{...a,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...a,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...a,data:void 0,error:t.error,failureCount:a.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=e(this.state),Sa.batch(()=>{this.#a.forEach(a=>{a.onMutationUpdate(t)}),this.#t.notify({mutation:this,type:"updated",action:t})})}};function DN(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var ON=class extends Kh{constructor(t={}){super(),this.config=t,this.#e=new Set,this.#a=new Map,this.#t=0}#e;#a;#t;build(t,e,a){const i=new RN({client:t,mutationCache:this,mutationId:++this.#t,options:t.defaultMutationOptions(e),state:a});return this.add(i),i}add(t){this.#e.add(t);const e=Yd(t);if(typeof e=="string"){const a=this.#a.get(e);a?a.push(t):this.#a.set(e,[t])}this.notify({type:"added",mutation:t})}remove(t){if(this.#e.delete(t)){const e=Yd(t);if(typeof e=="string"){const a=this.#a.get(e);if(a)if(a.length>1){const i=a.indexOf(t);i!==-1&&a.splice(i,1)}else a[0]===t&&this.#a.delete(e)}}this.notify({type:"removed",mutation:t})}canRun(t){const e=Yd(t);if(typeof e=="string"){const i=this.#a.get(e)?.find(r=>r.state.status==="pending");return!i||i===t}else return!0}runNext(t){const e=Yd(t);return typeof e=="string"?this.#a.get(e)?.find(i=>i!==t&&i.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){Sa.batch(()=>{this.#e.forEach(t=>{this.notify({type:"removed",mutation:t})}),this.#e.clear(),this.#a.clear()})}getAll(){return Array.from(this.#e)}find(t){const e={exact:!0,...t};return this.getAll().find(a=>WS(e,a))}findAll(t={}){return this.getAll().filter(e=>WS(t,e))}notify(t){Sa.batch(()=>{this.listeners.forEach(e=>{e(t)})})}resumePausedMutations(){const t=this.getAll().filter(e=>e.state.isPaused);return Sa.batch(()=>Promise.all(t.map(e=>e.continue().catch(Ri))))}};function Yd(t){return t.options.scope?.id}var UN=class extends Kh{constructor(t={}){super(),this.config=t,this.#e=new Map}#e;build(t,e,a){const i=e.queryKey,r=e.queryHash??Dk(i,e);let s=this.get(r);return s||(s=new AN({client:t,queryKey:i,queryHash:r,options:t.defaultQueryOptions(e),state:a,defaultOptions:t.getQueryDefaults(i)}),this.add(s)),s}add(t){this.#e.has(t.queryHash)||(this.#e.set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const e=this.#e.get(t.queryHash);e&&(t.destroy(),e===t&&this.#e.delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){Sa.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return this.#e.get(t)}getAll(){return[...this.#e.values()]}find(t){const e={exact:!0,...t};return this.getAll().find(a=>IS(e,a))}findAll(t={}){const e=this.getAll();return Object.keys(t).length>0?e.filter(a=>IS(t,a)):e}notify(t){Sa.batch(()=>{this.listeners.forEach(e=>{e(t)})})}onFocus(){Sa.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){Sa.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},LN=class{#e;#a;#t;#n;#i;#o;#r;#l;constructor(t={}){this.#e=t.queryCache||new UN,this.#a=t.mutationCache||new ON,this.#t=t.defaultOptions||{},this.#n=new Map,this.#i=new Map,this.#o=0}mount(){this.#o++,this.#o===1&&(this.#r=bT.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#l=ah.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#o--,this.#o===0&&(this.#r?.(),this.#r=void 0,this.#l?.(),this.#l=void 0)}isFetching(t){return this.#e.findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return this.#a.findAll({...t,status:"pending"}).length}getQueryData(t){const e=this.defaultQueryOptions({queryKey:t});return this.#e.get(e.queryHash)?.state.data}ensureQueryData(t){const e=this.defaultQueryOptions(t),a=this.#e.build(this,e),i=a.state.data;return i===void 0?this.fetchQuery(t):(t.revalidateIfStale&&a.isStaleByTime(ig(e.staleTime,a))&&this.prefetchQuery(e),Promise.resolve(i))}getQueriesData(t){return this.#e.findAll(t).map(({queryKey:e,state:a})=>{const i=a.data;return[e,i]})}setQueryData(t,e,a){const i=this.defaultQueryOptions({queryKey:t}),s=this.#e.get(i.queryHash)?.state.data,c=yN(e,s);if(c!==void 0)return this.#e.build(this,i).setData(c,{...a,manual:!0})}setQueriesData(t,e,a){return Sa.batch(()=>this.#e.findAll(t).map(({queryKey:i})=>[i,this.setQueryData(i,e,a)]))}getQueryState(t){const e=this.defaultQueryOptions({queryKey:t});return this.#e.get(e.queryHash)?.state}removeQueries(t){const e=this.#e;Sa.batch(()=>{e.findAll(t).forEach(a=>{e.remove(a)})})}resetQueries(t,e){const a=this.#e;return Sa.batch(()=>(a.findAll(t).forEach(i=>{i.reset()}),this.refetchQueries({type:"active",...t},e)))}cancelQueries(t,e={}){const a={revert:!0,...e},i=Sa.batch(()=>this.#e.findAll(t).map(r=>r.cancel(a)));return Promise.all(i).then(Ri).catch(Ri)}invalidateQueries(t,e={}){return Sa.batch(()=>(this.#e.findAll(t).forEach(a=>{a.invalidate()}),t?.refetchType==="none"?Promise.resolve():this.refetchQueries({...t,type:t?.refetchType??t?.type??"active"},e)))}refetchQueries(t,e={}){const a={...e,cancelRefetch:e.cancelRefetch??!0},i=Sa.batch(()=>this.#e.findAll(t).filter(r=>!r.isDisabled()&&!r.isStatic()).map(r=>{let s=r.fetch(void 0,a);return a.throwOnError||(s=s.catch(Ri)),r.state.fetchStatus==="paused"?Promise.resolve():s}));return Promise.all(i).then(Ri)}fetchQuery(t){const e=this.defaultQueryOptions(t);e.retry===void 0&&(e.retry=!1);const a=this.#e.build(this,e);return a.isStaleByTime(ig(e.staleTime,a))?a.fetch(e):Promise.resolve(a.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(Ri).catch(Ri)}fetchInfiniteQuery(t){return t.behavior=qS(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(Ri).catch(Ri)}ensureInfiniteQueryData(t){return t.behavior=qS(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return ah.isOnline()?this.#a.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#a}getDefaultOptions(){return this.#t}setDefaultOptions(t){this.#t=t}setQueryDefaults(t,e){this.#n.set(Qc(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){const e=[...this.#n.values()],a={};return e.forEach(i=>{Xc(t,i.queryKey)&&Object.assign(a,i.defaultOptions)}),a}setMutationDefaults(t,e){this.#i.set(Qc(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){const e=[...this.#i.values()],a={};return e.forEach(i=>{Xc(t,i.mutationKey)&&Object.assign(a,i.defaultOptions)}),a}defaultQueryOptions(t){if(t._defaulted)return t;const e={...this.#t.queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=Dk(e.queryKey,e)),e.refetchOnReconnect===void 0&&(e.refetchOnReconnect=e.networkMode!=="always"),e.throwOnError===void 0&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.queryFn===Ok&&(e.enabled=!1),e}defaultMutationOptions(t){return t?._defaulted?t:{...this.#t.mutations,...t?.mutationKey&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){this.#e.clear(),this.#a.clear()}},ET=N.createContext(void 0),iee=t=>{const e=N.useContext(ET);if(!e)throw new Error("No QueryClient set, use QueryClientProvider to set one");return e},KN=({client:t,children:e})=>(N.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),k.jsx(ET.Provider,{value:t,children:e}));const MN="/assets/styles-CRPPlpWG.css",NN="modulepreload",BN=function(t){return"/"+t},YS={},W=function(e,a,i){let r=Promise.resolve();if(a&&a.length>0){let p=function(h){return Promise.all(h.map(f=>Promise.resolve(f).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),d=c?.nonce||c?.getAttribute("nonce");r=p(a.map(h=>{if(h=BN(h),h in YS)return;YS[h]=!0;const f=h.endsWith(".css"),m=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${m}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":NN,f||(g.as="script"),g.crossOrigin="",g.href=h,d&&g.setAttribute("nonce",d),document.head.appendChild(g),f)return new Promise((z,j)=>{g.addEventListener("load",z),g.addEventListener("error",()=>j(new Error(`Unable to preload CSS for ${h}`)))})}))}function s(c){const d=new Event("vite:preloadError",{cancelable:!0});if(d.payload=c,window.dispatchEvent(d),!d.defaultPrevented)throw c}return r.then(c=>{for(const d of c||[])d.status==="rejected"&&s(d.reason);return e().catch(s)})};const AT=(...t)=>t.filter((e,a,i)=>!!e&&e.trim()!==""&&i.indexOf(e)===a).join(" ").trim();const $N=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const IN=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,a,i)=>i?i.toUpperCase():a.toLowerCase());const JS=t=>{const e=IN(t);return e.charAt(0).toUpperCase()+e.slice(1)};var WN={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const GN=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const VN=N.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:a=2,absoluteStrokeWidth:i,className:r="",children:s,iconNode:c,...d},p)=>N.createElement("svg",{ref:p,...WN,width:e,height:e,stroke:t,strokeWidth:i?Number(a)*24/Number(e):a,className:AT("lucide",r),...!s&&!GN(d)&&{"aria-hidden":"true"},...d},[...c.map(([h,f])=>N.createElement(h,f)),...Array.isArray(s)?s:[s]]));const Je=(t,e)=>{const a=N.forwardRef(({className:i,...r},s)=>N.createElement(VN,{ref:s,iconNode:e,className:AT(`lucide-${$N(JS(t))}`,`lucide-${t}`,i),...r}));return a.displayName=JS(t),a};const FN=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],$a=Je("arrow-up-right",FN);const HN=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],rg=Je("book-open",HN);const qN=[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]],ZN=Je("briefcase",qN);const YN=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],JN=Je("check",YN);const QN=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],Rf=Je("chevron-down",QN);const XN=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],eB=Je("circle-check",XN);const tB=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],sg=Je("circle-question-mark",tB);const aB=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],ih=Je("clock",aB);const iB=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}
56]],nB=Je("copy",iB);const oB=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],rB=Je("file-text",oB);const sB=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],lB=Je("house",sB);const cB=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],QS=Je("image",cB);const uB=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]],PT=Je("lightbulb",uB);const dB=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],Uk=Je("mail",dB);const pB=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],hB=Je("map-pin",pB);const yB=[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]],mB=Je("megaphone",yB);const fB=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],XS=Je("menu",fB);const wB=[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]],e1=Je("message-circle",wB);const gB=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],t1=Je("message-square",gB);const kB=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],nh=Je("monitor",kB);const zB=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],bB=Je("moon",zB);const jB=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],vB=Je("package",jB);const SB=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],Lk=Je("palette",SB);const xB=[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]],CT=Je("phone",xB);const _B=[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]],RT=Je("printer",_B);const TB=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],Kk=Je("share-2",TB);const EB=[["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}],["path",{d:"M3.103 6.034h17.794",key:"awc11p"}],["path",{d:"M3.4 5.467a2 2 0 0 0-.4 1.2V20a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6.667a2 2 0 0 0-.4-1.2l-2-2.667A2 2 0 0 0 17 2H7
56a2 2 0 0 0-1.6.8z",key:"o988cm"}]],lg=Je("shopping-bag",EB);const AB=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],DT=Je("sparkles",AB);const PB=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],a1=Je("star",PB);const CB=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],RB=Je("sun",CB);const DB=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],cg=Je("target",DB);const OB=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],oh=Je("trending-up",OB);const UB=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],LB=Je("wrench",UB);const KB=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Mh=Je("x",KB),MB={nav:{start:"Start",offer:"Oferta",portfolio:"Portfolio",knowledge:"Baza wiedzy",faq:"FAQ",contact:"Kontakt",ctaQuote:"Odbierz bezpÅatnie wycenÄ",ctaQuoteShort:"BezpÅatna wycena",openMenu:"Otwórz menu",closeMenu:"Zamknij menu",langLabel:"JÄzyk",langPolish:"Polski",langEnglish:"English",flagSwitchToEnglish:"PrzeÅÄ
cz na angielski",flagSwitchToPolish:"PrzeÅÄ
cz na polski"},megamenu:{web:{title:"Strony & sklepy",websites:{title:"Strony internetowe",desc:"Responsywne strony firmowe zoptymalizowane pod sprzedaż i SEO."},shops:{title:"Sklepy internetowe",desc:"Platformy e-commerce na WooCommerce gotowe do generowania zysków."},support:{title:"Rozbudowa i wsparcie",desc:"Nowe funkcje, opieka techniczna i redesign obecnych stron."}},marketing:{title:"Marketing & SEO",social:{title:"Social Media",desc:"Prowadzenie profili, angażujÄ
ce posty i budowanie spoÅecznoÅci."}
56,seo:{title:"Pozycjonowanie (SEO)",desc:"Wyższe pozycje w Google i staÅy napÅyw darmowego ruchu."},ads:{title:"Kampanie reklamowe",desc:"Skuteczne reklamy Meta Ads i Google Ads, które przynoszÄ
leady."}},design:{title:"Design & druk",branding:{title:"Logo i Branding",desc:"Unikalne logotypy i spójna identyfikacja wizualna Twojej marki."},print:{title:"MateriaÅy do druku",desc:"Wizytówki, ulotki, banery i rollupy przygotowane do druku."},packaging:{title:"Projekty opakowaÅ",desc:"Etykiety i opakowania, które wyróżniÄ
Twój produkt na póÅce."},led:{title:"Litery 3D Åwietlne",desc:"PodÅwietlane litery 3D LED ze stali nierdzewnej â efekt halo i front lit."}},featured:{heading:"NajczÄÅciej wybierane",badge:"BÄ
dź widoczny",title:"Strony internetowe",subtitle:"Premium projekt gotowy w 2 tygodnie.",cta:"Zobacz ofertÄ"},blog:{latest:"Najnowsze artykuÅy",minRead:"min czytania",allArticles:"Wszystkie artykuÅy"}},footer:{tagline:"Projektujemy strony internetowe, sklepy WooCommerce, logo, branding, SEO oraz kampanie Meta Ads dla polskich firm w UK, Irlandii i caÅej Europie.",columnMenu:"Menu",columnOffer:"Oferta",columnStudio:"Studio",menuStart:"Start",menuOffer:"Oferta",menuPortfolio:"Portfolio",menuKnowledge:"Baza wiedzy",menuContact:"Kontakt",offerWebsites:"Strony internetowe",offerShops:"Sklepy e-commerce",offerBranding:"Logo i branding",offerSocial:"Social Media",offerSeo:"SEO i pozycjonowanie",offerAds:"Kampanie Meta & Google",offerPrint:"MateriaÅy do druku",studioOffer:"Oferta",studioRealizations:"Realizacje",studioReviews:"Opinie klientów",studioFaq:"FAQ",studioQuote:"Wycena projektu",contactPhone:"Telefon",contactEmail:"E-mail",contactStudio:"DiSpace Studio",ctaBadge:"Wolne miejsca w",ctaTitle:"Gotowy na nowy projekt?",ctaSubtitle:"BezpÅatna wycena w 24 h. Bez zobowiÄ
zaÅ.",ctaButton:"Odbierz bezpÅatnÄ
wycenÄ",rights:"Wszelkie prawa zastrzeżone.",terms:"Regulamin",privacy:"Polityka prywatnoÅci",cookies:"Cookies"},help:{title:"Masz pytania?",subtitle:"Napisz, odpowiadamy w 10 minut.",button:"Napisz wiadomoÅÄ",buttonShort:"Napisz",showAria:"Pokaż pasek pomocy",hideAria:"Schowaj pasek pomocy",quoteShort:"BezpÅatna wycena",quoteLong:"Odbierz bezpÅatnie wycenÄ",trustpilotPrefix:"DoskonaÅy",trustpilotOn:"na",trustpilotOnBasisOf:"na podstawie",trustpilotReviews:"opinii",contactMessenger:"Messenger",contactMessengerSub:"Napisz na Facebooku",contactWhatsapp:"WhatsApp",contactWhatsappSub:"Szybka odpowiedź",contactForm:"Formularz email",contactFormSub:"Opisz projekt",contactPhone:"ZadzwoÅ"},modal:{close:"Zamknij"},meta:{siteName:"DiSpace",home:{title:"Strony, sklepy i SEO dla polskich firm w UK | DiSpace",description:"Projektujemy szybkie strony WordPress, sklepy WooCommerce oraz prowadzimy SEO i Meta Ads dla polskich firm w UK. Start od £490, wycena w 24 h."},contact:{title:"Kontakt | DiSpace â bezpÅatna wycena projektu w 24 h",description:"Napisz do studia DiSpace z Glasgow: e-mail, telefon, WhatsApp i Messenger. Odpowiadamy w 24 h roboczych, po polsku i po angielsku."},portfolio:{title:"Portfolio | Realizacje stron i sklepów â DiSpace UK",description:"Strony WordPress, sklepy WooCommerce i branding zaprojektowane dla polskich firm w UK. Zobacz realizacje na żywo i sprawdź, co potrafimy."},offerWeb:{title:"Strony i sklepy internetowe dla firm w UK | DiSpace",description:"Projektujemy szybkie strony WordPress i sklepy WooCommerce zoptymalizowane pod SEO i sprzedaż. BezpÅatna wycena projektu w 24 h."},offerMarketing:{title:"SEO, Meta Ads i Google Ads dla firm w UK | DiSpace",description:"Pozycjonowanie SEO, kampanie Meta Ads i Google Ads oraz prowadzenie social media. Realny ruch i leady dla polskich firm w UK."},offerDesign:{title:"Logo, branding i materiaÅy do druku w UK | DiSpace",description:"Projektujemy logo, identyfikacjÄ wizualnÄ
, wizytówki, ulotki, rollupy i opakowania. Spójna marka i druk dopiÄty na ostatni guzik."},knowledge:{title:"Baza wiedzy | Blog o stronach, SEO i marketingu â DiSpace",description:"Praktyczne poradniki o stronach WordPress, sklepach WooCommerce, SEO, brandingu i reklamach Meta Ads. Wiedza, która realnie zwiÄksza sprzedaż."},terms:{title:"Regulamin â DiSpace",description:"Regulamin Åwiadczenia usÅug przez DiSpace."},privacy:{title:"Polityka prywatnoÅci â DiSpace",description:"Jak przetwarzamy Twoje dane osobowe."},cookies:{title:"Polityka cookies â DiSpace",description:"Informacje o plikach cookies wykorzystywanych na stronie."}
56,form:{title:"BezpÅatna wycena â DiSpace",description:"WypeÅnij krótki formularz i otrzymaj bezpÅatnÄ
wycenÄ projektu w 24h."},faq:{title:"FAQ â najczÄÅciej zadawane pytania | DiSpace",description:"Odpowiedzi na pytania o strony WordPress, sklepy WooCommerce, branding, druk, SEO i kampanie Meta Ads w UK."}}},NB={nav:{start:"Home",offer:"Services",portfolio:"Portfolio",knowledge:"Blog",faq:"FAQ",contact:"Contact",ctaQuote:"Get a free quote",ctaQuoteShort:"Free quote",openMenu:"Open menu",closeMenu:"Close menu",langLabel:"Language",langPolish:"Polski",langEnglish:"English",flagSwitchToEnglish:"Switch to English",flagSwitchToPolish:"Switch to Polish"},megamenu:{web:{title:"Websites & shops",websites:{title:"Websites",desc:"Responsive business websites optimized for sales and SEO."},shops:{title:"Online shops",desc:"WooCommerce e-commerce platforms ready to generate revenue."},support:{title:"Maintenance & support",desc:"New features, technical care and redesign of existing sites."}},marketing:{title:"Marketing & SEO",social:{title:"Social Media",desc:"Profile management, engaging posts and community building."},seo:{title:"Search (SEO)",desc:"Higher Google rankings and a steady flow of organic traffic."},ads:{title:"Ad campaigns",desc:"Effective Meta Ads and Google Ads that bring real leads."}},design:{title:"Design & print",branding:{title:"Logo & branding",desc:"Unique logotypes and consistent visual identity for your brand."},print:{title:"Print materials",desc:"Business cards, flyers, banners and roll-ups ready to print."},packaging:{title:"Packaging design",desc:"Labels and packaging that make your product stand out."},led:{title:"3D LED letters",desc:"Stainless steel 3D LED letters â halo (echo) and front lit signage."}},featured:{heading:"Most popular",badge:"Be visible",title:"Websites",subtitle:"Premium design delivered in 2 weeks.",cta:"See services"},blog:{latest:"Latest articles",minRead:"min read",allArticles:"All articles"}},footer:{tagline:"We design websites, WooCommerce shops, logos, branding, SEO and Meta Ads campaigns for businesses in the UK, Ireland and across Europe.",columnMenu:"Menu",columnOffer:"Services",columnStudio:"Studio",menuStart:"Home",menuOffer:"Services",menuPortfolio:"Portfolio",menuKnowledge:"Blog",menuContact:"Contact",offerWebsites:"Websites",offerShops:"E-commerce shops",offerBranding:"Logo & branding",offerSocial:"Social Media",offerSeo:"SEO",offerAds:"Meta & Google Ads",offerPrint:"Print materials",studioOffer:"Services",studioRealizations:"Work",studioReviews:"Client reviews",studioFaq:"FAQ",studioQuote:"Project quote",contactPhone:"Phone",contactEmail:"E-mail",contactStudio:"DiSpace Studio",ctaBadge:"Spots open in",ctaTitle:"Ready for your next project?",ctaSubtitle:"Free quote within 24h. No strings attached.",ctaButton:"Get a free quote",rights:"All rights reserved.",terms:"Terms",privacy:"Privacy policy",cookies:"Cookies"},help:{title:"Have questions?",subtitle:"Drop us a line, we reply within 10 minutes.",button:"Send a message",buttonShort:"Write",showAria:"Show help bar",hideAria:"Hide help bar",quoteShort:"Free quote",quoteLong:"Get a free quote",trustpilotPrefix:"Excellent",trustpilotOn:"out of",trustpilotOnBasisOf:"based on",trustpilotReviews:"reviews",contactMessenger:"Messenger",contactMessengerSub:"Message us on Facebook",contactWhatsapp:"WhatsApp",contactWhatsappSub:"Quick reply",contactForm:"Email form",contactFormSub:"Tell us about your project",contactPhone:"Call us"},modal:{close:"Close"},meta:{siteName:"DiSpace",home:{title:"DiSpace â Websites, branding and SEO in Glasgow",description:"UK-based Polish studio designing websites, branding and print. We work with businesses in Glasgow, Edinburgh and across the UK."},contact:{title:"Contact â DiSpace",description:"Get in touch with DiSpace, a Polish studio based in the UK. Quote within 24h, support in English and Polish."},portfolio:{title:"Portfolio â DiSpace",description:"See our work: websites, online shops, branding and print for UK businesses."},offerWeb:{title:"Websites & online shops â DiSpace",description:"We design websites and e-commerce shops that sell. Free quote within 24h."},offerMarketing:{title:"Marketing & SEO â DiSpace",description:"SEO, social media and ad campaigns. Real traffic and real leads."},offerDesign:{title:"Design & print â DiSpace",description:"Logos, branding, print materials and packaging â crafted with attention to every detail."},knowledge:{title:"Blog â DiSpace",description:"Practical articles on websites, marketing, branding and online business."},terms:{title:"Terms â DiSpace",description:"Terms of service for DiSpace."},privacy:{title:"Privacy policy â DiSpace",description:"How we process your personal data."},cookies:{title:"Cookie policy â DiSpace",description:"Information about cookies used on this site."}
56,form:{title:"Free quote â DiSpace",description:"Fill out a short form and get a free project quote within 24h."},faq:{title:"FAQ â DiSpace",description:"Answers to common questions about websites, online shops, branding, print, SEO and ads for UK businesses."}}},eu=[{key:"home",pl:"/pl",en:"/en"},{key:"contact",pl:"/pl/kontakt",en:"/en/contact"},{key:"portfolio",pl:"/pl/portfolio",en:"/en/portfolio"},{key:"offer.web",pl:"/strony-internetowe-uk",en:"/en/services/web-shops"},{key:"offer.marketing",pl:"/pozycjonowanie-uk",en:"/en/services/marketing-seo"},{key:"offer.design",pl:"/pl/oferta/design-druk",en:"/en/services/design-print"},{key:"offer.led",pl:"/litery-3d-swietlne",en:"/en/3d-led-letters"},{key:"knowledge",pl:"/pl/baza-wiedzy",en:"/en/knowledge-base"},{key:"terms",pl:"/pl/regulamin",en:"/en/terms"},{key:"privacy",pl:"/pl/polityka-prywatnosci",en:"/en/privacy-policy"},{key:"cookies",pl:"/pl/cookies",en:"/en/cookies"},{key:"form",pl:"/pl/dispace-formularz",en:"/en/dispace-form"},{key:"faq",pl:"/pl/faq",en:"/en/faq"}];function Mk(t){return t==="/en"||t.startsWith("/en/")?"en":"pl"}function Ct(t,e){const a=eu.find(i=>i.key===t);return a?a[e]:null}function BB(t){const e=Mk(t),a=e==="pl"?"en":"pl",i=eu.find(s=>s[e]===t);if(i)return i[a]??(a==="pl"?"/pl":"/en");const r=eu.find(s=>s[e]&&t.startsWith(s[e]+"/"));if(r){const s=r[a];if(s){const c=t.slice(r[e].length);return s+c}}return a==="pl"?"/pl":"/en"}const Dn="https://dispace.uk";function Jd(t){return`${Dn}${t}`}function zt(t,e,a){const i=[{rel:"canonical",href:`${Dn}${t}`}];return e&&i.push({rel:"alternate",hreflang:"pl",href:`${Dn}${e}`}),a&&i.push({rel:"alternate",hreflang:"en",href:`${Dn}${a}`}),i.push({rel:"alternate",hreflang:"x-default",href:`${Dn}${e??a??"/pl"}`}),i}const OT={pl:MB,en:NB};function Nh(){const t=Ak({select:e=>e.location.pathname});return OT[Mk(t)]}function Nk(){const t=Ak({select:e=>e.location.pathname});return Mk(t)}function $B(t){return OT[t]}const IB=N.lazy(()=>W(()=>import("./LeadQuizForm-BNhNMPTe.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33])).then(t=>({default:t.LeadQuizForm})));function WB(){const t=Nh(),[e,a]=N.useState(!1),[i,r]=N.useState(null);return N.useEffect(()=>{const s=d=>{const p=d.target;if(!p)return;const h=p.closest("a");if(!h)return;const f=h.getAttribute("href")||"";let m=f;try{m=new URL(f,window.location.origin).pathname}catch{}m!=="/pl/dispace-formularz"&&m!=="/en/dispace-form"&&m!=="/dispace-formularz"||d.metaKey||d.ctrlKey||d.shiftKey||d.button!==0||(d.preventDefault(),d.stopPropagation(),r(null),a(!0))},c=d=>{const p=d.detail??{};r(p),a(!0)};return document.addEventListener("click",s,!0),window.addEventListener("dispace:open-quote",c),()=>{document.removeEventListener("click",s,!0),window.removeEventListener("dispace:open-quote",c)}},[]),N.useEffect(()=>{if(!e)return;const s=document.body.style.overflow;document.body.style.overflow="hidden";const c=d=>{d.key==="Escape"&&a(!1)};return window.addEventListener("keydown",c),()=>{document.body.style.overflow=s,window.removeEventListener("keydown",c)}},[e]),e?k.jsxs("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-[100] flex flex-col bg-[#070C16]",children:[k.jsx("button",{type:"button","aria-label":t.modal.close,onClick:()=>a(!1),className:"fixed right-4 top-4 z-[102] inline-flex size-10 items-center justify-center rounded-full bg-white/10 text-white shadow-md backdrop-blur-md transition hover:bg-white/20 sm:right-6 sm:top-6",children:k.jsx(Mh,{size:18,strokeWidth:2.2})}),k.jsx("div",{className:"relative z-[101] flex min-h-full w-full items-start justify-center overflow-y-auto px-4 py-8 sm:py-12",children:k.jsx("div",{className:"w-full max-w-[1120px]",children:k.jsx(N.Suspense,{fallback:k.jsx("div",{className:"min-h-[520px]"}),children:k.jsx(IB,{embedded:!0,initialFormData:i?.formData,initialIndex:i?.index,autoStart:i?.autoStart??!!i})})})})]}):null}const Bk=N.createContext({});function $k(t){const e=N.useRef(null);return e.current===null&&(e.current=t()),e.current}const GB=typeof window<"u",UT=GB?N.useLayoutEffect:N.useEffect,Bh=N.createContext(null);function Ik(t,e){t.indexOf(e)===-1&&t.push(e)}function rh(t,e){const a=t.indexOf(e);a>-1&&t.splice(a,1)}const nn=(t,e,a)=>a>e?e:a<t?t:a;let Wk=()=>{};const Do={},LT=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),KT=t=>typeof t=="object"&&t!==null,MT=t=>/^0[^.\s]+$/u.test(t);function NT(t){let e;return()=>(e===void 0&&(e=t()),e)}const fi=t=>t,pu=(...t)=>t.reduce((e,a)=>i=>a(e(i))),tu=(t,e,a)=>{const i=e-t;return i?(a-t)/i:1};class Gk{constructor(){this.subscriptions=[]}add(e){return Ik(this.subscriptions,e),()=>rh(this.subscriptions,e)}notify(e,a,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](e,a,i);else for(let s=0;s<r;s++){const c=this.subscriptions[s];c&&c(e,a,i)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const ei=t=>t*1e3,mi=t=>t/1e3,BT=(t,e)=>e?t*(1e3/e):0,$T=(t,e,a)=>(((1-3*a+3*e)*t+(3*a-6*e))*t+3*e)*t,VB=1e-7,FB=12;function HB(t,e,a,i,r){let s,c,d=0;do c=e+(a-e)/2,s=$T(c,i,r)-t,s>0?a=c:e=c;while(Math.abs(s)>VB&&++d<FB);return c}
vendor: 40,462 bytes, line 56
56function hu(t,e,a,i){if(t===e&&a===i)return fi;const r=s=>HB(s,0,1,t,a);return s=>s===0||s===1?s:$T(r(s),e,i)}const IT=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,WT=t=>e=>1-t(1-e),GT=hu(.33,1.53,.69,.99),Vk=WT(GT),VT=IT(Vk),FT=t=>t>=1?1:(t*=2)<1?.5*Vk(t):.5*(2-Math.pow(2,-10*(t-1))),Fk=t=>1-Math.sin(Math.acos(t)),HT=WT(Fk),qT=IT(Fk),qB=hu(.42,0,1,1),ZB=hu(0,0,.58,1),ZT=hu(.42,0,.58,1),YB=t=>Array.isArray(t)&&typeof t[0]!="number",YT=t=>Array.isArray(t)&&typeof t[0]=="number",JB={linear:fi,easeIn:qB,easeInOut:ZT,easeOut:ZB,circIn:Fk,circInOut:qT,circOut:HT,backIn:Vk,backInOut:VT,backOut:GT,anticipate:FT},QB=t=>typeof t=="string",i1=t=>{if(YT(t)){Wk(t.length===4);const[e,a,i,r]=t;return hu(e,a,i,r)}else if(QB(t))return JB[t];return t},Qd=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function XB(t,e){let a=new Set,i=new Set,r=!1,s=!1;const c=new WeakSet;let d={delta:0,timestamp:0,isProcessing:!1};function p(f){c.has(f)&&(h.schedule(f),t()),f(d)}const h={schedule:(f,m=!1,g=!1)=>{const j=g&&r?a:i;return m&&c.add(f),j.add(f),f},cancel:f=>{i.delete(f),c.delete(f)},process:f=>{if(d=f,r){s=!0;return}r=!0;const m=a;a=i,i=m,a.forEach(p),a.clear(),r=!1,s&&(s=!1,h.process(f))}};return h}const e6=40;function JT(t,e){let a=!1,i=!0;const r={delta:0,timestamp:0,isProcessing:!1},s=()=>a=!0,c=Qd.reduce((T,O)=>(T[O]=XB(s),T),{}),{setup:d,read:p,resolveKeyframes:h,preUpdate:f,update:m,preRender:g,render:z,postRender:j}=c,v=()=>{const T=Do.useManualTiming,O=T?r.timestamp:performance.now();a=!1,T||(r.delta=i?1e3/60:Math.max(Math.min(O-r.timestamp,e6),1)),r.timestamp=O,r.isProcessing=!0,d.process(r),p.process(r),h.process(r),f.process(r),m.process(r),g.process(r),z.process(r),j.process(r),r.isProcessing=!1,a&&e&&(i=!1,t(v))},_=()=>{a=!0,i=!0,r.isProcessing||t(v)};return{schedule:Qd.reduce((T,O)=>{const H=c[O];return T[O]=(U,R=!1,I=!1)=>(a||_(),H.schedule(U,R,I)),T},{}),cancel:T=>{for(let O=0;O<Qd.length;O++)c[Qd[O]].cancel(T)},state:r,steps:c}}const{schedule:wt,cancel:Oo,state:da,steps:Df}=JT(typeof requestAnimationFrame<"u"?requestAnimationFrame:fi,!0);let Rp;function t6(){Rp=void 0}const _a={now:()=>(Rp===void 0&&_a.set(da.isProcessing||Do.useManualTiming?da.timestamp:performance.now()),Rp),set:t=>{Rp=t,queueMicrotask(t6)}},QT=t=>e=>typeof e=="string"&&e.startsWith(t),XT=QT("--"),a6=QT("var(--"),Hk=t=>a6(t)?i6.test(t.split("/*")[0].trim()):!1,i6=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function n1(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const dl={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},au={...dl,transform:t=>nn(0,1,t)},Xd={...dl,default:1},Dc=t=>Math.round(t*1e5)/1e5,qk=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function n6(t){return t==null}const o6=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Zk=(t,e)=>a=>!!(typeof a=="string"&&o6.test(a)&&a.startsWith(t)||e&&!n6(a)&&Object.prototype.hasOwnProperty.call(a,e)),eE=(t,e,a)=>i=>{if(typeof i!="string")return i;const[r,s,c,d]=i.match(qk);return{[t]:parseFloat(r),[e]:parseFloat(s),[a]:parseFloat(c),alpha:d!==void 0?parseFloat(d):1}},r6=t=>nn(0,255,t),Of={...dl,transform:t=>Math.round(r6(t))},gr={test:Zk("rgb","red"),parse:eE("red","green","blue"),transform:({red:t,green:e,blue:a,alpha:i=1})=>"rgba("+Of.transform(t)+", "+Of.transform(e)+", "+Of.transform(a)+", "+Dc(au.transform(i))+")"};function s6(t){let e="",a="",i="",r="";return t.length>5?(e=t.substring(1,3),a=t.substring(3,5),i=t.substring(5,7),r=t.substring(7,9)):(e=t.substring(1,2),a=t.substring(2,3),i=t.substring(3,4),r=t.substring(4,5),e+=e,a+=a,i+=i,r+=r),{red:parseInt(e,16),green:parseInt(a,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const ug={test:Zk("#"),parse:s6,transform:gr.transform},yu=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),Tn=yu("deg"),tn=yu("%"),ze=yu("px"),l6=yu("vh"),c6=yu("vw"),o1={...tn,parse:t=>tn.parse(t)/100,transform:t=>tn.transform(t*100)},Zs={test:Zk("hsl","hue"),parse:eE("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:a,alpha:i=1})=>"hsla("+Math.round(t)+", "+tn.transform(Dc(e))+", "+tn.transform(Dc(a))+", "+Dc(au.transform(i))+")"},Wt={test:t=>gr.test(t)||ug.test(t)||Zs.test(t),parse:t=>gr.test(t)?gr.parse(t):Zs.test(t)?Zs.parse(t):ug.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?gr.transform(t):Zs.transform(t),getAnimatableNone:t=>{const e=Wt.parse(t);return e.alpha=0,Wt.transform(e)}},u6=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function d6(t){return isNaN(t)&&typeof t=="string"&&(t.match(qk)?.length||0)+(t.match(u6)?.length||0)>0}const tE="number",aE="color",p6="var",h6="var(",r1="${}",y6=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function nl(t){const e=t.toString(),a=[],i={color:[],number:[],var:[]},r=[];let s=0;const d=e.replace(y6,p=>(Wt.test(p)?(i.color.push(s),r.push(aE),a.push(Wt.parse(p))):p.startsWith(h6)?(i.var.push(s),r.push(p6),a.push(p)):(i.number.push(s),r.push(tE),a.push(parseFloat(p))),++s,r1)).split(r1);return{values:a,split:d,indexes:i,types:r}}function m6(t){return nl(t).values}function iE({split:t,types:e}){const a=t.length;return i=>{let r="";for(let s=0;s<a;s++)if(r+=t[s],i[s]!==void 0){const c=e[s];c===tE?r+=Dc(i[s]):c===aE?r+=Wt.transform(i[s]):r+=i[s]}return r}}function f6(t){return iE(nl(t))}const w6=t=>typeof t=="number"?0:Wt.test(t)?Wt.getAnimatableNone(t):t,g6=(t,e)=>typeof t=="number"?e?.trim().endsWith("/")?t:0:w6(t);function k6(t){const e=nl(t);return iE(e)(e.values.map((i,r)=>g6(i,e.split[r])))}const Ki={test:d6,parse:m6,createTransformer:f6,getAnimatableNone:k6};function Uf(t,e,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?t+(e-t)*6*a:a<1/2?e:a<2/3?t+(e-t)*(2/3-a)*6:t}function z6({hue:t,saturation:e,lightness:a,alpha:i}){t/=360,e/=100,a/=100;let r=0,s=0,c=0;if(!e)r=s=c=a;else{const d=a<.5?a*(1+e):a+e-a*e,p=2*a-d;r=Uf(p,d,t+1/3),s=Uf(p,d,t),c=Uf(p,d,t-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(c*255),alpha:i}}function sh(t,e){return a=>a>0?e:t}const ft=(t,e,a)=>t+(e-t)*a,Lf=(t,e,a)=>{const i=t*t,r=a*(e*e-i)+i;return r<0?0:Math.sqrt(r)},b6=[ug,gr,Zs],j6=t=>b6.find(e=>e.test(t));function s1(t){const e=j6(t);if(!e)return!1;let a=e.parse(t);return e===Zs&&(a=z6(a)),a}const l1=(t,e)=>{const a=s1(t),i=s1(e);if(!a||!i)return sh(t,e);const r={...a};return s=>(r.red=Lf(a.red,i.red,s),r.green=Lf(a.green,i.green,s),r.blue=Lf(a.blue,i.blue,s),r.alpha=ft(a.alpha,i.alpha,s),gr.transform(r))},dg=new Set(["none","hidden"]);function v6(t,e){return dg.has(t)?a=>a<=0?t:e:a=>a>=1?e:t}function S6(t,e){return a=>ft(t,e,a)}function Yk(t){return typeof t=="number"?S6:typeof t=="string"?Hk(t)?sh:Wt.test(t)?l1:T6:Array.isArray(t)?nE:typeof t=="object"?Wt.test(t)?l1:x6:sh}function nE(t,e){const a=[...t],i=a.length,r=t.map((s,c)=>Yk(s)(s,e[c]));return s=>{for(let c=0;c<i;c++)a[c]=r[c](s);return a}}function x6(t,e){const a={...t,...e},i={};for(const r in a)t[r]!==void 0&&e[r]!==void 0&&(i[r]=Yk(t[r])(t[r],e[r]));return r=>{for(const s in i)a[s]=i[s](r);return a}}function _6(t,e){const a=[],i={color:0,var:0,number:0};for(let r=0;r<e.values.length;r++){const s=e.types[r],c=t.indexes[s][i[s]],d=t.values[c]??0;a[r]=d,i[s]++}return a}const T6=(t,e)=>{const a=Ki.createTransformer(e),i=nl(t),r=nl(e);return i.indexes.var.length===r.indexes.var.length&&i.indexes.color.length===r.indexes.color.length&&i.indexes.number.length>=r.indexes.number.length?dg.has(t)&&!r.values.length||dg.has(e)&&!i.values.length?v6(t,e):pu(nE(_6(i,r),r.values),a):sh(t,e)};function oE(t,e,a){return typeof t=="number"&&typeof e=="number"&&typeof a=="number"?ft(t,e,a):Yk(t)(t,e)}const E6=t=>{const e=({timestamp:a})=>t(a);return{start:(a=!0)=>wt.update(e,a),stop:()=>Oo(e),now:()=>da.isProcessing?da.timestamp:_a.now()}},rE=(t,e,a=10)=>{let i="";const r=Math.max(Math.round(e/a),2);for(let s=0;s<r;s++)i+=Math.round(t(s/(r-1))*1e4)/1e4+", ";return`linear(${i.substring(0,i.length-2)})`},lh=2e4;function Jk(t){let e=0;const a=50;let i=t.next(e);for(;!i.done&&e<lh;)e+=a,i=t.next(e);return e>=lh?1/0:e}function A6(t,e=100,a){const i=a({...t,keyframes:[0,e]}),r=Math.min(Jk(i),lh);return{type:"keyframes",ease:s=>i.next(r*s).value/e,duration:mi(r)}}const Pt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function pg(t,e){return t*Math.sqrt(1-e*e)}const P6=12;function C6(t,e,a){let i=a;for(let r=1;r<P6;r++)i=i-t(i)/e(i);return i}const Kf=.001;function R6({duration:t=Pt.duration,bounce:e=Pt.bounce,velocity:a=Pt.velocity,mass:i=Pt.mass}){let r,s,c=1-e;c=nn(Pt.minDamping,Pt.maxDamping,c),t=nn(Pt.minDuration,Pt.maxDuration,mi(t)),c<1?(r=h=>{const f=h*c,m=f*t,g=f-a,z=pg(h,c),j=Math.exp(-m);return Kf-g/z*j},s=h=>{const m=h*c*t,g=m*a+a,z=Math.pow(c,2)*Math.pow(h,2)*t,j=Math.exp(-m),v=pg(Math.pow(h,2),c);return(-r(h)+Kf>0?-1:1)*((g-z)*j)/v}):(r=h=>{const f=Math.exp(-h*t),m=(h-a)*t+1;return-Kf+f*m},s=h=>{const f=Math.exp(-h*t),m=(a-h)*(t*t);return f*m});const d=5/t,p=C6(r,s,d);if(t=ei(t),isNaN(p))return{stiffness:Pt.stiffness,damping:Pt.damping,duration:t};{const h=Math.pow(p,2)*i;return{stiffness:h,damping:c*2*Math.sqrt(i*h),duration:t}}}const D6=["duration","bounce"],O6=["stiffness","damping","mass"];function c1(t,e){return e.some(a=>t[a]!==void 0)}function U6(t){let e={velocity:Pt.velocity,stiffness:Pt.stiffness,damping:Pt.damping,mass:Pt.mass,isResolvedFromDuration:!1,...t};if(!c1(t,O6)&&c1(t,D6))if(e.velocity=0,t.visualDuration){const a=t.visualDuration,i=2*Math.PI/(a*1.2),r=i*i,s=2*nn(.05,1,1-(t.bounce||0))*Math.sqrt(r);e={...e,mass:Pt.mass,stiffness:r,damping:s}}else{const a=R6({...t,velocity:0});e={...e,...a,mass:Pt.mass},e.isResolvedFromDuration=!0}return e}function ch(t=Pt.visualDuration,e=Pt.bounce){const a=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:e}:t;let{restSpeed:i,restDelta:r}=a;const s=a.keyframes[0],c=a.keyframes[a.keyframes.length-1],d={done:!1,value:s},{stiffness:p,damping:h,mass:f,duration:m,velocity:g,isResolvedFromDuration:z}=U6({...a,velocity:-mi(a.velocity||0)}),j=g||0,v=h/(2*Math.sqrt(p*f)),_=c-s,S=mi(Math.sqrt(p/f)),E=Math.abs(_)<5;i||(i=E?Pt.restSpeed.granular:Pt.restSpeed.default),r||(r=E?Pt.restDelta.granular:Pt.restDelta.default);let T,O,H,U,R,I;if(v<1)H=pg(S,v),U=(j+v*S*_)/H,T=ee=>{const F=Math.exp(-v*S*ee);return c-F*(U*Math.sin(H*ee)+_*Math.cos(H*ee))},R=v*S*U+_*H,I=v*S*_-U*H,O=ee=>Math.exp(-v*S*ee)*(R*Math.sin(H*ee)+I*Math.cos(H*ee));else if(v===1){T=F=>c-Math.exp(-S*F)*(_+(j+S*_)*F);const ee=j+S*_;O=F=>Math.exp(-S*F)*(S*ee*F-j)}else{const ee=S*Math.sqrt(v*v-1);T=me=>{const de=Math.exp(-v*S*me),A=Math.min(ee*me,300);return c-de*((j+v*S*_)*Math.sinh(A)+ee*_*Math.cosh(A))/ee};const F=(j+v*S*_)/ee,Z=v*S*F-_*ee,oe=v*S*_-F*ee;O=me=>{const de=Math.exp(-v*S*me),A=Math.min(ee*me,300);return de*(Z*Math.sinh(A)+oe*Math.cosh(A))}}const ae={calculatedDuration:z&&m||null,velocity:ee=>ei(O(ee)),next:ee=>{if(!z&&v<1){const Z=Math.exp(-v*S*ee),oe=Math.sin(H*ee),me=Math.cos(H*ee),de=c-Z*(U*oe+_*me),A=ei(Z*(R*oe+I*me));return d.done=Math.abs(A)<=i&&Math.abs(c-de)<=r,d.value=d.done?c:de,d}const F=T(ee);if(z)d.done=ee>=m;else{const Z=ei(O(ee));d.done=Math.abs(Z)<=i&&Math.abs(c-F)<=r}return d.value=d.done?c:F,d},toString:()=>{const ee=Math.min(Jk(ae),lh),F=rE(Z=>ae.next(ee*Z).value,ee,30);return ee+"ms "+F},toTransition:()=>{}};return ae}ch.applyToOptions=t=>{const e=A6(t,100,ch);return t.ease=e.ease,t.duration=ei(e.duration),t.type="keyframes",t};const L6=5;function sE(t,e,a){const i=Math.max(e-L6,0);return BT(a-t(i),e-i)}function hg({keyframes:t,velocity:e=0,power:a=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:c,min:d,max:p,restDelta:h=.5,restSpeed:f}){const m=t[0],g={done:!1,value:m},z=I=>d!==void 0&&I<d||p!==void 0&&I>p,j=I=>d===void 0?p:p===void 0||Math.abs(d-I)<Math.abs(p-I)?d:p;let v=a*e;const _=m+v,S=c===void 0?_:c(_);S!==_&&(v=S-m);const E=I=>-v*Math.exp(-I/i),T=I=>S+E(I),O=I=>{const ae=E(I),ee=T(I);g.done=Math.abs(ae)<=h,g.value=g.done?S:ee};let H,U;const R=I=>{z(g.value)&&(H=I,U=ch({keyframes:[g.value,j(g.value)],velocity:sE(T,I,g.value),damping:r,stiffness:s,restDelta:h,restSpeed:f}))};return R(0),{calculatedDuration:null,next:I=>{let ae=!1;return!U&&H===void 0&&(ae=!0,O(I),R(I)),H!==void 0&&I>=H?U.next(I-H):(!ae&&O(I),g)}}}function K6(t,e,a){const i=[],r=a||Do.mix||oE,s=t.length-1;for(let c=0;c<s;c++){let d=r(t[c],t[c+1]);if(e){const p=Array.isArray(e)?e[c]||fi:e;d=pu(p,d)}i.push(d)}return i}function M6(t,e,{clamp:a=!0,ease:i,mixer:r}={}){const s=t.length;if(Wk(s===e.length),s===1)return()=>e[0];if(s===2&&e[0]===e[1])return()=>e[1];const c=t[0]===t[1];t[0]>t[s-1]&&(t=[...t].reverse(),e=[...e].reverse());const d=K6(e,i,r),p=d.length,h=f=>{if(c&&f<t[0])return e[0];let m=0;if(p>1)for(;m<t.length-2&&!(f<t[m+1]);m++);const g=tu(t[m],t[m+1],f);return d[m](g)};return a?f=>h(nn(t[0],t[s-1],f)):h}function N6(t,e){const a=t[t.length-1];for(let i=1;i<=e;i++){const r=tu(0,e,i);t.push(ft(a,1,r))}}function B6(t){const e=[0];return N6(e,t.length-1),e}function $6(t,e){return t.map(a=>a*e)}function I6(t,e){return t.map(()=>e||ZT).splice(0,t.length-1)}function Oc({duration:t=300,keyframes:e,times:a,ease:i="easeInOut"}){const r=YB(i)?i.map(i1):i1(i),s={done:!1,value:e[0]},c=$6(a&&a.length===e.length?a:B6(e),t),d=M6(c,e,{ease:Array.isArray(r)?r:I6(e,r)});return{calculatedDuration:t,next:p=>(s.value=d(p),s.done=p>=t,s)}}const W6=t=>t!==null;function $h(t,{repeat:e,repeatType:a="loop"},i,r=1){const s=t.filter(W6),d=r<0||e&&a!=="loop"&&e%2===1?0:s.length-1;return!d||i===void 0?s[d]:i}const G6={decay:hg,inertia:hg,tween:Oc,keyframes:Oc,spring:ch};function lE(t){typeof t.type=="string"&&(t.type=G6[t.type])}class Qk{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,a){return this.finished.then(e,a)}}const V6=t=>t/100;class uh extends Qk{constructor(e){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:a}=this.options;a&&a.updatedAt!==_a.now()&&this.tick(_a.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=e,this.initAnimation(),this.play(),e.autoplay===!1&&this.pause()}initAnimation(){const{options:e}=this;lE(e);const{type:a=Oc,repeat:i=0,repeatDelay:r=0,repeatType:s,velocity:c=0}=e;let{keyframes:d}=e;const p=a||Oc;p!==Oc&&typeof d[0]!="number"&&(this.mixKeyframes=pu(V6,oE(d[0],d[1])),d=[0,100]);const h=p({...e,keyframes:d});s==="mirror"&&(this.mirroredGenerator=p({...e,keyframes:[...d].reverse(),velocity:-c})),h.calculatedDuration===null&&(h.calculatedDuration=Jk(h));const{calculatedDuration:f}=h;this.calculatedDuration=f,this.resolvedDuration=f+r,this.totalDuration=this.resolvedDuration*(i+1)-r,this.generator=h}updateTime(e){const a=Math.round(e-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=a}tick(e,a=!1){const{generator:i,totalDuration:r,mixKeyframes:s,mirroredGenerator:c,resolvedDuration:d,calculatedDuration:p}=this;if(this.startTime===null)return i.next(0);const{delay:h=0,keyframes:f,repeat:m,repeatType:g,repeatDelay:z,type:j,onUpdate:v,finalKeyframe:_}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,e):this.speed<0&&(this.startTime=Math.min(e-r/this.speed,this.startTime)),a?this.currentTime=e:this.updateTime(e);const S=this.currentTime-h*(this.playbackSpeed>=0?1:-1),E=this.playbackSpeed>=0?S<0:S>r;this.currentTime=Math.max(S,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=r);let T=this.currentTime,O=i;if(m){const I=Math.min(this.currentTime,r)/d;let ae=Math.floor(I),ee=I%1;!ee&&I>=1&&(ee=1),ee===1&&ae--,ae=Math.min(ae,m+1),ae%2&&(g==="reverse"?(ee=1-ee,z&&(ee-=z/d)):g==="mirror"&&(O=c)),T=nn(0,1,ee)*d}let H;E?(this.delayState.value=f[0],H=this.delayState):H=O.next(T),s&&!E&&(H.value=s(H.value));let{done:U}=H;!E&&p!==null&&(U=this.playbackSpeed>=0?this.currentTime>=r:this.currentTime<=0);const R=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&U);return R&&j!==hg&&(H.value=$h(f,this.options,_,this.speed)),v&&v(H.value),R&&this.finish(),H}then(e,a){return this.finished.then(e,a)}get duration(){return mi(this.calculatedDuration)}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+mi(e)}get time(){return mi(this.currentTime)}set time(e){e=ei(e),this.currentTime=e,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=e:this.driver&&(this.startTime=this.driver.now()-e/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=e,this.tick(e))}getGeneratorVelocity(){const e=this.currentTime;if(e<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(e);const a=this.generator.next(e).value;return sE(i=>this.generator.next(i).value,e,a)}get speed(){return this.playbackSpeed}set speed(e){const a=this.playbackSpeed!==e;a&&this.driver&&this.updateTime(_a.now()),this.playbackSpeed=e,a&&this.driver&&(this.time=mi(this.currentTime))}play(){if(this.isStopped)return;const{driver:e=E6,startTime:a}=this.options;this.driver||(this.driver=e(r=>this.tick(r))),this.options.onPlay?.();const i=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=i):this.holdTime!==null?this.startTime=i-this.holdTime:this.startTime||(this.startTime=a??i),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(_a.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(e){return this.startTime=0,this.tick(e,!0)}attachTimeline(e){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),e.observe(this)}}function F6(t){for(let e=1;e<t.length;e++)t[e]??(t[e]=t[e-1])}const kr=t=>t*180/Math.PI,yg=t=>{const e=kr(Math.atan2(t[1],t[0]));return mg(e)},H6={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:yg,rotateZ:yg,skewX:t=>kr(Math.atan(t[1])),skewY:t=>kr(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},mg=t=>(t=t%360,t<0&&(t+=360),t),u1=yg,d1=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),p1=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),q6={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:d1,scaleY:p1,scale:t=>(d1(t)+p1(t))/2,rotateX:t=>mg(kr(Math.atan2(t[6],t[5]))),rotateY:t=>mg(kr(Math.atan2(-t[2],t[0]))),rotateZ:u1,rotate:u1,skewX:t=>kr(Math.atan(t[4])),skewY:t=>kr(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function fg(t){return t.includes("scale")?1:0}function wg(t,e){if(!t||t==="none")return fg(e);const a=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let i,r;if(a)i=q6,r=a;else{const d=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);i=H6,r=d}if(!r)return fg(e);const s=i[e],c=r[1].split(",").map(Y6);return typeof s=="function"?s(c):c[s]}const Z6=(t,e)=>{const{transform:a="none"}=getComputedStyle(t);return wg(a,e)};function Y6(t){return parseFloat(t.trim())}const pl=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],hl=new Set([...pl,"pathRotation"]),h1=t=>t===dl||t===ze,J6=new Set(["x","y","z"]),Q6=pl.filter(t=>!J6.has(t));function X6(t){const e=[];return Q6.forEach(a=>{const i=t.getValue(a);i!==void 0&&(e.push([a,i.get()]),i.set(a.startsWith("scale")?1:0))}),e}const xo={width:({x:t},{paddingLeft:e="0",paddingRight:a="0",boxSizing:i})=>{const r=t.max-t.min;return i==="border-box"?r:r-parseFloat(e)-parseFloat(a)},height:({y:t},{paddingTop:e="0",paddingBottom:a="0",boxSizing:i})=>{const r=t.max-t.min;return i==="border-box"?r:r-parseFloat(e)-parseFloat(a)},top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>wg(e,"x"),y:(t,{transform:e})=>wg(e,"y")};xo.translateX=xo.x;xo.translateY=xo.y;const br=new Set;let gg=!1,kg=!1,zg=!1;function cE(){if(kg){const t=Array.from(br).filter(i=>i.needsMeasurement),e=new Set(t.map(i=>i.element)),a=new Map;e.forEach(i=>{const r=X6(i);r.length&&(a.set(i,r),i.render())}),t.forEach(i=>i.measureInitialState()),e.forEach(i=>{i.render();const r=a.get(i);r&&r.forEach(([s,c])=>{i.getValue(s)?.set(c)})}),t.forEach(i=>i.measureEndState()),t.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}kg=!1,gg=!1,br.forEach(t=>t.complete(zg)),br.clear()}function uE(){br.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(kg=!0)})}function e$(){zg=!0,uE(),cE(),zg=!1}class Xk{constructor(e,a,i,r,s,c=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=a,this.name=i,this.motionValue=r,this.element=s,this.isAsync=c}scheduleResolve(){this.state="scheduled",this.isAsync?(br.add(this),gg||(gg=!0,wt.read(uE),wt.resolveKeyframes(cE))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:a,element:i,motionValue:r}=this;if(e[0]===null){const s=r?.get(),c=e[e.length-1];if(s!==void 0)e[0]=s;else if(i&&a){const d=i.readValue(a,c);d!=null&&(e[0]=d)}e[0]===void 0&&(e[0]=c),r&&s===void 0&&r.set(e[0])}F6(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),br.delete(this)}cancel(){this.state==="scheduled"&&(br.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const t$=t=>t.startsWith("--");function dE(t,e,a){t$(e)?t.style.setProperty(e,a):t.style[e]=a}const a$={};function pE(t,e){const a=NT(t);return()=>a$[e]??a()}const i$=pE(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),hE=pE(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Sc=([t,e,a,i])=>`cubic-bezier(${t}, ${e}, ${a}, ${i})`,y1={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Sc([0,.65,.55,1]),circOut:Sc([.55,0,1,.45]),backIn:Sc([.31,.01,.66,-.59]),backOut:Sc([.33,1.53,.69,.99])};function yE(t,e){if(t)return typeof t=="function"?hE()?rE(t,e):"ease-out":YT(t)?Sc(t):Array.isArray(t)?t.map(a=>yE(a,e)||y1.easeOut):y1[t]}function n$(t,e,a,{delay:i=0,duration:r=300,repeat:s=0,repeatType:c="loop",ease:d="easeOut",times:p}={},h=void 0){const f={[e]:a};p&&(f.offset=p);const m=yE(d,r);Array.isArray(m)&&(f.easing=m);const g={delay:i,duration:r,easing:Array.isArray(m)?"linear":m,fill:"both",iterations:s+1,direction:c==="reverse"?"alternate":"normal"};return h&&(g.pseudoElement=h),t.animate(f,g)}function mE(t){return typeof t=="function"&&"applyToOptions"in t}function o$({type:t,...e}){return mE(t)&&hE()?t.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class fE extends Qk{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!e)return;const{element:a,name:i,keyframes:r,pseudoElement:s,allowFlatten:c=!1,finalKeyframe:d,onComplete:p}=e;this.isPseudoElement=!!s,this.allowFlatten=c,this.options=e,Wk(typeof e.type!="string");const h=o$(e);this.animation=n$(a,i,r,h,s),h.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!s){const f=$h(r,this.options,d,this.speed);this.updateMotionValue&&this.updateMotionValue(f),dE(a,i,f),this.animation.cancel()}p?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const e=this.options?.element;!this.isPseudoElement&&e?.isConnected&&this.animation.commitStyles?.()}get duration(){const e=this.animation.effect?.getComputedTiming?.().duration||0;return mi(Number(e))}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+mi(e)}get time(){return mi(Number(this.animation.currentTime)||0)}set time(e){const a=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=ei(e),a&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(e){this.manualStartTime=this.animation.startTime=e}attachTimeline({timeline:e,rangeStart:a,rangeEnd:i,observe:r}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,e&&i$()?(this.animation.timeline=e,a&&(this.animation.rangeStart=a),i&&(this.animation.rangeEnd=i),fi):r(this)}}const wE={anticipate:FT,backInOut:VT,circInOut:qT};function r$(t){return t in wE}function s$(t){typeof t.ease=="string"&&r$(t.ease)&&(t.ease=wE[t.ease])}const Mf=10;class l$ extends fE{constructor(e){s$(e),lE(e),super(e),e.startTime!==void 0&&e.autoplay!==!1&&(this.startTime=e.startTime),this.options=e}updateMotionValue(e){const{motionValue:a,onUpdate:i,onComplete:r,element:s,...c}=this.options;if(!a)return;if(e!==void 0){a.set(e);return}const d=new uh({...c,autoplay:!1}),p=Math.max(Mf,_a.now()-this.startTime),h=nn(0,Mf,p-Mf),f=d.sample(p).value,{name:m}=this.options;s&&m&&dE(s,m,f),a.setWithVelocity(d.sample(Math.max(0,p-h)).value,f,h),d.stop()}}const m1=(t,e)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Ki.test(t)||t==="0")&&!t.startsWith("url("));function c$(t){const e=t[0];if(t.length===1)return!0;for(let a=0;a<t.length;a++)if(t[a]!==e)return!0}function u$(t,e,a,i){const r=t[0];if(r===null)return!1;if(e==="display"||e==="visibility")return!0;const s=t[t.length-1],c=m1(r,e),d=m1(s,e);return!c||!d?!1:c$(t)||(a==="spring"||mE(a))&&i}function bg(t){t.duration=0,t.type="keyframes"}const gE=new Set(["opacity","clipPath","filter","transform"]),d$=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function p$(t){for(let e=0;e<t.length;e++)if(typeof t[e]=="string"&&d$.test(t[e]))return!0;return!1}const h$=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),y$=NT(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function m$(t){const{motionValue:e,name:a,repeatDelay:i,repeatType:r,damping:s,type:c,keyframes:d}=t;if(!(e?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:h,transformTemplate:f}=e.owner.getProps();return y$()&&a&&(gE.has(a)||h$.has(a)&&p$(d))&&(a!=="transform"||!f)&&!h&&!i&&r!=="mirror"&&s!==0&&c!=="inertia"}const f$=40;class w$ extends Qk{constructor({autoplay:e=!0,delay:a=0,type:i="keyframes",repeat:r=0,repeatDelay:s=0,repeatType:c="loop",keyframes:d,name:p,motionValue:h,element:f,...m}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=_a.now();const g={autoplay:e,delay:a,type:i,repeat:r,repeatDelay:s,repeatType:c,name:p,motionValue:h,element:f,...m},z=f?.KeyframeResolver||Xk;this.keyframeResolver=new z(d,(j,v,_)=>this.onKeyframesResolved(j,v,g,!_),p,h,f),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(e,a,i,r){this.keyframeResolver=void 0;const{name:s,type:c,velocity:d,delay:p,isHandoff:h,onUpdate:f}=i;this.resolvedAt=_a.now();let m=!0;u$(e,s,c,d)||(m=!1,(Do.instantAnimations||!p)&&f?.($h(e,i,a)),e[0]=e[e.length-1],bg(i),i.repeat=0);const z={startTime:r?this.resolvedAt?this.resolvedAt-this.createdAt>f$?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:a,...i,keyframes:e},j=m&&!h&&m$(z),v=z.motionValue?.owner?.current;let _;if(j)try{_=new l$({...z,element:v})}catch{_=new uh(z)}else _=new uh(z);_.finished.then(()=>{this.notifyFinished()}).catch(fi),this.pendingTimeline&&(this.stopTimeline=_.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=_}get finished(){return this._animation?this.animation.finished:this._finished}then(e,a){return this.finished.finally(e).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),e$()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(e){this.animation.time=e}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(e){this.animation.speed=e}get startTime(){return this.animation.startTime}attachTimeline(e){return this._animation?this.stopTimeline=this.animation.attachTimeline(e):this.pendingTimeline=e,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function kE(t,e,a,i=0,r=1){const s=Array.from(t).sort((h,f)=>h.sortNodePosition(f)).indexOf(e),c=t.size,d=(c-1)*i;return typeof a=="function"?a(s,c):r===1?s*i:d-s*i}const f1=30,g$=t=>!isNaN(parseFloat(t));class k${constructor(e,a={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=i=>{const r=_a.now();if(this.updatedAt!==r&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(i),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const s of this.dependents)s.dirty()},this.hasAnimated=!1,this.setCurrent(e),this.owner=a.owner}setCurrent(e){this.current=e,this.updatedAt=_a.now(),this.canTrackVelocity===null&&e!==void 0&&(this.canTrackVelocity=g$(this.current))}setPrevFrameValue(e=this.current){this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt}onChange(e){return this.on("change",e)}on(e,a){this.events[e]||(this.events[e]=new Gk);const i=this.events[e].add(a);return e==="change"?()=>{i(),wt.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,a){this.passiveEffect=e,this.stopPassiveEffect=a}set(e){this.passiveEffect?this.passiveEffect(e,this.updateAndNotify):this.updateAndNotify(e)}setWithVelocity(e,a,i){this.set(a),this.prev=void 0,this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt-i}jump(e,a=!0){this.updateAndNotify(e),this.prev=e,this.prevUpdatedAt=this.prevFrameValue=void 0,a&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(e){this.dependents||(this.dependents=new Set),this.dependents.add(e)}removeDependent(e){this.dependents&&this.dependents.delete(e)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const e=_a.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||e-this.updatedAt>f1)return 0;const a=Math.min(this.updatedAt-this.prevUpdatedAt,f1);return BT(parseFloat(this.current)-parseFloat(this.prevFrameValue),a)}start(e){return this.stop(),new Promise(a=>{this.hasAnimated=!0,this.animation=e(a),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function ol(t,e){return new k$(t,e)}function zE(t,e){if(t?.inherit&&e){const{inherit:a,...i}=t;return{...e,...i}}return t}function ez(t,e){const a=t?.[e]??t?.default??t;return a!==t?zE(a,t):a}const z$={type:"spring",stiffness:500,damping:25,restSpeed:10},b$=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),j$={type:"keyframes",duration:.8},v$={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},S$=(t,{keyframes:e})=>e.length>2?j$:hl.has(t)?t.startsWith("scale")?b$(e[1]):z$:v$,x$=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function _$(t){for(const e in t)if(!x$.has(e))return!0;return!1}const tz=(t,e,a,i={},r,s)=>c=>{const d=ez(i,t)||{},p=d.delay||i.delay||0;let{elapsed:h=0}=i;h=h-ei(p);const f={keyframes:Array.isArray(a)?a:[null,a],ease:"easeOut",velocity:e.getVelocity(),...d,delay:-h,onUpdate:g=>{e.set(g),d.onUpdate&&d.onUpdate(g)},onComplete:()=>{c(),d.onComplete&&d.onComplete()},name:t,motionValue:e,element:s?void 0:r};_$(d)||Object.assign(f,S$(t,f)),f.duration&&(f.duration=ei(f.duration)),f.repeatDelay&&(f.repeatDelay=ei(f.repeatDelay)),f.from!==void 0&&(f.keyframes[0]=f.from);let m=!1;if((f.type===!1||f.duration===0&&!f.repeatDelay)&&(bg(f),f.delay===0&&(m=!0)),(Do.instantAnimations||Do.skipAnimations||r?.shouldSkipAnimations||d.skipAnimations)&&(m=!0,bg(f),f.delay=0),f.allowFlatten=!d.type&&!d.ease,m&&!s&&e.get()!==void 0){const g=$h(f.keyframes,d);if(g!==void 0){wt.update(()=>{f.onUpdate(g),f.onComplete()});return}}return d.isSync?new uh(f):new w$(f)},T$=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function E$(t){const e=T$.exec(t);if(!e)return[,];const[,a,i,r]=e;return[`--${a??i}`,r]}function bE(t,e,a=1){const[i,r]=E$(t);if(!i)return;const s=window.getComputedStyle(e).getPropertyValue(i);if(s){const c=s.trim();return LT(c)?parseFloat(c):c}return Hk(r)?bE(r,e,a+1):r}function w1(t){const e=[{},{}];return t?.values.forEach((a,i)=>{e[0][i]=a.get(),e[1][i]=a.getVelocity()}),e}function az(t,e,a,i){if(typeof e=="function"){const[r,s]=w1(i);e=e(a!==void 0?a:t.custom,r,s)}if(typeof e=="string"&&(e=t.variants&&t.variants[e]),typeof e=="function"){const[r,s]=w1(i);e=e(a!==void 0?a:t.custom,r,s)}return e}function jr(t,e,a){const i=t.getProps();return az(i,e,a!==void 0?a:i.custom,t)}const jE=new Set(["width","height","top","left","right","bottom",...pl]),jg=t=>Array.isArray(t);function A$(t,e,a){t.hasValue(e)?t.getValue(e).set(a):t.addValue(e,ol(a))}function P$(t){return jg(t)?t[t.length-1]||0:t}function C$(t,e){const a=jr(t,e);let{transitionEnd:i={},transition:r={},...s}=a||{};s={...s,...i};for(const c in s){const d=P$(s[c]);A$(t,c,d)}}const pa=t=>!!(t&&t.getVelocity);function R$(t){return!!(pa(t)&&t.add)}function vg(t,e){const a=t.getValue("willChange");if(R$(a))return a.add(e);if(!a&&Do.WillChange){const i=new Do.WillChange("auto");t.addValue("willChange",i),i.add(e)}}function iz(t){return t.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`)}const D$="framerAppearId",vE="data-"+iz(D$);function SE(t){return t.props[vE]}function O$({protectedKeys:t,needsAnimating:e},a){const i=t.hasOwnProperty(a)&&e[a]!==!0;return e[a]=!1,i}function xE(t,e,{delay:a=0,transitionOverride:i,type:r}={}){let{transition:s,transitionEnd:c,...d}=e;const p=t.getDefaultTransition();s=s?zE(s,p):p;const h=s?.reduceMotion,f=s?.skipAnimations;i&&(s=i);const m=[],g=r&&t.animationState&&t.animationState.getState()[r],z=s?.path;z&&z.animateVisualElement(t,d,s,a,m);for(const j in d){const v=t.getValue(j,t.latestValues[j]??null),_=d[j];if(_===void 0||g&&O$(g,j))continue;const S={delay:a,...ez(s||{},j)};f&&(S.skipAnimations=!0);const E=v.get();if(E!==void 0&&!v.isAnimating()&&!Array.isArray(_)&&_===E&&!S.velocity){wt.update(()=>v.set(_));continue}let T=!1;if(window.MotionHandoffAnimation){const U=SE(t);if(U){const R=window.MotionHandoffAnimation(U,j,wt);R!==null&&(S.startTime=R,T=!0)}}vg(t,j);const O=h??t.shouldReduceMotion;v.start(tz(j,v,_,O&&jE.has(j)?{type:!1}:S,t,T));const H=v.animation;H&&m.push(H)}if(c){const j=()=>wt.update(()=>{c&&C$(t,c)});m.length?Promise.all(m).then(j):j()}return m}function Sg(t,e,a={}){const i=jr(t,e,a.type==="exit"?t.presenceContext?.custom:void 0);let{transition:r=t.getDefaultTransition()||{}}=i||{};a.transitionOverride&&(r=a.transitionOverride);const s=i?()=>Promise.all(xE(t,i,a)):()=>Promise.resolve(),c=t.variantChildren&&t.variantChildren.size?(p=0)=>{const{delayChildren:h=0,staggerChildren:f,staggerDirection:m}=r;return U$(t,e,p,h,f,m,a)}:()=>Promise.resolve(),{when:d}=r;if(d){const[p,h]=d==="beforeChildren"?[s,c]:[c,s];return p().then(()=>h())}else return Promise.all([s(),c(a.delay)])}function U$(t,e,a=0,i=0,r=0,s=1,c){const d=[];for(const p of t.variantChildren)p.notify("AnimationStart",e),d.push(Sg(p,e,{...c,delay:a+(typeof i=="function"?0:i)+kE(t.variantChildren,p,i,r,s)}).then(()=>p.notify("AnimationComplete",e)));return Promise.all(d)}function L$(t,e,a={}){t.notify("AnimationStart",e);let i;if(Array.isArray(e)){const r=e.map(s=>Sg(t,s,a));i=Promise.all(r)}else if(typeof e=="string")i=Sg(t,e,a);else{const r=typeof e=="function"?jr(t,e,a.custom):e;i=Promise.all(xE(t,r,a))}return i.then(()=>{t.notify("AnimationComplete",e)})}const K$={test:t=>t==="auto",parse:t=>t},_E=t=>e=>e.test(t),TE=[dl,ze,tn,Tn,c6,l6,K$],g1=t=>TE.find(_E(t));function M$(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||MT(t):!0}const N$=new Set(["brightness","contrast","saturate","opacity"]);function B$(t){const[e,a]=t.slice(0,-1).split("(");if(e==="drop-shadow")return t;const[i]=a.match(qk)||[];if(!i)return t;const r=a.replace(i,"");let s=N$.has(e)?1:0;return i!==a&&(s*=100),e+"("+s+r+")"}const $$=/\b([a-z-]*)\(.*?\)/gu,xg={...Ki,getAnimatableNone:t=>{const e=t.match($$);return e?e.map(B$).join(" "):t}},_g={...Ki,getAnimatableNone:t=>{const e=Ki.parse(t);return Ki.createTransformer(t)(e.map(i=>typeof i=="number"?0:typeof i=="object"?{...i,alpha:1}:i))}},k1={...dl,transform:Math.round},I$={rotate:Tn,pathRotation:Tn,rotateX:Tn,rotateY:Tn,rotateZ:Tn,scale:Xd,scaleX:Xd,scaleY:Xd,scaleZ:Xd,skew:Tn,skewX:Tn,skewY:Tn,distance:ze,translateX:ze,translateY:ze,translateZ:ze,x:ze,y:ze,z:ze,perspective:ze,transformPerspective:ze,opacity:au,originX:o1,originY:o1,originZ:ze},dh={borderWidth:ze,borderTopWidth:ze,borderRightWidth:ze,borderBottomWidth:ze,borderLeftWidth:ze,borderRadius:ze,borderTopLeftRadius:ze,borderTopRightRadius:ze,borderBottomRightRadius:ze,borderBottomLeftRadius:ze,width:ze,maxWidth:ze,height:ze,maxHeight:ze,top:ze,right:ze,bottom:ze,left:ze,inset:ze,insetBlock:ze,insetBlockStart:ze,insetBlockEnd:ze,insetInline:ze,insetInlineStart:ze,insetInlineEnd:ze,padding:ze,paddingTop:ze,paddingRight:ze,paddingBottom:ze,paddingLeft:ze,paddingBlock:ze,paddingBlockStart:ze,paddingBlockEnd:ze,paddingInline:ze,paddingInlineStart:ze,paddingInlineEnd:ze,margin:ze,marginTop:ze,marginRight:ze,marginBottom:ze,marginLeft:ze,marginBlock:ze,marginBlockStart:ze,marginBlockEnd:ze,marginInline:ze,marginInlineStart:ze,marginInlineEnd:ze,fontSize:ze,backgroundPositionX:ze,backgroundPositionY:ze,...I$,zIndex:k1,fillOpacity:au,strokeOpacity:au,numOctaves:k1},W$={...dh,color:Wt,backgroundColor:Wt,outlineColor:Wt,fill:Wt,stroke:Wt,borderColor:Wt,borderTopColor:Wt,borderRightColor:Wt,borderBottomColor:Wt,borderLeftColor:Wt,filter:xg,WebkitFilter:xg,mask:_g,WebkitMask:_g},EE=t=>W$[t],G$=new Set([xg,_g]);function AE(t,e){let a=EE(t);return G$.has(a)||(a=Ki),a.getAnimatableNone?a.getAnimatableNone(e):void 0}
vendor: 1,699 bytes, line 56
56const V$=new Set(["auto","none","0"]);function F$(t,e,a){let i=0,r;for(;i<t.length&&!r;){const s=t[i];typeof s=="string"&&!V$.has(s)&&nl(s).values.length&&(r=t[i]),i++}if(r&&a)for(const s of e)t[s]=AE(a,r)}class H$ extends Xk{constructor(e,a,i,r,s){super(e,a,i,r,s,!0)}readKeyframes(){const{unresolvedKeyframes:e,element:a,name:i}=this;if(!a||!a.current)return;super.readKeyframes();for(let f=0;f<e.length;f++){let m=e[f];if(typeof m=="string"&&(m=m.trim(),Hk(m))){const g=bE(m,a.current);g!==void 0&&(e[f]=g),f===e.length-1&&(this.finalKeyframe=m)}}if(this.resolveNoneKeyframes(),!jE.has(i)||e.length!==2)return;const[r,s]=e,c=g1(r),d=g1(s),p=n1(r),h=n1(s);if(p!==h&&xo[i]){this.needsMeasurement=!0;return}if(c!==d)if(h1(c)&&h1(d))for(let f=0;f<e.length;f++){const m=e[f];typeof m=="string"&&(e[f]=parseFloat(m))}else xo[i]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:e,name:a}=this,i=[];for(let r=0;r<e.length;r++)(e[r]===null||M$(e[r]))&&i.push(r);i.length&&F$(e,i,a)}measureInitialState(){const{element:e,unresolvedKeyframes:a,name:i}=this;if(!e||!e.current)return;i==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=xo[i](e.measureViewportBox(),window.getComputedStyle(e.current)),a[0]=this.measuredOrigin;const r=a[a.length-1];r!==void 0&&e.getValue(i,r).jump(r,!1)}measureEndState(){const{element:e,name:a,unresolvedKeyframes:i}=this;if(!e||!e.current)return;const r=e.getValue(a);r&&r.jump(this.measuredOrigin,!1);const s=i.length-1,c=i[s];i[s]=xo[a](e.measureViewportBox(),window.getComputedStyle(e.current)),c!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=c),this.removedTransforms?.length&&this.removedTransforms.forEac
vendor: 50,314 bytes, line 56
56h(([d,p])=>{e.getValue(d).set(p)}),this.resolveNoneKeyframes()}}function PE(t,e,a){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let i=document;const r=a?.[t]??i.querySelectorAll(t);return r?Array.from(r):[]}return Array.from(t).filter(i=>i!=null)}const Tg=(t,e)=>e&&typeof t=="number"?e.transform(t):t;function Dp(t){return KT(t)&&"offsetHeight"in t&&!("ownerSVGElement"in t)}const{schedule:nz}=JT(queueMicrotask,!1),Ai={x:!1,y:!1};function CE(){return Ai.x||Ai.y}function q$(t){return t==="x"||t==="y"?Ai[t]?null:(Ai[t]=!0,()=>{Ai[t]=!1}):Ai.x||Ai.y?null:(Ai.x=Ai.y=!0,()=>{Ai.x=Ai.y=!1})}function RE(t,e){const a=PE(t),i=new AbortController,r={passive:!0,...e,signal:i.signal};return[a,r,()=>i.abort()]}function Z$(t){return!(t.pointerType==="touch"||CE())}function Y$(t,e,a={}){const[i,r,s]=RE(t,a);return i.forEach(c=>{let d=!1,p=!1,h;const f=()=>{c.removeEventListener("pointerleave",j)},m=_=>{h&&(h(_),h=void 0),f()},g=_=>{d=!1,window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g),p&&(p=!1,m(_))},z=()=>{d=!0,window.addEventListener("pointerup",g,r),window.addEventListener("pointercancel",g,r)},j=_=>{if(_.pointerType!=="touch"){if(d){p=!0;return}m(_)}},v=_=>{if(!Z$(_))return;p=!1;const S=e(c,_);typeof S=="function"&&(h=S,c.addEventListener("pointerleave",j,r))};c.addEventListener("pointerenter",v,r),c.addEventListener("pointerdown",z,r)}),s}const DE=(t,e)=>e?t===e?!0:DE(t,e.parentElement):!1,oz=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1,J$=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function Q$(t){return J$.has(t.tagName)||t.isContentEditable===!0}const X$=new Set(["INPUT","SELECT","TEXTAREA"]);function eI(t){return X$.has(t.tagName)||t.isContentEditable===!0}const Op=new WeakSet;function z1(t){return e=>{e.key==="Enter"&&t(e)}}function Nf(t,e){t.dispatchEvent(new PointerEvent("pointer"+e,{isPrimary:!0,bubbles:!0}))}const tI=(t,e)=>{const a=t.currentTarget;if(!a)return;const i=z1(()=>{if(Op.has(a))return;Nf(a,"down");const r=z1(()=>{Nf(a,"up")}),s=()=>Nf(a,"cancel");a.addEventListener("keyup",r,e),a.addEventListener("blur",s,e)});a.addEventListener("keydown",i,e),a.addEventListener("blur",()=>a.removeEventListener("keydown",i),e)};function b1(t){return oz(t)&&!CE()}const j1=new WeakSet;function aI(t,e,a={}){const[i,r,s]=RE(t,a),c=d=>{const p=d.currentTarget;if(!b1(d)||j1.has(d))return;Op.add(p),a.stopPropagation&&j1.add(d);const h=e(p,d),f=(z,j)=>{window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",g),Op.has(p)&&Op.delete(p),b1(z)&&typeof h=="function"&&h(z,{success:j})},m=z=>{f(z,p===window||p===document||a.useGlobalTarget||DE(p,z.target))},g=z=>{f(z,!1)};window.addEventListener("pointerup",m,r),window.addEventListener("pointercancel",g,r)};return i.forEach(d=>{(a.useGlobalTarget?window:d).addEventListener("pointerdown",c,r),Dp(d)&&(d.addEventListener("focus",h=>tI(h,r)),!Q$(d)&&!d.hasAttribute("tabindex")&&(d.tabIndex=0))}),s}function rz(t){return KT(t)&&"ownerSVGElement"in t}const Up=new WeakMap;let Lp;const OE=(t,e,a)=>(i,r)=>r&&r[0]?r[0][t+"Size"]:rz(i)&&"getBBox"in i?i.getBBox()[e]:i[a],iI=OE("inline","width","offsetWidth"),nI=OE("block","height","offsetHeight");function oI({target:t,borderBoxSize:e}){Up.get(t)?.forEach(a=>{a(t,{get width(){return iI(t,e)},get height(){return nI(t,e)}})})}function rI(t){t.forEach(oI)}function sI(){typeof ResizeObserver>"u"||(Lp=new ResizeObserver(rI))}function lI(t,e){Lp||sI();const a=PE(t);return a.forEach(i=>{let r=Up.get(i);r||(r=new Set,Up.set(i,r)),r.add(e),Lp?.observe(i)}),()=>{a.forEach(i=>{const r=Up.get(i);r?.delete(e),r?.size||Lp?.unobserve(i)})}}const Kp=new Set;let Ys;function cI(){Ys=()=>{const t={get width(){return window.innerWidth},get height(){return window.innerHeight}};Kp.forEach(e=>e(t))},window.addEventListener("resize",Ys)}function uI(t){return Kp.add(t),Ys||cI(),()=>{Kp.delete(t),!Kp.size&&typeof Ys=="function"&&(window.removeEventListener("resize",Ys),Ys=void 0)}}function v1(t,e){return typeof t=="function"?uI(t):lI(t,e)}function dI(t){return rz(t)&&t.tagName==="svg"}const pI=[...TE,Wt,Ki],hI=t=>pI.find(_E(t)),S1=()=>({translate:0,scale:1,origin:0,originPoint:0}),Js=()=>({x:S1(),y:S1()}),x1=()=>({min:0,max:0}),Ht=()=>({x:x1(),y:x1()}),yI=new WeakMap;function Ih(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}function iu(t){return typeof t=="string"||Array.isArray(t)}const sz=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],lz=["initial",...sz];function Wh(t){return Ih(t.animate)||lz.some(e=>iu(t[e]))}function UE(t){return!!(Wh(t)||t.variants)}function mI(t,e,a){for(const i in e){const r=e[i],s=a[i];if(pa(r))t.addValue(i,r);else if(pa(s))t.addValue(i,ol(r,{owner:t}));else if(s!==r)if(t.hasValue(i)){const c=t.getValue(i);c.liveStyle===!0?c.jump(r):c.hasAnimated||c.set(r)}else{const c=t.getStaticValue(i);t.addValue(i,ol(c!==void 0?c:r,{owner:t}))}}for(const i in a)e[i]===void 0&&t.removeValue(i);return e}const Eg={current:null},LE={current:!1},fI=typeof window<"u";function wI(){if(LE.current=!0,!!fI)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),e=()=>Eg.current=t.matches;t.addEventListener("change",e),e()}else Eg.current=!1}const _1=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let ph={};function KE(t){ph=t}function gI(){return ph}class kI{scrapeMotionValuesFromProps(e,a,i){return{}}constructor({parent:e,props:a,presenceContext:i,reducedMotionConfig:r,skipAnimations:s,blockInitialAnimation:c,visualState:d},p={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=Xk,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const z=_a.now();this.renderScheduledAt<z&&(this.renderScheduledAt=z,wt.render(this.render,!1,!0))};const{latestValues:h,renderState:f}=d;this.latestValues=h,this.baseTarget={...h},this.initialValues=a.initial?{...h}:{},this.renderState=f,this.parent=e,this.props=a,this.presenceContext=i,this.depth=e?e.depth+1:0,this.reducedMotionConfig=r,this.skipAnimationsConfig=s,this.options=p,this.blockInitialAnimation=!!c,this.isControllingVariants=Wh(a),this.isVariantNode=UE(a),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(e&&e.current);const{willChange:m,...g}=this.scrapeMotionValuesFromProps(a,{},this);for(const z in g){const j=g[z];h[z]!==void 0&&pa(j)&&j.set(h[z])}}mount(e){if(this.hasBeenMounted)for(const a in this.initialValues)this.values.get(a)?.jump(this.initialValues[a]),this.latestValues[a]=this.initialValues[a];this.current=e,yI.set(e,this),this.projection&&!this.projection.instance&&this.projection.mount(e),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((a,i)=>this.bindToMotionValue(i,a)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(LE.current||wI(),this.shouldReduceMotion=Eg.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),Oo(this.notifyUpdate),Oo(this.render),this.valueSubscriptions.forEach(e=>e()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const e in this.events)this.events[e].clear();for(const e in this.features){const a=this.features[e];a&&(a.unmount(),a.isMounted=!1)}this.current=null}addChild(e){this.children.add(e),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(e)}removeChild(e){this.children.delete(e),this.enteringChildren&&this.enteringChildren.delete(e)}bindToMotionValue(e,a){if(this.valueSubscriptions.has(e)&&this.valueSubscriptions.get(e)(),a.accelerate&&gE.has(e)&&this.current instanceof HTMLElement){const{factory:c,keyframes:d,times:p,ease:h,duration:f}=a.accelerate,m=new fE({element:this.current,name:e,keyframes:d,times:p,ease:h,duration:ei(f)}),g=c(m);this.valueSubscriptions.set(e,()=>{g(),m.cancel()});return}const i=hl.has(e);i&&this.onBindTransform&&this.onBindTransform();const r=a.on("change",c=>{this.latestValues[e]=c,this.props.onUpdate&&wt.preRender(this.notifyUpdate),i&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let s;typeof window<"u"&&window.MotionCheckAppearSync&&(s=window.MotionCheckAppearSync(this,e,a)),this.valueSubscriptions.set(e,()=>{r(),s&&s()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}updateFeatures(){let e="animation";for(e in ph){const a=ph[e];if(!a)continue;const{isEnabled:i,Feature:r}=a;if(!this.features[e]&&r&&i(this.props)&&(this.features[e]=new r(this)),this.features[e]){const s=this.features[e];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Ht()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,a){this.latestValues[e]=a}update(e,a){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=a;for(let i=0;i<_1.length;i++){const r=_1[i];this.propEventSubscriptions[r]&&(this.propEventSubscriptions[r](),delete this.propEventSubscriptions[r]);const s="on"+r,c=e[s];c&&(this.propEventSubscriptions[r]=this.on(r,c))}this.prevMotionValues=mI(this,this.scrapeMotionValuesFromProps(e,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(e){return this.props.variants?this.props.variants[e]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(e){const a=this.getClosestVariantNode();if(a)return a.variantChildren&&a.variantChildren.add(e),()=>a.variantChildren.delete(e)}addValue(e,a){const i=this.values.get(e);a!==i&&(i&&this.removeValue(e),this.bindToMotionValue(e,a),this.values.set(e,a),this.latestValues[e]=a.get())}removeValue(e){this.values.delete(e);const a=this.valueSubscriptions.get(e);a&&(a(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,a){if(this.props.values&&this.props.values[e])return this.props.values[e];let i=this.values.get(e);return i===void 0&&a!==void 0&&(i=ol(a===null?void 0:a,{owner:this}),this.addValue(e,i)),i}readValue(e,a){let i=this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:this.getBaseTargetFromProps(this.props,e)??this.readValueFromInstance(this.current,e,this.options);return i!=null&&(typeof i=="string"&&(LT(i)||MT(i))?i=parseFloat(i):!hI(i)&&Ki.test(a)&&(i=AE(e,a)),this.setBaseTarget(e,pa(i)?i.get():i)),pa(i)?i.get():i}setBaseTarget(e,a){this.baseTarget[e]=a}getBaseTarget(e){const{initial:a}=this.props;let i;if(typeof a=="string"||typeof a=="object"){const s=az(this.props,a,this.presenceContext?.custom);s&&(i=s[e])}if(a&&i!==void 0)return i;const r=this.getBaseTargetFromProps(this.props,e);return r!==void 0&&!pa(r)?r:this.initialValues[e]!==void 0&&i===void 0?void 0:this.baseTarget[e]}on(e,a){return this.events[e]||(this.events[e]=new Gk),this.events[e].add(a)}notify(e,...a){this.events[e]&&this.events[e].notify(...a)}scheduleRenderMicrotask(){nz.render(this.render)}}class ME extends kI{constructor(){super(...arguments),this.KeyframeResolver=H$}sortInstanceNodePosition(e,a){return e.compareDocumentPosition(a)&2?1:-1}getBaseTargetFromProps(e,a){const i=e.style;return i?i[a]:void 0}removeValueFromRenderState(e,{vars:a,style:i}){delete a[e],delete i[e]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;pa(e)&&(this.childSubscription=e.on("change",a=>{this.current&&(this.current.textContent=`${a}`)}))}}class No{constructor(e){this.isMounted=!1,this.node=e}update(){}}function NE({top:t,left:e,right:a,bottom:i}){return{x:{min:e,max:a},y:{min:t,max:i}}}function zI({x:t,y:e}){return{top:e.min,right:t.max,bottom:e.max,left:t.min}}function bI(t,e){if(!e)return t;const a=e({x:t.left,y:t.top}),i=e({x:t.right,y:t.bottom});return{top:a.y,left:a.x,bottom:i.y,right:i.x}}function Bf(t){return t===void 0||t===1}function Ag({scale:t,scaleX:e,scaleY:a}){return!Bf(t)||!Bf(e)||!Bf(a)}function hr(t){return Ag(t)||BE(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function BE(t){return T1(t.x)||T1(t.y)}function T1(t){return t&&t!=="0%"}function hh(t,e,a){const i=t-a,r=e*i;return a+r}function E1(t,e,a,i,r){return r!==void 0&&(t=hh(t,r,i)),hh(t,a,i)+e}function Pg(t,e=0,a=1,i,r){t.min=E1(t.min,e,a,i,r),t.max=E1(t.max,e,a,i,r)}function $E(t,{x:e,y:a}){Pg(t.x,e.translate,e.scale,e.originPoint),Pg(t.y,a.translate,a.scale,a.originPoint)}const A1=.999999999999,P1=1.0000000000001;function jI(t,e,a,i=!1){const r=a.length;if(!r)return;e.x=e.y=1;let s,c;for(let d=0;d<r;d++){s=a[d],c=s.projectionDelta;const{visualElement:p}=s.options;p&&p.props.style&&p.props.style.display==="contents"||(i&&s.options.layoutScroll&&s.scroll&&s!==s.root&&(Ji(t.x,-s.scroll.offset.x),Ji(t.y,-s.scroll.offset.y)),c&&(e.x*=c.x.scale,e.y*=c.y.scale,$E(t,c)),i&&hr(s.latestValues)&&Mp(t,s.latestValues,s.layout?.layoutBox))}e.x<P1&&e.x>A1&&(e.x=1),e.y<P1&&e.y>A1&&(e.y=1)}function Ji(t,e){t.min+=e,t.max+=e}function C1(t,e,a,i,r=.5){const s=ft(t.min,t.max,r);Pg(t,e,a,s,i)}function R1(t,e){return typeof t=="string"?parseFloat(t)/100*(e.max-e.min):t}function Mp(t,e,a){const i=a??t;C1(t.x,R1(e.x,i.x),e.scaleX,e.scale,e.originX),C1(t.y,R1(e.y,i.y),e.scaleY,e.scale,e.originY)}function IE(t,e){return NE(bI(t.getBoundingClientRect(),e))}function vI(t,e,a){const i=IE(t,a),{scroll:r}=e;return r&&(Ji(i.x,r.offset.x),Ji(i.y,r.offset.y)),i}const SI={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},xI=pl.length;function _I(t,e,a){let i="",r=!0;for(let c=0;c<xI;c++){const d=pl[c],p=t[d];if(p===void 0)continue;let h=!0;if(typeof p=="number")h=p===(d.startsWith("scale")?1:0);else{const f=parseFloat(p);h=d.startsWith("scale")?f===1:f===0}if(!h||a){const f=Tg(p,dh[d]);if(!h){r=!1;const m=SI[d]||d;i+=`${m}(${f}) `}a&&(e[d]=f)}}const s=t.pathRotation;return s&&(r=!1,i+=`rotate(${Tg(s,dh.pathRotation)}) `),i=i.trim(),a?i=a(e,r?"":i):r&&(i="none"),i}function cz(t,e,a){const{style:i,vars:r,transformOrigin:s}=t;let c=!1,d=!1;for(const p in e){const h=e[p];if(hl.has(p)){c=!0;continue}else if(XT(p)){r[p]=h;continue}else{const f=Tg(h,dh[p]);p.startsWith("origin")?(d=!0,s[p]=f):i[p]=f}}if(e.transform||(c||a?i.transform=_I(e,t.transform,a):i.transform&&(i.transform="none")),d){const{originX:p="50%",originY:h="50%",originZ:f=0}=s;i.transformOrigin=`${p} ${h} ${f}`}}function WE(t,{style:e,vars:a},i,r){const s=t.style;let c;for(c in e)s[c]=e[c];r?.applyProjectionStyles(s,i);for(c in a)s.setProperty(c,a[c])}function D1(t,e){return e.max===e.min?0:t/(e.max-e.min)*100}const kc={correct:(t,e)=>{if(!e.target)return t;if(typeof t=="string")if(ze.test(t))t=parseFloat(t);else return t;const a=D1(t,e.target.x),i=D1(t,e.target.y);return`${a}% ${i}%`}},TI={correct:(t,{treeScale:e,projectionDelta:a})=>{const i=t,r=Ki.parse(t);if(r.length>5)return i;const s=Ki.createTransformer(t),c=typeof r[0]!="number"?1:0,d=a.x.scale*e.x,p=a.y.scale*e.y;r[0+c]/=d,r[1+c]/=p;const h=ft(d,p,.5);return typeof r[2+c]=="number"&&(r[2+c]/=h),typeof r[3+c]=="number"&&(r[3+c]/=h),s(r)}},Cg={borderRadius:{...kc,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:kc,borderTopRightRadius:kc,borderBottomLeftRadius:kc,borderBottomRightRadius:kc,boxShadow:TI};function GE(t,{layout:e,layoutId:a}){return hl.has(t)||t.startsWith("origin")||(e||a!==void 0)&&(!!Cg[t]||t==="opacity")}function uz(t,e,a){const i=t.style,r=e?.style,s={};if(!i)return s;for(const c in i)(pa(i[c])||r&&pa(r[c])||GE(c,t)||a?.getValue(c)?.liveStyle!==void 0)&&(s[c]=i[c]);return s}function EI(t){return window.getComputedStyle(t)}class AI extends ME{constructor(){super(...arguments),this.type="html",this.renderInstance=WE}readValueFromInstance(e,a){if(hl.has(a))return this.projection?.isProjecting?fg(a):Z6(e,a);{const i=EI(e),r=(XT(a)?i.getPropertyValue(a):i[a])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(e,{transformPagePoint:a}){return IE(e,a)}build(e,a,i){cz(e,a,i.transformTemplate)}scrapeMotionValuesFromProps(e,a,i){return uz(e,a,i)}}const PI={offset:"stroke-dashoffset",array:"stroke-dasharray"},CI={offset:"strokeDashoffset",array:"strokeDasharray"};function RI(t,e,a=1,i=0,r=!0){t.pathLength=1;const s=r?PI:CI;t[s.offset]=`${-i}`,t[s.array]=`${e} ${a}`}const DI=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function VE(t,{attrX:e,attrY:a,attrScale:i,pathLength:r,pathSpacing:s=1,pathOffset:c=0,...d},p,h,f){if(cz(t,d,h),p){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:m,style:g}=t;m.transform&&(g.transform=m.transform,delete m.transform),(g.transform||m.transformOrigin)&&(g.transformOrigin=m.transformOrigin??"50% 50%",delete m.transformOrigin),g.transform&&(g.transformBox=f?.transformBox??"fill-box",delete m.transformBox);for(const z of DI)m[z]!==void 0&&(g[z]=m[z],delete m[z]);e!==void 0&&(m.x=e),a!==void 0&&(m.y=a),i!==void 0&&(m.scale=i),r!==void 0&&RI(m,r,s,c,!1)}const FE=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),HE=t=>typeof t=="string"&&t.toLowerCase()==="svg";function OI(t,e,a,i){WE(t,e,void 0,i);for(const r in e.attrs)t.setAttribute(FE.has(r)?r:iz(r),e.attrs[r])}function qE(t,e,a){const i=uz(t,e,a);for(const r in t)if(pa(t[r])||pa(e[r])){const s=pl.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;i[s]=t[r]}return i}class UI extends ME{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Ht}getBaseTargetFromProps(e,a){return e[a]}readValueFromInstance(e,a){if(hl.has(a)){const i=EE(a);return i&&i.default||0}return a=FE.has(a)?a:iz(a),e.getAttribute(a)}scrapeMotionValuesFromProps(e,a,i){return qE(e,a,i)}build(e,a,i){VE(e,a,this.isSVGTag,i.transformTemplate,i.style)}renderInstance(e,a,i,r){OI(e,a,i,r)}mount(e){this.isSVGTag=HE(e.tagName),super.mount(e)}}const LI=lz.length;function ZE(t){if(!t)return;if(!t.isControllingVariants){const a=t.parent?ZE(t.parent)||{}:{};return t.props.initial!==void 0&&(a.initial=t.props.initial),a}const e={};for(let a=0;a<LI;a++){const i=lz[a],r=t.props[i];(iu(r)||r===!1)&&(e[i]=r)}return e}function YE(t,e){if(!Array.isArray(e))return!1;const a=e.length;if(a!==t.length)return!1;for(let i=0;i<a;i++)if(e[i]!==t[i])return!1;return!0}const KI=[...sz].reverse(),MI=sz.length;function NI(t){return e=>Promise.all(e.map(({animation:a,options:i})=>L$(t,a,i)))}function BI(t){let e=NI(t),a=O1(),i=!0,r=!1;const s=h=>(f,m)=>{const g=jr(t,m,h==="exit"?t.presenceContext?.custom:void 0);if(g){const{transition:z,transitionEnd:j,...v}=g;f={...f,...v,...j}}return f};function c(h){e=h(t)}function d(h){const{props:f}=t,m=ZE(t.parent)||{},g=[],z=new Set;let j={},v=1/0;for(let S=0;S<MI;S++){const E=KI[S],T=a[E],O=f[E]!==void 0?f[E]:m[E],H=iu(O),U=E===h?T.isActive:null;U===!1&&(v=S);let R=O===m[E]&&O!==f[E]&&H;if(R&&(i||r)&&t.manuallyAnimateOnMount&&(R=!1),T.protectedKeys={...j},!T.isActive&&U===null||!O&&!T.prevProp||Ih(O)||typeof O=="boolean")continue;if(E==="exit"&&T.isActive&&U!==!0){T.prevResolvedValues&&(j={...j,...T.prevResolvedValues});continue}const I=$I(T.prevProp,O);let ae=I||E===h&&T.isActive&&!R&&H||S>v&&H,ee=!1;const F=Array.isArray(O)?O:[O];let Z=F.reduce(s(E),{});U===!1&&(Z={});const{prevResolvedValues:oe={}}=T,me={...oe,...Z},de=ne=>{ae=!0,z.has(ne)&&(ee=!0,z.delete(ne)),T.needsAnimating[ne]=!0;const ge=t.getValue(ne);ge&&(ge.liveStyle=!1)};for(const ne in me){const ge=Z[ne],he=oe[ne];if(j.hasOwnProperty(ne))continue;let C=!1;jg(ge)&&jg(he)?C=!YE(ge,he)||I:C=ge!==he,C?ge!=null?de(ne):z.add(ne):ge!==void 0&&z.has(ne)?de(ne):T.protectedKeys[ne]=!0}T.prevProp=O,T.prevResolvedValues=Z,T.isActive&&(j={...j,...Z}),(i||r)&&t.blockInitialAnimation&&(ae=!1);const A=R&&I;ae&&(!A||ee)&&g.push(...F.map(ne=>{const ge={type:E};if(typeof ne=="string"&&(i||r)&&!A&&t.manuallyAnimateOnMount&&t.parent){const{parent:he}=t,C=jr(he,ne);if(he.enteringChildren&&C){const{delayChildren:Y}=C.transition||{};ge.delay=kE(he.enteringChildren,t,Y)}}return{animation:ne,options:ge}}))}if(z.size){const S={};if(typeof f.initial!="boolean"){const E=jr(t,Array.isArray(f.initial)?f.initial[0]:f.initial);E&&E.transition&&(S.transition=E.transition)}z.forEach(E=>{const T=t.getBaseTarget(E),O=t.getValue(E);O&&(O.liveStyle=!0),S[E]=T??null}),g.push({animation:S})}let _=!!g.length;return i&&(f.initial===!1||f.initial===f.animate)&&!t.manuallyAnimateOnMount&&(_=!1),i=!1,r=!1,_?e(g):Promise.resolve()}function p(h,f){if(a[h].isActive===f)return Promise.resolve();t.variantChildren?.forEach(g=>g.animationState?.setActive(h,f)),a[h].isActive=f;const m=d(h);for(const g in a)a[g].protectedKeys={};return m}return{animateChanges:d,setActive:p,setAnimateFunction:c,getState:()=>a,reset:()=>{a=O1(),r=!0}}}function $I(t,e){return typeof e=="string"?e!==t:Array.isArray(e)?!YE(e,t):!1}function dr(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function O1(){return{animate:dr(!0),whileInView:dr(),whileHover:dr(),whileTap:dr(),whileDrag:dr(),whileFocus:dr(),exit:dr()}}function Rg(t,e){t.min=e.min,t.max=e.max}function _i(t,e){Rg(t.x,e.x),Rg(t.y,e.y)}function U1(t,e){t.translate=e.translate,t.scale=e.scale,t.originPoint=e.originPoint,t.origin=e.origin}const JE=1e-4,II=1-JE,WI=1+JE,QE=.01,GI=0-QE,VI=0+QE;function Ta(t){return t.max-t.min}function FI(t,e,a){return Math.abs(t-e)<=a}function L1(t,e,a,i=.5){t.origin=i,t.originPoint=ft(e.min,e.max,t.origin),t.scale=Ta(a)/Ta(e),t.translate=ft(a.min,a.max,t.origin)-t.originPoint,(t.scale>=II&&t.scale<=WI||isNaN(t.scale))&&(t.scale=1),(t.translate>=GI&&t.translate<=VI||isNaN(t.translate))&&(t.translate=0)}function Uc(t,e,a,i){L1(t.x,e.x,a.x,i?i.originX:void 0),L1(t.y,e.y,a.y,i?i.originY:void 0)}function K1(t,e,a,i=0){const r=i?ft(a.min,a.max,i):a.min;t.min=r+e.min,t.max=t.min+Ta(e)}function HI(t,e,a,i){K1(t.x,e.x,a.x,i?.x),K1(t.y,e.y,a.y,i?.y)}function M1(t,e,a,i=0){const r=i?ft(a.min,a.max,i):a.min;t.min=e.min-r,t.max=t.min+Ta(e)}function yh(t,e,a,i){M1(t.x,e.x,a.x,i?.x),M1(t.y,e.y,a.y,i?.y)}function N1(t,e,a,i,r){return t-=e,t=hh(t,1/a,i),r!==void 0&&(t=hh(t,1/r,i)),t}function qI(t,e=0,a=1,i=.5,r,s=t,c=t){if(tn.test(e)&&(e=parseFloat(e),e=ft(c.min,c.max,e/100)-c.min),typeof e!="number")return;let d=ft(s.min,s.max,i);t===s&&(d-=e),t.min=N1(t.min,e,a,d,r),t.max=N1(t.max,e,a,d,r)}function B1(t,e,[a,i,r],s,c){qI(t,e[a],e[i],e[r],e.scale,s,c)}const ZI=["x","scaleX","originX"],YI=["y","scaleY","originY"];function $1(t,e,a,i){B1(t.x,e,ZI,a?a.x:void 0,i?i.x:void 0),B1(t.y,e,YI,a?a.y:void 0,i?i.y:void 0)}function I1(t){return t.translate===0&&t.scale===1}function XE(t){return I1(t.x)&&I1(t.y)}function W1(t,e){return t.min===e.min&&t.max===e.max}function JI(t,e){return W1(t.x,e.x)&&W1(t.y,e.y)}function G1(t,e){return Math.round(t.min)===Math.round(e.min)&&Math.round(t.max)===Math.round(e.max)}function eA(t,e){return G1(t.x,e.x)&&G1(t.y,e.y)}function V1(t){return Ta(t.x)/Ta(t.y)}function F1(t,e){return t.translate===e.translate&&t.scale===e.scale&&t.originPoint===e.originPoint}function Hi(t){return[t("x"),t("y")]}function QI(t,e,a){let i="";const r=t.x.translate/e.x,s=t.y.translate/e.y,c=a?.z||0;if((r||s||c)&&(i=`translate3d(${r}px, ${s}px, ${c}px) `),(e.x!==1||e.y!==1)&&(i+=`scale(${1/e.x}, ${1/e.y}) `),a){const{transformPerspective:h,rotate:f,pathRotation:m,rotateX:g,rotateY:z,skewX:j,skewY:v}=a;h&&(i=`perspective(${h}px) ${i}`),f&&(i+=`rotate(${f}deg) `),m&&(i+=`rotate(${m}deg) `),g&&(i+=`rotateX(${g}deg) `),z&&(i+=`rotateY(${z}deg) `),j&&(i+=`skewX(${j}deg) `),v&&(i+=`skewY(${v}deg) `)}const d=t.x.scale*e.x,p=t.y.scale*e.y;return(d!==1||p!==1)&&(i+=`scale(${d}, ${p})`),i||"none"}const tA=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],XI=tA.length,H1=t=>typeof t=="string"?parseFloat(t):t,q1=t=>typeof t=="number"||ze.test(t);function eW(t,e,a,i,r,s){r?(t.opacity=ft(0,a.opacity??1,tW(i)),t.opacityExit=ft(e.opacity??1,0,aW(i))):s&&(t.opacity=ft(e.opacity??1,a.opacity??1,i));for(let c=0;c<XI;c++){const d=tA[c];let p=Z1(e,d),h=Z1(a,d);if(p===void 0&&h===void 0)continue;p||(p=0),h||(h=0),p===0||h===0||q1(p)===q1(h)?(t[d]=Math.max(ft(H1(p),H1(h),i),0),(tn.test(h)||tn.test(p))&&(t[d]+="%")):t[d]=h}(e.rotate||a.rotate)&&(t.rotate=ft(e.rotate||0,a.rotate||0,i))}function Z1(t,e){return t[e]!==void 0?t[e]:t.borderRadius}const tW=aA(0,.5,HT),aW=aA(.5,.95,fi);function aA(t,e,a){return i=>i<t?0:i>e?1:a(tu(t,e,i))}function iW(t,e,a){const i=pa(t)?t:ol(t);return i.start(tz("",i,e,a)),i.animation}function nu(t,e,a,i={passive:!0}){return t.addEventListener(e,a,i),()=>t.removeEventListener(e,a)}const nW=(t,e)=>t.depth-e.depth;class oW{constructor(){this.children=[],this.isDirty=!1}add(e){Ik(this.children,e),this.isDirty=!0}remove(e){rh(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(nW),this.isDirty=!1,this.children.forEach(e)}}function rW(t,e){const a=_a.now(),i=({timestamp:r})=>{const s=r-a;s>=e&&(Oo(i),t(s-e))};return wt.setup(i,!0),()=>Oo(i)}function Np(t){return pa(t)?t.get():t}class sW{constructor(){this.members=[]}add(e){Ik(this.members,e);for(let a=this.members.length-1;a>=0;a--){const i=this.members[a];if(i===e||i===this.lead||i===this.prevLead)continue;const r=i.instance;(!r||r.isConnected===!1)&&!i.snapshot&&(rh(this.members,i),i.unmount())}e.scheduleRender()}remove(e){if(rh(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const a=this.members[this.members.length-1];a&&this.promote(a)}}relegate(e){for(let a=this.members.indexOf(e)-1;a>=0;a--){const i=this.members[a];if(i.isPresent!==!1&&i.instance?.isConnected!==!1)return this.promote(i),!0}return!1}promote(e,a){const i=this.lead;if(e!==i&&(this.prevLead=i,this.lead=e,e.show(),i)){i.updateSnapshot(),e.scheduleRender();const{layoutDependency:r}=i.options,{layoutDependency:s}=e.options;(r===void 0||r!==s)&&(e.resumeFrom=i,a&&(i.preserveOpacity=!0),i.snapshot&&(e.snapshot=i.snapshot,e.snapshot.latestValues=i.animationValues||i.latestValues),e.root?.isUpdating&&(e.isLayoutDirty=!0)),e.options.crossfade===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(e=>{e.options.onExitComplete?.(),e.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(e=>e.instance&&e.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const Bp={hasAnimatedSinceResize:!0,hasEverUpdated:!1},$f=["","X","Y","Z"],lW=1e3;let cW=0;function If(t,e,a,i){const{latestValues:r}=e;r[t]&&(a[t]=r[t],e.setStaticValue(t,0),i&&(i[t]=0))}function iA(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:e}=t.options;if(!e)return;const a=SE(e);if(window.MotionHasOptimisedAnimation(a,"transform")){const{layout:r,layoutId:s}=t.options;window.MotionCancelOptimisedAnimation(a,"transform",wt,!(r||s))}const{parent:i}=t;i&&!i.hasCheckedOptimisedAppear&&iA(i)}function nA({attachResizeListener:t,defaultParent:e,measureScroll:a,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(c={},d=e?.()){this.id=cW++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(pW),this.nodes.forEach(gW),this.nodes.forEach(kW),this.nodes.forEach(hW)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=c,this.root=d?d.root||d:this,this.path=d?[...d.path,d]:[],this.parent=d,this.depth=d?d.depth+1:0;for(let p=0;p<this.path.length;p++)this.path[p].shouldResetTransform=!0;this.root===this&&(this.nodes=new oW)}addEventListener(c,d){return this.eventHandlers.has(c)||this.eventHandlers.set(c,new Gk),this.eventHandlers.get(c).add(d)}notifyListeners(c,...d){const p=this.eventHandlers.get(c);p&&p.notify(...d)}hasListeners(c){return this.eventHandlers.has(c)}mount(c){if(this.instance)return;this.isSVG=rz(c)&&!dI(c),this.instance=c;const{layoutId:d,layout:p,visualElement:h}=this.options;if(h&&!h.current&&h.mount(c),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(p||d)&&(this.isLayoutDirty=!0),t){let f,m=0;const g=()=>this.root.updateBlockedByResize=!1;wt.read(()=>{m=window.innerWidth}),t(c,()=>{const z=window.innerWidth;z!==m&&(m=z,this.root.updateBlockedByResize=!0,f&&f(),f=rW(g,250),Bp.hasAnimatedSinceResize&&(Bp.hasAnimatedSinceResize=!1,this.nodes.forEach(Q1)))})}d&&this.root.registerSharedNode(d,this),this.options.animate!==!1&&h&&(d||p)&&this.addEventListener("didUpdate",({delta:f,hasLayoutChanged:m,hasRelativeLayoutChanged:g,layout:z})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const j=this.options.transition||h.getDefaultTransition()||SW,{onLayoutAnimationStart:v,onLayoutAnimationComplete:_}=h.getProps(),S=!this.targetLayout||!eA(this.targetLayout,z),E=!m&&g;if(this.options.layoutRoot||this.resumeFrom||E||m&&(S||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const T={...ez(j,"layout"),onPlay:v,onComplete:_};(h.shouldReduceMotion||this.options.layoutRoot)&&(T.delay=0,T.type=!1),this.startAnimation(T),this.setAnimationOrigin(f,E,T.path)}else m||Q1(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=z})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const c=this.getStack();c&&c.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Oo(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(zW),this.animationId++)}getTransformTemplate(){const{visualElement:c}=this.options;return c&&c.getProps().transformTemplate}willUpdate(c=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&iA(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let f=0;f<this.path.length;f++){const m=this.path[f];m.shouldResetTransform=!0,(typeof m.latestValues.x=="string"||typeof m.latestValues.y=="string")&&(m.isLayoutDirty=!0),m.updateScroll("snapshot"),m.options.layoutRoot&&m.willUpdate(!1)}const{layoutId:d,layout:p}=this.options;if(d===void 0&&!p)return;const h=this.getTransformTemplate();this.prevTransformTemplateValue=h?h(this.latestValues,""):void 0,this.updateSnapshot(),c&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const p=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),p&&this.nodes.forEach(mW),this.nodes.forEach(Y1);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(J1);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(fW),this.nodes.forEach(wW),this.nodes.forEach(uW),this.nodes.forEach(dW)):this.nodes.forEach(J1),this.clearAllSnapshots();const d=_a.now();da.delta=nn(0,1e3/60,d-da.timestamp),da.timestamp=d,da.isProcessing=!0,Df.update.process(da),Df.preRender.process(da),Df.render.process(da),da.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,nz.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(yW),this.sharedNodes.forEach(bW)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,wt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){wt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!Ta(this.snapshot.measuredBox.x)&&!Ta(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let p=0;p<this.path.length;p++)this.path[p].updateScroll();const c=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Ht()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:d}=this.options;d&&d.notify("LayoutMeasure",this.layout.layoutBox,c?c.layoutBox:void 0)}updateScroll(c="measure"){let d=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===c&&(d=!1),d&&this.instance){const p=i(this.instance);this.scroll={animationId:this.root.animationId,phase:c,isRoot:p,offset:a(this.instance),wasRoot:this.scroll?this.scroll.isRoot:p}}}resetTransform(){if(!r)return;const c=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,d=this.projectionDelta&&!XE(this.projectionDelta),p=this.getTransformTemplate(),h=p?p(this.latestValues,""):void 0,f=h!==this.prevTransformTemplateValue;c&&this.instance&&(d||hr(this.latestValues)||f)&&(r(this.instance,h),this.shouldResetTransform=!1,this.scheduleRender())}measure(c=!0){const d=this.measurePageBox();let p=this.removeElementScroll(d);return c&&(p=this.removeTransform(p)),xW(p),{animationId:this.root.animationId,measuredBox:d,layoutBox:p,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:c}=this.options;if(!c)return Ht();const d=c.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(_W))){const{scroll:h}=this.root;h&&(Ji(d.x,h.offset.x),Ji(d.y,h.offset.y))}return d}removeElementScroll(c){const d=Ht();if(_i(d,c),this.scroll?.wasRoot)return d;for(let p=0;p<this.path.length;p++){const h=this.path[p],{scroll:f,options:m}=h;h!==this.root&&f&&m.layoutScroll&&(f.wasRoot&&_i(d,c),Ji(d.x,f.offset.x),Ji(d.y,f.offset.y))}return d}applyTransform(c,d=!1,p){const h=p||Ht();_i(h,c);for(let f=0;f<this.path.length;f++){const m=this.path[f];!d&&m.options.layoutScroll&&m.scroll&&m!==m.root&&(Ji(h.x,-m.scroll.offset.x),Ji(h.y,-m.scroll.offset.y)),hr(m.latestValues)&&Mp(h,m.latestValues,m.layout?.layoutBox)}return hr(this.latestValues)&&Mp(h,this.latestValues,this.layout?.layoutBox),h}removeTransform(c){const d=Ht();_i(d,c);for(let p=0;p<this.path.length;p++){const h=this.path[p];if(!hr(h.latestValues))continue;let f;h.instance&&(Ag(h.latestValues)&&h.updateSnapshot(),f=Ht(),_i(f,h.measurePageBox())),$1(d,h.latestValues,h.snapshot?.layoutBox,f)}return hr(this.latestValues)&&$1(d,this.latestValues),d}setTargetDelta(c){this.targetDelta=c,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(c){this.options={...this.options,...c,crossfade:c.crossfade!==void 0?c.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==da.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(c=!1){const d=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=d.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=d.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=d.isSharedProjectionDirty);const p=!!this.resumingFrom||this!==d;if(!(c||p&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:f,layoutId:m}=this.options;if(!this.layout||!(f||m))return;this.resolvedRelativeTargetAt=da.timestamp;const g=this.getClosestProjectingParent();g&&this.linkedParentVersion!==g.layoutVersion&&!g.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&g&&g.layout?this.createRelativeTarget(g,this.layout.layoutBox,g.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Ht(),this.targetWithTransforms=Ht()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),HI(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):_i(this.target,this.layout.layoutBox),$E(this.target,this.targetDelta)):_i(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&g&&!!g.resumingFrom==!!this.resumingFrom&&!g.options.layoutScroll&&g.target&&this.animationProgress!==1?this.createRelativeTarget(g,this.target,g.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Ag(this.parent.latestValues)||BE(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(c,d,p){this.relativeParent=c,this.linkedParentVersion=c.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Ht(),this.relativeTargetOrigin=Ht(),yh(this.relativeTargetOrigin,d,p,this.options.layoutAnchor||void 0),_i(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const c=this.getLead(),d=!!this.resumingFrom||this!==c;let p=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(p=!1),d&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(p=!1),this.resolvedRelativeTargetAt===da.timestamp&&(p=!1),p)return;const{layout:h,layoutId:f}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(h||f))return;_i(this.layoutCorrected,this.layout.layoutBox);const m=this.treeScale.x,g=this.treeScale.y;jI(this.layoutCorrected,this.treeScale,this.path,d),c.layout&&!c.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(c.target=c.layout.layoutBox,c.targetWithTransforms=Ht());const{target:z}=c;if(!z){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(U1(this.prevProjectionDelta.x,this.projectionDelta.x),U1(this.prevProjectionDelta.y,this.projectionDelta.y)),Uc(this.projectionDelta,this.layoutCorrected,z,this.latestValues),(this.treeScale.x!==m||this.treeScale.y!==g||!F1(this.projectionDelta.x,this.prevProjectionDelta.x)||!F1(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",z))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(c=!0){if(this.options.visualElement?.scheduleRender(),c){const d=this.getStack();d&&d.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Js(),this.projectionDelta=Js(),this.projectionDeltaWithTransform=Js()}setAnimationOrigin(c,d=!1,p){const h=this.snapshot,f=h?h.latestValues:{},m={...this.latestValues},g=Js();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!d;const z=Ht(),j=h?h.source:void 0,v=this.layout?this.layout.source:void 0,_=j!==v,S=this.getStack(),E=!S||S.members.length<=1,T=!!(_&&!E&&this.options.crossfade===!0&&!this.path.some(vW));this.animationProgress=0;let O;const H=p?.interpolateProjection(c);this.mixTargetDelta=U=>{const R=U/1e3,I=H?.(R);I?(g.x.translate=I.x,g.x.scale=ft(c.x.scale,1,R),g.x.origin=c.x.origin,g.x.originPoint=c.x.originPoint,g.y.translate=I.y,g.y.scale=ft(c.y.scale,1,R),g.y.origin=c.y.origin,g.y.originPoint=c.y.originPoint):(X1(g.x,c.x,R),X1(g.y,c.y,R)),this.setTargetDelta(g),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(yh(z,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),jW(this.relativeTarget,this.relativeTargetOrigin,z,R),O&&JI(this.relativeTarget,O)&&(this.isProjectionDirty=!1),O||(O=Ht()),_i(O,this.relativeTarget)),_&&(this.animationValues=m,eW(m,f,this.latestValues,R,T,E)),I&&I.rotate!==void 0&&(this.animationValues||(this.animationValues=m),this.animationValues.pathRotation=I.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=R},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(c){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(Oo(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=wt.update(()=>{Bp.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=ol(0)),this.motionValue.jump(0,!1),this.currentAnimation=iW(this.motionValue,[0,1e3],{...c,velocity:0,isSync:!0,onUpdate:d=>{this.mixTargetDelta(d),c.onUpdate&&c.onUpdate(d)},onStop:()=>{},onComplete:()=>{c.onComplete&&c.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const c=this.getStack();c&&c.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(lW),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const c=this.getLead();let{targetWithTransforms:d,target:p,layout:h,latestValues:f}=c;if(!(!d||!p||!h)){if(this!==c&&this.layout&&h&&oA(this.options.animationType,this.layout.layoutBox,h.layoutBox)){p=this.target||Ht();const m=Ta(this.layout.layoutBox.x);p.x.min=c.target.x.min,p.x.max=p.x.min+m;const g=Ta(this.layout.layoutBox.y);p.y.min=c.target.y.min,p.y.max=p.y.min+g}_i(d,p),Mp(d,f),Uc(this.projectionDeltaWithTransform,this.layoutCorrected,d,f)}}registerSharedNode(c,d){this.sharedNodes.has(c)||this.sharedNodes.set(c,new sW),this.sharedNodes.get(c).add(d);const h=d.options.initialPromotionConfig;d.promote({transition:h?h.transition:void 0,preserveFollowOpacity:h&&h.shouldPreserveFollowOpacity?h.shouldPreserveFollowOpacity(d):void 0})}isLead(){const c=this.getStack();return c?c.lead===this:!0}getLead(){const{layoutId:c}=this.options;return c?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:c}=this.options;return c?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:c}=this.options;if(c)return this.root.sharedNodes.get(c)}promote({needsReset:c,transition:d,preserveFollowOpacity:p}={}){const h=this.getStack();h&&h.promote(this,p),c&&(this.projectionDelta=void 0,this.needsReset=!0),d&&this.setOptions({transition:d})}relegate(){const c=this.getStack();return c?c.relegate(this):!1}resetSkewAndRotation(){const{visualElement:c}=this.options;if(!c)return;let d=!1;const{latestValues:p}=c;if((p.z||p.rotate||p.rotateX||p.rotateY||p.rotateZ||p.skewX||p.skewY)&&(d=!0),!d)return;const h={};p.z&&If("z",c,h,this.animationValues);for(let f=0;f<$f.length;f++)If(`rotate${$f[f]}`,c,h,this.animationValues),If(`skew${$f[f]}`,c,h,this.animationValues);c.render();for(const f in h)c.setStaticValue(f,h[f]),this.animationValues&&(this.animationValues[f]=h[f]);c.scheduleRender()}applyProjectionStyles(c,d){if(!this.instance||this.isSVG)return;if(!this.isVisible){c.visibility="hidden";return}const p=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,c.visibility="",c.opacity="",c.pointerEvents=Np(d?.pointerEvents)||"",c.transform=p?p(this.latestValues,""):"none";return}const h=this.getLead();if(!this.projectionDelta||!this.layout||!h.target){this.options.layoutId&&(c.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,c.pointerEvents=Np(d?.pointerEvents)||""),this.hasProjected&&!hr(this.latestValues)&&(c.transform=p?p({},""):"none",this.hasProjected=!1);return}c.visibility="";const f=h.animationValues||h.latestValues;this.applyTransformsToTarget();let m=QI(this.projectionDeltaWithTransform,this.treeScale,f);p&&(m=p(f,m)),c.transform=m;const{x:g,y:z}=this.projectionDelta;c.transformOrigin=`${g.origin*100}% ${z.origin*100}% 0`,h.animationValues?c.opacity=h===this?f.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:f.opacityExit:c.opacity=h===this?f.opacity!==void 0?f.opacity:"":f.opacityExit!==void 0?f.opacityExit:0;for(const j in Cg){if(f[j]===void 0)continue;const{correct:v,applyTo:_,isCSSVariable:S}=Cg[j],E=m==="none"?f[j]:v(f[j],h);if(_){const T=_.length;for(let O=0;O<T;O++)c[_[O]]=E}else S?this.options.visualElement.renderState.vars[j]=E:c[j]=E}this.options.layoutId&&(c.pointerEvents=h===this?Np(d?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(c=>c.currentAnimation?.stop()),this.root.nodes.forEach(Y1),this.root.sharedNodes.clear()}}}function uW(t){t.updateLayout()}function dW(t){const e=t.resumeFrom?.snapshot||t.snapshot;if(t.isLead()&&t.layout&&e&&t.hasListeners("didUpdate")){const{layoutBox:a,measuredBox:i}=t.layout,{animationType:r}=t.options,s=e.source!==t.layout.source;if(r==="size")Hi(f=>{const m=s?e.measuredBox[f]:e.layoutBox[f],g=Ta(m);m.min=a[f].min,m.max=m.min+g});else if(r==="x"||r==="y"){const f=r==="x"?"y":"x";Rg(s?e.measuredBox[f]:e.layoutBox[f],a[f])}else oA(r,e.layoutBox,a)&&Hi(f=>{const m=s?e.measuredBox[f]:e.layoutBox[f],g=Ta(a[f]);m.max=m.min+g,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[f].max=t.relativeTarget[f].min+g)});const c=Js();Uc(c,a,e.layoutBox);const d=Js();s?Uc(d,t.applyTransform(i,!0),e.measuredBox):Uc(d,a,e.layoutBox);const p=!XE(c);let h=!1;if(!t.resumeFrom){const f=t.getClosestProjectingParent();if(f&&!f.resumeFrom){const{snapshot:m,layout:g}=f;if(m&&g){const z=t.options.layoutAnchor||void 0,j=Ht();yh(j,e.layoutBox,m.layoutBox,z);const v=Ht();yh(v,a,g.layoutBox,z),eA(j,v)||(h=!0),f.options.layoutRoot&&(t.relativeTarget=v,t.relativeTargetOrigin=j,t.relativeParent=f)}}}t.notifyListeners("didUpdate",{layout:a,snapshot:e,delta:d,layoutDelta:c,hasLayoutChanged:p,hasRelativeLayoutChanged:h})}else if(t.isLead()){const{onExitComplete:a}=t.options;a&&a()}t.options.transition=void 0}function pW(t){t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function hW(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function yW(t){t.clearSnapshot()}function Y1(t){t.clearMeasurements()}function mW(t){t.isLayoutDirty=!0,t.updateLayout()}function J1(t){t.isLayoutDirty=!1}function fW(t){t.isAnimationBlocked&&t.layout&&!t.isLayoutDirty&&(t.snapshot=t.layout,t.isLayoutDirty=!0)}function wW(t){const{visualElement:e}=t.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),t.resetTransform()}function Q1(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function gW(t){t.resolveTargetDelta()}function kW(t){t.calcProjection()}
56function zW(t){t.resetSkewAndRotation()}function bW(t){t.removeLeadSnapshot()}function X1(t,e,a){t.translate=ft(e.translate,0,a),t.scale=ft(e.scale,1,a),t.origin=e.origin,t.originPoint=e.originPoint}function ex(t,e,a,i){t.min=ft(e.min,a.min,i),t.max=ft(e.max,a.max,i)}function jW(t,e,a,i){ex(t.x,e.x,a.x,i),ex(t.y,e.y,a.y,i)}function vW(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const SW={duration:.45,ease:[.4,0,.1,1]},tx=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),ax=tx("applewebkit/")&&!tx("chrome/")?Math.round:fi;function ix(t){t.min=ax(t.min),t.max=ax(t.max)}function xW(t){ix(t.x),ix(t.y)}function oA(t,e,a){return t==="position"||t==="preserve-aspect"&&!FI(V1(e),V1(a),.2)}function _W(t){return t!==t.root&&t.scroll?.wasRoot}const TW=nA({attachResizeListener:(t,e)=>nu(t,"resize",e),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),Wf={current:void 0},rA=nA({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Wf.current){const t=new TW({});t.mount(window),t.setOptions({layoutScroll:!0}),Wf.current=t}return Wf.current},resetTransform:(t,e)=>{t.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),dz=N.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});function nx(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function EW(...t){return e=>{let a=!1;const i=t.map(r=>{const s=nx(r,e);return!a&&typeof s=="function"&&(a=!0),s});if(a)return()=>{for(let r=0;r<i.length;r++){const s=i[r];typeof s=="function"?s():nx(t[r],null)}}}}function AW(...t){return N.useCallback(EW(...t),t)}class PW extends N.Component{getSnapshotBeforeUpdate(e){const a=this.props.childRef.current;if(Dp(a)&&e.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const i=a.offsetParent,r=Dp(i)&&i.offsetWidth||0,s=Dp(i)&&i.offsetHeight||0,c=getComputedStyle(a),d=this.props.sizeRef.current;d.height=parseFloat(c.height),d.width=parseFloat(c.width),d.top=a.offsetTop,d.left=a.offsetLeft,d.right=r-d.width-d.left,d.bottom=s-d.height-d.top,d.direction=c.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function CW({children:t,isPresent:e,anchorX:a,anchorY:i,root:r,pop:s}){const c=N.useId(),d=N.useRef(null),p=N.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:h}=N.useContext(dz),f=t.props?.ref??t?.ref,m=AW(d,f);return N.useInsertionEffect(()=>{const{width:g,height:z,top:j,left:v,right:_,bottom:S,direction:E}=p.current;if(e||s===!1||!d.current||!g||!z)return;const T=E==="rtl",O=a==="left"?T?`right: ${_}`:`left: ${v}`:T?`left: ${v}`:`right: ${_}`,H=i==="bottom"?`bottom: ${S}`:`top: ${j}`;d.current.dataset.motionPopId=c;const U=document.createElement("style");h&&(U.nonce=h);const R=r??document.head;return R.appendChild(U),U.sheet&&U.sheet.insertRule(` 57 [data-motion-pop-id="${c}"] { 58 position: absolute !important; 59 width: ${g}px !important; 60 height: ${z}px !important; 61 ${O}px !important; 62 ${H}px !important; 63 } 64 `),()=>{d.current?.removeAttribute("data-motion-pop-id"),R.contains(U)&&R.removeChild(U)}},[e]),k.jsx(PW,{isPresent:e,childRef:d,sizeRef:p,pop:s,children:s===!1?t:N.cloneElement(t,{ref:m})})}const RW=({children:t,initial:e,isPresent:a,onExitComplete:i,custom:r,presenceAffectsLayout:s,mode:c,anchorX:d,anchorY:p,root:h})=>{const f=$k(DW),m=N.useId();let g=!0,z=N.useMemo(()=>(g=!1,{id:m,initial:e,isPresent:a,custom:r,onExitComplete:j=>{f.set(j,!0);for(const v of f.values())if(!v)return;i&&i()},register:j=>(f.set(j,!1),()=>f.delete(j))}),[a,f,i]);return s&&g&&(z={...z}),N.useMemo(()=>{f.forEach((j,v)=>f.set(v,!1))},[a]),N.useEffect(()=>{!a&&!f.size&&i&&i()},[a]),t=k.jsx(CW,{pop:c==="popLayout",isPresent:a,anchorX:d,anchorY:p,root:h,children:t}),k.jsx(Bh.Provider,{value:z,children:t})};function DW(){return new Map}function sA(t=!0){const e=N.useContext(Bh);if(e===null)return[!0,null];const{isPresent:a,onExitComplete:i,register:r}=e,s=N.useId();N.useEffect(()=>{if(t)return r(s)},[t]);const c=N.useCallback(()=>t&&i&&i(s),[s,i,t]);return!a&&i?[!1,c]:[!0]}const ep=t=>t.key||"";function ox(t){const e=[];
vendor: 8,719 bytes, line 64
64return N.Children.forEach(t,a=>{N.isValidElement(a)&&e.push(a)}),e}const Cn=({children:t,custom:e,initial:a=!0,onExitComplete:i,presenceAffectsLayout:r=!0,mode:s="sync",propagate:c=!1,anchorX:d="left",anchorY:p="top",root:h})=>{const[f,m]=sA(c),g=N.useMemo(()=>ox(t),[t]),z=c&&!f?[]:g.map(ep),j=N.useRef(!0),v=N.useRef(g),_=$k(()=>new Map),S=N.useRef(new Set),[E,T]=N.useState(g),[O,H]=N.useState(g);UT(()=>{j.current=!1,v.current=g;for(let I=0;I<O.length;I++){const ae=ep(O[I]);z.includes(ae)?(_.delete(ae),S.current.delete(ae)):_.get(ae)!==!0&&_.set(ae,!1)}},[O,z.length,z.join("-")]);const U=[];if(g!==E){let I=[...g];for(let ae=0;ae<O.length;ae++){const ee=O[ae],F=ep(ee);z.includes(F)||(I.splice(ae,0,ee),U.push(ee))}return s==="wait"&&U.length&&(I=U),H(ox(I)),T(g),null}const{forceRender:R}=N.useContext(Bk);return k.jsx(k.Fragment,{children:O.map(I=>{const ae=ep(I),ee=c&&!f?!1:g===O||z.includes(ae),F=()=>{if(S.current.has(ae))return;if(_.has(ae))S.current.add(ae),_.set(ae,!0);else return;let Z=!0;_.forEach(oe=>{oe||(Z=!1)}),Z&&(R?.(),H(v.current),c&&m?.(),i&&i())};return k.jsx(RW,{isPresent:ee,initial:!j.current||a?void 0:!1,custom:e,presenceAffectsLayout:r,mode:s,root:h,onExitComplete:ee?void 0:F,anchorX:d,anchorY:p,children:I},ae)})})},lA=N.createContext({strict:!1}),rx={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 sx=!1;function OW(){if(sx)return;const t={};for(const e in rx)t[e]={isEnabled:a=>rx[e].some(i=>!!a[i])};KE(t),sx=!0}function cA(){return OW(),gI()}function UW(t){const e=cA();for(const a in t)e[a]={...e[a],...t[a]};KE(e)}const LW=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","propagate","ignoreStrict","viewport"]);function mh(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||LW.has(t)}let uA=t=>!mh(t);function KW(t){typeof t=="function"&&(uA=e=>e.startsWith("on")?!mh(e):t(e))}try{KW(require("@emotion/is-prop-valid").default)}catch{}function MW(t,e,a){const i={};for(const r in t)r==="values"&&typeof t.values=="object"||pa(t[r])||(uA(r)||a===!0&&mh(r)||!e&&!mh(r)||t.draggable&&r.startsWith("onDrag"))&&(i[r]=t[r]);return i}const Gh=N.createContext({});function NW(t,e){if(Wh(t)){const{initial:a,animate:i}=t;return{initial:a===!1||iu(a)?a:void 0,animate:iu(i)?i:void 0}}return t.inherit!==!1?e:{}}function BW(t){const{initial:e,animate:a}=NW(t,N.useContext(Gh));return N.useMemo(()=>({initial:e,animate:a}),[lx(e),lx(a)])}function lx(t){return Array.isArray(t)?t.join(" "):t}const pz=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function dA(t,e,a){for(const i in e)!pa(e[i])&&!GE(i,a)&&(t[i]=e[i])}function $W({transformTemplate:t},e){return N.useMemo(()=>{const a=pz();return cz(a,e,t),Object.assign({},a.vars,a.style)},[e])}function IW(t,e){const a=t.style||{},i={};return dA(i,a,t),Object.assign(i,$W(t,e)),i}function WW(t,e){const a={},i=IW(t,e);return t.drag&&t.dragListener!==!1&&(a.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(a.tabIndex=0),a.style=i,a}const pA=()=>({...pz(),attrs:{}});function GW(t,e,a,i){const r=N.useMemo(()=>{const s=pA();return VE(s,e,HE(i),t.transformTemplate,t.style),{...s.attrs,style:{...s.style}}},[e]);if(t.style){const s={};dA(s,t.style,t),r.style={...s,...r.style}}return r}const VW=["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 hz(t){return typeof t!="string"||t.includes("-")?!1:!!(VW.indexOf(t)>-1||/[A-Z]/u.test(t))}function FW(t,e,a,{latestValues:i},r,s=!1,c){const p=(c??hz(t)?GW:WW)(e,i,r,t),h=MW(e,typeof t=="string",s),f=t!==N.Fragment?{...h,...p,ref:a}:{},{children:m}=e,g=N.useMemo(()=>pa(m)?m.get():m,[m]);return N.createElement(t,{...f,children:g})}function HW({scrapeMotionValuesFromProps:t,createRenderState:e},a,i,r){return{latestValues:qW(a,i,r,t),renderState:e()}}function qW(t,e,a,i){const r={},s=i(t,{});for(const g in s)r[g]=Np(s[g]);let{initial:c,animate:d}=t;const p=Wh(t),h=UE(t);e&&h&&!p&&t.inherit!==!1&&(c===void 0&&(c=e.initial),d===void 0&&(d=e.animate));let f=a?a.initial===!1:!1;f=f||c===!1;const m=f?d:c;if(m&&typeof m!="boolean"&&!Ih(m)){const g=Array.isArray(m)?m:[m];for(let z=0;z<g.length;z++){const j=az(t,g[z]);if(j){const{transitionEnd:v,transition:_,...S}=j;for(const E in S){let T=S[E];if(Array.isArray(T)){const O=f?T.length-1:0;T=T[O]}T!==null&&(r[E]=T)}for(const E in v)r[E]=v[E]}}}return r}const hA=t=>(e,a)=>{const i=N.useContext(Gh),r=N.useContext(Bh),s=()=>HW(t,e,i,r);return a?s():$k(s)},ZW=hA({scrapeMotionValuesFromProps:uz,createRenderState:pz}),YW=hA({scrapeMotionValuesFromProps:qE,createRenderState:pA}),JW=Symbol.for("motionComponentSymbol");function QW(t,e,a){const i=N.useRef(a);N.useInsertionEffect(()=>{i.current=a});const r=N.useRef(null);return N.useCallback(s=>{s&&t.onMount?.(s),e&&(s?e.mount(s):e.unmount());const c=i.current;if(typeof c=="function")if(s){const d=c(s);typeof d=="function"&&(r.current=d)}else r.current?(r.current(),r.current=null):c(s);else c&&(c.current=s)},[e])}const yA=N.createContext({});function Ws(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function XW(t,e,a,i,r,s){const{visualElement:c}=N.useContext(Gh),d=N.useContext(lA),p=N.useContext(Bh),h=N.useContext(dz),f=h.reducedMotion,m=h.skipAnimations,g=N.useRef(null),z=N.useRef(!1);i=i||d.renderer,!g.current&&i&&(g.current=i(t,{visualState:e,parent:c,props:a,presenceContext:p,blockInitialAnimation:p?p.initial===!1:!1,reducedMotionConfig:f,skipAnimations:m,isSVG:s}),z.current&&g.current&&(g.current.manuallyAnimateOnMount=!0));const j=g.current,v=N.useContext(yA);j&&!j.projection&&r&&(j.type==="html"||j.type==="svg")&&eG(g.current,a,r,v);const _=N.useRef(!1);N.useInsertionEffect(()=>{j&&_.current&&j.update(a,p)});const S=a[vE],E=N.useRef(!!S&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(S)&&window.MotionHasOptimisedAnimation?.(S));return UT(()=>{z.current=!0,j&&(_.current=!0,window.MotionIsMounted=!0,j.updateFeatures(),j.scheduleRenderMicrotask(),E.current&&j.animationState&&j.animationState.animateChanges())}),N.useEffect(()=>{j&&(!E.current&&j.animationState&&j.animationState.animateChanges(),E.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(S)}),E.current=!1),j.enteringChildren=void 0)}),j}function eG(t,e,a,i){const{layoutId:r,layout:s,drag:c,dragConstraints:d,layoutScroll:p,layoutRoot:h,layoutAnchor:f,layoutCrossfade:m}=e;t.projection=new a(t.latestValues,e["data-framer-portal-id"]?void 0:mA(t.parent)),t.projection.setOptions({layoutId:r,layout:s,alwaysMeasureLayout:!!c||d&&Ws(d),visualElement:t,animationType:typeof s=="string"?s:"both",initialPromotionConfig:i,crossfade:m,layoutScroll:p,layoutRoot:h,layoutAnchor:f})}function mA(t){if(t)return t.options.allowProjection!==!1?t.projection:mA(t.parent)}function Gf(t,{forwardMotionProps:e=!1,type:a}={},i,r){i&&UW(i);const s=a?a==="svg":hz(t),c=s?YW:ZW;function d(h,f){let m;const g={...N.useContext(dz),...h,layoutId:tG(h)},{isStatic:z}=g,j=BW(h),v=c(h,z);if(!z&&typeof window<"u"){aG();const _=iG(g);m=_.MeasureLayout,j.visualElement=XW(t,v,g,r,_.ProjectionNode,s)}return k.jsxs(Gh.Provider,{value:j,children:[m&&j.visualElement?k.jsx(m,{visualElement:j.visualElement,...g}):null,FW(t,h,QW(v,j.visualElement,f),v,z,e,s)]})}d.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const p=N.forwardRef(d);return p[JW]=t,p}function tG({layoutId:t}){const e=N.useContext(Bk).id;return e&&t!==void 0?e+"-"+t:t}function aG(t,e){N.useContext(lA).strict}function iG(t){const e=cA(),{drag:a,layout:i}=e;if(!a&&!i)return{};const r={...a,...i};return{MeasureLayout:a?.isEnabled(t)||i?.isEnabled(t)?r.MeasureLayout:void 0,ProjectionNode:r.ProjectionNode}}
vendor: 18,675 bytes, line 64
64function nG(t,e){if(typeof Proxy>"u")return Gf;const a=new Map,i=(s,c)=>Gf(s,c,t,e),r=(s,c)=>i(s,c);return new Proxy(r,{get:(s,c)=>c==="create"?i:(a.has(c)||a.set(c,Gf(c,void 0,t,e)),a.get(c))})}const oG=(t,e)=>e.isSVG??hz(t)?new UI(e):new AI(e,{allowProjection:t!==N.Fragment});class rG extends No{constructor(e){super(e),e.animationState||(e.animationState=BI(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();Ih(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:a}=this.node.prevProps||{};e!==a&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let sG=0;class lG extends No{constructor(){super(...arguments),this.id=sG++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:a}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===i)return;if(e&&i===!1){if(this.isExitComplete){const{initial:s,custom:c}=this.node.getProps();if(typeof s=="string"||typeof s=="object"&&s!==null&&!Array.isArray(s)){const d=jr(this.node,s,c);if(d){const{transition:p,transitionEnd:h,...f}=d;for(const m in f)this.node.getValue(m)?.jump(f[m])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const r=this.node.animationState.setActive("exit",!e);a&&!e&&r.then(()=>{this.isExitComplete=!0,a(this.id)})}mount(){const{register:e,onExitComplete:a}=this.node.presenceContext||{};a&&a(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const cG={animation:{Feature:rG},exit:{Feature:lG}};function mu(t){return{point:{x:t.pageX,y:t.pageY}}}const uG=t=>e=>oz(e)&&t(e,mu(e));function Lc(t,e,a,i){return nu(t,e,uG(a),i)}const fA=({current:t})=>t?t.ownerDocument.defaultView:null,cx=(t,e)=>Math.abs(t-e);function dG(t,e){const a=cx(t.x,e.x),i=cx(t.y,e.y);return Math.sqrt(a**2+i**2)}const ux=new Set(["auto","scroll"]);class wA{constructor(e,a,{transformPagePoint:i,contextWindow:r=window,dragSnapToOrigin:s=!1,distanceThreshold:c=3,element:d}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=z=>{this.handleScroll(z.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=tp(this.lastRawMoveEventInfo,this.transformPagePoint));const z=Vf(this.lastMoveEventInfo,this.history),j=this.startEvent!==null,v=dG(z.offset,{x:0,y:0})>=this.distanceThreshold;if(!j&&!v)return;const{point:_}=z,{timestamp:S}=da;this.history.push({..._,timestamp:S});const{onStart:E,onMove:T}=this.handlers;j||(E&&E(this.lastMoveEvent,z),this.startEvent=this.lastMoveEvent),T&&T(this.lastMoveEvent,z)},this.handlePointerMove=(z,j)=>{this.lastMoveEvent=z,this.lastRawMoveEventInfo=j,this.lastMoveEventInfo=tp(j,this.transformPagePoint),wt.update(this.updatePoint,!0)},this.handlePointerUp=(z,j)=>{this.end();const{onEnd:v,onSessionEnd:_,resumeAnimation:S}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&S&&S(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const E=Vf(z.type==="pointercancel"?this.lastMoveEventInfo:tp(j,this.transformPagePoint),this.history);this.startEvent&&v&&v(z,E),_&&_(z,E)},!oz(e))return;this.dragSnapToOrigin=s,this.handlers=a,this.transformPagePoint=i,this.distanceThreshold=c,this.contextWindow=r||window;const p=mu(e),h=tp(p,this.transformPagePoint),{point:f}=h,{timestamp:m}=da;this.history=[{...f,timestamp:m}];const{onSessionStart:g}=a;g&&g(e,Vf(h,this.history)),this.removeListeners=pu(Lc(this.contextWindow,"pointermove",this.handlePointerMove),Lc(this.contextWindow,"pointerup",this.handlePointerUp),Lc(this.contextWindow,"pointercancel",this.handlePointerUp)),d&&this.startScrollTracking(d)}startScrollTracking(e){let a=e.parentElement;for(;a;){const i=getComputedStyle(a);(ux.has(i.overflowX)||ux.has(i.overflowY))&&this.scrollPositions.set(a,{x:a.scrollLeft,y:a.scrollTop}),a=a.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(e){const a=this.scrollPositions.get(e);if(!a)return;const i=e===window,r=i?{x:window.scrollX,y:window.scrollY}:{x:e.scrollLeft,y:e.scrollTop},s={x:r.x-a.x,y:r.y-a.y};s.x===0&&s.y===0||(i?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=s.x,this.lastMoveEventInfo.point.y+=s.y):this.history.length>0&&(this.history[0].x-=s.x,this.history[0].y-=s.y),this.scrollPositions.set(e,r),wt.update(this.updatePoint,!0))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Oo(this.updatePoint)}}function tp(t,e){return e?{point:e(t.point)}:t}function dx(t,e){return{x:t.x-e.x,y:t.y-e.y}}function Vf({point:t},e){return{point:t,delta:dx(t,gA(e)),offset:dx(t,pG(e)),velocity:hG(e,.1)}}function pG(t){return t[0]}function gA(t){return t[t.length-1]}function hG(t,e){if(t.length<2)return{x:0,y:0};let a=t.length-1,i=null;const r=gA(t);for(;a>=0&&(i=t[a],!(r.timestamp-i.timestamp>ei(e)));)a--;if(!i)return{x:0,y:0};i===t[0]&&t.length>2&&r.timestamp-i.timestamp>ei(e)*2&&(i=t[1]);const s=mi(r.timestamp-i.timestamp);if(s===0)return{x:0,y:0};const c={x:(r.x-i.x)/s,y:(r.y-i.y)/s};return c.x===1/0&&(c.x=0),c.y===1/0&&(c.y=0),c}function yG(t,{min:e,max:a},i){return e!==void 0&&t<e?t=i?ft(e,t,i.min):Math.max(t,e):a!==void 0&&t>a&&(t=i?ft(a,t,i.max):Math.min(t,a)),t}function px(t,e,a){return{min:e!==void 0?t.min+e:void 0,max:a!==void 0?t.max+a-(t.max-t.min):void 0}}function mG(t,{top:e,left:a,bottom:i,right:r}){return{x:px(t.x,a,r),y:px(t.y,e,i)}}function hx(t,e){let a=e.min-t.min,i=e.max-t.max;return e.max-e.min<t.max-t.min&&([a,i]=[i,a]),{min:a,max:i}}function fG(t,e){return{x:hx(t.x,e.x),y:hx(t.y,e.y)}}function wG(t,e){let a=.5;const i=Ta(t),r=Ta(e);return r>i?a=tu(e.min,e.max-i,t.min):i>r&&(a=tu(t.min,t.max-r,e.min)),nn(0,1,a)}function gG(t,e){const a={};return e.min!==void 0&&(a.min=e.min-t.min),e.max!==void 0&&(a.max=e.max-t.min),a}const Dg=.35;function kG(t=Dg){return t===!1?t=0:t===!0&&(t=Dg),{x:yx(t,"left","right"),y:yx(t,"top","bottom")}}function yx(t,e,a){return{min:mx(t,e),max:mx(t,a)}}function mx(t,e){return typeof t=="number"?t:t[e]||0}const zG=new WeakMap;class bG{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ht(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:a=!1,distanceThreshold:i}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const s=m=>{a&&this.snapToCursor(mu(m).point),this.stopAnimation()},c=(m,g)=>{const{drag:z,dragPropagation:j,onDragStart:v}=this.getProps();if(z&&!j&&(this.openDragLock&&this.openDragLock(),this.openDragLock=q$(z),!this.openDragLock))return;this.latestPointerEvent=m,this.latestPanInfo=g,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Hi(S=>{let E=this.getAxisMotionValue(S).get()||0;if(tn.test(E)){const{projection:T}=this.visualElement;if(T&&T.layout){const O=T.layout.layoutBox[S];O&&(E=Ta(O)*(parseFloat(E)/100))}}this.originPoint[S]=E}),v&&wt.update(()=>v(m,g),!1,!0),vg(this.visualElement,"transform");const{animationState:_}=this.visualElement;_&&_.setActive("whileDrag",!0)},d=(m,g)=>{this.latestPointerEvent=m,this.latestPanInfo=g;const{dragPropagation:z,dragDirectionLock:j,onDirectionLock:v,onDrag:_}=this.getProps();if(!z&&!this.openDragLock)return;const{offset:S}=g;if(j&&this.currentDirection===null){this.currentDirection=vG(S),this.currentDirection!==null&&v&&v(this.currentDirection);return}this.updateAxis("x",g.point,S),this.updateAxis("y",g.point,S),this.visualElement.render(),_&&wt.update(()=>_(m,g),!1,!0)},p=(m,g)=>{this.latestPointerEvent=m,this.latestPanInfo=g,this.stop(m,g),this.latestPointerEvent=null,this.latestPanInfo=null},h=()=>{const{dragSnapToOrigin:m}=this.getProps();(m||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:f}=this.getProps();this.panSession=new wA(e,{onSessionStart:s,onStart:c,onMove:d,onSessionEnd:p,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:f,distanceThreshold:i,contextWindow:fA(this.visualElement),element:this.visualElement.current})}stop(e,a){const i=e||this.latestPointerEvent,r=a||this.latestPanInfo,s=this.isDragging;if(this.cancel(),!s||!r||!i)return;const{velocity:c}=r;this.startAnimation(c);const{onDragEnd:d}=this.getProps();d&&wt.postRender(()=>d(i,r))}cancel(){this.isDragging=!1;const{projection:e,animationState:a}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),a&&a.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(e,a,i){const{drag:r}=this.getProps();if(!i||!ap(e,r,this.currentDirection))return;const s=this.getAxisMotionValue(e);let c=this.originPoint[e]+i[e];this.constraints&&this.constraints[e]&&(c=yG(c,this.constraints[e],this.elastic[e])),s.set(c)}resolveConstraints(){const{dragConstraints:e,dragElastic:a}=this.getProps(),i=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,r=this.constraints;e&&Ws(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&i?this.constraints=mG(i.layoutBox,e):this.constraints=!1,this.elastic=kG(a),r!==this.constraints&&!Ws(e)&&i&&this.constraints&&!this.hasMutatedConstraints&&Hi(s=>{this.constraints!==!1&&this.getAxisMotionValue(s)&&(this.constraints[s]=gG(i.layoutBox[s],this.constraints[s]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:a}=this.getProps();if(!e||!Ws(e))return!1;const i=e.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;r.root&&(r.root.scroll=void 0,r.root.updateScroll());const s=vI(i,r.root,this.visualElement.getTransformPagePoint());let c=fG(r.layout.layoutBox,s);if(a){const d=a(zI(c));this.hasMutatedConstraints=!!d,d&&(c=NE(d))}return c}startAnimation(e){const{drag:a,dragMomentum:i,dragElastic:r,dragTransition:s,dragSnapToOrigin:c,onDragTransitionEnd:d}=this.getProps(),p=this.constraints||{},h=Hi(f=>{if(!ap(f,a,this.currentDirection))return;let m=p&&p[f]||{};(c===!0||c===f)&&(m={min:0,max:0});const g=r?200:1e6,z=r?40:1e7,j={type:"inertia",velocity:i?e[f]:0,bounceStiffness:g,bounceDamping:z,timeConstant:750,restDelta:1,restSpeed:10,...s,...m};return this.startAxisValueAnimation(f,j)});return Promise.all(h).then(d)}startAxisValueAnimation(e,a){const i=this.getAxisMotionValue(e);return vg(this.visualElement,e),i.start(tz(e,i,0,a,this.visualElement,!1))}stopAnimation(){Hi(e=>this.getAxisMotionValue(e).stop())}getAxisMotionValue(e){const a=`_drag${e.toUpperCase()}`,r=this.visualElement.getProps()[a];return r||this.visualElement.getValue(e,this.visualElement.latestValues[e]??0)}snapToCursor(e){Hi(a=>{const{drag:i}=this.getProps();if(!ap(a,i,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(a);if(r&&r.layout){const{min:c,max:d}=r.layout.layoutBox[a],p=s.get()||0;s.set(e[a]-ft(c,d,.5)+p)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:a}=this.getProps(),{projection:i}=this.visualElement;if(!Ws(a)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};Hi(c=>{const d=this.getAxisMotionValue(c);if(d&&this.constraints!==!1){const p=d.get();r[c]=wG({min:p,max:p},this.constraints[c])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.constraints=!1,this.resolveConstraints(),Hi(c=>{if(!ap(c,e,null))return;const d=this.getAxisMotionValue(c),{min:p,max:h}=this.constraints[c];d.set(ft(p,h,r[c]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;zG.set(this.visualElement,this);const e=this.visualElement.current,a=Lc(e,"pointerdown",h=>{const{drag:f,dragListener:m=!0}=this.getProps(),g=h.target,z=g!==e&&eI(g);f&&m&&!z&&this.start(h)});let i;const r=()=>{const{dragConstraints:h}=this.getProps();Ws(h)&&h.current&&(this.constraints=this.resolveRefConstraints(),i||(i=jG(e,h.current,()=>this.scalePositionWithinConstraints())))},{projection:s}=this.visualElement,c=s.addEventListener("measure",r);s&&!s.layout&&(s.root&&s.root.updateScroll(),s.updateLayout()),wt.read(r);const d=nu(window,"resize",()=>this.scalePositionWithinConstraints()),p=s.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:f})=>{this.isDragging&&f&&(Hi(m=>{const g=this.getAxisMotionValue(m);g&&(this.originPoint[m]+=h[m].translate,g.set(g.get()+h[m].translate))}),this.visualElement.render())}));return()=>{d(),a(),c(),p&&p(),i&&i()}}getProps(){const e=this.visualElement.getProps(),{drag:a=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:c=Dg,dragMomentum:d=!0}=e;return{...e,drag:a,dragDirectionLock:i,dragPropagation:r,dragConstraints:s,dragElastic:c,dragMomentum:d}}}function fx(t){let e=!0;return()=>{if(e){e=!1;return}t()}}function jG(t,e,a){const i=v1(t,fx(a)),r=v1(e,fx(a));return()=>{i(),r()}}function ap(t,e,a){return(e===!0||e===t)&&(a===null||a===t)}function vG(t,e=10){let a=null;return Math.abs(t.y)>e?a="y":Math.abs(t.x)>e&&(a="x"),a}class SG extends No{constructor(e){super(e),this.removeGroupControls=fi,this.removeListeners=fi,this.controls=new bG(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||fi}update(){const{dragControls:e}=this.node.getProps(),{dragControls:a}=this.node.prevProps||{};e!==a&&(this.removeGroupControls(),e&&(this.removeGroupControls=e.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Ff=t=>(e,a)=>{t&&wt.update(()=>t(e,a),!1,!0)};class xG extends No{constructor(){super(...arguments),this.removePointerDownListener=fi}onPointerDown(e){this.session=new wA(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:fA(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:a,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:Ff(e),onStart:Ff(a),onMove:Ff(i),onEnd:(s,c)=>{delete this.session,r&&wt.postRender(()=>r(s,c))}}}mount(){this.removePointerDownListener=Lc(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Hf=!1;class _G extends N.Component{componentDidMount(){const{visualElement:e,layoutGroup:a,switchLayoutGroup:i,layoutId:r}=this.props,{projection:s}=e;s&&(a.group&&a.group.add(s),i&&i.register&&r&&i.register(s),Hf&&s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Bp.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:a,visualElement:i,drag:r,isPresent:s}=this.props,{projection:c}=i;return c&&(c.isPresent=s,e.layoutDependency!==a&&c.setOptions({...c.options,layoutDependency:a}),Hf=!0,r||e.layoutDependency!==a||a===void 0||e.isPresent!==s?c.willUpdate():this.safeToRemove(),e.isPresent!==s&&(s?c.promote():c.relegate()||wt.postRender(()=>{const d=c.getStack();(!d||!d.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:e,layoutAnchor:a}=this.props,{projection:i}=e;i&&(i.options.layoutAnchor=a,i.root.didUpdate(),nz.postRender(()=>{!i.currentAnimation&&i.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:a,switchLayoutGroup:i}=this.props,{projection:r}=e;Hf=!0,r&&(r.scheduleCheckAfterUnmount(),a&&a.group&&a.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function kA(t){const[e,a]=sA(),i=N.useContext(Bk);return k.jsx(_G,{...t,layoutGroup:i,switchLayoutGroup:N.useContext(yA),isPresent:e,safeToRemove:a})}const TG={pan:{Feature:xG},drag:{Feature:SG,ProjectionNode:rA,MeasureLayout:kA}};function wx(t,e,a){const{props:i}=t;t.animationState&&i.whileHover&&t.animationState.setActive("whileHover",a==="Start");const r="onHover"+a,s=i[r];s&&wt.postRender(()=>s(e,mu(e)))}class EG extends No{mount(){const{current:e}=this.node;e&&(this.unmount=Y$(e,(a,i)=>(wx(this.node,i,"Start"),r=>wx(this.node,r,"End"))))}unmount(){}}class AG extends No{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!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=pu(nu(this.node.current,"focus",()=>this.onFocus()),nu(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function gx(t,e,a){const{props:i}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&i.whileTap&&t.animationState.setActive("whileTap",a==="Start");const r="onTap"+(a==="End"?"":a),s=i[r];s&&wt.postRender(()=>s(e,mu(e)))}class PG extends No{mount(){const{current:e}=this.node;if(!e)return;const{globalTapTarget:a,propagate:i}=this.node.props;this.unmount=aI(e,(r,s)=>(gx(this.node,s,"Start"),(c,{success:d})=>gx(this.node,c,d?"End":"Cancel")),{useGlobalTarget:a,stopPropagation:i?.tap===!1})}unmount(){}}const Og=new WeakMap,qf=new WeakMap,CG=t=>{const e=Og.get(t.target);e&&e(t)}
64,RG=t=>{t.forEach(CG)};function DG({root:t,...e}){const a=t||document;qf.has(a)||qf.set(a,{});const i=qf.get(a),r=JSON.stringify(e);return i[r]||(i[r]=new IntersectionObserver(RG,{root:t,...e})),i[r]}function OG(t,e,a){const i=DG(e);return Og.set(t,a),i.observe(t),()=>{Og.delete(t),i.unobserve(t)}}const UG={some:0,all:1};class LG extends No{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:e={}}=this.node.getProps(),{root:a,margin:i,amount:r="some",once:s}=e,c={root:a?a.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:UG[r]},d=p=>{const{isIntersecting:h}=p;if(this.isInView===h||(this.isInView=h,s&&!h&&this.hasEnteredView))return;h&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",h);const{onViewportEnter:f,onViewportLeave:m}=this.node.getProps(),g=h?f:m;g&&g(p)};this.stopObserver=OG(this.node.current,c,d)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:a}=this.node;["amount","margin","root"].some(KG(e,a))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function KG({viewport:t={}},{viewport:e={}}={}){return a=>t[a]!==e[a]}const MG={inView:{Feature:LG},tap:{Feature:PG},focus:{Feature:AG},hover:{Feature:EG}},NG={layout:{ProjectionNode:rA,MeasureLayout:kA}},BG={...cG,...MG,...TG,...NG},Lt=nG(BG,oG),ie={brand:{indigo:"#1e56a8",magenta:"#9C328C",teal:"#3DB4C9",gradient:"linear-gradient(135deg, #1e56a8 0%, #9C328C 100%)"},dark:{bg:"#070C16",surface:"#0C1220",surface2:"#141B2D",surface3:"#1E2538",border:"rgba(255, 255, 255, 0.08)",borderStrong:"rgba(255, 255, 255, 0.18)",textPrimary:"#FFFFFF",textSecondary:"#9CA3AF",textTertiary:"#5C6478",textDisabled:"#3A3A4A"},light:{bg:"#F7F7F5",surface:"#FFFFFF",surface2:"#EDEDE8",surface3:"#E0E0DA",border:"#D8D8E0",borderStrong:"#A8A8B8",textPrimary:"#1A1A2E",textSecondary:"#5C6478",textTertiary:"#9CA3AF",textDisabled:"#C5C5D0"},status:{success:"#4ADE80",warning:"#FBBF24",error:"#EF4444",info:"#3DB4C9"}},wa={fonts:{display:'"Plus Jakarta Sans", system-ui, sans-serif',body:'"Plus Jakarta Sans", system-ui, sans-serif',mono:'"JetBrains Mono", ui-monospace, monospace'},scale:{h1:{size:"54px",weight:700,leading:1,tracking:0},h2:{size:"48px",weight:700,leading:1.1,tracking:0},h3:{size:"clamp(22px, 2.5vw, 30px)",weight:700,leading:1.15,tracking:0},h4:{size:"20px",weight:600,leading:1.3,tracking:0},h5:{size:"17px",weight:600,leading:1.4,tracking:0},h6:{size:"14px",weight:600,leading:1.4,tracking:0},bodyLg:{size:"17px",weight:400,leading:1.7,tracking:0},body:{size:"15px",weight:400,leading:1.6,tracking:0},bodySm:{size:"13px",weight:400,leading:1.5,tracking:0},caption:{size:"11px",weight:500,leading:1.4,tracking:"0.22em",uppercase:!0}}},qe={sm:"6px",md:"10px",lg:"16px",xl:"24px","2xl":"32px",full:"9999px"},Zf={none:"none",subtle:"0 1px 2px rgba(0, 0, 0, 0.08)",card:"0 8px 24px rgba(0, 0, 0, 0.12)",elevated:"0 20px 60px -10px rgba(0, 0, 0, 0.3)",hover:"0 24px 80px -16px rgba(0, 0, 0, 0.5)",magentaGlow:"0 0 60px rgba(156, 50, 140, 0.35)",indigoGlow:"0 0 60px rgba(30, 86, 168, 0.35)"},Di={easing:{out:"cubic-bezier(0.22, 1, 0.36, 1)",inOut:"cubic-bezier(0.65, 0, 0.35, 1)"},duration:{fast:"0.2s",base:"0.3s",slow:"0.6s",slower:"0.9s"},spring:{soft:{stiffness:150,damping:22,mass:.5},snappy:{stiffness:300,damping:20},bouncy:{stiffness:400,damping:14}}},$G="/__l5e/assets-v1/b413a03b-0c67-4841-bf74-71789abffc44/dispace-logo-2026-light.png",zA={url:$G},IG="/assets/megamenu-laptop-DcF4nSwb.webp",WG={pl:[{slug:"strony-i-sklepy",title:"Strony i Sklepy",short:"Webdesign & E-commerce",accent:"#1e56a8"},{slug:"marketing-i-seo",title:"Marketing i SEO",short:"Ruch & Leady",accent:"#9C328C"},{slug:"wizerunek-i-branding",title:"Wizerunek i Branding",short:"Marka premium",accent:"#3DB4C9"},{slug:"strategia-i-biznes",title:"Strategia i Biznes",short:"Decyzje wÅaÅcicieli",accent:"#E0A458"}],en:[{slug:"websites-and-shops",title:"Websites & Shops",short:"Webdesign & E-commerce",accent:"#1e56a8"},{slug:"marketing-and-seo",title:"Marketing & SEO",short:"Traffic & Leads",accent:"#9C328C"},{slug:"branding-and-image",title:"Image & Branding",short:"Premium Brand",accent:"#3DB4C9"},{slug:"strategy-and-business",title:"Strategy & Business",short:"Owner Decisions",accent:"#E0A458"}]}
64,GG={pl:{"strony-i-sklepy":[{slug:"jak-nowa-strona-uratowala-firme-budowlana-uk",readMinutes:7,title:"Jak nowa strona internetowa uratowaÅa polskÄ
firmÄ budowlanÄ
w UK przed bankructwem?"},{slug:"sklep-woocommerce-czy-shopify-uk",readMinutes:5,title:"Sklep WooCommerce czy Shopify? Co wybraÄ dla polskiego biznesu e-commerce w UK?"}],"marketing-i-seo":[{slug:"pozycjonowanie-stron-uk-lokalny-hydraulik",readMinutes:7,title:"Pozycjonowanie stron w UK: Jak polski hydraulik z Londynu zdominowaÅ lokalne wyniki Google?"},{slug:"prowadzenie-social-media-uk-leady-zamiast-lajkow",readMinutes:5,title:"Prowadzenie Social Media w UK: Jak przestaÄ przepalaÄ budżet na Facebooku i zaczÄ
Ä zdobywaÄ leady?"}],"wizerunek-i-branding":[{slug:"tanie-logo-vs-profesjonalna-identyfikacja-wizualna",readMinutes:5,title:"Tanie logo kosztowaÅo ich tysiÄ
ce funtów. Dlaczego profesjonalna identyfikacja wizualna to inwestycja?"},{slug:"rebranding-polskiej-firmy-uk-jak-podniesc-stawki",readMinutes:6,title:"Rebranding polskiej firmy w UK: Jak przestaÄ konkurowaÄ cenÄ
i staÄ siÄ markÄ
premium?"}],"strategia-i-biznes":[{slug:"freelancer-czy-agencja-prawdziwe-koszty",readMinutes:6,title:"Freelancer czy polska agencja reklamowa w UK? Prawdziwe koszty ukryte za tanimi stronami www."},{slug:"jak-zalozyc-i-skalowac-polski-biznes-w-uk-2026",readMinutes:7,title:"Jak zaÅożyÄ i skalowaÄ polski biznes w UK w 2026 roku? Rola cyfrowego marketingu"}]},en:{"websites-and-shops":[{slug:"how-new-website-saved-construction-company-uk",readMinutes:7,title:"How a New Website Saved a Polish Construction Company in the UK from Bankruptcy?"},{slug:"woocommerce-or-shopify-uk",readMinutes:5,title:"WooCommerce or Shopify? What to Choose for a Polish E-commerce Business in the UK?"}],"marketing-and-seo":[{slug:"seo-uk-local-plumber-london",readMinutes:7,title:"SEO in the UK: How a Polish Plumber from London Dominated Local Google Results?"},{slug:"social-media-management-uk-leads-not-likes",readMinutes:5,title:"Social Media Management in the UK: How to Stop Burning Budget on Facebook and Start Getting Leads?"}],"branding-and-image":[{slug:"cheap-logo-vs-professional-visual-identity",readMinutes:5,title:"A cheap logo cost them thousands of pounds. Why professional visual identity is an investment, not a cost"},{slug:"rebranding-polish-company-uk-premium-brand",readMinutes:6,title:"Rebranding of a Polish company in the UK: How to stop competing on price and become a premium brand?"}],"strategy-and-business":[{slug:"freelancer-vs-agency-true-costs",readMinutes:6,title:"Freelancer or Polish advertising agency in the UK? The true costs hidden behind cheap websites."},{slug:"how-to-start-and-scale-business-uk-2026",readMinutes:7,title:"How to start and scale a Polish business in the UK in 2026? The role of digital marketing"}]}},VG=({size:t=16})=>k.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor","aria-hidden":"true",children:k.jsx("path",{d:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.967-.94 1.165-.173.198-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479c0 1.462 1.065 2.875 1.213 3.074.149.198 2.095 3.2 5.077 4.487.71.306 1.263.489 1.695.626.712.227 1.36.195 1.872.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347zM12.04 21.785h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.889-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.886 9.884zM20.52 3.449C18.24 1.245 15.24.002 12.045 0 5.463 0 .104 5.334.101 11.892c0 2.096.549 4.142 1.595 5.945L0 24l6.335-1.652a11.9 11.9 0 005.71 1.447h.005c6.582 0 11.94-5.335 11.943-11.893a11.821 11.821 0 00-3.473-8.453z"})}),bA=({size:t=16})=>k.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor","aria-hidden":"true",children:k.jsx("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"})}),jA=({size:t=16})=>k.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor","aria-hidden":"true",children:k.jsx("path",{d:"M12 2.163c3.204 0 3.584.012 4.85.07 1.366.062 2.633.336 3.608 1.311.975.975 1.249 2.242 1.311 3.608.058 1.266.069 1.646.069 4.85 0 3.205-.012 3.584-.069 4.85-.062 1.366-.336 2.633-1.311 3.608-.975.975-2.242 1.249-3.608 1.311-1.266.058-1.645.07-4.85.07-3.204 0-3.584-.012-4.849-.07-1.366-.062-2.633-.336-3.608-1.311-.975-.975-1.249-2.242-1.311-3.608C2.175 15.647 2.163 15.268 2.163 12s.012-3.584.07-4.85c.062-1.366.336-2.633 1.311-3.608.975-.975 2.242-1.249 3.608-1.311C8.416 2.175 8.796 2.163 12 2.163zm0 1.802c-3.146 0-3.5.012-4.732.068-.92.042-1.418.197-1.75.327-.44.171-.754.376-1.084.706-.33.33-.535.644-.706 1.084-.13.332-.285.83-.327 1.75C3.345 8.5 3.333 8.854 3.333 12c0 3.146.012 3.5.068 4.732.042.92.197 1.418.327 1.75.171.44.376.754.706 1.084.33.33.644.535 1.084.706.332.13.83.285 1.75.327 1.232.056 1.586.068 4.732.068 3.146 0 3.5-.012 4.732-.068.92-.042 1.418-.197 1.75-.327.44-.171.754-.376 1.084-.706.33-.33.535-.644.706-1.084.13-.332.285-.83.327-1.75.056-1.232.068-1.586.068-4.732 0-3.146-.012-3.5-.068-4.732-.042-.92-.197-1.418-.327-1.75-.171-.44-.376-.754-.706-1.084-.33-.33-.644-.535-1.084-.706-.332-.13-.83-.285-1.75-.327C15.5 3.977 15.146 3.965 12 3.965zm0 3.063A4.972 4.972 0 1 1 12 17a4.972 4.972 0 0 1 0-9.972zm0 8.2a3.229 3.229 0 1 0 0-6.457 3.229 3.229 0 0 0 0 6.457zm6.406-8.412a1.162 1.162 0 1 1-2.324 0 1.162 1.162 0 0 1 2.324 0z"})}),vA=({size:t=16})=>k.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor","aria-hidden":"true",children:k.jsx("path",{d:"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5.8 20.1a6.34
646.34 0 0 0 10.86-4.43V8.66a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1.84-.09z"})}),Ug=[{label:"WhatsApp",href:"https://web.whatsapp.com/send?phone=447476052809&text=",Icon:VG},{label:"Facebook",href:"https://www.facebook.com/DiSpace.uk",Icon:bA},{label:"Instagram",href:"https://www.instagram.com/dispaceuk/",Icon:jA},{label:"TikTok",href:"https://www.tiktok.com/@dispace.uk",Icon:vA}],FG=zA.url,wo=[.22,1,.36,1],go=wa.fonts.display,ip=wa.fonts.body;function HG(t,e){const a=t==="en"?"/en":"/pl",i=t==="en"?"/en/services":"/pl/oferta",r=Ct("portfolio",t),s=Ct("contact",t),c=Ct("knowledge",t),d=[{label:e.nav.start,href:a,matchPath:a},{label:e.nav.offer,href:`${a}#uslugi`,hasDropdown:!0,dropdownType:"uslugi",matchPath:i},{label:e.nav.portfolio,href:r,matchPath:r}];c&&d.push({label:e.nav.knowledge,href:c,hasDropdown:!0,dropdownType:"blog",matchPath:c});const p=Ct("faq",t);return p&&d.push({label:e.nav.faq,href:p,matchPath:p}),d.push({label:e.nav.contact,href:s,matchPath:s}),d}function qG(t,e){const a=Ct("offer.web",t),i=Ct("offer.marketing",t),r=Ct("offer.design",t),s=Ct("offer.led",t);return[{title:e.megamenu.web.title,href:a,items:[{icon:nh,title:e.megamenu.web.websites.title,desc:e.megamenu.web.websites.desc,href:a},{icon:lg,title:e.megamenu.web.shops.title,desc:e.megamenu.web.shops.desc,href:a},{icon:LB,title:e.megamenu.web.support.title,desc:e.megamenu.web.support.desc,href:a}]},{title:e.megamenu.marketing.title,href:i,items:[{icon:Kk,title:e.megamenu.marketing.social.title,desc:e.megamenu.marketing.social.desc,href:i},{icon:oh,title:e.megamenu.marketing.seo.title,desc:e.megamenu.marketing.seo.desc,href:i},{icon:cg,title:e.megamenu.marketing.ads.title,desc:e.megamenu.marketing.ads.desc,href:i}]},{title:e.megamenu.design.title,href:r,items:[{icon:Lk,title:e.megamenu.design.branding.title,desc:e.megamenu.design.branding.desc,href:r},{icon:RT,title:e.megamenu.design.print.title,desc:e.megamenu.design.print.desc,href:r},{icon:vB,title:e.megamenu.design.packaging.title,desc:e.megamenu.design.packaging.desc,href:r},{icon:PT,title:e.megamenu.design.led.title,desc:e.megamenu.design.led.desc,href:s}]}]}const ZG={"strony-i-sklepy":nh,"marketing-i-seo":oh,"wizerunek-i-branding":Lk,"strategia-i-biznes":PT};function YG(t){const e=t==="en"?"/en/knowledge-base":"/pl/baza-wiedzy";return WG[t].map(i=>{const r=GG[t][i.slug]??[];return{slug:i.slug,title:i.title,short:i.short,accent:i.accent,icon:ZG[i.slug]??rg,href:`${e}/${i.slug}`,items:r.map(s=>({slug:s.slug,title:s.title,readMinutes:s.readMinutes,href:`${e}/${i.slug}/${s.slug}`}))}})}function JG(t){return[]}function QG(){const t=Nh(),e=Nk(),{pathname:a}=H3(),i=HG(e,t),r=qG(e,t),s=YG(e),c=JG(),d=i.findIndex(A=>A.dropdownType==="uslugi"),p=i.findIndex(A=>A.dropdownType==="blog"),h=e==="en"?"/en":"/pl",f=Ct("form",e)??`${h}/dispace-formularz`,[m,g]=N.useState(null),[z,j]=N.useState(!1),[v,_]=N.useState(!1),[S,E]=N.useState(!1),[T,O]=N.useState(!1),[H,U]=N.useState(!1),I=(m!==null?i[m]?.dropdownType??null:null)!==null,ae=N.useRef(0),ee=N.useRef(0),F=i.findIndex(A=>A.matchPath?A.matchPath===h?a===h:a===A.matchPath||a.startsWith(A.matchPath+"/"):!1),Z=a==="/pl/wycena-strony"||a==="/en/website-quote"||a.startsWith("/pl/wycena-strony/")||a.startsWith("/en/website-quote/"),oe=z||I||Z,me=v&&!S,de=v||S;return N.useEffect(()=>{ae.current=window.scrollY;const A=()=>{const B=window.scrollY,ne=B-ae.current;if(j(B>16),S){ne>4&&(ee.current+=ne,ee.current>180&&(E(!1),ee.current=0,_(!0))),ae.current=B;return}B<80?_(!1):ne>4&&_(!0),ae.current=B};return A(),window.addEventListener("scroll",A,{passive:!0}),()=>window.removeEventListener("scroll",A)},[S]),N.useEffect(()=>{S&&(ee.current=0),window.dispatchEvent(new CustomEvent("dispace:menu",{detail:S}))},[S]),N.useEffect(()=>{if(!S)return;const A=document.body.style.overflow,B=document.documentElement.style.overflow;return document.body.style.overflow="hidden",document.documentElement.style.overflow="hidden",()=>{document.body.style.overflow=A,document.documentElement.style.overflow=B}},[S]),k.jsxs(k.Fragment,{children:[k.jsxs(Lt.header,{initial:{opacity:0,y:-12}
64,animate:{opacity:me?0:1,y:me?-80:0},transition:{duration:me?.35:.45,ease:wo},onMouseLeave:()=>g(null),className:de?"fixed left-0 right-0 top-0 z-50":"fixed left-0 right-0 top-0 z-30",style:{background:S?"rgba(5, 9, 20, 0.985)":oe?"rgba(8, 14, 28, 0.82)":"transparent",backdropFilter:S||oe?"blur(28px) saturate(150%)":"none",WebkitBackdropFilter:S||oe?"blur(28px) saturate(150%)":"none",borderBottom:oe||S?`1px solid ${ie.dark.borderStrong}`:"1px solid transparent",pointerEvents:me?"none":"auto"},children:[k.jsxs("div",{className:"mx-auto flex max-w-[1440px] items-center gap-8 px-6 lg:px-10 py-4",children:[k.jsx("a",{href:h,className:"group flex items-center shrink-0","aria-label":"DiSpace",children:k.jsx(Lt.img,{src:FG,alt:"DiSpace Agency Logo",className:"h-[36px] w-auto sm:h-[44px] lg:h-[56px]",width:1920,height:922,whileHover:{scale:1.04},transition:{type:"spring",stiffness:400,damping:22}})}),k.jsx("nav",{className:"hidden lg:flex items-center flex-1 justify-center",style:{fontFamily:ip,fontSize:14,fontWeight:500},children:i.map((A,B)=>{const ne=m===B,ge=B===F;return k.jsxs("a",{href:A.href,onMouseEnter:()=>g(B),onClick:he=>{A.hasDropdown&&(he.preventDefault(),g(C=>C===B?null:B))},className:"relative inline-flex items-center gap-1.5 transition-colors duration-200",style:{padding:"10px 14px",borderRadius:qe.full,color:ge||ne?ie.dark.textPrimary:ie.dark.textSecondary},children:[ne&&k.jsx(Lt.span,{layoutId:"nav-hover-pill","aria-hidden":!0,className:"absolute inset-0",style:{borderRadius:qe.full,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.08)",zIndex:-1},transition:{type:"spring",stiffness:420,damping:34}}),k.jsxs("span",{className:"relative whitespace-nowrap inline-flex items-center justify-center",children:[A.label,ge&&k.jsx(Lt.span,{layoutId:"nav-active-dot","aria-hidden":!0,className:"absolute left-1/2",style:{bottom:-6,marginLeft:-3,width:6,height:6,borderRadius:qe.full,background:ie.brand.teal,boxShadow:`0 0 10px ${ie.brand.teal}`},transition:{type:"spring",stiffness:420,damping:34}})]}),A.hasDropdown&&k.jsx(Lt.span,{animate:{rotate:ne?180:0},transition:{duration:.3,ease:wo},className:"inline-flex relative",style:{opacity:.7},children:k.jsx(Rf,{size:13,strokeWidth:2})})]},A.label)})}),k.jsx("button",{type:"button",onClick:()=>E(A=>!A),"aria-label":S?t.nav.closeMenu:t.nav.openMenu,className:"lg:hidden ml-auto inline-flex items-center justify-center shrink-0",style:{width:44,height:54,borderRadius:9999,background:"rgba(255,255,255,0.04)",border:`1px solid ${ie.dark.border}`,color:ie.dark.textPrimary},children:S?k.jsx(Mh,{size:20}):k.jsx(XS,{size:20})}),k.jsxs("div",{className:"hidden lg:flex items-center gap-3 shrink-0",children:[k.jsx("div",{className:"flex items-center",style:{padding:4,borderRadius:qe.full,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.06)"},children:[...Ug.map(A=>({Icon:B=>k.jsx(A.Icon,{size:B.size??16}),label:A.label,href:A.href})),{Icon:A=>{const B=A.size??16;return a==="/en"||a.startsWith("/en/")?k.jsxs("svg",{viewBox:"0 0 60 30",width:B,height:B*.5,"aria-hidden":"true",children:[k.jsx("rect",{width:"60",height:"15",fill:"#fff"}),k.jsx("rect",{y:"15",width:"60",height:"15",fill:"#DC143C"})]}):k.jsxs("svg",{viewBox:"0 0 60 30",width:B,height:B*.5,"aria-hidden":"true",children:[k.jsx("clipPath",{id:"uk-flag-clip",children:k.jsx("path",{d:"M0,0 v30 h60 v-30 z"})}),k.jsx("clipPath",{id:"uk-flag-clip2",children:k.jsx("path",{d:"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"})}),k.jsxs("g",{clipPath:"url(#uk-flag-clip)",children:[k.jsx("path",{d:"M0,0 v30 h60 v-30 z",fill:"#012169"}),k.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",stroke:"#fff",strokeWidth:"6"}),k.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",clipPath:"url(#uk-flag-clip2)",stroke:"#C8102E",strokeWidth:"4"}),k.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#fff",strokeWidth:"10"}),k.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#C8102E",strokeWidth:"6"})]})]})},label:e==="en"?t.nav.flagSwitchToPolish:t.nav.flagSwitchToEnglish,onClick:()=>{const A=BB(a);try{window.localStorage.setItem("dispace-lang",A.startsWith("/en")?"en":"pl")}catch{}window.location.href=A}}].map(({Icon:A,label:B,href:ne,onClick:ge})=>{const he=k.jsxs(k.Fragment,{children:[k.jsx("span",{"aria-hidden":!0,
64className:"absolute inset-0.5 opacity-0 group-hover:opacity-100 transition-opacity duration-200",style:{borderRadius:qe.full,background:"rgba(61, 180, 201, 0.12)"}}),k.jsx("span",{className:"relative inline-flex items-center justify-center transition-colors duration-200 group-hover:text-white",style:{color:"inherit"},children:k.jsx(A,{size:16})})]}),C="group relative inline-flex items-center justify-center",Y={width:34,height:34,borderRadius:qe.full,color:ie.dark.textSecondary};return ne?k.jsx(Lt.a,{href:ne,target:"_blank",rel:"noreferrer noopener","aria-label":B,whileTap:{scale:.92},transition:{type:"spring",stiffness:400,damping:20},className:C,style:Y,children:he},B):k.jsx(Lt.button,{type:"button",onClick:ge,"aria-label":B,whileTap:{scale:.92},transition:{type:"spring",stiffness:400,damping:20},className:C,style:Y,children:he},B)})}),k.jsxs("a",{href:f,className:"cta-shimmer group ml-3",children:[k.jsx("span",{className:"cta-shimmer-ring","aria-hidden":!0}),k.jsxs("span",{className:"cta-shimmer-inner",style:{fontFamily:ip,fontWeight:600,fontSize:14,padding:"12px 22px"},children:[t.nav.ctaQuoteShort,k.jsx($a,{size:15,strokeWidth:2.25,className:"transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})]})]})]}),k.jsx(Cn,{children:m===d&&(!v||S)&&k.jsx(Lt.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:{duration:.22,ease:wo},className:"hidden lg:block absolute left-0 right-0 top-full",style:{background:"rgba(5, 9, 20, 0.985)",backdropFilter:"blur(32px) saturate(160%)",WebkitBackdropFilter:"blur(32px) saturate(160%)",borderTop:`1px solid ${ie.dark.border}`,borderBottom:`1px solid ${ie.dark.borderStrong}`,boxShadow:"0 40px 80px -20px rgba(0,0,0,0.85)",fontFamily:ip},children:k.jsxs("div",{className:"mx-auto max-w-[1440px] px-6 lg:px-10 py-10 grid grid-cols-12 gap-8",children:[r.map((A,B)=>k.jsxs("div",{className:"col-span-3",style:{position:"relative"},children:[k.jsx("a",{href:A.href,onClick:()=>g(null),className:"mb-5 pb-2 inline-flex items-center transition-opacity hover:opacity-80",style:{fontSize:11,fontWeight:700,letterSpacing:"0.16em",textTransform:"uppercase",color:ie.dark.textPrimary,borderBottom:`2px solid ${ie.brand.teal}`},children:A.title}),k.jsx("ul",{className:"flex flex-col gap-1",children:A.items.map(ne=>{const ge=ne.icon;return k.jsx("li",{children:k.jsxs("a",{href:ne.href,onClick:()=>g(null),className:"group flex items-start gap-3 rounded-xl p-3 transition-colors",style:{color:ie.dark.textSecondary},onMouseEnter:he=>{he.currentTarget.style.background="rgba(255,255,255,0.04)",he.currentTarget.style.color=ie.dark.textPrimary},onMouseLeave:he=>{he.currentTarget.style.background="transparent",he.currentTarget.style.color=ie.dark.textSecondary},children:[k.jsx("span",{className:"inline-flex items-center justify-center shrink-0",style:{width:34,height:34,borderRadius:10,background:"rgba(61, 180, 201, 0.10)",border:"1px solid rgba(61, 180, 201, 0.22)",color:ie.brand.teal},children:k.jsx(ge,{size:16,strokeWidth:2})}),k.jsxs("span",{className:"flex-1 min-w-0",children:[k.jsx("span",{className:"block",style:{fontSize:14,fontWeight:600,color:ie.dark.textPrimary,lineHeight:1.3},children:ne.title}),k.jsx("span",{className:"block mt-0.5",style:{fontSize:12.5,lineHeight:1.45,color:ie.dark.textTertiary},children:ne.desc})]})]})},ne.title)})})]},A.title)),k.jsxs("div",{className:"col-span-3",children:[k.jsx("div",{className:"mb-5 pb-2 inline-flex items-center",style:{fontSize:11,fontWeight:700,letterSpacing:"0.16em",textTransform:"uppercase",color:ie.dark.textPrimary,borderBottom:`2px solid ${ie.brand.teal}`},children:t.megamenu.featured.heading}),k.jsxs("a",{href:Ct("offer.web",e)??`${h}#uslugi`,onClick:()=>g(null),className:"group block relative overflow-hidden",style:{borderRadius:18,padding:22,background:"linear-gradient(140deg, rgba(30,86,168,0.35) 0%, rgba(8,14,28,0.85) 60%, rgba(61,180,201,0.25) 110%)",border:`1px solid ${ie.dark.borderStrong}`,minHeight:230},children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{backgroundImage:"radial-gradient(ellipse 60% 50% at 80% 0%, rgba(61,180,201,0.25), transparent 70%)"}}
64),k.jsx("img",{src:IG,alt:"","aria-hidden":!0,className:"pointer-events-none absolute select-none",style:{right:-40,bottom:-30,width:220,height:"auto",opacity:.55,filter:"drop-shadow(0 10px 30px rgba(0,0,0,0.4))",maskImage:"radial-gradient(ellipse at 70% 60%, black 40%, transparent 80%)",WebkitMaskImage:"radial-gradient(ellipse at 70% 60%, black 40%, transparent 80%)"}}),k.jsxs("span",{className:"relative inline-flex items-center gap-1.5 px-2.5 py-1",style:{fontSize:10,fontWeight:700,letterSpacing:"0.14em",textTransform:"uppercase",color:ie.dark.textPrimary,background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.12)",borderRadius:999},children:[k.jsx(DT,{size:11,strokeWidth:2.2}),t.megamenu.featured.badge]}),k.jsx("div",{className:"relative mt-5",style:{fontFamily:go,fontSize:28,fontWeight:600,lineHeight:1.05,letterSpacing:"-0.03em",color:ie.dark.textPrimary},children:t.megamenu.featured.title}),k.jsx("p",{className:"relative mt-3",style:{fontSize:13,lineHeight:1.5,color:"rgba(255,255,255,0.7)",maxWidth:"70%"},children:t.megamenu.featured.subtitle}),k.jsxs("span",{className:"relative mt-5 inline-flex items-center gap-1.5 px-4 py-2 transition-transform group-hover:translate-x-0.5",style:{fontSize:13,fontWeight:600,color:"#0B1320",background:"#FFFFFF",borderRadius:999},children:[t.megamenu.featured.cta,k.jsx($a,{size:14,strokeWidth:2.4})]})]})]})]})},"mega-menu")}),k.jsx(Cn,{children:m===p&&(!v||S)&&k.jsx(Lt.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:{duration:.22,ease:wo},className:"hidden lg:block absolute left-0 right-0 top-full",style:{background:"rgba(5, 9, 20, 0.985)",backdropFilter:"blur(32px) saturate(160%)",WebkitBackdropFilter:"blur(32px) saturate(160%)",borderTop:`1px solid ${ie.dark.border}`,borderBottom:`1px solid ${ie.dark.borderStrong}`,boxShadow:"0 40px 80px -20px rgba(0,0,0,0.85)",fontFamily:ip},children:k.jsxs("div",{className:"mx-auto max-w-[1440px] px-6 lg:px-10 py-10 grid grid-cols-12 gap-8",children:[s.map(A=>{const B=A.icon;return k.jsxs("div",{className:"col-span-3 xl:col-span-2",style:{position:"relative"},children:[k.jsxs("a",{href:A.href,onClick:()=>g(null),className:"group mb-4 inline-flex items-center gap-2 pb-2 transition-opacity hover:opacity-90",style:{fontSize:11,fontWeight:700,letterSpacing:"0.16em",textTransform:"uppercase",color:ie.dark.textPrimary,borderBottom:`2px solid ${A.accent}`},children:[k.jsx("span",{className:"inline-flex items-center justify-center",style:{width:22,height:22,borderRadius:6,background:`${A.accent}22`,color:A.accent},children:k.jsx(B,{size:12,strokeWidth:2.4})}),A.title]}),k.jsxs("ul",{className:"flex flex-col gap-0.5",children:[A.items.map(ne=>k.jsx("li",{children:k.jsxs("a",{href:ne.href,onClick:()=>g(null),className:"group flex items-start gap-2.5 rounded-xl p-2.5 transition-colors",style:{color:ie.dark.textSecondary},onMouseEnter:ge=>{ge.currentTarget.style.background="rgba(255,255,255,0.04)"},onMouseLeave:ge=>{ge.currentTarget.style.background="transparent"},children:[k.jsx("span",{className:"mt-1 shrink-0",style:{width:4,height:4,borderRadius:999,background:A.accent,boxShadow:`0 0 8px ${A.accent}`}}),k.jsxs("span",{className:"flex-1 min-w-0",children:[k.jsx("span",{className:"block transition-colors group-hover:text-white",style:{fontSize:13,fontWeight:500,color:ie.dark.textPrimary,lineHeight:1.35},children:ne.title}),k.jsxs("span",{className:"mt-1 inline-flex items-center gap-1",style:{fontSize:11,color:"rgba(255,255,255,0.45)"},children:[k.jsx(ih,{size:10,strokeWidth:2}),ne.readMinutes," ",t.megamenu.blog.minRead]})]})]})},ne.slug)),k.jsx("li",{children:k.jsxs("a",{href:A.href,onClick:()=>g(null),className:"mt-1 inline-flex items-center gap-1 px-2.5 py-1.5 transition-transform hover:translate-x-0.5",style:{fontSize:11.5,fontWeight:600,letterSpacing:"0.04em",color:A.accent},children:[t.megamenu.blog.allArticles,k.jsx($a,{size:12,strokeWidth:2.4})]})})]})]},A.slug)}),c.length>0&&k.jsxs("div",{className:"col-span-12 xl:col-span-4",children:[k.jsx("div",{className:"mb-4 pb-2 inline-flex items-center",style:{fontSize:11,fontWeight:700,letterSpacing:"0.16em",textTransform:"uppercase",color:ie.dark.textPrimary,borderBottom:`2px solid ${ie.brand.teal}`},children:"Najnowsze artykuÅy"}),k.jsx("div",{className:"flex flex-col gap-3",children:c.map(A=>k.jsxs("a",{href:A.href,onClick:()=>g(null),className:"group flex gap-3 overflow-hidden transition-colors",style:{borderRadius:14,background:"rgba(255,255,255,0.03)",border:`1px solid ${ie.dark.border}`,padding:8},onMouseEnter:B=>{B.currentTarget.style.background="rgba(255,255,255,0.06)",B.currentTarget.style.borderColor=ie.dark.borderStrong},onMouseLeave:B=>
64{B.currentTarget.style.background="rgba(255,255,255,0.03)",B.currentTarget.style.borderColor=ie.dark.border},children:[k.jsxs("div",{className:"relative shrink-0 overflow-hidden",style:{width:96,height:72,borderRadius:10},children:[k.jsx("img",{src:A.image,alt:"",className:"absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"}),k.jsx("div",{"aria-hidden":!0,className:"absolute inset-0",style:{background:`linear-gradient(180deg, ${A.accent}22 0%, rgba(5,9,20,0.55) 100%)`}})]}),k.jsxs("div",{className:"flex min-w-0 flex-1 flex-col justify-center",children:[k.jsx("span",{style:{fontSize:9.5,fontWeight:700,letterSpacing:"0.14em",textTransform:"uppercase",color:A.accent},children:A.categoryName}),k.jsx("div",{className:"mt-1",style:{fontFamily:go,fontSize:13,fontWeight:600,lineHeight:1.3,letterSpacing:"-0.01em",color:ie.dark.textPrimary,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:A.title}),k.jsxs("span",{className:"mt-1 inline-flex items-center gap-1",style:{fontSize:10.5,color:"rgba(255,255,255,0.45)"},children:[k.jsx(ih,{size:9,strokeWidth:2}),A.readMinutes," ",t.megamenu.blog.minRead]})]})]},A.href))})]})]})},"mega-menu-blog")}),k.jsx(Cn,{children:S&&k.jsxs(Lt.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:{duration:.24,ease:wo},className:"lg:hidden absolute left-0 right-0 top-full overflow-hidden",style:{background:"rgba(5, 9, 20, 0.985)",backdropFilter:"blur(28px) saturate(150%)",WebkitBackdropFilter:"blur(28px) saturate(150%)",borderBottom:`1px solid ${ie.dark.borderStrong}`,height:"calc(100vh - 77px)",overflowY:"hidden"},children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute -top-24 -left-24 h-64 w-64 rounded-full",style:{background:"rgba(30,86,168,0.22)",filter:"blur(100px)"}}),k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute -bottom-24 -right-24 h-80 w-80 rounded-full",style:{background:"rgba(156,50,140,0.28)",filter:"blur(120px)"}}),k.jsxs("nav",{className:"relative z-10 flex h-full flex-col px-6 pt-4 pb-6",children:[i.map(A=>A.hasDropdown&&A.dropdownType==="uslugi"?k.jsxs("div",{className:"py-1",children:[k.jsxs("button",{type:"button",onClick:()=>O(B=>!B),className:"flex w-full items-center justify-between py-2 transition-colors",style:{fontFamily:go,fontSize:16,fontWeight:500,letterSpacing:"-0.01em",color:T?"rgba(255,255,255,0.95)":"rgba(255,255,255,0.7)"},children:[A.label,k.jsx(Rf,{size:16,strokeWidth:2,className:"transition-transform",style:{transform:T?"rotate(180deg)":"none",color:"rgba(255,255,255,0.5)"}})]}),k.jsx(Cn,{initial:!1,children:T&&k.jsx(Lt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.28,ease:wo},style:{overflow:"hidden"},children:k.jsx("div",{className:"grid grid-cols-1 gap-1.5 pb-2 pt-2",children:r.flatMap(B=>B.items).map((B,ne)=>{const ge=B.icon,he=[{tint:"rgba(99,102,241,0.12)",border:"rgba(99,102,241,0.25)",color:"#A5B4FC"},{tint:"rgba(216,123,200,0.12)",border:"rgba(216,123,200,0.28)",color:"#F0A8DE"},{tint:"rgba(96,165,250,0.12)",border:"rgba(96,165,250,0.25)",color:"#93C5FD"}
64],C=he[ne%he.length];return k.jsxs("a",{href:B.href,onClick:()=>E(!1),className:"group flex items-center gap-2.5 rounded-2xl px-2.5 py-1.5 transition-all hover:bg-white/[0.05]",style:{background:"rgba(255,255,255,0.04)",border:"1px solid rgba(255,255,255,0.08)"},children:[k.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-xl transition-all",style:{background:C.tint,border:`1px solid ${C.border}`,color:C.color},children:k.jsx(ge,{size:16,strokeWidth:1.9})}),k.jsx("span",{className:"text-white",style:{fontFamily:go,fontSize:13.5,fontWeight:600,letterSpacing:"-0.005em"},children:B.title})]},B.title)})})},"mobile-uslugi")})]},A.label):A.hasDropdown&&A.dropdownType==="blog"?k.jsxs("div",{className:"py-1",children:[k.jsxs("button",{type:"button",onClick:()=>U(B=>!B),className:"flex w-full items-center justify-between py-2 transition-colors",style:{fontFamily:go,fontSize:16,fontWeight:500,letterSpacing:"-0.01em",color:H?"rgba(255,255,255,0.95)":"rgba(255,255,255,0.7)"},children:[A.label,k.jsx(Rf,{size:16,strokeWidth:2,className:"transition-transform",style:{transform:H?"rotate(180deg)":"none",color:"rgba(255,255,255,0.5)"}})]}),k.jsx(Cn,{initial:!1,children:H&&k.jsx(Lt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.28,ease:wo},style:{overflow:"hidden"},children:k.jsx("div",{className:"grid grid-cols-1 gap-1.5 pb-2 pt-2",children:s.map(B=>{const ne=B.icon;return k.jsxs("a",{href:B.href,onClick:()=>E(!1),className:"group flex items-center gap-2.5 rounded-2xl px-2.5 py-2 transition-all hover:bg-white/[0.05]",style:{background:"rgba(255,255,255,0.04)",border:"1px solid rgba(255,255,255,0.08)"},children:[k.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-xl",style:{background:`${B.accent}22`,border:`1px solid ${B.accent}44`,color:B.accent},children:k.jsx(ne,{size:16,strokeWidth:1.9})}),k.jsxs("span",{className:"flex-1 min-w-0",children:[k.jsx("span",{className:"block text-white",style:{fontFamily:go,fontSize:13.5,fontWeight:600,letterSpacing:"-0.005em"},children:B.title}),k.jsx("span",{className:"block",style:{fontSize:11.5,color:"rgba(255,255,255,0.5)"},children:B.short})]})]},B.slug)})})},"mobile-blog")})]},A.label):k.jsx("a",{href:A.href,onClick:()=>E(!1),className:"py-2.5 text-white/85 transition-colors hover:text-white",style:{fontFamily:go,fontSize:17,fontWeight:500,letterSpacing:"-0.01em"},children:A.label},A.label)),k.jsx("div",{"aria-hidden":!0,className:"my-5 h-px w-full",style:{background:"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.14) 50%, transparent 100%)"}}),k.jsxs("div",{className:"relative group",children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute -inset-[2px] rounded-full opacity-60 blur-md transition-opacity duration-500 group-hover:opacity-100",style:{background:"linear-gradient(90deg, #1e56a8 0%, #9C328C 100%)"}}),k.jsxs("a",{href:f,onClick:()=>E(!1),className:"relative flex w-full items-center justify-center gap-2 rounded-full bg-white py-4 text-[#05070A] shadow-xl transition-transform active:scale-[0.98]",style:{fontFamily:go,fontWeight:700,fontSize:14,letterSpacing:"-0.005em"},children:[t.nav.ctaQuote,k.jsx($a,{size:16,strokeWidth:2.5})]})]}),k.jsx("div",{className:"mt-6 flex items-center justify-center gap-3",children:Ug.map(A=>k.jsx("a",{href:A.href,target:"_blank",rel:"noreferrer noopener","aria-label":A.label,className:"flex h-12 w-12 items-center justify-center rounded-full text-white/65 transition-all hover:-translate-y-0.5 hover:text-white hover:bg-white/10",style:{border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.03)"},children:k.jsx(A.Icon,{size:18})},A.label))})]})]},"mobile-menu")})]}),k.jsx(Cn,{children:v&&!S&&k.jsx(Lt.button,{initial:{opacity:0,scale:.85,y:-8},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.85,y:-8},transition:{duration:.25,ease:wo},onClick:()=>{typeof window<"u"&&window.innerWidth>=1024?_(!1):E(A=>!A)},"aria-label":t.nav.openMenu,className:"fixed z-[60] inline-flex items-center justify-center",style:{to
64p:18,right:18,width:44,height:54,borderRadius:9999,background:"rgba(8, 14, 28, 0.55)",border:`1px solid ${ie.dark.border}`,color:ie.dark.textPrimary,boxShadow:"0 4px 14px -6px rgba(0,0,0,0.45)"},children:k.jsx(XS,{size:20})},"floating-menu-btn")})]})}const kx=zA.url;function XG(t,e){const a=t==="en"?"/en":"/pl",i=t==="en"?"/en/services":"/pl/oferta",r=Ct("portfolio",t),s=Ct("contact",t),c=Ct("knowledge",t),d=Ct("offer.web",t),p=Ct("offer.marketing",t),h=Ct("offer.design",t),f=Ct("form",t),m=[{label:e.footer.menuStart,href:a,Icon:lB},{label:e.footer.menuOffer,href:`${a}#uslugi`,Icon:ZN},{label:e.footer.menuPortfolio,href:r,Icon:QS}];c&&t==="pl"&&m.push({label:e.footer.menuKnowledge,href:c,Icon:rg}),m.push({label:e.footer.menuContact,href:s,Icon:t1});const g=[{label:e.footer.offerWebsites,href:`${d}#strony`,Icon:nh},{label:e.footer.offerShops,href:`${d}#sklepy`,Icon:lg},{label:e.footer.offerBranding,href:`${h}#branding`,Icon:Lk},{label:e.footer.offerSocial,href:`${p}#social`,Icon:Kk},{label:e.footer.offerSeo,href:`${p}#seo`,Icon:oh},{label:e.footer.offerAds,href:`${p}#ads`,Icon:cg},{label:e.footer.offerPrint,href:`${h}#druk`,Icon:RT}];t==="pl"&&g.splice(6,0,{label:"Agencja reklamowa UK",href:"/agencja-reklamowa-uk",Icon:mB},{label:"Pozycjonowanie UK",href:"/pozycjonowanie-uk",Icon:oh},{label:"Strony internetowe UK",href:"/strony-internetowe-uk",Icon:nh},{label:"Sklepy internetowe UK",href:"/sklepy-internetowe-uk",Icon:lg},{label:"Kampanie reklamowe UK",href:"/kampanie-reklamowe-uk",Icon:cg},{label:"Paczki do Polski i przeprowadzki SzkocjaâPolska",href:"/paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel",Icon:rg});const z=[{label:e.footer.studioOffer,href:`${i}`,Icon:sg},{label:e.footer.studioRealizations,href:r,Icon:QS},{label:e.footer.studioReviews,href:`${a}#opinie`,Icon:t1},{label:e.footer.studioFaq,href:`${a}#faq`,Icon:sg},{label:e.footer.studioQuote,href:f,Icon:rB}];return{MENU:m,USLUGI:g,STUDIO:z}}function e8(){const t=Nh(),e=Nk(),a=new Date().getFullYear(),{MENU:i,USLUGI:r,STUDIO:s}=XG(e,t),c=Ct("terms",e),d=Ct("privacy",e),p=Ct("cookies",e),h=Ct("form",e),f=e==="en"?"/en":"/pl";return k.jsxs("footer",{"data-hide-bottom-bar":!0,className:"relative overflow-hidden text-white",style:{background:"#05080F"},children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{background:"radial-gradient(60% 50% at 10% 0%, rgba(30,86,168,0.16) 0%, rgba(30,86,168,0) 70%), radial-gradient(50% 50% at 95% 100%, rgba(156,50,140,0.16) 0%, rgba(156,50,140,0) 70%)"}}),k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-x-0 top-0 h-px",style:{background:"linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent)"}}),k.jsx("img",{src:kx,alt:"","aria-hidden":!0,loading:"lazy",decoding:"async",className:"pointer-events-none absolute right-[-6%] bottom-[-8%] w-[70vw] max-w-[520px] select-none opacity-[0.05] sm:right-0 sm:bottom-[-6%] lg:opacity-[0.06]"}),k.jsxs("div",{className:"relative mx-auto w-full max-w-[1280px] min-w-0 px-6 pt-20 pb-10 lg:px-10 lg:pt-24",children:[k.jsxs("div",{className:"grid w-full min-w-0 grid-cols-12 gap-x-0 gap-y-14 lg:gap-x-10",children:[k.jsxs("div",{className:"col-span-12 min-w-0 w-full lg:col-span-5",children:[k.jsx("a",{href:f,"aria-label":"DiSpace",className:"inline-flex items-center",children:k.jsx("img",{src:kx,alt:"DiSpace Agency Logo",className:"h-7 w-auto sm:h-8 lg:h-10",width:1920,height:922,loading:"lazy",decoding:"async"})}),k.jsx("p",{className:"mt-6 w-full max-w-md text-white/65",style:{fontFamily:"Ethnocentric, Michroma",fontSize:15,lineHeight:1.65,overflowWrap:"anywhere"},children:t.footer.tagline}),k.jsx("div",{className:"mt-7 flex flex-wrap gap-2",children:Ug.map(({Icon:m,href:g,label:z})=>k.jsx("a",{href:g,target:"_blank",rel:"noreferrer noopener","aria-label":z,className:"flex h-11 w-11 items-center justify-center rounded-full border transition-all hover:-translate-y-0.5",style:{borderColor:"rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.03)"},onMouseEnter:j=>{j.currentTarget.style.background=ie.brand.gradient,j.currentTarget.style.borderColor="transparent"},onMouseLeave:j=>{j.currentTarget.style.background="rgba(255,255,255,0.03)",j.currentTarget.style.borderColor="rgba(255,255,255,0.12)"},children:k.jsx(m,{size:16})},z))}),k.jsxs("div",{className:"mt-8 flex w-full min-w-0 max-w-md flex-col gap-3",children:[k.jsx(Jf,{Icon:CT,eyebrow:t.footer.contactPhone,value:"+44 7476 052809",href:"tel:+447476052809"}),k.jsx(Jf,{Icon:Uk,eyebrow:t.footer.contactEmail,value:"[email protected]",href:"mailto:[email protected]"}),k.jsx(Jf,{Icon:hB,eyebrow:t.footer.contactStudio,value:"14A Reidvale St, Glasgow G31 1SZ"})]})]}
64),k.jsxs("div",{className:"col-span-12 min-w-0 w-full lg:col-span-7",children:[k.jsxs("div",{className:"grid grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-3",children:[k.jsx(Yf,{title:t.footer.columnMenu,links:i}),k.jsx(Yf,{title:t.footer.columnOffer,links:r}),k.jsx(Yf,{title:t.footer.columnStudio,links:s})]}),k.jsxs("div",{className:"mt-12 flex w-full min-w-0 flex-col items-stretch justify-between gap-5 rounded-[20px] border p-5 md:flex-row md:items-center md:p-7",style:{borderColor:"rgba(255,255,255,0.10)",background:"linear-gradient(135deg, rgba(30,86,168,0.20) 0%, rgba(156,50,140,0.16) 100%)"},children:[k.jsxs("div",{className:"min-w-0",children:[k.jsxs("div",{className:"mb-2 inline-flex items-center gap-2 rounded-full border px-2.5 py-1",style:{borderColor:"rgba(255,255,255,0.18)",background:"rgba(255,255,255,0.04)",fontFamily:"Ethnocentric, Michroma",fontSize:10,fontWeight:600,letterSpacing:"0.18em",textTransform:"uppercase"},children:[k.jsx("span",{className:"h-1.5 w-1.5 rounded-full",style:{background:ie.status.success,boxShadow:`0 0 8px ${ie.status.success}`}}),t.footer.ctaBadge," ",a]}),k.jsx("h3",{className:"text-[19px] md:text-[22px]",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:600,lineHeight:1.2,letterSpacing:"-0.02em"},children:t.footer.ctaTitle}),k.jsx("p",{className:"mt-1.5 text-white/65 text-[13px] md:text-[14px]",style:{fontFamily:"Ethnocentric, Michroma",lineHeight:1.55},children:t.footer.ctaSubtitle})]}),k.jsxs("a",{href:h,className:"cta-shimmer group w-full shrink-0 md:w-auto",children:[k.jsx("span",{className:"cta-shimmer-ring","aria-hidden":!0}),k.jsxs("span",{className:"cta-shimmer-inner w-full justify-center md:w-auto",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:600,fontSize:14,padding:"13px 24px"},children:[t.footer.ctaButton,k.jsx($a,{size:16,className:"transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})]})]})]})]}),k.jsx("div",{className:"my-10 h-px w-full",style:{background:"rgba(255,255,255,0.08)"}}),k.jsxs("div",{className:"flex flex-col items-start justify-between gap-4 text-white/50 md:flex-row md:items-center",children:[k.jsxs("div",{style:{fontFamily:"Ethnocentric, Michroma",fontWeight:500,fontSize:12,letterSpacing:"0.04em"},children:["© ",a," DiSpace Studio. ",t.footer.rights]}),k.jsxs("div",{className:"flex flex-wrap gap-6",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:500,fontSize:12},children:[k.jsx("a",{href:d,className:"hover:text-white",children:t.footer.privacy}),k.jsx("a",{href:c,className:"hover:text-white",children:t.footer.terms}),k.jsx("a",{href:p,className:"hover:text-white",children:t.footer.cookies})]})]})]})]})}function Yf({title:t,links:e}){const a=Zt();return k.jsxs("div",{children:[k.jsx("div",{className:"text-white",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:600,fontSize:18,letterSpacing:"-0.01em"},children:t}),k.jsx("ul",{className:"mt-5 space-y-3.5",children:e.map(({label:i,href:r,Icon:s})=>{const c=r.indexOf("#"),d=c>=0?r.slice(0,c)||"/":r,p=c>=0?r.slice(c+1):void 0,h="group inline-flex items-center gap-2.5 text-white/70 transition-colors hover:text-white",f={fontFamily:"Ethnocentric, Michroma",fontWeight:500,fontSize:14.5},m=k.jsxs(k.Fragment,{children:[k.jsx(s,{size:15,strokeWidth:1.75,className:"shrink-0 text-white/45 transition-colors group-hover:text-white"}),i]});return k.jsx("li",{children:k.jsx("a",{href:p?`${d}#${p}`:d,className:h,style:f,onClick:g=>{if(p&&typeof window<"u"&&a.state.location.pathname===d){const z=document.getElementById(p);z&&(g.preventDefault(),z.scrollIntoView({behavior:"smooth",block:"start"}),history.replaceState(null,"",`${d}#${p}`))}},children:m})},i)})})]})}function Jf({Icon:t,eyebrow:e,value:a,href:i}
64){const r=k.jsxs("div",{className:"flex items-center gap-4 rounded-2xl border px-4 py-3.5 transition-all hover:-translate-y-0.5",style:{borderColor:"rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.03)"},children:[k.jsx("div",{className:"flex h-11 w-11 shrink-0 items-center justify-center rounded-full",style:{background:"rgba(255,255,255,0.05)",border:"1px solid rgba(255,255,255,0.10)"},children:k.jsx(t,{size:17,strokeWidth:1.75})}),k.jsxs("div",{className:"min-w-0",children:[k.jsx("div",{className:"text-white/45",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:600,fontSize:10,letterSpacing:"0.22em",textTransform:"uppercase"},children:e}),k.jsx("div",{className:"mt-0.5 truncate text-white",style:{fontFamily:"Ethnocentric, Michroma",fontWeight:600,fontSize:15},children:a})]})]});return i?k.jsx("a",{href:i,className:"block",children:r}):r}const yi={totalReviews:67,averageRating:4.9,ratingScale:5,googleReviews:28,googleRating:5,facebookReviews:12,facebookRating:5,sinceYear:2018,brandsCount:128},_s=t=>t.toLocaleString("pl-PL",{minimumFractionDigits:(Number.isInteger(t),1),maximumFractionDigits:1}),zx={totalReviewsPlus:`${yi.totalReviews}+`,averageRatingOutOfScale:`${_s(yi.averageRating)}/${yi.ratingScale}`,googleRatingOutOfScale:`${_s(yi.googleRating)}/${yi.ratingScale}`,facebookRatingOutOfScale:`${_s(yi.facebookRating)}/${yi.ratingScale}`,googleRatingShort:_s(yi.googleRating),facebookRatingShort:_s(yi.facebookRating),averageRatingShort:_s(yi.averageRating),yearsActive:new Date().getFullYear()-yi.sinceYear},Lg="+44 7476 052809",t8="+447476052809",a8="447476052809",$p=`https://wa.me/${a8}`,Ip="https://m.me/DiSpace.uk",i8="/kontakt#formularz-kontakt";function n8(t){if(t.preventDefault(),!window.open(Ip,"_blank","noopener,noreferrer"))try{window.top.location.href=Ip}catch{window.location.href=Ip}}function o8(t){if(t.preventDefault(),!window.open($p,"_blank","noopener,noreferrer"))try{window.top.location.href=$p}catch{window.location.href=$p}}async function r8(t){const e=typeof navigator<"u"&&/Android|iPhone|iPad|iPod|Mobile/i.test(navigator.userAgent);try{await navigator.clipboard.writeText(Lg)}catch{}if(e){const{toast:a}=await W(async()=>{const{toast:i}=await Promise.resolve().then(()=>Sx);return{toast:i}},void 0);a.success("Numer skopiowany do schowka")}else{t.preventDefault();const{toast:a}=await W(async()=>{const{toast:i}=await Promise.resolve().then(()=>Sx);return{toast:i}},void 0);a.success("Numer skopiowany",{description:`${Lg} - poÅÄ
czenie gÅosowe wykonasz z telefonu.`})}}function s8(t){typeof window>"u"||window.location.pathname==="/kontakt"&&(t.preventDefault(),document.getElementById("formularz-kontakt")?.scrollIntoView({behavior:"smooth",block:"start"}),history.replaceState(null,"","/kontakt#formularz-kontakt"))}function l8({size:t=16,...e}){return k.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",...e,children:k.jsx("path",{d:"M12 2C6.36 2 2 6.13 2 11.7c0 2.91 1.19 5.44 3.14 7.17.16.14.26.34.27.56l.05 1.78a.8.8 0 0 0 1.12.71l1.99-.88c.17-.07.36-.09.54-.04.91.25 1.88.38 2.89.38 5.64 0 10-4.13 10-9.7C22 6.13 17.64 2 12 2Zm6 7.78-2.94 4.66a1.5 1.5 0 0 1-2.16.4l-2.34-1.75a.6.6 0 0 0-.72 0l-3.16 2.4c-.42.32-.97-.18-.69-.62l2.94-4.66a1.5 1.5 0 0 1 2.16-.4l2.34 1.75c.21.16.5.16.72 0l3.16-2.4c.42-.32.97.18.69.62Z"})})}const np=wa.fonts.body,Qf=[.22,1,.36,1];function c8(){const t=Nh(),e=Nk(),a=Ct("form",e),[i,r]=N.useState(!1),[s,c]=N.useState(!1),[d,p]=N.useState(!1),[h,f]=N.useState(!1),m=N.useRef(null);return N.useEffect(()=>{if(!s)return;const g=z=>{m.current&&!m.current.contains(z.target)&&c(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[s]),N.useEffect(()=>{const g=()=>{const z=document.querySelector("footer");if(z){const v=z.getBoundingClientRect();f(v.top<window.innerHeight-40);return}const j=window.innerHeight+window.scrollY;f(j>=document.documentElement.scrollHeight-40)};return g(),window.addEventListener("scroll",g,{passive:!0}),window.addEventListener("resize",g),()=>{window.removeEventListener("scroll",g),window.removeEventListener("resize",g)}},[]),N.useEffect(()=>{h&&(r(!1),c(!1))},[h]),k.jsxs(k.Fragment,{children:[k.jsx(Lt.button,{type:"button",onClick:()=>r(g=>!g),"aria-label":i?t.help.hideAria:t.help.showAria,"aria-expanded":i,initial:{opacity:0,scale:.85,y:10}
64,animate:{opacity:h?0:1,scale:h?.85:1,y:h?10:0,pointerEvents:h?"none":"auto"},transition:{duration:.3,ease:Qf,delay:.4},whileHover:{scale:1.06},whileTap:{scale:.94},className:"fixed z-[60] inline-flex items-center justify-center",style:{left:24,bottom:26,width:44,height:44,borderRadius:9999,background:i?"linear-gradient(135deg, #1e56a8, #9C328C)":"rgba(8, 14, 28, 0.7)",border:`1px solid ${i?"rgba(255,255,255,0.2)":ie.dark.border}`,color:"#fff",boxShadow:i?"0 12px 30px -10px rgba(156,50,140,0.55)":"0 6px 18px -6px rgba(0,0,0,0.45)",backdropFilter:"blur(12px)",transition:"background 250ms ease, box-shadow 250ms ease"},children:k.jsx(Cn,{mode:"wait",initial:!1,children:i?k.jsx(Lt.span,{initial:{rotate:-90,opacity:0},animate:{rotate:0,opacity:1},exit:{rotate:90,opacity:0},transition:{duration:.18},className:"inline-flex",children:k.jsx(Mh,{size:18})},"x"):k.jsx(Lt.span,{initial:{rotate:90,opacity:0},animate:{rotate:0,opacity:1},exit:{rotate:-90,opacity:0},transition:{duration:.18},className:"inline-flex",children:k.jsx(sg,{size:20,strokeWidth:2.2})},"q")})}),k.jsx(Cn,{children:i&&k.jsx(Lt.div,{initial:{y:24,opacity:0},animate:{y:0,opacity:1},exit:{y:24,opacity:0},transition:{duration:.35,ease:Qf},className:"fixed inset-x-0 bottom-0 z-[59]",children:k.jsx("div",{className:"mx-auto max-w-[1280px] px-6 pb-6 pl-[78px] lg:px-10 lg:pl-[88px]",children:k.jsxs("div",{className:"flex flex-nowrap items-center justify-center gap-2 sm:gap-3 md:justify-between md:gap-4",style:{background:"linear-gradient(135deg, rgba(20,24,42,0.92), rgba(8,14,28,0.92))",border:"1px solid rgba(255,255,255,0.1)",borderRadius:qe.full,padding:"6px",boxShadow:"0 16px 48px -12px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.05)",backdropFilter:"blur(20px)"},children:[k.jsx("div",{className:"hidden md:flex flex-wrap items-center gap-2 pl-2",children:k.jsxs("a",{href:"https://www.trustpilot.com/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 transition-opacity hover:opacity-80",style:{fontFamily:np,fontSize:12,color:ie.dark.textSecondary},children:[k.jsx("span",{style:{fontWeight:600,color:"#fff"},children:t.help.trustpilotPrefix}),k.jsx("span",{className:"inline-flex items-center gap-[2px]",children:[1,2,3,4,5].map(g=>k.jsx("span",{className:"grid place-items-center",style:{width:14,height:14,background:"#00b67a"},children:k.jsx(a1,{size:10,fill:"#fff",stroke:"#fff"})},g))}),k.jsxs("span",{children:[zx.averageRatingShort," ",t.help.trustpilotOn," ",yi.ratingScale," ",t.help.trustpilotOnBasisOf," ",k.jsxs("span",{style:{color:"#fff",textDecoration:"underline"},children:[zx.totalReviewsPlus," ",t.help.trustpilotReviews]})]}),k.jsxs("span",{className:"inline-flex items-center gap-1",children:[k.jsx(a1,{size:14,fill:"#00b67a",stroke:"#00b67a"}),k.jsx("span",{style:{fontWeight:700,color:"#fff",fontSize:13,letterSpacing:"-0.01em"},children:"Trustpilot"})]})]})}),k.jsxs("div",{className:"flex w-full flex-nowrap items-center gap-2 md:w-auto",children:[k.jsxs("a",{href:a,className:"cta-shimmer cta-shimmer--compact group flex-1 md:flex-none",children:[k.jsx("span",{className:"cta-shimmer-ring","aria-hidden":!0}),k.jsxs("span",{className:"cta-shimmer-inner w-full justify-center md:w-auto",style:{fontFamily:np,fontWeight:600,fontSize:13,padding:"9px 14px",whiteSpace:"nowrap"},children:[k.jsx("span",{className:"sm:hidden",children:t.help.quoteShort}),k.jsx("span",{className:"hidden sm:inline",children:t.help.quoteLong}),k.jsx($a,{size:14,className:"transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})]}),k.jsxs("div",{ref:m,className:"relative flex-1 md:flex-none",children:[k.jsxs("button",{type:"button",onClick:()=>c(g=>!g),onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),"aria-expanded":s,"aria-haspopup":"menu",className:"group inline-flex w-full items-center justify-center gap-2 md:w-auto",style:{color:ie.dark.textPrimary,border:`1px solid ${d?"rgba(255,255,255,0.3)":"rgba(255,255,255,0.18)"}`,background:d?"rgba(255,255,255,0.08)":"rgba(255,255,255,0.04)",padding:"9px 14px",borderRadius:qe.full,fontFamily:np,fontWeight:600,fontSize:13,whiteSpace:"nowrap",transition:"border-color 200ms ease, background-color 200ms ease"},children:[k.jsx("span",{className:"sm:hidden",children:t.help.buttonShort}),k.jsx("span",{className:"hidden sm:inline",children:t.help.button}),k.jsx(e1,{size:14})]}),k.jsx(Cn,{children:s&&k.jsx(Lt.div,{role:"menu",initial:{opacity:0,y:8,scale:.96}
64,animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:8,scale:.96},transition:{duration:.18,ease:Qf},className:"absolute right-0 bottom-full mb-3 w-[260px] overflow-hidden",style:{background:ie.dark.surface,border:`1px solid ${ie.dark.border}`,borderRadius:16,boxShadow:"0 24px 60px -16px rgba(0,0,0,0.6)",backdropFilter:"blur(20px)",padding:6},children:[{kind:"messenger",href:Ip,label:t.help.contactMessenger,sub:t.help.contactMessengerSub,icon:l8,color:"#0084FF"},{kind:"whatsapp",href:$p,label:t.help.contactWhatsapp,sub:t.help.contactWhatsappSub,icon:e1,color:"#25D366"},{kind:"form",href:i8,label:t.help.contactForm,sub:t.help.contactFormSub,icon:Uk,color:ie.brand.teal},{kind:"phone",href:`tel:${t8}`,label:t.help.contactPhone,sub:Lg,icon:CT,color:ie.brand.magenta}].map(g=>{const z=g.icon;return k.jsxs("a",{href:g.href,target:g.kind==="whatsapp"||g.kind==="messenger"?"_blank":void 0,rel:g.kind==="whatsapp"||g.kind==="messenger"?"noopener noreferrer":void 0,onClick:j=>{g.kind==="whatsapp"?o8(j):g.kind==="messenger"?n8(j):g.kind==="phone"?r8(j):g.kind==="form"&&s8(j),c(!1)},className:"flex items-center gap-3 rounded-xl px-3 py-2.5 transition-colors hover:bg-white/[0.06]",style:{color:ie.dark.textPrimary,fontFamily:np},children:[k.jsx("span",{className:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-lg",style:{background:`${g.color}1F`,color:g.color,border:`1px solid ${g.color}33`},children:k.jsx(z,{size:16})}),k.jsxs("span",{className:"flex flex-col",children:[k.jsx("span",{style:{fontSize:13.5,fontWeight:600,lineHeight:1.2},children:g.label}),k.jsx("span",{style:{fontSize:12,color:ie.dark.textSecondary,lineHeight:1.3,marginTop:2},children:g.sub})]})]},g.label)})})})]})]})]})})},"help-bar")})]})}const bx=[{label:"Facebook",href:"https://www.facebook.com/DiSpace.uk",Icon:bA},{label:"Instagram",href:"https://www.instagram.com/dispaceuk/",Icon:jA},{label:"TikTok",href:"https://www.tiktok.com/@dispace.uk",Icon:vA}];function u8(){const[t,e]=N.useState(!1),a=N.useRef(null);return N.useEffect(()=>{if(!t)return;const i=r=>{a.current&&!a.current.contains(r.target)&&e(!1)};return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[t]),k.jsxs(k.Fragment,{children:[k.jsx("div",{"aria-label":"Social media",className:"pointer-events-none fixed right-3 top-1/2 z-40 hidden -translate-y-1/2 md:flex",children:k.jsxs("div",{className:"pointer-events-auto flex flex-col items-center gap-5",children:[bx.map(({label:i,href:r,Icon:s})=>k.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer","aria-label":i,className:"text-white/40 transition-colors duration-200 hover:text-white",children:k.jsx(s,{size:18})},i)),k.jsx("span",{"aria-hidden":!0,className:"mt-3 h-20 w-px bg-white/20"})]})}),k.jsxs("div",{ref:a,"aria-label":"Social media",className:"pointer-events-none fixed bottom-4 right-4 z-40 flex flex-col items-end gap-2 md:hidden",children:[k.jsx("div",{className:` 65 pointer-events-auto flex items-center gap-3 overflow-hidden rounded-full 66 bg-black/50 px-0 ring-1 ring-white/10 backdrop-blur-md 67 transition-all duration-300 ease-out 68 ${t?"max-w-[200px] px-4 py-2.5 opacity-100":"max-w-0 py-2.5 opacity-0"} 69 `,"aria-hidden":!t,children:bx.map(({label:i,href:r,Icon:s})=>k.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer","aria-label":i,className:"text-white/60 transition-colors duration-200 hover:text-white",children:k.jsx(s,{size:20})},i))}),k.jsx("button",{type:"button",onClick:()=>e(i=>!i),"aria-label":t?"Zamknij social media":"Otwórz social media","aria-expanded":t,className:"pointer-events-auto grid h-12 w-12 place-items-center rounded-full bg-black/50 text-white/70 ring-1 ring-white/10 backdrop-blur-md transition-colors duration-200 hover:text-white",children:t?k.jsx(Mh,{size:20}):k.jsx(Kk,{size:20})})]})]})}var d8=m_();const p8=y_(d8);function h8(t){if(typeof document>"u")return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}const y8=t=>{switch(t){case"success":return w8;case"info":return k8;case"warning":return g8;case"error":return z8;default:return null}},m8=Array(12).fill(0),f8=({visible:t,className:e})=>ue.createElement("div",{className:["sonner-loading-wrapper",e].filter(
vendor: 6,040 bytes, line 69
69Boolean).join(" "),"data-visible":t},ue.createElement("div",{className:"sonner-spinner"},m8.map((a,i)=>ue.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${i}`})))),w8=ue.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ue.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),g8=ue.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},ue.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),k8=ue.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ue.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),z8=ue.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ue.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),b8=ue.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},ue.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),ue.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),j8=()=>{const[t,e]=ue.useState(document.hidden);return ue.useEffect(()=>{const a=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",a),()=>window.removeEventListener("visibilitychange",a)},[]),t};let Kg=1;class v8{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{const a=this.subscribers.indexOf(e);this.subscribers.splice(a,1)}),this.publish=e=>{this.subscribers.forEach(a=>a(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var a;const{message:i,...r}=e,s=typeof e?.id=="number"||((a=e.id)==null?void 0:a.length)>0?e.id:Kg++,c=this.toasts.find(p=>p.id===s),d=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(s)&&this.dismissedToasts.delete(s),c?this.toasts=this.toasts.map(p=>p.id===s?(this.publish({...p,...e,id:s,title:i}),{...p,...e,id:s,dismissible:d,title:i}):p):this.addToast({title:i,...r,dismissible:d,id:s}),s},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(a=>a({id:e,dismiss:!0})))):this.toasts.forEach(a=>{this.subscribers.forEach(i=>i({id:a.id,dismiss:!0}))}),e),this.message=(e,a)=>this.create({...a,message:e}),this.error=(e,a)=>this.create({...a,message:e,type:"error"}),this.success=(e,a)=>this.create({...a,type:"success",message:e}),this.info=(e,a)=>this.create({...a,type:"info",message:e}),this.warning=(e,a)=>this.create({...a,type:"warning",message:e}),this.loading=(e,a)=>this.create({...a,type:"loading",message:e}),this.promise=(e,a)=>{if(!a)return;let i;a.loading!==void 0&&(i=this.create({...a,promise:e,type:"loading",message:a.loading,description:typeof a.description!="function"?a.description:void 0}));const r=Promise.resolve(e instanceof Function?e():e);let s=i!==void 0,c;const d=r.then(async h=>{if(c=["resolve",h],ue.isValidElement(h))s=!1,this.create({id:i,type:"default",message:h});else if(x8(h)&&!h.ok){s=!1;const m=typeof a.error=="function"?await a.error(`HTTP error! status: ${h.status}`):a.error,g=typeof a.description=="function"?await a.description(`HTTP error! status: ${h.status}`):a.description,j=typeof m=="object"&&!ue.isValidElement(m)?m:{message:m};this.create({id:i,type:"error",description:g,...j})}else if(h instanceof Error){s=!1;const m=typeof a.error=="function"?await a.error(h):a.error,g=typeof a.description=="function"?await a.description(h):a.description,j=typeof m=="object"&&!ue.isValidElement(m)?m:{message:m};this.create({id:i,type:"error",description:g,...j})}else if(a.success!==void 0){s=!1;const m=typeof a.success=="function"?await a.success(h):a.success,g=typeof a.description=="function"?await a.description(h):a.description,j=typeof m=="object"&&!ue.isValidElement(m)?m:{message:m};this.create({id:i,type:"success",description:g,...j})}}).catch(async h=>{if(c=["reject",h],a.error!==void 0){s=!1;const f=typeof a.error=="function"?await a.error(h):a.error,m=typeof a.description=="function"?await a.description(h):a.description,z=typeof f=="object"&&!ue.isValidElement(f)?f:{message:f};this.create({id:i,type:"error",description:m,...z})}}).finally(()=>{s&&(this.dismiss(i),i=void 0),a.finally==null||a.finally.call(a)}),p=()=>new Promise((h,f)=>d.then(()=>c[0]==="reject"?f(c[1]):h(c[1])).catch(f));return typeof i!="string"&&typeof i!="number"?{unwrap:p}:Object.assign(i,{unwrap:p})},this.custom=(e,a)=>{const i=a?.id||Kg++;return this.create({jsx:e(i),id:i,...a}),i},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Ba=new v8,S8=(t,e)=>{const a=e?.id||Kg++;return Ba.addToast({title:t,...e,id:a}),a},x8=t=>t&&typeof t=="object"&&"ok"in t&&typeof t.ok=="boolean"&&"status"in t&&typeof t.status=="number",_8=S8,T8=()=>Ba.toasts,E8=()=>Ba.getActiveToasts(),A8=Object.assign(_8,{success:Ba.success,info:Ba.info,warning:Ba.warning,error:Ba.error,custom:Ba.custom,message:Ba.message,promise:Ba.promise,dismiss:Ba.dismiss,loading:Ba.loading},{getHistory:T8,getToasts:E8});h8
vendor: 14,873 bytes, line 69
69("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function
vendor: 2,171 bytes, line 69
69op(t){return t.label!==void 0}const P8=3,C8="24px",R8="16px",jx=4e3,D8=356,O8=14,U8=45,L8=200;function Fi(...t){return t.filter(Boolean).join(" ")}function K8(t){const[e,a]=t.split("-"),i=[];return e&&i.push(e),a&&i.push(a),i}const M8=t=>{var e,a,i,r,s,c,d,p,h;const{invert:f,toast:m,unstyled:g,interacting:z,setHeights:j,visibleToasts:v,heights:_,index:S,toasts:E,expanded:T,removeToast:O,defaultRichColors:H,closeButton:U,style:R,cancelButtonStyle:I,actionButtonStyle:ae,className:ee="",descriptionClassName:F="",duration:Z,position:oe,gap:me,expandByDefault:de,classNames:A,icons:B,closeButtonAriaLabel:ne="Close toast"}=t,[ge,he]=ue.useState(null),[C,Y]=ue.useState(null),[X,ce]=ue.useState(!1),[fe,Ee]=ue.useState(!1),[xe,_e]=ue.useState(!1),[Qe,ka]=ue.useState(!1),[ai,ha]=ue.useState(!1),[ku,zi]=ue.useState(0),[wl,Ar]=ue.useState(0),Bo=ue.useRef(m.duration||Z||jx),gl=ue.useRef(null),Wa=ue.useRef(null),kl=S===0,zl=S+1<=v,za=m.type,In=m.dismissible!==!1,ba=m.className||"",Zh=m.descriptionClassName||"",$o=ue.useMemo(()=>_.findIndex(Ce=>Ce.toastId===m.id)||0,[_,m.id]),zu=ue.useMemo(()=>{var Ce;return(Ce=m.closeButton)!=null?Ce:U},[m.closeButton,U]),Io=ue.useMemo(()=>m.duration||Z||jx,[m.duration,Z]),bl=ue.useRef(0),on=ue.useRef(0),bu=ue.useRef(0),Wn=ue.useRef(null),[Wo,ja]=oe.split("-"),bi=ue.useMemo(()=>_.reduce((Ce,vt,Jt)=>Jt>=$o?Ce:Ce+vt.height,0),[_,$o]),ya=j8(),Yh=m.invert||f,jl=za==="loading";on.current=ue.useMemo(()=>$o*me+bi,[$o,bi]),ue.useEffect(()=>{Bo.current=Io},[Io]),ue.useEffect(()=>{ce(!0)},[]),ue.useEffect(()=>{const Ce=Wa.current;if(Ce){const vt=Ce.getBoundingClientRect().height;return Ar(vt),j(Jt=>[{toastId:m.id,height:vt,position:m.position},...Jt]),()=>j(Jt=>Jt.filter(ma=>ma.toastId!==m.id))}},[j,m.id]),ue.useLayoutEffect(()=>{if(!X)return;const Ce=Wa.current,vt=Ce.style.height;Ce.style.height="auto";const Jt=Ce.getBoundingClientRect().height;Ce.style.height=vt,Ar(Jt),j(ma=>ma.find(_t=>_t.toastId===m.id)?ma.map(_t=>_t.toastId===m.id?{..._t,height:Jt}:_t):[{toastId:m.id,height:Jt,position:m.position},...ma])},[X,m.title,m.description,j,m.id,m.jsx,m.action,m.cancel]);const Mi=ue.useCallback(()=>{Ee(!0),zi(on.current),j(Ce=>
vendor: 5,728 bytes, line 69
69Ce.filter(vt=>vt.toastId!==m.id)),setTimeout(()=>{O(m)},L8)},[m,O,j,on]);ue.useEffect(()=>{if(m.promise&&za==="loading"||m.duration===1/0||m.type==="loading")return;let Ce;return T||z||ya?(()=>{if(bu.current<bl.current){const ma=new Date().getTime()-bl.current;Bo.current=Bo.current-ma}bu.current=new Date().getTime()})():Bo.current!==1/0&&(bl.current=new Date().getTime(),Ce=setTimeout(()=>{m.onAutoClose==null||m.onAutoClose.call(m,m),Mi()},Bo.current)),()=>clearTimeout(Ce)},[T,z,m,za,ya,Mi]),ue.useEffect(()=>{m.delete&&(Mi(),m.onDismiss==null||m.onDismiss.call(m,m))},[Mi,m.delete]);function Pr(){var Ce;if(B?.loading){var vt;return ue.createElement("div",{className:Fi(A?.loader,m==null||(vt=m.classNames)==null?void 0:vt.loader,"sonner-loader"),"data-visible":za==="loading"},B.loading)}return ue.createElement(f8,{className:Fi(A?.loader,m==null||(Ce=m.classNames)==null?void 0:Ce.loader),visible:za==="loading"})}const Cr=m.icon||B?.[za]||y8(za);var Go,Ni;return ue.createElement("li",{tabIndex:0,ref:Wa,className:Fi(ee,ba,A?.toast,m==null||(e=m.classNames)==null?void 0:e.toast,A?.default,A?.[za],m==null||(a=m.classNames)==null?void 0:a[za]),"data-sonner-toast":"","data-rich-colors":(Go=m.richColors)!=null?Go:H,"data-styled":!(m.jsx||m.unstyled||g),"data-mounted":X,"data-promise":!!m.promise,"data-swiped":ai,"data-removed":fe,"data-visible":zl,"data-y-position":Wo,"data-x-position":ja,"data-index":S,"data-front":kl,"data-swiping":xe,"data-dismissible":In,"data-type":za,"data-invert":Yh,"data-swipe-out":Qe,"data-swipe-direction":C,"data-expanded":!!(T||de&&X),"data-testid":m.testId,style:{"--index":S,"--toasts-before":S,"--z-index":E.length-S,"--offset":`${fe?ku:on.current}px`,"--initial-height":de?"auto":`${wl}px`,...R,...m.style},onDragEnd:()=>{_e(!1),he(null),Wn.current=null},onPointerDown:Ce=>{Ce.button!==2&&(jl||!In||(gl.current=new Date,zi(on.current),Ce.target.setPointerCapture(Ce.pointerId),Ce.target.tagName!=="BUTTON"&&(_e(!0),Wn.current={x:Ce.clientX,y:Ce.clientY})))},onPointerUp:()=>{var Ce,vt,Jt;if(Qe||!In)return;Wn.current=null;const ma=Number(((Ce=Wa.current)==null?void 0:Ce.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Gn=Number(((vt=Wa.current)==null?void 0:vt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),_t=new Date().getTime()-((Jt=gl.current)==null?void 0:Jt.getTime()),Aa=ge==="x"?ma:Gn,Vo=Math.abs(Aa)/_t;if(Math.abs(Aa)>=U8||Vo>.11){zi(on.current),m.onDismiss==null||m.onDismiss.call(m,m),Y(ge==="x"?ma>0?"right":"left":Gn>0?"down":"up"),Mi(),ka(!0);return}else{var Pa,Ca;(Pa=Wa.current)==null||Pa.style.setProperty("--swipe-amount-x","0px"),(Ca=Wa.current)==null||Ca.style.setProperty("--swipe-amount-y","0px")}ha(!1),_e(!1),he(null)},onPointerMove:Ce=>{var vt,Jt,ma;if(!Wn.current||!In||((vt=window.getSelection())==null?void 0:vt.toString().length)>0)return;const _t=Ce.clientY-Wn.current.y,Aa=Ce.clientX-Wn.current.x;var Vo;const Pa=(Vo=t.swipeDirections)!=null?Vo:K8(oe);!ge&&(Math.abs(Aa)>1||Math.abs(_t)>1)&&he(Math.abs(Aa)>Math.abs(_t)?"x":"y");let Ca={x:0,y:0};const Rr=ji=>1/(1.5+Math.abs(ji)/20);if(ge==="y"){if(Pa.includes("top")||Pa.includes("bottom"))if(Pa.includes("top")&&_t<0||Pa.includes("bottom")&&_t>0)Ca.y=_t;else{const ji=_t*Rr(_t);Ca.y=Math.abs(ji)<Math.abs(_t)?ji:_t}}else if(ge==="x"&&(Pa.includes("left")||Pa.includes("right")))if(Pa.includes("left")&&Aa<0||Pa.includes("right")&&Aa>0)Ca.x=Aa;else{const ji=Aa*Rr(Aa);Ca.x=Math.abs(ji)<Math.abs(Aa)?ji:Aa}(Math.abs(Ca.x)>0||Math.abs(Ca.y)>0)&&ha(!0),(Jt=Wa.current)==null||Jt.style.setProperty("--swipe-amount-x",`${Ca.x}px`),(ma=Wa.current)==null||ma.style.setProperty("--swipe-amount-y",`${Ca.y}px`)}},zu&&!m.jsx&&za!=="loading"?ue.createElement("button",{"aria-label":ne,"data-disabled":jl,"data-close-button":!0,onClick:jl||!In?()=>{}:()=>{Mi(),m.onDismiss==null||m.onDismiss.call(m,m)},className:Fi(A?.closeButton,m==null||(i=m.classNames)==null?void 0:i.closeButton)},(Ni=B?.close)!=null?Ni:b8):null,(za||m.icon||m.promise)&&m.icon!==null&&(B?.[za]!==null||m.icon)?ue.createElement("div",{"data-icon":"",className:Fi(A?.icon,m==null||(r=m.classNames)==null?void 0:r.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||Pr():null,m.type!=="loading"?Cr:null):null,ue.createElement("div",{"data-content":"",className:Fi(A?.content,m==null||(s=m.classNames)==null?void 0:s.content)},ue.createElement("div",{"data-title":"",className:Fi(A?.title,m==null||(c=m.classNames)==null?void 0:c.title)},m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title),m.description?ue.createElement("div",{"data-description":"",className:Fi(F,Zh,A?.description,m==null||(d=m.classNames)==null?void 0:d.description)},typeof m.description=="function"?m.description():m.description):null),ue.isValidElement(m.cancel)?m.cancel:m.cancel&&op(m.cancel)?ue.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||I,onClick:Ce=>{op(m.cancel)&&In&&(m.cancel.onClick==null||m.cancel.onClick.call(m.cancel,Ce),Mi())},className:Fi(A?.cancelButton,m==null||(p=m.classNames)==null?void 0:p.cancelButton)},m.cancel.label):null,ue.isValidElement(m.action)?m.action:m.action&&op(m.action)?ue.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||ae,onClick:Ce=>{op(m.action)&&(m.action.onClick==null||m.action.onClick.call(m.action,Ce),!Ce.defaultPrevented&&Mi())},className:Fi(A?.actionButton,m==null||(h=m.classNames)==null?void 0:h.actionButton)},m.action.label):null)};function vx(){if(typeof window>"u"||typeof document>"u")return"ltr";const t=document.documentElement.getAttribute("dir");return t==="auto"||!t?window.getComputedStyle(document.documentElement).direction:t}function N8(t,e){const a={};return[t,e].forEach((i,r)=>
69{const s=r===1,c=s?"--mobile-offset":"--offset",d=s?R8:C8;function p(h){["top","right","bottom","left"].forEach(f=>{a[`${c}-${f}`]=typeof h=="number"?`${h}px`:h})}typeof i=="number"||typeof i=="string"?p(i):typeof i=="object"?["top","right","bottom","left"].forEach(h=>{i[h]===void 0?a[`${c}-${h}`]=d:a[`${c}-${h}`]=typeof i[h]=="number"?`${i[h]}px`:i[h]}):p(d)}),a}const SA=ue.forwardRef(function(e,a){const{id:i,invert:r,position:s="bottom-right",hotkey:c=["altKey","KeyT"],expand:d,closeButton:p,className:h,offset:f,mobileOffset:m,theme:g="light",richColors:z,duration:j,style:v,visibleToasts:_=P8,toastOptions:S,dir:E=vx(),gap:T=O8,icons:O,containerAriaLabel:H="Notifications"}=e,[U,R]=ue.useState([]),I=ue.useMemo(()=>i?U.filter(X=>X.toasterId===i):U.filter(X=>!X.toasterId),[U,i]),ae=ue.useMemo(()=>Array.from(new Set([s].concat(I.filter(X=>X.position).map(X=>X.position)))),[I,s]),[ee,F]=ue.useState([]),[Z,oe]=ue.useState(!1),[me,de]=ue.useState(!1),[A,B]=ue.useState(g!=="system"?g:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),ne=ue.useRef(null),ge=c.join("+").replace(/Key/g,"").replace(/Digit/g,""),he=ue.useRef(null),C=ue.useRef(!1),Y=ue.useCallback(X=>{R(ce=>{var fe;return(fe=ce.find(Ee=>Ee.id===X.id))!=null&&fe.delete||Ba.dismiss(X.id),ce.filter(({id:Ee})=>Ee!==X.id)})},[]);return ue.useEffect(()=>Ba.subscribe(X=>{if(X.dismiss){requestAnimationFrame(()=>{R(ce=>ce.map(fe=>fe.id===X.id?{...fe,delete:!0}:fe))});return}setTimeout(()=>{p8.flushSync(()=>{R(ce=>{const fe=ce.findIndex(Ee=>Ee.id===X.id);return fe!==-1?[...ce.slice(0,fe),{...ce[fe],...X},...ce.slice(fe+1)]:[X,...ce]})})})}),[U]),ue.useEffect(()=>{if(g!=="system"){B(g);return}if(g==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?B("dark"):B("light")),typeof window>"u")return;const X=window.matchMedia("(prefers-color-scheme: dark)");try{X.addEventListener("change",({matches:ce})=>{B(ce?"dark":"light")})}catch{X.addListener(({matches:fe})=>{try{B(fe?"dark":"light")}catch(Ee){console.error(Ee)}})}},[g]),ue.useEffect(()=>{U.length<=1&&oe(!1)},[U]),ue.useEffect(()=>{const X=ce=>{var fe;if(c.every(_e=>ce[_e]||ce.code===_e)){var xe;oe(!0),(xe=ne.current)==null||xe.focus()}ce.code==="Escape"&&(document.activeElement===ne.current||(fe=ne.current)!=null&&fe.contains(document.activeElement))&&oe(!1)};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[c]),ue.useEffect(()=>{if(ne.current)return()=>{he.current&&(he.current.focus({preventScroll:!0}),he.current=null,C.current=!1)}},[ne.current]),ue.createElement("section",{ref:a,"aria-label":`${H} ${ge}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},ae.map((X,ce)=>{var fe;const[Ee,xe]=X.split("-");return I.length?ue.createElement("ol",{key:X,dir:E==="auto"?vx():E,tabIndex:-1,ref:ne,className:h,"data-sonner-toaster":!0,"data-sonner-theme":A,"data-y-position":Ee,"data-x-position":xe,style:{"--front-toast-height":`${((fe=ee[0])==null?void 0:fe.height)||0}px`,"--width":`${D8}px`,"--gap":`${T}px`,...v,...N8(f,m)},onBlur:_e=>{C.current&&!_e.currentTarget.contains(_e.relatedTarget)&&(C.current=!1,he.current&&(he.current.focus({preventScroll:!0}),he.current=null))},onFocus:_e=>{_e.target instanceof HTMLElement&&_e.target.dataset.dismissible==="false"||C.current||(C.current=!0,he.current=_e.relatedTarget)},onMouseEnter:()=>oe(!0),onMouseMove:()=>oe(!0),onMouseLeave:()=>{me||oe(!1)},onDragEnd:()=>oe(!1),onPointerDown:_e=>{_e.target instanceof HTMLElement&&_e.target.dataset.dismissible==="false"||de(!0)},onPointerUp:()=>de(!1)},I.filter(_e=>!_e.position&&ce===0||_e.position===X).map((_e,Qe)=>{var ka,ai;return ue.createElement(M8,{key:_e.id,icons:O,index:Qe,toast:_e,defaultRichColors:z,duration:(ka=S?.duration)!=null?ka:j,className:S?.className,descriptionClassName:S?.descriptionClassName,invert:r,visibleToasts:_,closeButton:(ai=S?.closeButton)!=null?ai:p,interacting:me,position:X,style:S?.style,unstyled:S?.unstyled,classNames:S?.classNames,cancelButtonStyle:S?.cancelButtonStyle,actionButtonStyle:S?.actionButtonStyle,closeButtonAriaLabel:S?.closeButtonAriaLabel,removeToast:Y,toasts:I.filter(ha=>ha.position==_e.position),heights:ee.filter(ha=>ha.position==_e.position),setHeights:F,expandByDefault:d,gap:T,expanded:Z,swipeDirections:e.swipeDirections})})):null}))}),Sx=Object.freeze(Object.defineProperty({__proto__:null,Toaster:SA,toast:A8},Symbol.toStringTag,{value:"Module"})),B8=({...t})=>k.jsx(SA,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...t}),xx="dispace_visitor_id",$8="dispace_session_id",Mg="dispace_attribution",xA="dispace_last_cta",Wp="dispace_geo";function _A(){try{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID()}catch{}return`id-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function fu(){if(typeof window>"u")return!0;try{const t=window.location.hostname;if(t==="localhost"||t==="127.0.0.1"||t.endsWith(".local")||t.endsWith("lovableproject.com")||t.endsWith("lovable.app")&&t.includes("preview")||t.includes("id-preview--")||window.self!==window.top)return!0;const e=navigator.userAgent||"";return!!/bot|crawler|spider|crawling|headless|lighthouse|pagespeed/i.test(e)}catch{return!1}}function Vh(){if(typeof window>"u")return"ssr";try{let t=localStorage.getItem(xx);return t||(t=_A(),localStorage.setItem(xx,t)),t}catch{return"anon"}}function I8(t){return/mobile|iphone|android.*mobile/i.test(t)?"mobile":/ipad|tablet|android(?!.*mobile)/i.test(t)?"tablet":"desktop"}function yl(){if(typeof window>"u")return"pl";const t=window.location.pathname;return t==="/en"||t.startsWith("/en/")?"en":"pl"}function Er(){if(typeof window>"u")return null;try{const t=sessionStorage.getItem(Mg);if(t)return JSON.parse(t);const e=new URL(window.location.href),a=navigator.userAgent||"",i={session_id:_A(),landing_page:e.pathname+e.search,referrer:document.referrer||null,utm_source:e.searchParams.get("utm_source"),utm_medium:e.searchParams.get("utm_medium"),utm_campaign:e.searchParams.get("utm_campaign"),utm_term:e.searchParams.get("utm_term"),utm_content:e.searchParams.get("utm_content"),user_agent:a||null,device:a?I8(a):null,lang:yl()};return sessionStorage.setItem(Mg,JSON.stringify(i)),sessionStorage.setItem($8,i.session_id),i}catch{return null}}function TA(){if(typeof window>"u")return null;try{const t=sessionStorage.getItem(Mg);return t?JSON.parse(t):Er()}catch{return null}}
69function EA(){if(typeof window>"u")return null;try{const t=sessionStorage.getItem(xA);return t?JSON.parse(t):null}catch{return null}}function W8(t,e){try{sessionStorage.setItem(xA,JSON.stringify({cta_id:t,target_path:e,clicked_at:new Date().toISOString()}))}catch{}}async function AA(){if(typeof window>"u")return{country:null,city:null};try{const t=sessionStorage.getItem(Wp);if(t)return JSON.parse(t);const e=await fetch("https://ipapi.co/json/",{cache:"no-store"});if(!e.ok)throw new Error("geo failed");const a=await e.json(),i={country:a.country_name||null,city:a.city||null};return sessionStorage.setItem(Wp,JSON.stringify(i)),i}catch{const t={country:null,city:null};try{sessionStorage.setItem(Wp,JSON.stringify(t))}catch{}return t}}function wu(){if(typeof window>"u")return{country:null,city:null};try{const t=sessionStorage.getItem(Wp);return t?JSON.parse(t):{country:null,city:null}}catch{return{country:null,city:null}}}async function Fh(t){try{await Rk.from("analytics_events").insert(t)}catch(e){console.warn("analytics insert failed",e)}}async function PA(t){if(typeof window>"u"||fu())return;const e=Er();AA();const a=wu();await Fh({event_type:"page_view",path:t??window.location.pathname+window.location.search,visitor_id:Vh(),session_id:e?.session_id??null,referrer:document.referrer||null,utm_source:e?.utm_source??null,utm_medium:e?.utm_medium??null,utm_campaign:e?.utm_campaign??null,utm_term:e?.utm_term??null,utm_content:e?.utm_content??null,user_agent:e?.user_agent??null,device:e?.device??null,country:a.country,lang:yl()})}async function CA(t,e){if(typeof window>"u"||fu())return;const a=Er(),i=e??window.location.pathname;W8(t,i);const r=wu();await Fh({event_type:"cta_click",path:window.location.pathname,target_path:i,cta_id:t,visitor_id:Vh(),session_id:a?.session_id??null,referrer:document.referrer||null,utm_source:a?.utm_source??null,utm_medium:a?.utm_medium??null,utm_campaign:a?.utm_campaign??null,utm_term:a?.utm_term??null,utm_content:a?.utm_content??null,user_agent:a?.user_agent??null,device:a?.device??null,country:r.country,lang:yl()})}async function G8(t,e){if(typeof window>"u"||fu())return;const a=Er();await Fh({event_type:t,path:e??window.location.pathname,visitor_id:Vh(),session_id:a?.session_id??null,referrer:document.referrer||null,lang:yl()})}const _x="dispace_404_sent";async function RA(t){if(typeof window>"u"||fu())return;const e=Er(),a=wu(),i=t??window.location.pathname+window.location.search,r=document.referrer||null,s=yl();try{const c=`${i}::${r??""}`;if(sessionStorage.getItem(_x)===c)return;sessionStorage.setItem(_x,c)}catch{}console.warn("[404]",{path:i,referrer:r,lang:s}),await Fh({event_type:"page_404",path:i,visitor_id:Vh(),session_id:e?.session_id??null,referrer:r,utm_source:e?.utm_source??null,utm_medium:e?.utm_medium??null,utm_campaign:e?.utm_campaign??null,utm_term:e?.utm_term??null,utm_content:e?.utm_content??null,user_agent:e?.user_agent??null,device:e?.device??null,country:a.country,lang:s});try{window.fbq?.("trackCustom","PageNotFound",{path:i,referrer:r??"(direct)",lang:s})}catch{}}function V8(){const t=TA(),e=EA(),a=wu();return typeof window>"u"?{}:{source_path:window.location.pathname+window.location.search,landing_page:t?.landing_page??null,referrer:t?.referrer??null,utm_source:t?.utm_source??null,utm_medium:t?.utm_medium??null,utm_campaign:t?.utm_campaign??null,utm_term:t?.utm_term??null,utm_content:t?.utm_content??null,cta_id:e?.cta_id??null,session_id:t?.session_id??null,user_agent:t?.user_agent??null,device:t?.device??null,lang:t?.lang??yl(),country:a.country,city:a.city}}const oee=Object.freeze(Object.defineProperty({__proto__:null,ensureAttribution:Er,ensureGeo:AA,getAttribution:TA,getGeo:wu,getLastCta:EA,getLeadAttribution:V8,shouldSkipTracking:fu,track404:RA,trackCta:CA,trackEvent:G8,trackPageView:PA},Symbol.toStringTag,{value:"Module"})),F8="dispace-cookie-consent-v1",Tx="dispace:consent-change";function H8(){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(F8);if(!t)return null;const e=JSON.parse(t);return!e||typeof e!="object"?null:e}catch{return null}}function DA(){return!!H8()?.marketing}function OA(t){if(typeof window>"u")return()=>{};const e=a=>{const i=a;i.detail&&t(i.detail)};return window.addEventListener(Tx,e),()=>window.removeEventListener(Tx,e)}const q8="1564533044115609";let ou=!1,Ex=!1;const fh=[];function Ax(){if(!(ou||typeof window>
69"u"))for(ou=!0,(function(t,e,a,i){if(t.fbq)return;const r=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)};t.fbq=r,t._fbq||(t._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[];const s=e.createElement(a);s.async=!0,s.src=i;const c=e.getElementsByTagName(a)[0];c.parentNode?.insertBefore(s,c)})(window,document,"script","https://connect.facebook.net/en_US/fbevents.js"),window.fbq?.("init",q8),window.fbq?.("track","PageView");fh.length;){const t=fh.shift();try{window.fbq?.("track",t.name,t.params||{})}catch(e){console.error("fbq flush failed",e)}}}function Z8(){typeof window>"u"||(DA()&&Ax(),Ex||(Ex=!0,OA(t=>{t.marketing&&Ax()})))}function Y8(){if(!(typeof window>"u")&&ou)try{window.fbq?.("track","PageView")}catch(t){console.error("fbq PageView failed",t)}}function J8(t){if(!(typeof window>"u")){if(!ou){fh.push({type:"event",name:"Lead",params:t});return}try{window.fbq?.("track","Lead",t||{})}catch(e){console.error("fbq Lead failed",e)}}}function Q8(t,e){if(!(typeof window>"u")){if(!ou){fh.push({type:"event",name:t,params:e});return}try{window.fbq?.("track",t,e||{})}catch(a){console.error(`fbq ${t} failed`,a)}}}const X8={},wh=X8.VITE_TIKTOK_PIXEL_ID??"";let gh=!1,Px=!1;const Ng=[];function Cx(){if(!(gh||typeof window>"u"||!wh))for(gh=!0,(function(t,e,a){t.TiktokAnalyticsObject=a;const i=t[a]=t[a]||[];i.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],i.setAndDefer=function(r,s){r[s]=function(){r.push([s].concat(Array.prototype.slice.call(arguments,0)))}};for(let r=0;r<i.methods.length;r++)i.setAndDefer(i,i.methods[r]);i.instance=function(r){const s=i._i?.[r]||[];for(let c=0;c<i.methods.length;c++)i.setAndDefer(s,i.methods[c]);return s},i.load=function(r,s){const c="https://analytics.tiktok.com/i18n/pixel/events.js";i._i=i._i||{},i._i[r]=[],i._i[r]._u=c,i._t=i._t||{},i._t[r]=+new Date,i._o=i._o||{},i._o[r]=s||{};const d=e.createElement("script");d.type="text/javascript",d.async=!0,d.src=`${c}?sdkid=${r}&lib=${a}`;const p=e.getElementsByTagName("script")[0];p.parentNode?.insertBefore(d,p)},i.load(wh),i.page()})(window,document,"ttq");Ng.length;){const t=Ng.shift();try{window.ttq?.track(t.name,t.params||{})}catch(e){console.error("ttq flush failed",e)}}}function e9(){typeof window>"u"||!wh||(DA()&&Cx(),Px||(Px=!0,OA(t=>{t.marketing&&Cx()})))}function t9(){if(!(typeof window>"u"||!gh))try{window.ttq?.page()}catch(t){console.error("ttq page failed",t)}}function yz(t,e){if(!(typeof window>"u"||!wh)){if(!gh){Ng.push({name:t,params:e});return}try{window.ttq?.track(t,e||{})}catch(a){console.error(`ttq ${t} failed`,a)}}}const mz="G-XH8TV63JZG".trim()||"",a9="".toLowerCase()==="true";function fz(){if(a9)return!0;if(typeof window>"u")return!1;try{return new URLSearchParams(window.location.search).get("ga_debug")==="1"&&window.localStorage.setItem("ga4_debug","1"),window.localStorage.getItem("ga4_debug")==="1"}catch{return!1}}function UA(){return typeof window<"u"&&typeof window.gtag=="function"&&!!mz}function LA(t,e){fz()&&console.log(`%c[GA4]%c ${t}`,"color:#F9AB00;font-weight:bold","color:inherit",e)}function i9(t){if(!UA())return;const e={page_path:t,page_location:window.location.href,page_title:document.title,send_to:mz};fz()&&(e.debug_mode=!0);try{window.gtag("event","page_view",e),LA("page_view",e)}catch{}}function wz(t,e={}){if(!UA())return;const a={...e,send_to:mz};fz()&&(a.debug_mode=!0);try{window.gtag("event",t,a),LA(t,a)}catch{}}function KA(t){const e=t.source_path??(typeof window<"u"?window.location.pathname:void 0);return{...t,source_path:e}}function n9(t){const e=KA({...t});J8(e),yz("SubmitForm",{content_name:t.content_name,content_category:t.content_category,...t.value!==void 0?{value:t.value,currency:t.currency??"GBP"}:{}}),wz("generate_lead",e)}function xc(t,e){const a=KA({method:t,...e||{}});Q8("Contact",a),yz("Contact",{content_name:`contact_${t}`}),wz("contact_click",a)}const ree=Object.freeze(Object.defineProperty({__proto__:null,trackContactConversion:xc,trackLeadConversion:n9},Symbol.toStringTag,{value:"Module"})),o9=["/dispace-formularz","/pl/dispace-formularz","/en/dispace-form"];function r9({pathname:t}){return N.useEffect(()=>{Z8(),e9()},[]),N.useEffect(()=>{Er(),PA(t),Y8(),t9(),i9(t)},[t]),N.useEffect(()=>{if(typeof window>"u")return;const e=a=>{const i=a.target;if(!i)return;const r=i.closest("a, button, [role='button']");if(!r)return;const s=r.getAttribute("data-cta"),c=r instanceof HTMLAnchorElement?r.getAttribute("href"):r.getAttribute("data-href");if(c){const m=c.toLowerCase();m.startsWith("tel:")?xc("phone",{href:c}):m.startsWith("mailto:")?xc("email",{href:c}
69):m.includes("wa.me")||m.includes("whatsapp.com")?xc("whatsapp",{href:c}):(m.includes("m.me")||m.includes("messenger.com"))&&xc("messenger",{href:c})}const d=c&&o9.some(m=>c.startsWith(m));if(!s&&!d)return;const p=(r.textContent||"").trim().replace(/\s+/g," ").slice(0,60),h=s??`${window.location.pathname}::${p||"cta"}`,f=c??window.location.pathname;CA(h,f),d&&yz("ClickButton",{content_name:h}),wz("cta_click",{cta_id:h,target_path:f,source_path:window.location.pathname})};return document.addEventListener("click",e,{capture:!0}),()=>document.removeEventListener("click",e,{capture:!0})},[]),null}function s9(){return N.useEffect(()=>{RA()},[]),k.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4",children:k.jsxs("div",{className:"max-w-md text-center",children:[k.jsx("h1",{className:"text-7xl font-bold text-foreground",children:"404"}),k.jsx("h2",{className:"mt-4 text-xl font-semibold text-foreground",children:"Page not found"}),k.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"The page you're looking for doesn't exist or has been moved."}),k.jsx("div",{className:"mt-6",children:k.jsx(Xi,{to:"/",className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:"Go home"})})]})})}function l9({error:t,reset:e}){console.error(t);const a=Zt();return k.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4",children:k.jsxs("div",{className:"max-w-md text-center",children:[k.jsx("h1",{className:"text-xl font-semibold tracking-tight text-foreground",children:"This page didn't load"}),k.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Something went wrong on our end. You can try refreshing or head back home."}),k.jsxs("div",{className:"mt-6 flex flex-wrap justify-center gap-2",children:[k.jsx("button",{onClick:()=>{a.invalidate(),e()},className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:"Try again"}),k.jsx("a",{href:"/",className:"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground transition-colors hover:bg-accent",children:"Go home"})]})]})})}const le=R3()({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{title:"Agencja Reklamowa UK | Strony, SEO i Projekty Graficzne"},{name:"description",content:"Agencja reklamowa UK â DiSpace tworzy strony internetowe, projekty graficzne i SEO. Logo, wizytówki, sklepy online. Zamów darmowÄ
wycenÄ!"},{name:"author",content:"DiSpace"},{property:"og:title",content:"Agencja Reklamowa UK | Strony, SEO i Projekty Graficzne"},{property:"og:description",content:"Agencja reklamowa UK â DiSpace tworzy strony internetowe, projekty graficzne i SEO. Logo, wizytówki, sklepy online. Zamów darmowÄ
wycenÄ!"},{property:"og:type",content:"website"},{property:"og:locale",content:"pl_PL"},{property:"og:site_name",content:"DiSpace"},{name:"twitter:card",content:"summary_large_image"},{name:"google-site-verification",content:"0b6yRn0fQ0znQ2j3E9yxnoxRfdj6K1PwxfYIc8m92Nk"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Organization",name:"DiSpace",url:"https://dispace.uk",logo:"https://dispace.uk/favicon.png",email:"[email protected]",telephone:"+44 7476 052809",address:{"@type":"PostalAddress",streetAddress:"14A Reidvale St",addressLocality:"Glasgow",postalCode:"G31 1SZ",addressCountry:"GB"},sameAs:["https://www.facebook.com/dispaceuk","https://www.instagram.com/dispace.uk"]})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"WebSite",name:"DiSpace",url:"https://dispace.uk",inLanguage:["pl-PL","en-GB"]})}],links:[{rel:"icon",type:"image/png",href:"/favicon.png"},{rel:"apple-touch-icon",href:"/favicon.png"},{rel:"preconnect",href:"https://fonts.googleapis.com"}
69,{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"},{rel:"preload",as:"style",href:"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Great+Vibes&family=DM+Serif+Display:ital@0;1&display=swap"},{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Great+Vibes&family=DM+Serif+Display:ital@0;1&display=swap"},{rel:"stylesheet",href:MN}]}),shellComponent:p9,component:h9,notFoundComponent:s9,errorComponent:l9}),c9="(function(){try{var t=localStorage.getItem('dispace-theme');if(t==='dark'){document.documentElement.classList.add('dark');}else{document.documentElement.classList.remove('dark');}}catch(e){}})();";function MA(t){return t==="/en"||t.startsWith("/en/")?"en":"pl"}const Kc="G-XH8TV63JZG".trim()||"",u9="".toLowerCase()==="true",d9=Kc?`window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}window.gtag=gtag;gtag('js',new Date());try{var _d=${u9?"true":"(localStorage.getItem('ga4_debug')==='1'|| new URLSearchParams(location.search).get('ga_debug')==='1')"};if(_d){localStorage.setItem('ga4_debug','1');}gtag('config','${Kc}',{send_page_view:false,anonymize_ip:true,debug_mode:_d});}catch(e){gtag('config','${Kc}',{send_page_view:false,anonymize_ip:true});}`:"";function p9({children:t}){const e=Ak({select:i=>i.location.pathname}),a=MA(e);return k.jsxs("html",{lang:a,className:"overflow-x-clip",children:[k.jsxs("head",{children:[k.jsx(J3,{}),k.jsx("script",{dangerouslySetInnerHTML:{__html:c9}}),Kc&&k.jsxs(k.Fragment,{children:[k.jsx("script",{async:!0,src:`https://www.googletagmanager.com/gtag/js?id=${Kc}`}),k.jsx("script",{dangerouslySetInnerHTML:{__html:d9}})]})]}),k.jsxs("body",{className:"overflow-x-clip",children:[t,k.jsx(X3,{})]})]})}function h9(){const{queryClient:t}=le.useRouteContext(),a=Zt().state.location.pathname,i=a==="/admin"||a.startsWith("/admin/"),r=i||a==="/dispace-formularz"||a==="/en/dispace-form"||a==="/pl/dispace-formularz",s=a.replace(/\/$/,"")||"/",c=s==="/"||s==="/pl"||s==="/en"||s.startsWith("/strony-internetowe-"),d=!i&&!c&&!r;return N.useEffect(()=>{document.documentElement.lang=MA(a)},[a]),k.jsxs(KN,{client:t,children:[!i&&k.jsx(r9,{pathname:a}),!r&&k.jsx(QG,{}),k.jsx(H2,{}),!r&&k.jsx(e8,{}),k.jsx(WB,{}),d&&k.jsx(c8,{}),!i&&!r&&k.jsx(u8,{}),k.jsx(B8,{})]})}const y9=Ac({method:"GET"}).handler(Sk("95a012dbbee1eca44dd41fb8aeb7f19b9a8ceb2dfd2e140ff6768133c3898218")),m9=()=>W(()=>import("./index-DtqBFgK5.js"),[]);function f9(t){const e=(t??"").toLowerCase().trim();if(!e)return null;const a=e.split(",")[0]?.trim()??"";return a.startsWith("pl")?"pl":a.startsWith("en")?"en":null}const w9=q()({beforeLoad:async({location:t})=>{if(typeof window>"u"){const{lang:i}=await y9();throw Kt({to:i==="pl"?"/pl":"/en",search:t.search,statusCode:301})}const e=(()=>{try{return window.localStorage.getItem("dispace-lang")}catch{return null}})();if(e==="pl"||e==="en")throw Kt({to:e==="pl"?"/pl":"/en",search:t.search});const a=f9(window.navigator.language);throw Kt(a?{to:a==="pl"?"/pl":"/en",search:t.search}:{to:"/pl",search:t.search})},component:G(m9,"component")}),g9={"/copywriting":"/copywriting-uk","/projekt-logo":"/projekt-logo-uk","/identyfikacja-wizualna":"/identyfikacja-wizualna-uk","/projekt-opakowania":"/projekty-graficzne-uk","/gadzety-reklamowe":"/gadzety-reklamowe-uk","/banery-reklamowe":"/banery-reklamowe-uk","/projekt-wizytowki":"/projekt-wizytowki-uk","/projekt-ulotki":"/projekt-ulotki-uk","/grafiki-na-social-media":"/grafiki-social-media-uk","/portfolio":"/pl/portfolio","/blog":"/pl/baza-wiedzy","/kontakt":"/pl/kontakt","/polityka-prywatnosci":"/pl/polityka-prywatnosci","/oferta/strony-sklepy":"/strony-internetowe-uk","/oferta/marketing-seo":"/pl/oferta/marketing-seo","/oferta/design-druk":"/pl/oferta/design-druk","/baza-wiedzy":"/pl/baza-wiedzy","/regulamin":"/pl/regulamin","/cookies":"/pl/cookies","/dispace-formularz":"/pl/dispace-formularz"};function gz(t){const e=t.toLowerCase();return e.length>1&&e.endsWith("/")?e.slice(0,-1):e}function k9(t){const e=gz(t);return g9[e]??null}function z9(t){const e=gz(t);return e.startsWith("/blog/")?"/pl/baza-wiedzy"+e.slice(5):null}const b9=new Set(["birmingham","sheffield","newcastle-upon-tyne","nottingham","leicester","coventry","southampton","portsmouth","bradford","hull","stoke-on-trent","derby","york","cambridge","oxford","dundee","perth","
69stirling","paisley","east-kilbride","hamilton","cumbernauld","kirkcaldy","ayr","dunfermline"]);function NA(t){const e=gz(t),a="/strony-internetowe-";if(!e.startsWith(a))return null;const i=e.slice(a.length);return i==="london"?"/strony-internetowe-londyn":b9.has(i)?"/pl":null}const j9=()=>W(()=>import("./_-BfuG1_gd.js"),[]),v9=q()({beforeLoad:({location:t})=>{const e=k9(t.pathname);if(e)throw Kt({href:e,code:301,throw:!0});const a=NA(t.pathname);if(a)throw Kt({href:a,code:301,throw:!0});const i=z9(t.pathname);if(i)throw Kt({href:i,code:301,throw:!0})},component:G(j9,"component")}),S9=()=>W(()=>import("./admin-l4BntlHK.js"),__vite__mapDeps([34,35,1,36,37,38,39,40,41,42,43,44,45,46,47,48,8,49,50,51,24,52,53,54,55,56,57,58,59])),x9=q()({head:()=>({meta:[{title:"Admin â DiSpace"},{name:"robots",content:"noindex"}]}),component:G(S9,"component")}),BA=[{slug:"sklepy-internetowe-uk",source:"strony-sklepy",locative:"w UK",title:"Wdrożenie sklepu internetowego UK â agencja e-commerce od £1 400 | DiSpace",description:"Agencja wdrożeÅ sklepów internetowych w UK dla polskich firm â WooCommerce, Shopify i migracje z Etsy/Allegro. Wdrożenie sklepu internetowego UK od £1 400, start w 14 dni, pÅatnoÅci GBP, VAT/HMRC, faktura z UK. BezpÅatna wycena w 24 h.",label:"Sklepy internetowe â UK (PL)"},{slug:"sklepy-internetowe-szkocja",source:"strony-sklepy",locative:"w Szkocji",title:"Sklepy internetowe Szkocja â sklep online dla firm | DiSpace",description:"Sklepy internetowe w Szkocji dla polskich firm. Tworzymy sklep internetowy WooCommerce/Shopify gotowy na sprzedaż online â projekt, wdrożenie i SEO.",label:"Sklepy internetowe â Szkocja (PL)"},{slug:"woocommerce-uk",source:"strony-sklepy",locative:"w UK",title:"WooCommerce UK â sklep WooCommerce dla polskich firm w Anglii",description:"WooCommerce UK dla polskich firm w Wielkiej Brytanii. Wdrożenie sklepu WooCommerce z pÅatnoÅciami Stripe/Klarna, integracjÄ
kurierów UK i konfiguracjÄ
VAT. Wycena 24 h.",label:"WooCommerce â UK (PL)"},{slug:"shopify-uk",source:"strony-sklepy",locative:"w UK",title:"Shopify UK dla polskich firm â wdrożenie sklepu Shopify w Anglii",description:"Shopify UK dla polskich firm w Wielkiej Brytanii. Wdrożenie sklepu Shopify z pÅatnoÅciami, Shopify Payments/Klarna, integracjÄ
Royal Mail i DPD oraz optymalizacjÄ
SEO. Wycena 24 h.",label:"Shopify â UK (PL)"},{slug:"sklep-online-uk",source:"strony-sklepy",locative:"w UK",title:"Sklep online UK dla polskich firm â e-commerce w Wielkiej Brytanii",description:"Sklep online w UK dla polskich firm w Anglii, Szkocji i Walii. Doradzamy WooCommerce vs Shopify, wdrażamy sklep e-commerce z pÅatnoÅciami GBP, VAT UK i SEO UK. Wycena 24 h.",label:"Sklep online â UK (PL)"},{slug:"pozycjonowanie-uk",source:"marketing-seo",locative:"w UK",title:"Pozycjonowanie stron UK 2026 â TOP 3 Google.co.uk od £290/mc",description:"Pozycjonowanie stron UK dla polskich firm w Anglii, Szkocji i Walii. Audyt SEO, treÅci PL/EN, linki .co.uk i Google Maps. Od £290/mc, wycena w 24 h. â 5.0",label:"Pozycjonowanie stron UK (PL)"},{slug:"obsluga-social-media-uk",source:"marketing-seo",locative:"w UK",title:"ObsÅuga social media UK â DiSpace",description:"Prowadzimy social media dla firm w UK. Tworzymy treÅci, grafiki i komunikacjÄ, która wspiera widocznoÅÄ marki.",label:"ObsÅuga social media â UK (PL)"},{slug:"kampanie-google-ads",source:"marketing-seo",locative:"w UK",title:"Kampanie Google Ads UK od £390/mc â prowadzenie reklam Google | DiSpace",description:"Kampanie reklamowe Google Ads (dawniej Google AdWords) dla polskich firm w UK. Search, Performance Max i remarketing, konwersje GA4, start w 5 dni. Od £390/mc, wycena 24 h.",label:"Kampanie Google Ads â UK (PL)"},{slug:"kampanie-reklamowe-google-adwords",source:"marketing-seo",locative:"w UK",title:"Kampanie reklamowe Google AdWords (Google Ads) UK od £390/mc | DiSpace",description:"Kampanie reklamowe Google AdWords â dziÅ Google Ads â dla polskich firm w Wielkiej Brytanii. Konfiguracja konta, sÅowa kluczowe pod Google.co.uk, reklamy Search i Performance Max, raport miesiÄczny. Od £390/mc.",label:"Kampanie reklamowe Google AdWords â UK (PL)"},{slug:"kampanie-facebook-ads",source:"marketing-seo",locative:"w UK",title:"Kampanie Facebook Ads UK od £290/mc â reklama na Facebooku | DiSpace",description:"Kampanie reklamowe Facebook i Instagram (Meta Ads) dla polskich firm w UK. Kreacje, targetowanie, Pixel i remarketing, raport miesiÄczny. Od £290/mc, start w 5 dni, wycena 24 h.",label:"Kampanie Facebook Ads â UK (PL)"},{slug:"kampanie-reklamowe-facebook",source:"marketing-seo",locative:"w UK",title:"Kampanie reklamowe Facebook UK â reklama na Facebooku od £290/mc | DiSpace",description:"Kampanie reklamowe na Facebooku dla polskich firm w Wielkiej Brytanii: kreacje graficzne i video, targetowanie po lokalizacji i jÄzyku, Meta Pixel, remarketing i raport wyników. Od £290/mc.",label:"Kampanie reklamowe Facebook â UK (PL)"},{slug:"kampanie-reklamowe-tiktok",source:"marketing-seo",locative:"w UK",title:"Kampanie reklamowe TikTok UK â TikTok Ads od £290/mc | DiSpace",description:"Kampanie reklamowe TikTok (TikTok Ads) dla polskich firm w UK. Krótkie video, Spark Ads, TikTok Pixel i kampanie konwersyjne w Wielkiej Brytanii. Od £290/mc, start w 5 dni, wycena 24 h.",label:"Kampanie reklamowe TikTok â UK (PL)"},{slug:"pozycjonowanie-wielka-brytania",source:"marketing-seo",locative:"w Wielkiej Brytanii",title:"Pozycjonowanie Wielka Brytania â SEO dla firm w UK | DiSpace",description:"Pozycjonowanie stron w Wielkiej Brytanii dla polskich firm. SEO UK, audyt techniczny, treÅci i link building â realny ruch z Google UK. Wyce
69na 24 h.",label:"Pozycjonowanie â Wielka Brytania (PL)"},{slug:"agencja-reklamowa-uk",source:"marketing-seo",locative:"w UK",title:"Agencja reklamowa UK â Google Ads, Meta Ads, SEO od £390 / miesiÄ
c, start 5 dni | DiSpace",description:"Agencja reklamowa UK dla polskich firm w Wielkiej Brytanii. Google Ads UK, Meta Ads, pozycjonowanie, strony i grafika â kompleksowa obsÅuga od £390 / miesiÄ
c, start kampanii w 5 dni roboczych. Wycena 24 h.",label:"Agencja reklamowa â UK (PL)"},{slug:"google-ads-uk",source:"marketing-seo",locative:"w UK",title:"Google Ads UK â prowadzenie kampanii Google Ads od £390/mc | DiSpace",description:"Google Ads UK dla polskich firm w Wielkiej Brytanii. Konfiguracja konta, kampanie Search, Performance Max i remarketing, optymalizacja CPC i raporty miesiÄczne. Od £390/mc, start w 5 dni. Wycena 24 h.",label:"Google Ads â UK (PL)"},{slug:"microsoft-ads-uk",source:"marketing-seo",locative:"w UK",title:"Microsoft Ads UK (Bing Ads) â kampanie w Bing i Edge | DiSpace",description:"Microsoft Ads UK (dawniej Bing Ads) dla firm w Wielkiej Brytanii. TaÅsze klikniÄcia niż w Google, dostÄp do użytkowników Bing, Edge i Yahoo, import kampanii z Google Ads. Prowadzenie od £290/mc, wycena 24 h.",label:"Microsoft Ads â UK (PL)"},{slug:"apple-ads-uk",source:"marketing-seo",locative:"w UK",title:"Apple Ads UK (Apple Search Ads) â reklama w App Store | DiSpace",description:"Apple Ads UK â Apple Search Ads dla aplikacji w brytyjskim App Store. Kampanie Search Results, Today Tab i Product Page, optymalizacja CPT/CPA i raporty instalacji. Prowadzenie od £290/mc, wycena 24 h.",label:"Apple Ads â UK (PL)"},{slug:"kampanie-reklamowe-uk",source:"marketing-seo",locative:"w UK",title:"Kampanie reklamowe UK â Google, Microsoft, Apple i Meta Ads | DiSpace",description:"Kampanie reklamowe UK dla polskich firm w Wielkiej Brytanii. Prowadzimy Google Ads, Microsoft Ads, Apple Search Ads i Meta Ads â strategia, kreacje, optymalizacja i raporty. Od £390/mc, start w 5 dni.",label:"Kampanie reklamowe â UK (PL)"},{slug:"kampanie-reklamowe-szkocja",source:"marketing-seo",locative:"w Szkocji",title:"Kampanie reklamowe Szkocja â Google Ads i Meta Ads Edynburg, Glasgow",description:"Kampanie reklamowe w Szkocji dla polskich firm z Edynburga, Glasgow i Aberdeen. Google Ads, Microsoft Ads i Meta Ads z geotargetowaniem na szkockie miasta. Od £390/mc, start w 5 dni, wycena 24 h.",label:"Kampanie reklamowe â Szkocja (PL)"},{slug:"kampanie-reklamowe-wielka-brytania",source:"marketing-seo",locative:"w Wielkiej Brytanii",title:"Kampanie reklamowe Wielka Brytania â reklama online dla firm w UK",description:"Kampanie reklamowe w Wielkiej Brytanii: Google Ads, Microsoft Ads (Bing), Apple Search Ads i Meta Ads. Prowadzenie, optymalizacja budżetu w GBP i miesiÄczne raporty wyników. Od £390/mc, wycena 24 h.",label:"Kampanie reklamowe â Wielka Brytania (PL)"},{slug:"google-ads-setup-uk",source:"marketing-seo",locative:"w UK",title:"Google Ads setup UK â konfiguracja konta i kampanii od £490 | DiSpace",description:"Google Ads setup UK: zaÅożenie konta, struktura kampanii Search i PMax, sÅowa kluczowe pod Google.co.uk, teksty reklam i Åledzenie konwersji GA4. Jednorazowe wdrożenie od £490, gotowe w 5 dni roboczych.",label:"Google Ads setup â UK (PL)"},{slug:"google-ads-management-uk",source:"marketing-seo",locative:"w UK",title:"Google Ads management UK â staÅa obsÅuga kampanii od £390/mc | DiSpace",description:"Google Ads management UK â staÅe prowadzenie i optymalizacja kampanii: stawki, sÅowa kluczowe wykluczajÄ
ce, testy reklam, remarketing i miesiÄczne raporty konwersji. Od £390/mc, bez umowy na czas okreÅlony.",label:"Google Ads management â UK (PL)"},{slug:"microsoft-ads-setup-uk",source:"marketing-seo",locative:"w UK",title:"Microsoft Ads setup UK â konfiguracja konta Bing Ads od £390 | DiSpace",description:"Microsoft Ads setup UK: zaÅożenie konta Microsoft Advertising, import lub budowa kampanii, tag konwersji UET, sÅowa kluczowe pod Bing i Edge. Jednorazowe wdrożenie od £390, start w 5 dni.",label:"Microsoft Ads setup â UK (PL)"},{slug:"microsoft-ads-management-uk",source:"marketing-seo",locative:"w UK",title:"Microsoft Ads management UK â obsÅuga kampanii Bing od £290/mc | DiSpace",description:"Microsoft Ads management UK â staÅa optymalizacja kampanii w Bing, Edge i Yahoo: stawki, wykluczenia, testy reklam, Audience Network i raporty miesiÄczne. Od £290/mc, wycena w 24 h.",label:"Microsoft Ads management â UK (PL)"},{slug:"apple-ads-setup-uk",source:"marketing-seo",locative:"w UK",title:"Ap
69ple Ads setup UK â konfiguracja Apple Search Ads od £390 | DiSpace",description:"Apple Ads setup UK: konfiguracja konta Apple Search Ads, struktura kampanii Search Results i Today Tab, dobór sÅów kluczowych w App Store UK i pomiar instalacji. Wdrożenie od £390, start w 5 dni.",label:"Apple Ads setup â UK (PL)"},{slug:"apple-ads-management-uk",source:"marketing-seo",locative:"w UK",title:"Apple Ads management UK â obsÅuga Apple Search Ads od £290/mc | DiSpace",description:"Apple Ads management UK â staÅe prowadzenie Apple Search Ads: optymalizacja sÅów kluczowych, stawek CPT, testy stron produktowych i raporty instalacji oraz kosztu pozyskania. Od £290/mc.",label:"Apple Ads management â UK (PL)"},{slug:"projekty-graficzne-uk",source:"design-druk",locative:"w UK",title:"Projekty graficzne UK â DiSpace",description:"Tworzymy projekty graficzne dla firm w UK: branding, materiaÅy reklamowe, grafiki do druku i komunikacji online.",label:"Projekty graficzne â UK (PL)"},{slug:"rollupy",source:"design-druk",locative:"w UK",title:"Rollupy i projekty do druku â DiSpace",description:"Projektujemy rollupy, materiaÅy reklamowe i grafiki do druku dla firm, które chcÄ
wyglÄ
daÄ profesjonalnie.",label:"Rollupy i druk (PL)"},{slug:"copywriting-uk",source:"marketing-seo",locative:"w UK",title:"Copywriting UK od £90 â teksty na stronÄ, opisy produktów, SEO | DiSpace",description:"Copywriting UK dla polskich firm w Wielkiej Brytanii. Teksty na stronÄ www, opisy produktów WooCommerce, artykuÅy blogowe pod SEO, oferty i landing page. Ceny od £90, terminy od 3 dni. Wycena 24 h.",label:"Copywriting â UK (PL)"},{slug:"projekt-logo-uk",source:"design-druk",locative:"w UK",title:"Projekt logo UK od £190 â logo dla polskich firm w Anglii | DiSpace",description:"Projekt logo dla polskich firm w UK i Anglii. Autorskie logo, ksiÄga znaku, warianty kolorystyczne i pliki do druku oraz web. Ceny od £190, projekt w 5â7 dni.",label:"Projekt logo â UK (PL)"},{slug:"identyfikacja-wizualna-uk",source:"design-druk",locative:"w UK",title:"Identyfikacja wizualna UK â brand book dla firm w Anglii | DiSpace",description:"Identyfikacja wizualna dla polskich firm w Wielkiej Brytanii â logo, brand book, papier firmowy, wizytówki, szablony social media i wzorce druku. Spójna marka w 2â3 tygodnie.",label:"Identyfikacja wizualna â UK (PL)"},{slug:"projekt-ulotki-uk",source:"design-druk",locative:"w UK",title:"Projekt ulotki UK od £90 â ulotki reklamowe dla firm w Anglii | DiSpace",description:"Projekt ulotki reklamowej dla polskich firm w UK. Ulotki A6/A5/DL, skÅadane, dwustronne â gotowe pliki PDF do druku UK (CMYK, spady). Cena od £90, projekt w 3â5 dni.",label:"Projekt ulotki â UK (PL)"},{slug:"projekt-wizytowki-uk",source:"design-druk",locative:"w UK",title:"Projekt wizytówki UK od £60 â wizytówki dla firm w Anglii | DiSpace",description:"Projekt wizytówki firmowej dla polskich firm w UK. Wizytówki jedno- i dwustronne, standard 85Ã55 mm, pliki gotowe do druku UK (CMYK, spady). Cena od £60, projekt w 2â3 dni.",label:"Projekt wizytówki â UK (PL)"},{slug:"gadzety-reklamowe-uk",source:"design-druk",locative:"w UK",title:"Gadżety reklamowe UK â projekt i nadruk dla firm w Anglii | DiSpace",description:"Projekt i nadruk gadżetów reklamowych dla polskich firm w UK: koszulki, kubki, dÅugopisy, torby, smycze, powerbanki. Projekt graficzny, dobór dostawcy UK i realizacja produkcji.",label:"Gadżety reklamowe â UK (PL)"},{slug:"banery-reklamowe-uk",source:"design-druk",locative:"w UK",title:"Banery reklamowe UK â projekt banera dla firm w Anglii | DiSpace",description:"Projekt baneru reklamowego dla polskich firm w UK: banery zewnÄtrzne, siatki mesh, rollupy, banery na sklep i eventy. Pliki gotowe do druku wielkoformatowego. Wycena 24 h.",label:"Banery reklamowe â UK (PL)"},{slug:"grafiki-social-media-uk",source:"design-druk",locative:"w UK",title:"Grafiki na social media UK â projekt postów dla firm w Anglii | DiSpace",description:"Grafiki na social media dla polskich firm w UK: posty i reels Instagram, Facebook, LinkedIn, TikTok. Spójny szablon marki, kalendarz publikacji i peÅne pakiety miesiÄczne od £190.",label:"Grafiki social media â UK (PL)"}];function we(t){return`/${t}`}function Ze(t){return BA.find(e=>e.slug===t)??null}function see(t){return t?` ${t.replace(/ /g," ")}`:""}const Bg=Ze("agencja-reklamowa-uk"),$e=Ac({method:"GET"}).handler(Sk("8b8db089cc45f0d4cd5eadc700323e9d17318032bf07418cc133370b2fccd991")),kz=[{slug:"uk",locative:"w UK",title:"Strony internetowe UK od £490 â WordPress w 7 dni | DiSpace",description:"Strony internetowe dla polskich firm w UK: WordPress, hosting i SEO w cenie. Wdrożenie w 7 dni, opieka po starcie, cennik od £490. BezpÅatna wycena w 24 h.",label:"Strony internetowe â UK (PL)"},{slug:"glasgow",locative:"w Glasgow",title:"Strony internetowe Glasgow â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Glasgow. Nowoczesny design, SEO i wsparcie bez technicznego stresu.",label:"Strony internetowe â Glasgow (PL)"},{slug:"aberdeen",locative:"w Aberdeen",title:"Strony internetowe Aberdeen â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Aberdeen. Pomagamy zwiÄkszyÄ widocznoÅÄ i zdobywaÄ klientów online.",label:"Strony internetowe â Aberdeen (PL)"},{slug:"edinburgh",locative:"w Edinburgh",title:"Strony internetowe Edinburgh â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Edinburgh. Estetyczny projekt, szybkie wdrożenie i dopracowane SEO.",label:"Strony internetowe â Edinburgh (PL)"},{slug:"falkirk",locative:"w Falkirk",title:"Strony internetowe Falkirk â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Falkirk. Pomagamy pokazaÄ ofertÄ i pozyskiwaÄ wiÄcej zapytaÅ.",label:"Strony internetowe â Falkirk (PL)"},{slug:"londyn",locative:"w Londynie",title:"Strony internetowe Londyn â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Londynie. Nowoczesny wyglÄ
d, dobra struktura i widocznoÅÄ w Google.",label:"Strony internetowe â Londyn (PL)"},{slug:"livingston",locative:"w Livingston",title:"Strony internetowe Livingston â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Livingston. Pomagamy budowaÄ profesjonalny
69wizerunek online.",label:"Strony internetowe â Livingston (PL)"},{slug:"szkocja",locative:"w Szkocji",title:"Strony internetowe Szkocja â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Szkocji. Projekt, wdrożenie, SEO i wsparcie w jednym miejscu.",label:"Strony internetowe â Szkocja (PL)"},{slug:"leeds",locative:"w Leeds",title:"Strony internetowe Leeds â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Leeds. Pomagamy zwiÄkszyÄ widocznoÅÄ i zdobywaÄ klientów z internetu.",label:"Strony internetowe â Leeds (PL)"},{slug:"wielka-brytania",locative:"w Wielkiej Brytanii",title:"Strony internetowe Wielka Brytania â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Wielkiej Brytanii. Projektujemy nowoczesne strony nastawione na widocznoÅÄ i zapytania.",label:"Strony internetowe â Wielka Brytania (PL)"},{slug:"liverpool",locative:"w Liverpoolu",title:"Strony internetowe Liverpool â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Liverpoolu. Pomagamy wyróżniÄ markÄ i pozyskiwaÄ klientów online.",label:"Strony internetowe â Liverpool (PL)"},{slug:"manchester",locative:"w Manchesterze",title:"Strony internetowe Manchester â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Manchesterze. Nowoczesny design, SEO i przejrzysta komunikacja oferty.",label:"Strony internetowe â Manchester (PL)"},{slug:"bristol",locative:"w Bristolu",title:"Strony internetowe Bristol â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla firm w Bristolu. Pomagamy budowaÄ widocznoÅÄ i profesjonalny wizerunek online.",label:"Strony internetowe â Bristol (PL)"},{slug:"inverness",locative:"w Inverness",title:"Strony internetowe Inverness â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Inverness. Estetyczne, szybkie i gotowe do pozycjonowania strony www.",label:"Strony internetowe â Inverness (PL)"},{slug:"birmingham",locative:"w Birmingham",title:"Strony internetowe Birmingham â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Birmingham i West Midlands. Bilingual SEO, Google Business Profile, integracje rezerwacji i pÅatnoÅci.",label:"Strony internetowe â Birmingham (PL)"},{slug:"nottingham",locative:"w Nottingham",title:"Strony internetowe Nottingham â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Nottingham i East Midlands. WordPress, hosting UK i lokalne SEO dla dzielnic Radford, Sneinton i Beeston.",label:"Strony internetowe â Nottingham (PL)"},{slug:"sheffield",locative:"w Sheffield",title:"Strony internetowe Sheffield â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Sheffield i South Yorkshire. Nowoczesny WordPress, Core Web Vitals, Google Business Profile i lokalne SEO Sheffield.",label:"Strony internetowe â Sheffield (PL)"},{slug:"newcastle",locative:"w Newcastle",title:"Strony internetowe Newcastle â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Newcastle upon Tyne i caÅym North East. WordPress, hosting UK, SEO Newcastle i integracje sprzedażowe.",label:"Strony internetowe â Newcastle (PL)"},{slug:"cardiff",locative:"w Cardiff",title:"Strony internetowe Cardiff â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Cardiff i caÅej Walii. Bilingual SEO PL/EN, hosting UK i lokalne SEO dla Roath, Grangetown i Canton.",label:"Strony internetowe â Cardiff (PL)"},{slug:"coventry",locative:"w Coventry",title:"Strony internetowe Coventry â od £490, start w 7 dni",description:"Strony internetowe dla firm w Coventry i West Midlands. WordPress, techniczne SEO UK, Google Business Profile i lokalne landing pages pod dzielnice miasta.",label:"Strony internetowe â Coventry (PL)"},{slug:"dundee",locative:"w Dundee",title:"Strony internetowe Dundee â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Dundee i Tayside. WordPress, hosting UK i lokalne SEO dla Lochee, Broughty Ferry i Stobswell.",label:"Strony internetowe â Dundee (PL)"},{slug:"stirling",locative:"w Stirling",title:"Strony internetowe Stirling â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla firm w Stirling i Central Scotland. Nowoczesny WordPress, Core Web Vitals i lokalne SEO Stirling, Bridge of Allan, Bannockburn.",label:"Strony internetowe â Stirling (PL)"},{slug:"perth",locative:"w Perth",title:"Strony internetowe Perth (Szkocja) â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Perth i Perthshire. WordPress, hosting UK, Google Business Profile i lokalne SEO dla Fair City i okolic.",label:"Strony internetowe â Perth Scotland (PL)"},{slug:"paisley",locative:"w Paisley",title:"Strony internetowe Paisley â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Paisley i Renfrewshire. WordPress, techniczne SEO i integracje sprzedażowe dla firm z zachodnich przedmieÅÄ Glasgow.",label:"Strony internetowe â Paisley (PL)"},{slug:"east-kilbride",locative:"w East Kilbride",title:"Strony internetowe East Kilbride â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w East Kilbride i South Lanarkshire. WordPress, hosting UK, lokalne SEO i Google Business Profile.",label:"Strony internetowe â East Kilbride (PL)"},{slug:"motherwell",locative:"w Motherwell",title:"Strony internetowe Motherwell â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Motherwell i North Lanarkshire. WordPress, hosting UK, lokalne SEO i Google Business Profile.",label:"Strony internetowe â Motherwell (PL)"},{slug:"hamilton",locative:"w Hamilton",title:"Strony internetowe Hamilton â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Hamilton i South Lanarkshire. Nowoczesny WordPress, techniczne SEO i integracje bookingu online.",label:"Strony internetowe â Hamilton (PL)"},{slug:"kilmarnock",locative:"w Kilmarnock",title:"Strony internetowe Kilmarnock â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Kilmarnock i East Ayrshire. WordPress, Core Web Vitals i lokalne SEO Kilmarnock, Irvine, Prestwick.",label:"Strony internetowe â Kilmarnock (PL)"},{slug:"ayr",locative:"w Ayr",title:"Strony internetowe Ayr â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Ayr i South Ayrshire. WordPress, hosting UK i lokalne SEO Ayr, Prestwick, Troon.",label:"Strony internetowe â Ayr (PL)"},{slug:"kirkcaldy",locative:"w Kirkcaldy",title:"Strony internetowe Kirkcaldy â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Kirkcaldy i Fife. WordPress, techniczne SEO i integracje bookingu â Kirkcaldy, Glenrothe
69s, Burntisland.",label:"Strony internetowe â Kirkcaldy (PL)"},{slug:"dunfermline",locative:"w Dunfermline",title:"Strony internetowe Dunfermline â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Dunfermline i West Fife. WordPress, Core Web Vitals i lokalne SEO pod caÅy korytarz M90.",label:"Strony internetowe â Dunfermline (PL)"},{slug:"greenock",locative:"w Greenock",title:"Strony internetowe Greenock â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Greenock i Inverclyde. WordPress, hosting UK i lokalne SEO Greenock, Gourock, Port Glasgow.",label:"Strony internetowe â Greenock (PL)"},{slug:"troon",locative:"w Troon",title:"Strony internetowe Troon â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Troon i South Ayrshire. WordPress, hosting UK i lokalne SEO Troon, Prestwick, Ayr.",label:"Strony internetowe â Troon (PL)"},{slug:"prestwick",locative:"w Prestwick",title:"Strony internetowe Prestwick â od £490, start w 7 dni",description:"Projektujemy strony internetowe dla polskich firm w Prestwick i wokóŠlotniska Prestwick Airport. WordPress, techniczne SEO i integracje bookingu.",label:"Strony internetowe â Prestwick (PL)"},{slug:"irvine",locative:"w Irvine",title:"Strony internetowe Irvine â od £490, start w 7 dni",description:"Tworzymy strony internetowe dla polskich firm w Irvine i North Ayrshire. WordPress, hosting UK i lokalne SEO Irvine, Kilwinning, Saltcoats.",label:"Strony internetowe â Irvine (PL)"}];function Mc(t){return`/strony-internetowe-${t}`}function Rx(t){return kz.find(e=>e.slug===t)??null}const lee=[{path:"/pl",label:"Strona gÅówna (PL)"},{path:"/pl/kontakt",label:"Kontakt (PL)"},{path:"/pl/portfolio",label:"Portfolio (PL)"},{path:"/strony-internetowe-uk",label:"Strony internetowe UK (PL)"},{path:"/pl/oferta/marketing-seo",label:"Oferta â Marketing i SEO (PL)"},{path:"/pl/oferta/design-druk",label:"Oferta â Design i druk (PL)"},{path:"/pl/baza-wiedzy",label:"Baza wiedzy (PL)"},{path:"/pl/dispace-formularz",label:"Formularz wyceny (PL)"},{path:"/pl/regulamin",label:"Regulamin (PL)"},{path:"/pl/polityka-prywatnosci",label:"Polityka prywatnoÅci (PL)"},{path:"/pl/cookies",label:"Cookies (PL)"},...kz.map(t=>({path:Mc(t.slug),label:t.label})),...BA.map(t=>({path:we(t.slug),label:t.label})),{path:"/en",label:"Home (EN)"},{path:"/en/contact",label:"Contact (EN)"},{path:"/en/portfolio",label:"Portfolio (EN)"},{path:"/en/services/web-shops",label:"Services â Websites & shops (EN)"},{path:"/en/services/marketing-seo",label:"Services â Marketing & SEO (EN)"},{path:"/en/services/design-print",label:"Services â Design & print (EN)"},{path:"/en/knowledge-base",label:"Knowledge base (EN)"},{path:"/en/dispace-form",label:"Quote form (EN)"},{path:"/en/terms",label:"Terms (EN)"},{path:"/en/privacy-policy",label:"Privacy policy (EN)"},{path:"/en/cookies",label:"Cookies (EN)"}],cee="https://dispace.uk",$A="https://dispace.uk",_9="https://dispace.lovable.app";function T9(t){const e=t.startsWith("/")?t:`/${t}`;return`https://image.thum.io/get/width/1200/crop/630/noanimate/wait/4/viewportWidth/1200/maxAge/12/${$A}${e}`}function uee(t){const e=t.startsWith("/")?t:`/${t}`;return`https://image.thum.io/get/width/1200/crop/630/noanimate/wait/4/viewportWidth/1200/maxAge/12/${_9}${e}`}function dee(t){const e=t.startsWith("/")?t:`/${t}`;return`https://image.thum.io/get/width/${1180+Date.now()%41}/crop/630/noanimate/wait/5/viewportWidth/1200/maxAge/0/${$A}${e}`}const pee=[{value:"Organization",label:"Organization",hint:"Firma â nazwa, logo, kontakt."},{value:"LocalBusiness",label:"Local Business",hint:"Firma lokalna z adresem i godzinami."},{value:"Article",label:"Article",hint:"ArtykuÅ â tytuÅ, autor, data publikacji."},{value:"BlogPosting",label:"Blog Posting",hint:"Wpis blogowy."},{value:"Event",label:"Event",hint:"Wydarzenie â data, miejsce."},{value:"FAQPage",label:"FAQ",hint:"Lista pytaÅ i odpowiedzi."},{value:"BreadcrumbList",label:"Breadcrumb",hint:"Åcieżka nawigacji."}];function Ne(t){if(typeof t!="string")return;const e=t.trim();return e||void 0}function E9(t,e,a){if(!t)return null;const i=e??{},r={"@context":"https://schema.org","@type":t};switch(t){case"Organization":case"LocalBusiness":{const s={...r,name:Ne(i.name)??"Dispace",url:Ne(i.url)??a.url};
69return Ne(i.logo)&&(s.logo=Ne(i.logo)),Ne(i.telephone)&&(s.telephone=Ne(i.telephone)),Ne(i.email)&&(s.email=Ne(i.email)),(Ne(i.street)||Ne(i.city)||Ne(i.postalCode)||Ne(i.country))&&(s.address={"@type":"PostalAddress",streetAddress:Ne(i.street),addressLocality:Ne(i.city),postalCode:Ne(i.postalCode),addressCountry:Ne(i.country)}),t==="LocalBusiness"&&(Ne(i.lat)||Ne(i.lng))&&(s.geo={"@type":"GeoCoordinates",latitude:Ne(i.lat),longitude:Ne(i.lng)}),s}case"Article":case"BlogPosting":return{...r,headline:Ne(i.headline)??a.title,description:Ne(i.description)??a.description,image:Ne(i.image)??a.image??void 0,author:{"@type":"Person",name:Ne(i.author)??"Dispace"},datePublished:Ne(i.datePublished),dateModified:Ne(i.dateModified)??Ne(i.datePublished),mainEntityOfPage:a.url};case"Event":return{...r,name:Ne(i.name)??a.title,startDate:Ne(i.startDate),endDate:Ne(i.endDate),eventStatus:"https://schema.org/EventScheduled",eventAttendanceMode:Ne(i.attendanceMode)??"https://schema.org/OfflineEventAttendanceMode",location:Ne(i.locationName)?{"@type":"Place",name:Ne(i.locationName),address:Ne(i.locationAddress)}:void 0,description:Ne(i.description)??a.description};case"FAQPage":{const s=Array.isArray(i.items)?i.items:[];return{...r,mainEntity:s.filter(c=>Ne(c?.question)&&Ne(c?.answer)).map(c=>({"@type":"Question",name:c.question,acceptedAnswer:{"@type":"Answer",text:c.answer}}))}}case"BreadcrumbList":{const s=Array.isArray(i.items)?i.items:[];return{...r,itemListElement:s.filter(c=>Ne(c?.name)&&Ne(c?.url)).map((c,d)=>({"@type":"ListItem",position:d+1,name:c.name,item:c.url}))}}default:return null}}const Dx=[{slug:"manchester",name:"Manchester",region:"Greater Manchester",districts:["Manchester City Centre","Salford","Trafford","Oldham","Stockport","Bury","Rochdale","Tameside"],industries:["Construction","Hospital
69ity","Retail","Automotive","Beauty salons","Professional services"]},{slug:"birmingham",name:"Birmingham",region:"West Midlands",districts:["Birmingham City Centre","Digbeth","Edgbaston","Handsworth","Sparkhill","Solihull","Walsall","Wolverhampton"],industries:["Manufacturing","Construction","Restaurants & takeaways","Automotive","Healthcare","Trades"]},{slug:"leeds",name:"Leeds",region:"West Yorkshire",districts:["Leeds City Centre","Headingley","Roundhay","Beeston","Armley","Bradford","Wakefield","Huddersfield"],industries:["Financial services","Construction","Hospitality","Retail","Fitness studios","Cleaning services"]},{slug:"liverpool",name:"Liverpool",region:"Merseyside",districts:["Liverpool City Centre","Anfield","Everton","Toxteth","Wavertree","Bootle","Birkenhead","St Helens"],industries:["Hospitality","Construction","Automotive","Beauty & salons","Retail","Removals & couriers"]},{slug:"bristol",name:"Bristol",region:"South West England",districts:["Bristol City Centre","Clifton","Bedminster","Southville","Redfield","Fishponds","Bath","Weston-super-Mare"],industries:["Creative studios","Hospital
69ity premium","Fitness & wellness","Photography","Sustainability brands","Cleaning premium"]},{slug:"edinburgh",name:"Edinburgh",region:"Scotland",districts:["Edinburgh City Centre","Leith","Newington","Morningside","Portobello","Corstorphine","Musselburgh","Livingston"],industries:["Financial services","Hospitality & tourism","Legal & professional","Tech startups","Retail","Creative studios"]},{slug:"glasgow",name:"Glasgow",region:"Scotland",districts:["Glasgow City Centre","West End","Southside","Merchant City","Partick","Dennistoun","Paisley","East Kilbride"],industries:["Construction","Hospitality","Retail","Automotive","Healthcare","Trades & services"]},{slug:"aberdeen",name:"Aberdeen",region:"Scotland (North East)",districts:["Aberdeen City Centre","Old Aberdeen","Bridge of Don","Cults","Dyce","Westhill","Peterhead","Inverurie"],industries:["Oil & gas services","Engineering","Hospitality","Construction","Professional services","Retail"]},{slug:"dundee",name:"Dundee",region:"Scotland (Tayside)",districts:["Dundee City Centre","Broughty Ferry","Lochee","West End","Downfield","Monifieth","Carnoustie","Arbroath"],industries:["Life sciences","Digital & gaming","Hospitality","Retail","Construction","Healthcare"]},{slug:"inverness",name:"Inverness",region:"Scotland (Highlands)",districts:["Inverness City Centre","Crown","Culloden","Westhill","Smithton","Nairn","Dingwall","Fort William"],industries:["Tourism & hospitality","Outdoor & adventure","Construction","Retail","Food & drink","Professional services"]},{slug:"stirling",name:"Stirling",region:"Scotland (Central)",districts:["Stirling City Centre","Bridge of Allan","Dunblane","Bannockburn","Causewayhead","Alloa","Falkirk","Callander"],industries:["Tourism & heritage","Education services","Hospitality","Retail","Construction","Professional services"]},{slug:"perth",name:"Perth",region:"Scotland (Perthshire)",districts:["Perth City Centre","Bridgend","Scone","Craigie","Letham","Crieff","Blairgowrie","Auchterarder"],industries:["Insurance & finance","Hospitality","Whisky & food","Tourism","Retail","Agriculture services"]},{slug:"troon",name:"Troon",region:"Scotland (South Ayrshire)",districts:["Troon Town Centre","Barassie","Loans","Muirhead","Fullarton","Prestwick","Monkton","Symington"],industries:["Golf tourism & hospitality","B&B and short-let","Food & drink","Beauty & wellness","Construction","Transport & taxi"]},{slug:"prestwick",name:"Prestwick",region:"Scotland (South Ayrshire)",districts:["Prestwick Town Centre","Kingcase","Monkton","Adamton","St Nicholas","Ayr","Troon","Symington"],industries:["Airport transfers","Airport parking","Hospitality & B&B","Food & drink","Cleaning & laundry","Logistics & couriers"]},{slug:"irvine",name:"Irvine",region:"Scotland (North Ayrshire)",districts:["Irvine Town Centre","Bourtreehill","Girdle Toll","Dreghorn","Kilwinning","Saltcoats","Stevenston","Ardrossan"],industries:["Construction & trades","Logistics & transport","Automotive services","Cleaning & facilities","Food & drink","Beauty & wellness"]}];function A9(t){return{city:t.name,slug:t.slug,service:"seo",title:`SEO ${t.name} â Local SEO & Google Rankings Agency | DiSpace`,description:`SEO agency in ${t.name}. We help ${t.region} businesses rank on Google Maps and page 1 for local keywords. Monthly reports, no 12-month contracts, from £290/mo.`,heroHeadline:`SEO ${t.name} â get to page 1 of Google for the searches your customers actually type.`,heroSubhead:`Local SEO, technical SEO and content that lifts ${t.name} businesses into the Google Map Pack and top 10 organic results. Monthly reports, honest KPIs, no lock-in.`,benefits:[{title:`${t.name} local SEO`,body:`Google Business Profile optimisation, citations, and hyper-local landing pages for every ${t.region} district â the fastest way into the Map Pack.`},{title:"Technical SEO on Core Web Vitals",body:"Full audit, structured data, sitemap, canonicals, LCP under 2s. We fix what quietly blocks your rankings before we build new content."},{title:"Content that ranks in the UK",body:`Keyword research on real ${t.name} search volumes, briefs written for intent, and monthly publishing cadence that actually holds.`}
69,{title:"Transparent reporting",body:"Monthly PDF report + live Looker dashboard. Every ranking, click and lead sourced from Search Console â no vanity metrics."},{title:`Coverage across ${t.region}`,body:`We build sub-landing pages for the ${t.districts.slice(0,3).join(", ")} areas â because "SEO ${t.name.toLowerCase()}" alone is too broad to convert.`},{title:"No 12-month lock-in",body:"Rolling monthly agreement. If we don't move the needle in 90 days, you leave â with all reports and assets you paid for."}],districts:[...t.districts],industries:[...t.industries],faq:[{q:`How much does SEO in ${t.name} cost?`,a:`Our ${t.name} SEO packages start at £290/mo for local businesses (Google Business Profile + on-page + 2 content pieces) and go up to £1,200/mo for full technical SEO plus link building. We quote based on your competitive landscape â no packages sold blind.`},{q:`How long until I see results from SEO in ${t.name}?`,a:`Local SEO (Map Pack) typically shows movement in 4â8 weeks. Organic rankings for competitive commercial keywords in ${t.region} take 3â6 months. We publish a baseline and monthly delta so you see progress every 30 days, not "trust me".`},{q:`Do you work with Polish businesses in ${t.name}?`,a:"Yes â we're bilingual (PL/EN). We can run parallel SEO for Polish-language searches (diaspora audience) and English-language searches (local UK market) from one strategy, using proper hreflang and separate landing pages."},{q:"What makes DiSpace different from other UK SEO agencies?",a:"No 12-month contracts. Monthly report with real Search Console data (not agency dashboards). Direct contact with the strategist, not an account manager. And we publish the technical audit findings in plain English."},{q:`Which ${t.name} areas do you cover?`,a:`All of ${t.region}: ${t.districts.join(", ")} and surrounding towns. For businesses serving multiple districts we build dedicated landing pages per area â this is what actually ranks in the Map Pack.`}]}}function P9(t){return{city:t.name,slug:t.slug,service:"web-design",title:`Web Design ${t.name} â Websites & E-commerce Agency | DiSpace`,description:`Web design agency in ${t.name}. Fast WordPress websites and WooCommerce shops for ${t.region} businesses. From £490, launch in 5â14 days, hosting included.`,heroHeadline:`Web design ${t.name} â fast, SEO-ready websites built to bring in enquiries.`,heroSubhead:`We design and build WordPress websites and WooCommerce shops for ${t.name} businesses. Green Core Web Vitals, full on-page SEO, UK hosting included. From £490, live in 5â14 days.`,benefits:[{title:`${t.name} businesses build in 5â14 days`,body:`Small brochure sites go live in a week. E-commerce and multi-page ${t.region} business sites launch in 2â3 weeks. No 3-month "discovery phases".`},{title:"Green Core Web Vitals",body:"LCP under 2s, zero CLS, INP under 200ms. Google rewards it; your customers don't bounce. We ship every site on WebP/AVIF images with priority preload."},{title:"SEO on day one",body:`Every page ships with clean semantic HTML, schema.org markup, sitemap, robots.txt and proper meta tags. Local schema for ${t.name} with areaServed and geo coordinates.`},{title:"UK hosting included",body:"Fast UK-based hosting with SSL, backups, 99.9% uptime SLA â bundled with the build for the first 12 months. No hidden monthly fees on day 30."},{title:"WordPress you can actually edit",body:"We ship every site with a clean Gutenberg + ACF stack and a 20-minute Loom walkthrough. Edit copy, swap images, add pages â no code, no rebuild fees."},{title:`Design ${t.name} clients accept`,body:`We match the visual bar of local ${t.name} brands â not "template with Envato". Custom typography, on-brand colour system, hand-crafted components.`}],districts:[...t.districts],industries:[...t.industries],faq:[{q:`How much does a website in ${t.name} cost?`,a:"From £490 for a one-page brochure site to £1,900 for a full multi-page business website. WooCommerce shops start at £1,900. Every quote is fixed â no hourly billing, no surprise invoices at launch."},{q:`How long does it take to build a website in ${t.name}?`,a:"Brochure sites: 5 working days. Business websites (6â12 pages): 2 weeks. WooCommerce shops: 2â4 weeks. We book slots on a first-come basis â the earliest start is usually next Monday."},{q:"Do you work with businesses across the UK, not just in one city?",a:`Yes. We're based in the UK and work with businesses across ${t.region} and the wider country. Communication is fully remote (Zoom, WhatsApp, email) â no wasted travel time in the quote.`},{q:"Will my site rank on Google after launch?",a:`Every website we build ships SEO-ready: schema, meta, sitemap, Core Web Vitals green. Ranking on competitive ${t.name} keywords takes 3â6 months of ongoing SEO â we can quote that separately, but the site itself won't hold you back on day one.`},{q:"Do you offer ongoing support after launch?",a:"Yes â care plans from £39/mo (hosting, SSL, weekly backups, WordPress core & plugin updates, priority support). Or you can host elsewhere and only call us for changes â your choice."}]}}const IA=[...Dx.map(A9),...Dx.map(P9)];function C9(t){return t.service==="seo"?`/en/seo-${t.slug}`:`/en/web-design-${t.slug}`}function WA(t,e){return IA.find(a=>a.service===t&&a.slug===e)??null}const R9=[{pl:"/pl/wycena-strony",en:"/en/website-quote"},{pl:"/litery-3d-swietlne",en:"/en/3d-led-letters"}];function kh(t){if(!t)return"/";let e=t.split("#")[0].split("?")[0];return e.startsWith("/")||(e=`/${e}`),e.length>1&&e.endsWith("/")&&(e=e.replace(/\/+$/,"")),e.toLowerCase()}function D9(){const t=new Map,e=a=>{a.pl&&t.set(kh(a.pl),a),a.en&&t.set(kh(a.en),a)};for(const a of eu)e({pl:a.pl??null,en:a.en??null});
69for(const a of R9)e(a);for(const a of kz){const i=IA.find(r=>r.service==="web-design"&&r.slug===a.slug);i&&e({pl:Mc(a.slug),en:C9(i)})}return t}const O9=D9();function U9(t){const e=kh(t),a=O9.get(e);return a||(e.startsWith("/en")?{pl:null,en:e}:{pl:e,en:null})}function nt(t,e){const a=kh(t),{pl:i,en:r}=U9(a),s=[{rel:"canonical",href:e?.trim()||`${Dn}${a==="/"?"/":a}`}];return i&&s.push({rel:"alternate",hreflang:"pl",href:`${Dn}${i}`}),r&&s.push({rel:"alternate",hreflang:"en",href:`${Dn}${r}`}),s.push({rel:"alternate",hreflang:"x-default",href:`${Dn}${i??r??a}`}),s}const Me="https://dispace.uk";function Ie({path:t,override:e,defaultTitle:a,defaultDescription:i,ogType:r="website"}){const s=e?.title||a,c=e?.description||i,p=e?.ogImage==="none"?null:e?.ogImage||T9(t),h=`${Me}${t}`,f=e?.canonicalUrl?.trim()||h,m=e?.ogTitle||s,g=e?.ogDescription||c,z=e?.twitterTitle||m,j=e?.twitterDescription||g,v=e?.twitterImage||p,_=e?.twitterCard||(v?"summary_large_image":"summary"),S=[];S.push(e?.noindex?"noindex":"index"),S.push(e?.follow===!1?"nofollow":"follow");const E=[{title:s},{name:"description",content:c},{property:"og:title",content:m},{property:"og:description",content:g},{property:"og:url",content:f},{property:"og:type",content:r},{name:"twitter:title",content:z},{name:"twitter:description",content:j},{name:"twitter:card",content:_},{name:"robots",content:S.join(", ")}];p&&E.push({property:"og:image",content:p},{property:"og:image:width",content:"1200"},{property:"og:image:height",content:"630"}),v&&E.push({name:"twitter:image",content:v});const T=[],O=e?.schemaType??null;if(O){const H=e?.schemaData,U=H&&typeof H=="object"&&!Array.isArray(H)?H:null,R=E9(O,U,{url:f,title:s,description:c,image:p});R&&T.push({type:"application/ld+json",children:JSON.stringify(R)})}return{meta:E,links:nt(t,e?.canonicalUrl?.trim()||null),scripts:T}}const re="https://dispace.uk";function ml(t){return{type:"application/ld+json",children:JSON.stringify(t)}}function Hh(t){return ml({"@context":"https://schema.org","@type":"ProfessionalService","@id":`${re}/#localbusiness`,name:"DiSpace Studio",image:`${re}/favicon.ico`,url:t==="pl"?`${re}/pl/kontakt`:`${re}/en/contact`,telephone:"+44 7476 052809",email:"[email protected]",priceRange:"££",address:{"@type":"PostalAddress",streetAddress:"14A Reidvale St",addressLocality:"Glasgow",postalCode:"G31 1SZ",addressRegion:"Scotland",addressCountry:"GB"},geo:{"@type":"GeoCoordinates",latitude:55.8612,longitude:-4.215},areaServed:["GB","IE"],openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"17:00"}]})}function Ea(t){return ml({"@context":"https://schema.org","@type":"FAQPage",mainEntity:t.map(e=>({"@type":"Question",name:e.q,acceptedAnswer:{"@type":"Answer",text:e.a}}))})}function L9(t){return ml({"@context":"https://schema.org","@type":"AdvertisingAgency","@id":`${t.url}#advertising-agency`,name:"DiSpace â Agencja reklamowa UK",image:`${re}/favicon.ico`,url:t.url,telephone:"+44 7476 052809",email:"[email protected]",priceRange:"££",address:{"@type":"PostalAddress",streetAddress:"14A Reidvale St",addressLocality:"Glasgow",postalCode:"G31 1SZ",addressRegion:"Scotland",addressCountry:"GB"},geo:{"@type":"GeoCoordinates",latitude:55.8612,longitude:-4.215},areaServed:(t.areaServed??["United Kingdom","England","Scotland","Wales"]).map(e=>({"@type":"Country",name:e})),openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"17:00"}]})}function aa(t){return ml({"@context":"https://schema.org","@type":"Service",name:t.name,description:t.description,serviceType:t.serviceType??t.name,provider:{"@type":"Organization",name:"DiSpace",url:re},areaServed:(t.areaServed??["GB"]).map(e=>({"@type":"Country",name:e})),url:t.url})}function rt(t){return ml({"@context":"https://schema.org","@type":"Article",mainEntityOfPage:{"@type":"WebPage","@id":t.url},headline:t.headline,description:t.description,image:t.image?[t.image]:void 0,datePublished:t.datePublished,dateModified:t.datePublished,author:{"@type":"Person",name:t.authorName},publisher:{"@type":"Organization",name:"DiSpace",logo:{"@type":"ImageObject",url:`${re}/favicon.ico`}},inLanguage:t.inLanguage})}function Re(t){return ml({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:t.map((e,a)=>({"@type":"ListItem",position:a+1,name:e.name,item:e.url}))})}const hee=[{q:"Czy projektujecie strony internetowe dla firm dziaÅajÄ
cych w UK?",a:"Tak - strony internetowe UK to nasza gÅówna specjalizacja od 2018 roku. WspóÅpracujemy z polskimi i miÄdzynarodowymi firmami z Glasgow, Edynburga, Manchesteru, Londynu oraz caÅej Wielkiej Brytanii i Irlandii, a wszystkie projekty dostosowujemy do brytyjskich standardów prawnych (cookies, GDPR, regulamin) oraz lokalnych przyzwyczajeÅ zakupowych. DziÄki temu dostajesz stronÄ gotowÄ
od pierwszego dnia do pracy z klientami z rynku UK, a nie szablon âuniwersalnyâ, który trzeba potem ÅataÄ.",tag:"Rynek UK"},{q:"Na czym dokÅadnie polega tworzenie stron i sklepów online w DiSpace?",a:"Tworzenie stron i sklepów online prowadzimy end-to-e
69nd: zaczynamy od krótkiego briefu i ustalenia celów biznesowych, projektujemy architekturÄ informacji i UX, rysujemy indywidualny layout w Figmie, a nastÄpnie wdrażamy caÅoÅÄ w WordPressie lub WooCommerce - z pÅatnoÅciami, kurierami i panelem do samodzielnej edycji. Po publikacji zostajemy z TobÄ
na pokÅadzie: dbamy o aktualizacje, backupy, monitoring i drobne zmiany, wiÄc nie musisz szukaÄ programisty za każdym razem, gdy chcesz dodaÄ nowÄ
usÅugÄ lub produkt.",tag:"Proces"},{q:"Czy oferujecie tanie strony internetowe w Wielkiej Brytanii?",a:"Tak - mamy w cenniku tanie strony internetowe w Wielkiej Brytanii oparte o sprawdzony framework startowy, który pozwala uruchomiÄ profesjonalnÄ
witrynÄ firmowÄ
już od 690 GBP, zachowujÄ
c responsywnoÅÄ, podstawowe SEO i poprawne wczytywanie siÄ na telefonach. Dla bardziej rozbudowanych projektów - sklepów WooCommerce, stron wielojÄzycznych czy serwisów rezerwacyjnych - przygotowujemy indywidualne wyceny, ale zawsze pokazujemy, co dokÅadnie dostajesz w danej kwocie, wiÄc nie ma niespodzianek w trakcie projektu.",tag:"Cennik"},{q:"Czy zajmujecie siÄ również pozycjonowaniem strony w Google?",a:"Tak, pozycjonowanie strony w Google jest u nas wbudowane w proces tworzenia witryny, a nie dokÅadane âkiedyÅ późniejâ. Już na etapie projektu dobieramy frazy kluczowe, planujemy strukturÄ nagÅówków H1âH3, konfigurujemy Schema, Rank Math, Google Search Console i Core Web Vitals, a po starcie możemy prowadziÄ dÅugofalowe dziaÅania SEO on-page i lokalne SEO w Google Maps dla Glasgow, Edynburga i innych miast UK. DziÄki temu strona od razu jest gotowa, żeby wbijaÄ siÄ na pierwszÄ
stronÄ wyników bez koniecznoÅci kosztownego âratowania SEOâ po roku.",tag:"SEO"},{q:"Dlaczego budujecie strony na WordPressie i co to oznacza dla mnie jako klienta?",a:"WordPress wybieramy Åwiadomie, bo to najpopularniejszy system zarzÄ
dzania treÅciÄ
na Åwiecie (ponad 40% wszystkich stron w internecie) - co oznacza ogromny ekosystem wtyczek, integracji i ekspertów, a dla Ciebie zero uzależnienia od jednej agencji. W praktyce po wdrożeniu samodzielnie zmieniasz teksty, zdjÄcia, ceny i wpisy blogowe z poziomu czytelnego panelu, bez znajomoÅci kodu - nauka obsÅugi to dosÅownie kilkanaÅcie minut. Dodatkowo WordPress Åwietnie wspóÅpracuje z WooCommerce, narzÄdziami SEO oraz integracjami pÅatnoÅci Stripe, PayPal czy Klarna, wiÄc system roÅnie razem z Twoim biznesem.",tag:"WordPress"},{q:"Czy moja nowa strona bÄdzie dziaÅaÄ dobrze na telefonach i tabletach?",a:"Tak - każdÄ
stronÄ projektujemy w podejÅciu Mobile-first, czyli najpierw ukÅadamy layout pod ekran smartfona, a dopiero potem rozbudowujemy widok na tablety i komputery. Testujemy responsywnoÅÄ na realnych urzÄ
dzeniach iOS i Android, dbamy o duże, czytelne przyciski, lekkie grafiki i szybkie wczytywanie nawet przy sÅabszym 4G, bo to wÅaÅnie z telefonów pochodzi dziÅ wiÄkszoÅÄ ruchu i decyzji zakupowych w UK. Efekt: niska liczba odrzuceÅ, wyższa konwersja i lepsze pozycje w Google, które od lat wprost preferuje strony zoptymalizowane pod urzÄ
dzenia mobilne.",tag:"Mobile-first"},{q:"Czy możecie przejÄ
Ä stronÄ, którÄ
zrobiÅa wczeÅniej inna agencja?",a:"Tak, regularnie przejmujemy projekty po innych studiach i freelancerach - robimy audyt techniczny i SEO, porzÄ
dkujemy kod, wymieniamy przestarzaÅe wtyczki i wdrażamy redesign zachowujÄ
c dotychczasowy ruch organiczny i adresy URL. JeÅli stara strona byÅa już dobrze rozpoznawana w Google, zabezpieczamy jÄ
odpowiednimi przekierowaniami 301 i hreflang, żebyÅ nie straciÅ ani jednej pozycji w wynikach wyszukiwania w trakcie migracji.",tag:"Migracja"},{q:"Ile zajmuje stworzenie strony lub sklepu internetowego?",a:"Standardowa strona firmowa do 8 podstron zajmuje nam 3â5 tygodni roboczych, a sklep WooCommerce z peÅnÄ
integracjÄ
pÅatnoÅci, kurierów i magazynu - od 6 do 10 tygodni, w zależnoÅci od liczby produktów i niestandardowych funkcji. Pracujemy w tygodniowych kamieniach milowych z podglÄ
dem na żywo, wiÄc na każdym etapie wiesz, co już jest gotowe i kiedy spodziew
69aÄ siÄ nastÄpnej iteracji - bez âmilczenia agencjiâ przez miesiÄ
c.",tag:"Terminy"}],yee=[{q:"Na czym polega pozycjonowanie strony w Google i ile czasu to zajmuje?",a:"Pozycjonowanie strony w Google to dÅugofalowy proces, który ÅÄ
czy optymalizacjÄ technicznÄ
, content marketing i budowÄ autorytetu domeny linkami zewnÄtrznymi. Pierwsze realne wzrosty pozycji widaÄ zwykle po 2â3 miesiÄ
cach, a stabilne efekty (TOP 10 na konkurencyjne frazy) po 4â8 miesiÄ
cach systematycznej pracy - natomiast lokalne SEO dla Glasgow, Edynburga czy Londynu potrafi przynieÅÄ pierwsze telefony od klientów już po kilku tygodniach.",tag:"SEO"},{q:"Czy pomagacie firmom z UK w prowadzeniu kampanii Google Ads i Meta Ads?",a:"Tak - prowadzimy kampanie Google Ads (Search, Performance Max, remarketing) oraz Meta Ads (Facebook i Instagram) dla polskich i brytyjskich firm dziaÅajÄ
cych w Wielkiej Brytanii i Irlandii. Konfigurujemy konwersje, piszemy reklamy, testujemy kreacje wideo i statyczne, a co miesiÄ
c dostajesz czytelny raport z ROAS, CPL i konkretnÄ
rekomendacjÄ
na kolejny okres - bez âagencyjnego żargonuâ.",tag:"Ads"},{q:"Czym jest lokalne SEO i dlaczego jest tak ważne dla firm w Wielkiej Brytanii?",a:"Lokalne SEO to optymalizacja pod frazy z nazwÄ
miasta lub dzielnicy (np. âfryzjer Glasgowâ, âmechanik Edinburghâ) oraz pod pakiet mapowy Google z wizytówkÄ
Google Business Profile. Dla firm usÅugowych w UK to jeden z najszybszych i najtaÅszych kanaÅów pozyskiwania klientów - dobrze prowadzona wizytówka z opiniami potrafi generowaÄ dziesiÄ
tki telefonów miesiÄcznie bez ani jednego funta wydanego na pÅatne reklamy.",tag:"Local SEO"},{q:"Czy musicie mieÄ stronÄ zrobionÄ
przez Was, żeby prowadziÄ marketing?",a:"Nie - pracujemy ze stronami zbudowanymi w dowolnej technologii (WordPress, Shopify, Wix, Squarespace, custom). Robimy audyt, podÅÄ
czamy GA4, Tag Managera i Search Console, a nastÄpnie wskazujemy konkretne poprawki techniczne i contentowe, które trzeba wdrożyÄ, żeby kampanie i SEO miaÅy sens. JeÅli wymagana jest wiÄksza przebudowa, możemy jÄ
zrealizowaÄ w naszym zespole lub wspóÅpracowaÄ z Twoim obecnym deweloperem.",tag:"WspóÅpraca"},{q:"Jak wyglÄ
da raportowanie wyników marketingowych?",a:"Co miesiÄ
c dostajesz przejrzysty raport PDF lub dashboard Looker Studio z najważniejszymi metrykami: ruch organiczny, pozycje fraz, koszty kampanii, koszt pozyskania leada, zwrot z reklamy (ROAS) oraz konkretne wnioski i rekomendacje. Raz na kwartaÅ robimy też dÅuższe podsumowanie strategiczne, żeby spojrzeÄ z dystansu, co dziaÅa, a co warto zmieniÄ - wszystko po polsku lub po angielsku, jak wolisz.",tag:"Raporty"},{q:"Czy mogÄ zaczÄ
Ä od jednej usÅugi, np. samego SEO, a potem rozszerzyÄ wspóÅpracÄ?",a:"Tak - wiÄkszoÅÄ klientów zaczyna od jednego konkretnego obszaru (np. SEO, kampanii Google Ads albo prowadzenia Instagrama), a po 2â3 miesiÄ
cach dokÅada kolejne usÅugi, kiedy widzÄ
pierwsze efekty. Nie wymagamy dÅugich kontraktów ani dużego budżetu na start - możesz zaczÄ
Ä od pakietu testowego i skalowaÄ wspóÅpracÄ razem z rozwojem firmy.",tag:"ElastycznoÅÄ"}],K9=[{q:"Czy projekt logo i identyfikacji wizualnej obejmuje również wersje do druku?",a:"Tak - każdy projekt logo dostarczamy w peÅnym pakiecie plików produkcyjnych: wektorowe SVG, AI i EPS, wersje PNG z przezroczystym tÅem, profile kolorystyczne CMYK do druku oraz RGB do internetu, a także ksiÄgÄ znaku z zasadami stosowania. DziÄki temu możesz od razu wysÅaÄ pliki do dowolnej drukarni w UK lub w Polsce, bez koniecznoÅci wracania do nas po âdodatkowe formatyâ.",tag:"Pliki"},{q:"Czy projektujecie również opakowania, etykiety i menu restauracyjne?",a:"Tak - od projektów etykiet wina, piwa i kosmetyków, przez pudeÅka i tuby na produkty e-commerce, po menu restauracyjne, ulotki gastronomiczne i karty daÅ. Pracujemy z lokalnymi drukarniami w Glasgow i Londynie, ale też z producentami w Polsce - możemy zorganizowaÄ caÅy proces produkcji lub przekazaÄ Ci finalne pliki do Twojej zaufanej drukarni.",tag:"Druk"},{q:"Czy mogÄ zamówiÄ tylko projekt graficzny bez druku?",a:"OczywiÅcie - wiÄkszoÅÄ klientów decyduje siÄ na sam projekt, a druk realizuje samodzielnie lub w lokalnej drukarni, którÄ
już zna. Dostajesz od nas wszystkie pliki produkcyjne, instrukcjÄ przygotowania do druku (spady, znaczniki, profile kolorystyczne) oraz wsparcie, jeÅli drukarnia miaÅaby jakiekolwiek pytania techniczne.",tag:"Pliki"},{q:"Czy projekty sÄ
spójne z mojÄ
stronÄ
internetowÄ
i kampaniami reklamowymi?",a:"Tak - to nasz znak rozpoznawczy. Kiedy prowadzimy dla Ciebie również stronÄ internetowÄ
i social media, identyfikacja wizualna automatycznie spina siÄ z layoutem witryny, szablonami postów, kreacjami reklamowymi i materiaÅami drukowanymi. Marka wyglÄ
da spójnie wszÄdzie tam, gdzie pojawia siÄ Twój klient - od posta na Instagramie, przez stronÄ, aż po wizytówkÄ wrÄczanÄ
na spotkaniu.",tag:"SpójnoÅÄ"},{q:"Ile kosztuje projekt logo i identyfikacji wizualnej w DiSpace?",a:"Sam projekt logo zaczyna siÄ od 290 GBP i obejmuje 2â3
69koncepcje, jednÄ
rundÄ poprawek oraz finalne pliki produkcyjne. PeÅna identyfikacja wizualna (logo + system kolorów i typografii + ksiÄga znaku + szablony wizytówek, papieru firmowego i postów social media) startuje od 990 GBP - wycenÄ zawsze podajemy z góry, bez âdodatków za każdy mejlâ.",tag:"Cennik"},{q:"Ile czasu zajmuje stworzenie logo lub peÅnej identyfikacji?",a:"Sam projekt logo zamykamy w 2â3 tygodniach, a peÅnÄ
identyfikacjÄ wizualnÄ
z ksiÄgÄ
znaku i kompletem szablonów w 4â6 tygodniach. Tempo zależy w dużej mierze od szybkoÅci feedbacku z Twojej strony - pracujemy w jasno wyznaczonych etapach (moodboard â koncepcje â wybór kierunku â dopracowanie â pliki finalne), wiÄc na każdym kroku wiesz, czego siÄ spodziewaÄ.",tag:"Terminy"}],M9=[{q:"Co obejmuje pozycjonowanie stron UK w DiSpace?",a:"Pozycjonowanie stron UK w DiSpace to kompletny proces SEO dla polskich firm w Wielkiej Brytanii: audyt techniczny strony (Core Web Vitals, indeksacja, Schema, hreflang PL/EN), optymalizacja on-page (meta, nagÅówki, treÅci pod intencje wyszukiwania w google.co.uk), lokalne SEO z wizytówkÄ
Google Business Profile, link building z brytyjskich domen .co.uk / .uk oraz raport co miesiÄ
c z pozycjami, ruchem i konkretnÄ
listÄ
wdrożonych zmian. Pozycjonowanie stron w UK zaczynamy od £290 / miesiÄ
c â bez umów na lata i z fakturÄ
z UK w GBP.",tag:"Zakres"},{q:"Czym różni siÄ pozycjonowanie UK od pozycjonowania w Polsce?",a:"Pozycjonowanie UK to praca w indeksie google.co.uk, a nie google.pl - inne SERP-y, inna konkurencja, inne intencje wyszukiwania i inne sygnaÅy lokalne (adres UK, numer telefonu +44, Google Business Profile z brytyjskÄ
lokalizacjÄ
). W praktyce oznacza to, że strategia SEO UK dla polskiej firmy w Wielkiej Brytanii musi ÅÄ
czyÄ treÅci po polsku dla polskiej diaspory z sygnaÅami lokalnymi zrozumiaÅymi dla algorytmu Google w UK - inaczej strona rankuje w Polsce, a nie tam, gdzie masz klientów.",tag:"Rynek UK"},{q:"Ile trwa pozycjonowanie UK i kiedy zobaczÄ pierwsze efekty?",a:"Pierwsze wzrosty pozycji przy pozycjonowaniu stron UK zwykle widaÄ po 6-10 tygodniach - na frazach dÅugiego ogona i lokalnych (miasto + usÅuga). Solidne TOP 10 na frazy gÅówne typu âpozycjonowanie ukâ czy âstrony internetowe ukâ to horyzont 4-8 miesiÄcy, a TOP 3 wymaga zwykle 6-12 miesiÄcy konsekwentnej pracy nad treÅciÄ
, linkowaniem wewnÄtrznym i profilem linków zewnÄtrznych - dokÅadnie tak, jak u konkurentów, którzy dziÅ zajmujÄ
te pozycje.",tag:"Czas"},{q:"Ile kosztuje pozycjonowanie strony w UK?",a:"Pakiety SEO UK dla polskich firm zaczynamy od 350 GBP miesiÄcznie (lokalne SEO jedno miasto, wizytówka Google Business Profile, on-page dla 3-5 fraz), a rozbudowane kampanie pozycjonowania stron UK z contentem, link buildingiem i optymalizacjÄ
technicznÄ
to zwykle 600-1500 GBP miesiÄcznie. Cena zależy gÅównie od konkurencyjnoÅci fraz i tempa, w jakim chcesz dojÅÄ do TOP 3 - zawsze pokazujemy, na czym budżet jest wydany i jaki efekt daje w danym miesiÄ
cu.",tag:"Cennik"},{q:"Czy jesteÅcie agencjÄ
SEO UK, która pracuje po polsku?",a:"Tak - DiSpace to agencja SEO UK obsÅugujÄ
ca polskich przedsiÄbiorców w Anglii, Szkocji i Walii w peÅni po polsku. ZespóŠrozumie zarówno realia Google UK (Core Web Vitals, EEAT, lokalne pakiety mapowe), jak i specyfikÄ polskiej diaspory - dwujÄzyczne strony, kierowanie contentu do Polaków w UK oraz do klientów angielskojÄzycznych, hreflang i osobne strategie fraz PL/EN.",tag:"ZespóÅ"},{q:"Na czym polega lokalne SEO UK i kiedy warto je wÅÄ
czyÄ?",a:"Lokalne SEO UK to optymalizacja pod frazy typu âpozycjonowanie Glasgowâ, âstrony internetowe Londynâ czy âmechanik Manchesterâ oraz pod pakiet mapowy Google z wizytówkÄ
Google Business Profile. Dla firm usÅugowych dziaÅajÄ
cych w konkretnym mieÅcie UK to najszybszy kanaÅ SEO - dobrze prowadzona wizytówka z opiniami i regularnymi postami potrafi wygenerowaÄ pierwsze telefony po kilku tygodniach, jeszcze zanim gÅówna strona wejdzie do TOP 10 na frazÄ ogól
69nÄ
.",tag:"Local SEO"},{q:"Czy dacie radÄ wprowadziÄ mojÄ
stronÄ do TOP 3 Google UK?",a:"TOP 3 Google UK jest realne, ale zawsze zależy od trzech rzeczy: konkurencyjnoÅci frazy, autorytetu Twojej domeny (Authority Score / DR) i budżetu na content oraz link building. Na frazach lokalnych typu âpozycjonowanie Edinburghâ czy âstrony internetowe Glasgowâ TOP 3 osiÄ
gamy zwykle w 4-6 miesiÄcy; na frazach ogólnokrajowych (âpozycjonowanie ukâ, âstrony internetowe ukâ) potrzebujemy 8-14 miesiÄcy i systematycznego link buildingu - w audycie pokazujemy konkretny harmonogram dla Twojej frazy.",tag:"TOP 3"},{q:"Co obejmuje audyt SEO UK, od którego zaczynacie wspóÅpracÄ?",a:"Audyt SEO UK obejmuje: analizÄ technicznÄ
(Core Web Vitals, indeksacjÄ, sitemap, robots, hreflang, Schema), audyt on-page (nagÅówki, meta, kanibalizacja fraz, intencje wyszukiwania), analizÄ profilu linków (Authority Score, toksyczne linki), analizÄ konkurencji w Google UK oraz plan dziaÅaÅ na 3-6 miesiÄcy z konkretnym harmonogramem. Audyt dostajesz w PDF plus krótkie spotkanie, na którym tÅumaczymy wnioski i priorytety - bez agencyjnego żargonu.",tag:"Audyt"},{q:"Jak mierzycie skutecznoÅÄ pozycjonowania stron UK?",a:"SkutecznoÅÄ SEO UK mierzymy trzema kanaÅami: pozycjami w Google UK (dedykowany rank tracker dla fraz PL i EN), ruchem organicznym w Google Analytics 4 i realnymi zapytaniami / klikniÄciami w Google Search Console (dane z rzeczywistego indeksu Google UK, nie z narzÄdzi trzecich). Co miesiÄ
c dostajesz raport z konkretnymi liczbami, komentarzem, listÄ
wdrożonych zmian i planem na kolejny okres.",tag:"Raporty"},{q:"Ile linków miesiÄcznie budujecie w ramach pozycjonowania UK?",a:"W pakiecie SEO Growth UK (£590/mc) budujemy 2 linki miesiÄcznie z brytyjskich domen o DR 30+ - guest posty, katalogi branżowe UK, wzmianki w portalach lokalnych. W pakiecie Scale UK (£1200/mc) to 5+ linków miesiÄcznie z DR 40+ plus dziaÅania digital PR (komentarze eksperckie, HARO, cytacje w brytyjskich mediach branżowych). Nie kupujemy linków w farmach ani PBN-ach - Google UK karze takie profile depozycjonowaniem, a naprawa toksycznego profilu linków trwa 6-12 miesiÄcy.",tag:"Link building"},{q:"Czy pozycjonowanie UK dziaÅa też na frazy angielskie, nie tylko polskie?",a:"Tak - w każdym pakiecie SEO UK pracujemy równolegle na frazach polskich (dla polskiej diaspory w UK) i angielskich (dla klientów brytyjskich). Poprawnie skonfigurowany hreflang PL/EN sprawia, że Google.co.uk pokazuje polskÄ
wersjÄ Polakom szukajÄ
cym z UK, a angielskÄ
- użytkownikom brytyjskim. To najczÄstsze źródÅo szybkich wzrostów: firma dostaje ruch z dwóch grup odbiorców na tym samym budżecie SEO.",tag:"PL + EN"},{q:"Czym różni siÄ Wasza agencja SEO UK od agencji z Polski, która âteż robi UKâ?",a:"Trzy realne różnice: (1) rank tracker mierzy pozycje w Google.co.uk codziennie, a nie w Google.pl tygodniowo; (2) link building oparty o brytyjskie domeny .co.uk / .uk, a nie polskie .pl - to inaczej wpÅywa na Authority Score w indeksie UK; (3) faktura w GBP z UK, bez przewalutowaÅ i tÅumaczenia dokumentów. Do tego zespóŠrozumie realia rynku UK: Companies House, VAT UK, pakiet mapowy Google UK, standardy Core Web Vitals dla mobilnego ruchu 4G/5G.",tag:"Porównanie"},{q:"Czy pozycjonowanie UK wymaga zmian na mojej stronie WordPress?",a:"Zwykle tak - w pierwszych 4-6 tygodniach robimy optymalizacjÄ on-page: przepisujemy meta title i description pod frazy z audytu, poprawiamy strukturÄ nagÅówków H1-H3, wdrażamy Schema.org (Organization, LocalBusiness, FAQPage, Service, BreadcrumbList), naprawiamy Core Web Vitals i konfigurujemy hreflang PL/EN. JeÅli strona jest w bardzo zÅym stanie technicznym, proponujemy migracjÄ na nasz framework startowy - zwykle pÅaci siÄ to samo przez 1-2 miesiÄ
ce szybszym wejÅciem do TOP 10 Google UK.",tag:"On-page"},{q:"Ile fraz kluczowych obejmuje pozycjonowanie UK w jednym pakiecie?",a:"SEO Local UK (£290/mc) to 3-5 fraz lokalnych (typu âfryzjer Manchesterâ, âmechanik Sloughâ). Growth UK (£590/mc) to 10-15 fraz PL/EN mieszanych, w tym frazy komercyjne i informacyjne. Scale UK (£1200/mc) obejmuje 30+ fraz plus cluster tematyczny - równolegle pracujemy nad frazami gÅównymi typu âpozycjonowanie ukâ czy âstrony internetowe ukâ oraz long-tail. Wszystkie frazy widzisz w rank trackerze z historiÄ
pozycji.",tag:"Frazy"},{q:"Czy mogÄ przerwaÄ pozycjonowanie UK w każdej chwili?",a:"Tak - wszystkie pakiety pozycjonowania stron UK w DiSpace majÄ
miesiÄczne wypowiedzenie, bez kar, bez zobowiÄ
zaÅ na 12 miesiÄcy. Dostajesz wszystkie wypracowane materiaÅy (audyt, plan dziaÅaÅ, treÅci, dane z rank trackera i Google Search Console) i możesz kontynuowaÄ SEO samodzielnie lub z innÄ
agencjÄ
. W praktyce klienci zostajÄ
Årednio 14-18 miesiÄcy, bo SEO UK zaczyna zwracaÄ budżet po 4-6 miesiÄ
cach.",tag:"Umowa"}
69,{q:"Czy pomożecie z pozycjonowaniem UK sklepu WooCommerce / Shopify?",a:"Tak - pozycjonowanie sklepów UK to osobna specjalizacja DiSpace. Optymalizujemy karty produktów pod frazy long-tail, kategorie pod frazy komercyjne, filtry pod frazy fasetowe. Wdrażamy Schema Product z cenÄ
w GBP, opiniami, availability, konfigurujemy Google Merchant Center UK oraz treÅci blogowe pod frazy poradnikowe. Dla WooCommerce UK i Shopify UK mamy gotowe checklisty on-page i pakiet startowy migracji SEO.",tag:"E-commerce"}],N9=[{q:"Ile kosztujÄ
strony internetowe UK w DiSpace?",a:"Strony internetowe UK zaczynamy wyceniaÄ od 690 GBP za profesjonalnÄ
stronÄ wizytówkowÄ
opartÄ
o sprawdzony framework startowy (responsywna, podstawowe SEO, RODO/GDPR, formularz kontaktowy). Rozbudowane strony firmowe z indywidualnym designem to zwykle 1200-2500 GBP, a sklepy WooCommerce UK z peÅnÄ
integracjÄ
pÅatnoÅci Stripe / Klarna / PayPal - od 2500 GBP. Cena zawsze zawiera zakup domeny, konfiguracjÄ hostingu UK i szkolenie z panelu.",tag:"Cennik"},{q:"Jak dÅugo trwa tworzenie strony internetowej UK?",a:"StandardowÄ
stronÄ firmowÄ
UK do 8 podstron oddajemy w 3-5 tygodni roboczych, sklep WooCommerce UK w 6-10 tygodni. Pracujemy w tygodniowych kamieniach milowych z podglÄ
dem na żywo, wiÄc na każdym etapie widzisz postÄp - żadnego âmilczenia agencjiâ przez miesiÄ
c. Ekspresowe strony internetowe UK oparte o gotowy framework potrafimy uruchomiÄ nawet w 10-14 dni.",tag:"Terminy"},{q:"Dlaczego strony internetowe UK budujecie na WordPressie?",a:"WordPress to najpopularniejszy CMS na Åwiecie (>40% wszystkich stron w internecie) i standard branżowy dla stron internetowych UK dla maÅych i Årednich firm - masz ogromny ekosystem wtyczek, integracji i deweloperów, a Ty samodzielnie edytujesz treÅci z prostego panelu. Dodatkowo WordPress jest bardzo dobrze zoptymalizowany pod SEO UK: Rank Math, Schema, sitemap, hreflang PL/EN, Core Web Vitals i integracja z Google Search Console dziaÅajÄ
out of the box.",tag:"WordPress"},{q:"Czy strony internetowe UK, które robicie, sÄ
responsywne i szybkie?",a:"KażdÄ
stronÄ internetowÄ
UK projektujemy w podejÅciu Mobile-first: najpierw layout pod smartfon, potem rozbudowa na tablet i desktop. Testujemy Core Web Vitals (LCP, INP, CLS) w PageSpeed Insights i optymalizujemy obrazy do WebP / AVIF, lazy loading i cache - wiÄkszoÅÄ naszych stron ma wynik 90+ w Google PageSpeed na mobile, co bezpoÅrednio przekÅada siÄ na wyższe pozycje w Google UK.",tag:"WydajnoÅÄ"},{q:"Czy strony internetowe UK sÄ
od razu zoptymalizowane pod SEO UK?",a:"Tak - każda strona internetowa UK od DiSpace jest przygotowana pod pozycjonowanie UK już na etapie wdrożenia: poprawna struktura nagÅówków H1-H3, meta title / description pod frazy z audytu, Schema.org (Organization, LocalBusiness, FAQPage, Service), sitemap.xml, robots.txt, canonical, hreflang PL/EN oraz podÅÄ
czona Google Search Console. DziÄki temu strona wchodzi do indeksu Google UK w kilka dni od publikacji, a nie po miesiÄ
cach walki.",tag:"SEO"},{q:"Czy zapewniacie hosting strony internetowej w UK?",a:"Tak - wszystkie strony internetowe UK hostujemy na infrastrukturze z serwerami w UK (Londyn), z certyfikatem SSL, dziennymi backupami, monitoringiem uptime 24/7 i CDN. Hosting UK poprawia szybkoÅÄ Åadowania dla brytyjskich użytkowników i jest mocnym sygnaÅem lokalnym dla Google UK - trzymamy koszt hostingu w wideÅkach 15-35 GBP miesiÄcznie w zależnoÅci od ruchu i typu strony.",tag:"Hosting"},{q:"Czy mogÄ samodzielnie edytowaÄ treÅci na mojej stronie internetowej UK?",a:"Tak - każda strona internetowa UK, którÄ
wdrażamy, ma prosty panel WordPress z blokowym edytorem (Gutenberg lub kreator wizualny), wiÄc samodzielnie zmieniasz teksty, zdjÄcia, ceny, wpisy blogowe i banery bez znajomoÅci kodu. Po wdrożeniu prowadzimy krótkie szkolenie online (30-45 min) i zostawiamy Ci PDF z instrukcjÄ
- w praktyce nauka obsÅugi zajmuje kilkanaÅcie minut.",tag:"CMS"},{q:"Czy pomagacie w migracji istniejÄ
cej strony internetowej UK do DiSpace?",a:"Tak - regularnie przejmujemy strony internetowe UK po innych agencjach i freelancerach. Robimy audyt techniczny i SEO, migrujemy treÅci, zachowujemy strukturÄ URL i wdrażamy przekierowania 301, żeby nie straciÄ pozycji w Google UK ani ruchu organicznego. JeÅli stara strona miaÅa problemy z Core Web Vitals, indeksacjÄ
albo byÅa zbudowana na przestarzaÅej technologii - w ramach migracji porzÄ
dkujemy kod i wprowadzamy stronÄ na aktualne standardy Google.",tag:"Migracja"}
69],B9=[{q:"Dlaczego warto wybraÄ WooCommerce UK zamiast innego silnika sklepu?",a:"WooCommerce UK to najpopularniejszy silnik e-commerce w Wielkiej Brytanii dla maÅych i Årednich firm - dziaÅa na WordPressie, wiÄc masz peÅnÄ
kontrolÄ nad kodem, treÅciÄ
i SEO, bez miesiÄcznych opÅat licencyjnych typowych dla Shopify UK. Dla polskich firm w UK jest szczególnie wygodny, bo bez problemu obsÅuguje sklepy wielojÄzyczne (PL/EN), a wszystkie treÅci, karty produktów i regulaminy zoptymalizujesz dokÅadnie tak, jak potrzebuje algorytm Google UK.",tag:"WooCommerce"},{q:"Ile kosztuje wdrożenie sklepu WooCommerce UK w DiSpace?",a:"Wdrożenie sklepu WooCommerce UK dla polskich firm zaczynamy od 2500 GBP za sklep z do 50 produktami, pÅatnoÅciami Stripe/Klarna, integracjÄ
Royal Mail lub DPD oraz konfiguracjÄ
VAT pod przepisy brytyjskie. Rozbudowane sklepy WooCommerce UK z indywidualnym designem, wielojÄzycznoÅciÄ
PL/EN i integracjami ERP/magazynu to zwykle 4000-8000 GBP. Cena zawsze zawiera zakup domeny, hosting UK i szkolenie z panelu WooCommerce.",tag:"Cennik"},{q:"Jakie pÅatnoÅci podepniecie w moim sklepie WooCommerce UK?",a:"W sklepie WooCommerce UK standardowo podpinamy Stripe (karty Visa/Mastercard/Amex, Apple Pay, Google Pay), Klarna (raty i âpay laterâ, bardzo popularne w UK), PayPal oraz opcjonalnie GoCardless (Direct Debit). Wszystko konfigurujemy w GBP, z prawidÅowymi ustawieniami VAT pod HMRC oraz z fakturami PDF wysyÅanymi automatycznie do klienta - dokÅadnie tak, jak wymagajÄ
tego brytyjskie przepisy e-commerce.",tag:"PÅatnoÅci"},{q:"Czy WooCommerce UK poradzi sobie z integracjÄ
kurierów Royal Mail, DPD i Evri?",a:"Tak - WooCommerce UK integrujemy z Royal Mail (Click & Drop), DPD Local, Evri (dawniej Hermes) oraz Parcelforce, tak żeby etykiety generowaÅy siÄ automatycznie z zamówienia, a klient dostawaÅ numer Åledzenia mailem. Dla firm wysyÅajÄ
cych wiÄcej paczek podpinamy też agregatory typu Zenstores lub Veeqo, co znaczÄ
co upraszcza logistykÄ w skali kilkuset zamówieÅ miesiÄcznie.",tag:"Kurierzy"},{q:"WooCommerce UK czy Shopify UK - co lepsze dla polskiej firmy w Anglii?",a:"WooCommerce UK wygrywa, gdy zależy Ci na peÅnej kontroli nad SEO, treÅciÄ
i braku miesiÄcznych opÅat licencyjnych - to zdecydowanie lepszy wybór dla firm, które chcÄ
pozycjonowaÄ sklep w Google UK i budowaÄ dÅugoterminowy ruch organiczny. Shopify UK ma sens, gdy priorytetem jest szybki start bez zaplecza technicznego i gotowe integracje miÄdzynarodowej sprzedaży - w audycie porównujemy koszty w perspektywie 3 lat i doradzamy, co realnie siÄ opÅaca w Twoim modelu biznesowym.",tag:"Porównanie"},{q:"Czy WooCommerce UK jest zoptymalizowane pod SEO UK od startu?",a:"Tak - każdy sklep WooCommerce UK od DiSpace wdrażamy z Rank Math SEO, Schema Product/Offer/BreadcrumbList, sitemap.xml, canonical, hreflang PL/EN, poprawnymi meta title/description i konfiguracjÄ
Google Search Console. DziÄki temu karty produktów WooCommerce UK indeksujÄ
siÄ w Google UK w kilka dni od publikacji i od razu konkurujÄ
o frazy typu ânazwa produktu ukâ czy âkup online ukâ.",tag:"SEO"},{q:"Czy mogÄ samodzielnie dodawaÄ produkty do sklepu WooCommerce UK?",a:"Tak - WooCommerce UK ma prosty panel WordPress, w którym samodzielnie dodajesz produkty, warianty (rozmiar, kolor), ceny, zdjÄcia i kategorie bez znajomoÅci kodu. Po wdrożeniu prowadzimy krótkie szkolenie online (45-60 min) i zostawiamy Ci PDF z instrukcjÄ
- w praktyce dodanie nowego produktu zajmuje 3-5 minut, a import wiÄkszej bazy produktów robimy przez arkusz CSV.",tag:"CMS"},{q:"Czy pomożecie w migracji istniejÄ
cego sklepu do WooCommerce UK?",a:"Tak - regularnie migrujemy sklepy z Shopify, PrestaShop, Magento czy IdoSell do WooCommerce UK. Przenosimy produkty, kategorie, klientów i historiÄ zamówieÅ, zachowujemy strukturÄ URL i wdrażamy przekierowania 301, żeby nie straciÄ pozycji w Google UK ani ruchu organicznego. CaÅa migracja WooCommerce UK zajmuje zwykle 3-5 tygodni w zależnoÅci od skali sklepu.",tag:"Migracja"}],$9=[{q:"Dla kogo najlepiej sprawdzi siÄ Shopify UK?",a:"Shopify UK najlepiej sprawdza siÄ u polskich firm w Wielkiej Brytanii, które chcÄ
uruchomiÄ sklep online szybko, bez zaplecza technicznego i bez martwienia siÄ o hosting, backupy czy aktualizacje - wszystko to jest wliczone w miesiÄcznÄ
subskrypcjÄ. To dobry wybór dla marek DTC, dropshippingu i sklepów, które planujÄ
sprzedaż na wielu rynkach jednoczeÅnie (UK + EU + US), bo Shopify UK ma Åwietne integracje miÄdzynarodowej wysyÅki i multi-currency.",tag:"Kiedy Shopify"}
69,{q:"Ile kosztuje wdrożenie sklepu Shopify UK w DiSpace?",a:"Wdrożenie sklepu Shopify UK dla polskich firm zaczynamy od 1800 GBP za sklep na motywie premium z 30-50 produktami, konfiguracjÄ
Shopify Payments, integracjÄ
kurierów UK i podstawowÄ
optymalizacjÄ
SEO. Sklepy Shopify UK z indywidualnym designem, custom Liquid, wielojÄzycznoÅciÄ
PL/EN i zaawansowanymi integracjami to zwykle 3000-6000 GBP. Do tego doliczasz miesiÄcznÄ
subskrypcjÄ Shopify (od 29 USD za Basic, 79 USD za Shopify).",tag:"Cennik"},{q:"Jakie pÅatnoÅci podÅÄ
czycie w moim sklepie Shopify UK?",a:"W sklepie Shopify UK domyÅlnie konfigurujemy Shopify Payments (najkorzystniejsze prowizje, karty Visa/Mastercard/Amex, Apple Pay, Google Pay) oraz Klarna (âpay in 3â, âpay laterâ - w UK bardzo popularne), a opcjonalnie PayPal i Amazon Pay. Wszystko w GBP, z automatycznymi fakturami VAT pod HMRC - dokÅadnie tak, jak wymaga tego prawo brytyjskie.",tag:"PÅatnoÅci"},{q:"Czy Shopify UK poradzi sobie z integracjÄ
kurierów w Wielkiej Brytanii?",a:"Tak - Shopify UK integrujemy z Royal Mail (Click & Drop przez oficjalnÄ
aplikacjÄ), DPD Local, Evri, Parcelforce oraz z agregatorami typu Starshipit czy Shiptheory. Etykiety generujÄ
siÄ automatycznie z zamówienia, klient dostaje numer Åledzenia mailem, a Ty widzisz status wysyÅki w panelu Shopify - to zdecydowanie najbardziej dopracowany workflow logistyczny wÅród platform e-commerce na rynku UK.",tag:"Kurierzy"},{q:"Shopify UK czy WooCommerce UK - co wybraÄ?",a:"Shopify UK wygrywa, gdy potrzebujesz szybkiego startu (2-4 tygodnie), sprzedaży miÄdzynarodowej i braku odpowiedzialnoÅci za hosting/bezpieczeÅstwo - pÅacisz miesiÄcznÄ
subskrypcjÄ i wszystko po prostu dziaÅa. WooCommerce UK wygrywa, gdy priorytetem jest SEO UK, peÅna kontrola nad kodem i brak comiesiÄcznych opÅat platformowych - dokÅadne porównanie kosztów w perspektywie 3 lat robimy w audycie, bo zwykle jedna z opcji daje 2-3x lepszy zwrot.",tag:"Porównanie"},{q:"Czy Shopify UK jest dobre pod SEO w Google UK?",a:"Shopify UK ma dobre podstawy SEO out of the box (poprawna Schema, sitemap.xml, canonical, mobile-first, szybki CDN), ale ma też swoje ograniczenia - narzuca strukturÄ URL /products/, /collections/, ogranicza edycjÄ pliku robots.txt i utrudnia bardziej zaawansowanÄ
optymalizacjÄ technicznÄ
. W praktyce sklepy Shopify UK dobrze rankujÄ
w Google UK, jeÅli od startu zadbamy o unikalne opisy produktów, blog contentowy, poprawne meta title/description i Schema Product/Offer - wszystko to konfigurujemy podczas wdrożenia.",tag:"SEO"},{q:"Czy mogÄ samodzielnie edytowaÄ sklep Shopify UK po wdrożeniu?",a:"Tak - Shopify UK ma bardzo przyjazny panel, w którym samodzielnie dodajesz produkty, warianty, ceny, kolekcje i wpisy blogowe bez znajomoÅci kodu. Zmiany w wyglÄ
dzie robisz z poziomu edytora motywu (drag & drop). Po wdrożeniu prowadzimy szkolenie online (60 min) i zostawiamy PDF z instrukcjÄ
oraz krótkie wideo - wiÄkszoÅÄ klientów po tygodniu obsÅuguje sklep Shopify UK w peÅni samodzielnie.",tag:"CMS"},{q:"Czy zajmiecie siÄ migracjÄ
mojego sklepu do Shopify UK?",a:"Tak - migrujemy sklepy z WooCommerce, PrestaShop, Magento, BigCommerce czy IdoSell do Shopify UK. Przenosimy produkty (z wariantami, zdjÄciami, kategoriami), klientów, historiÄ zamówieÅ, zachowujemy strukturÄ URL najważniejszych stron i wdrażamy przekierowania 301, żeby nie straciÄ pozycji w Google UK. Standardowa migracja do Shopify UK zajmuje 3-5 tygodni.",tag:"Migracja"}],I9=[{q:"Jak wybraÄ silnik pod sklep online w UK dla polskiej firmy?",a:"Wybór silnika pod sklep online w UK zależy od trzech rzeczy: skali sprzedaży, priorytetu SEO oraz Twojej gotowoÅci technicznej. Dla wiÄkszoÅci polskich firm w UK rekomendujemy WooCommerce (peÅna kontrola nad SEO, brak miesiÄcznej subskrypcji, sklep wielojÄzyczny PL/EN) albo Shopify (szybki start, sprzedaż miÄdzynarodowa, zero martwienia siÄ o hosting). W audycie porównujemy oba warianty w perspektywie 3 lat i pokazujemy konkretne liczby - miesiÄczny koszt, spodziew
69any ruch organiczny, koszt pozyskania klienta.",tag:"Wybór platformy"},{q:"Ile kosztuje uruchomienie sklepu online w UK?",a:"Sklep online w UK dla polskiej firmy zaczynamy wyceniaÄ od 1800 GBP (Shopify UK, gotowy motyw premium, do 50 produktów) lub od 2500 GBP (WooCommerce UK, indywidualny wyglÄ
d, do 50 produktów). Rozbudowane sklepy e-commerce UK z indywidualnym designem, wielojÄzycznoÅciÄ
PL/EN, custom integracjami ERP/magazynu i zaawansowanÄ
automatyzacjÄ
to zwykle 4000-8000 GBP. Wycena sklepu online UK zawsze zawiera domenÄ, konfiguracjÄ hostingu UK i peÅne szkolenie.",tag:"Cennik"},{q:"Ile trwa uruchomienie sklepu online w UK od zera?",a:"Sklep online UK oparty o gotowy motyw i standardowy zestaw funkcji uruchamiamy w 3-5 tygodni. Sklep z indywidualnym designem, wielojÄzycznoÅciÄ
PL/EN i niestandardowymi integracjami to zwykle 6-10 tygodni. Pracujemy w tygodniowych kamieniach milowych z podglÄ
dem na żywo, wiÄc na każdym etapie widzisz postÄp i możesz zgÅaszaÄ uwagi - żadnego âmilczenia agencjiâ przez miesiÄ
c.",tag:"Terminy"},{q:"Jak wyglÄ
da sprzedaż online w GBP i rozliczenia VAT w UK?",a:"Każdy sklep online w UK, który wdrażamy, konfigurujemy z walutÄ
GBP jako podstawowÄ
, prawidÅowymi stawkami VAT (20% standard rate, 5%/0% dla wybranych kategorii) i automatycznym generowaniem faktur PDF pod wymagania HMRC. Dla polskich firm, które majÄ
też klientów w UE, konfigurujemy multi-currency (GBP/EUR/PLN) oraz IOSS/OSS, tak żeby sprzedaż transgraniczna byÅa zgodna z brytyjskimi i unijnymi przepisami VAT.",tag:"VAT UK"},{q:"Jak zdobyÄ pierwszych klientów do sklepu online w UK?",a:"Sklep online w UK zaczyna sprzedawaÄ, gdy równolegle uruchomimy trzy kanaÅy: SEO UK (pozycjonowanie na frazy ânazwa produktu ukâ, âkup online ukâ i dÅugi ogon), Google Ads Performance Max (kampanie zakupowe w GBP) oraz Meta Ads (remarketing i cold traffic na Facebook i Instagram UK). Dla polskich firm w UK skutecznie dziaÅa też grupa targetowa polskiej diaspory - Facebook Ads po polsku, grupy spoÅecznoÅciowe, katalogi typu polishexpress.co.uk.",tag:"Pozyskiwanie klientów"},{q:"Czy sklep online w UK bÄdzie dziaÅaÄ dobrze na telefonach?",a:"Tak - w UK ponad 60% ruchu w e-commerce pochodzi z urzÄ
dzeÅ mobilnych, wiÄc każdy sklep online UK projektujemy w podejÅciu Mobile-first: najpierw layout pod smartfon, potem tablet i desktop. Testujemy Core Web Vitals (LCP, INP, CLS) w PageSpeed Insights, optymalizujemy obrazy do WebP/AVIF, lazy loading i cache - wiÄkszoÅÄ naszych sklepów online UK ma wynik 90+ w Google PageSpeed na mobile.",tag:"Mobile"},{q:"Czy sklep online w UK musi byÄ dwujÄzyczny (PL/EN)?",a:"To zależy od tego, kto jest Twoim klientem. JeÅli sprzedajesz gÅównie polskiej diasporze w UK, wystarczy sklep online w UK po polsku z krótkim opisem po angielsku dla Royal Mail i klientów niepolskojÄzycznych. JeÅli celujesz też w rynek brytyjski, wdrażamy sklep dwujÄzyczny PL/EN z hreflang, osobnymi kartami produktów i osobnymi strategiami SEO - to zwykle podwaja puÅap sprzedaży w perspektywie 12 miesiÄcy.",tag:"WielojÄzycznoÅÄ"},{q:"Co dostajÄ po uruchomieniu sklepu online w UK?",a:"Po uruchomieniu sklepu online UK dostajesz: gotowy sklep z produktami i pÅatnoÅciami w GBP, konfiguracjÄ VAT UK, integracje kurierów, panel do samodzielnej obsÅugi, szkolenie online, PDF z instrukcjÄ
, 30 dni bezpÅatnego wsparcia po starcie oraz opcjonalnÄ
opiekÄ technicznÄ
(aktualizacje, backupy, monitoring). W ramach opcji dokupujesz pakiety SEO UK, Google Ads i Meta Ads, żeby sklep zaczÄ
Å realnie zarabiaÄ.",tag:"Zakres"}],W9=[{q:"Co robi agencja reklamowa UK dla polskich firm w Wielkiej Brytanii?",a:"Agencja reklamowa UK dla polskich firm w Wielkiej Brytanii ÅÄ
czy w jednym miejscu wszystko, co potrzebne do skutecznej reklamy w Anglii, Szkocji i Walii: strategiÄ, kampanie Google Ads UK, Meta Ads (Facebook i Instagram), pozycjonowanie stron w Google UK, projekty graficzne, obsÅugÄ social media oraz materiaÅy do druku. DziÄki temu nie musisz zestawiaÄ kilku freelancerów - DiSpace jako agencja reklamowa UK prowadzi caÅÄ
komunikacjÄ marki, od pierwszego kontaktu po sprzedaż, i mierzy realny zwrot z każdego wydanego funta.",tag:"Zakres"},{q:"Dlaczego wybraÄ agencjÄ reklamowÄ
UK obsÅugujÄ
cÄ
po polsku?",a:"Polska agencja reklamowa w UK rozumie zarówno realia Google UK (Core Web Vitals, EEAT, lokalne pakiety mapowe, prawa GDPR i UK CAP Code), jak i specyfikÄ polskiej diaspory - dwujÄzyczne strony, komunikacjÄ do Polaków w UK i do klientów angielskojÄzycznych. Dostajesz partnera, z którym rozmawiasz po polsku o strategii, budżecie i wynikach, a jednoczeÅnie masz kampanie prowadzone zgodnie z lokalnymi standardami rynku brytyjskiego - bez tÅumaczeÅ w poÅowie procesu i bez ryzyka wpadki jÄzykowej w tekstach reklam.",tag:"ZespóÅ"},{q:"Ile kosztuje wspóÅpraca z agencjÄ
reklamowÄ
UK?",a:"StaÅÄ
obsÅugÄ reklamowÄ
dla firm w UK zaczynamy od 450 GBP miesiÄcznie (jede
69n kanaÅ - Google Ads UK albo Meta Ads, prowadzenie kampanii, raporty), a peÅne pakiety agencji reklamowej UK z SEO, Ads i grafikÄ
to zwykle 800-2500 GBP miesiÄcznie. Do tego dochodzi budżet mediowy Google/Meta, którym zarzÄ
dzamy w Twoim panelu - zawsze pokazujemy dokÅadnie, ile idzie na pracÄ agencji, a ile bezpoÅrednio na reklamÄ, żeby każda faktura byÅa w peÅni czytelna.",tag:"Cennik"},{q:"Google Ads UK czy Meta Ads UK - od czego zaczÄ
Ä reklamÄ firmy w Anglii?",a:"Dla firm usÅugowych w UK (budowa, remonty, transport, gastronomia, salony, mechanika) zwykle zaczynamy od Google Ads UK, bo klient sam wpisuje w Google âhydraulik Londynâ czy âmechanik Manchesterâ - intencja zakupowa jest gotowa. Dla marek produktowych, sklepów online i usÅug, które trzeba najpierw pokazaÄ (kosmetyka, moda, gastronomia premium, eventy) lepiej dziaÅa Meta Ads UK - Facebook i Instagram budujÄ
zasiÄg i sprzedaż z retargetingu. W audycie startowym rekomendujemy wÅaÅciwy mix pod TwojÄ
branÅ¼Ä i budżet.",tag:"Strategia"},{q:"Czy agencja reklamowa UK zajmuje siÄ także pozycjonowaniem stron?",a:"Tak - SEO UK to jeden z filarów DiSpace jako agencji reklamowej UK. Prowadzimy audyty SEO, optymalizacjÄ on-page, treÅci pod intencje wyszukiwania, lokalne SEO Google Maps i link building tak, żeby ruch organiczny z Google UK z czasem przejmowaÅ rolÄ staÅego generatora zapytaÅ, a pÅatne Ads mogÅy skupiÄ siÄ na krótkoterminowych kampaniach sprzedażowych i sezonowych promocjach.",tag:"SEO"},{q:"Jak wyglÄ
da pierwszy miesiÄ
c pracy z agencjÄ
reklamowÄ
UK?",a:"Pierwszy miesiÄ
c to zawsze audyt startowy: analiza konkurencji w UK, przeglÄ
d Twojej strony pod SEO i konwersjÄ, konfiguracja Google Ads, Meta Ads Manager i Google Analytics 4, ustawienie pomiaru konwersji, pierwsze kreacje reklamowe oraz plan komunikacji na 3-6 miesiÄcy. Po zakoÅczeniu audytu dostajesz PDF z rekomendacjami i harmonogram dziaÅaÅ - i dopiero wtedy uruchamiamy realne kampanie reklamowe UK, żeby budżet nie paliÅ siÄ na testach.",tag:"Proces"},{q:"Jakie efekty osiÄ
ga agencja reklamowa UK dla polskich firm?",a:"Realny efekt agencji reklamowej UK zależy od branży i budżetu, ale typowe rezultaty to: 2-4x wiÄcej zapytaÅ ofertowych z Google Ads UK w ciÄ
gu 60-90 dni, wejÅcie do TOP 10 Google UK na kluczowe frazy lokalne w 4-6 miesiÄcy oraz spadek kosztu pozyskania klienta (CPL) o 20-40% w ciÄ
gu pierwszego póÅrocza optymalizacji. W raporcie miesiÄcznym widzisz dokÅadnie klikniÄcia, konwersje, koszt na leada i ROAS - bez zaokrÄ
gleÅ i âwskaźników marketingowychâ, które nic nie znaczÄ
dla biznesu.",tag:"Wyniki"},{q:"Czy pracujecie z firmami spoza dużych miast UK?",a:"Tak - DiSpace jako agencja reklamowa UK obsÅuguje polskie firmy w caÅej Wielkiej Brytanii: Londyn, Manchester, Birmingham, Glasgow, Edynburg, Bristol, Leeds, Liverpool, Cardiff, Belfast, ale też mniejsze miejscowoÅci w Anglii, Szkocji i Walii. CaÅa wspóÅpraca odbywa siÄ online (Google Meet, Slack, e-mail), wiÄc lokalizacja Twojej firmy nie ogranicza tego, jak szeroko możemy pozycjonowaÄ i reklamowaÄ markÄ w UK.",tag:"ZasiÄg"}],G9=[{q:"Czym różni siÄ copywriting UK od zwykÅego pisania tekstów?",a:"Copywriting UK dla polskich firm w Wielkiej Brytanii to nie tylko poprawna polszczyzna czy angielszczyzna â to teksty pisane pod intencje wyszukiwania w Google UK, brytyjskÄ
kulturÄ i lokalne sÅownictwo (postcode zamiast kodu pocztowego, VAT UK, GBP, DPD/Royal Mail zamiast InPost). Każdy tekst osadzamy w sÅowach kluczowych, które faktycznie wpisujÄ
klienci z rynku UK, i budujemy strukturÄ pod SEO â H1, H2, meta description, wewnÄtrzne linki. DziÄki temu tekst nie tylko dobrze siÄ czyta, ale też realnie sprowadza ruch organiczny z Google UK.",tag:"SEO"},{q:"Jakie teksty piszecie w ramach copywritingu UK?",a:"Piszemy peÅen zakres tekstów, których potrzebuje polska firma dziaÅajÄ
ca w UK: teksty na stronÄ www (home, oferta, o nas, kontakt), opisy usÅug i podstrony lokalne dla Londynu, Manchester, Glasgow, opisy produktów w sklepach WooCommerce i Shopify, oferty handlowe i landing page pod Google Ads, artykuÅy blogowe (baza wiedzy) pod dÅugie frazy z ogona, teksty na social media, newslettery i sekwencje eâmail, a także tÅumaczenia PL â EN dla klientów, którzy prowadzÄ
komunikacjÄ w dwóch jÄzykach.",tag:"Zakres"},{q:"Ile kosztuje copywriting UK?",a:"Cennik copywritingu UK w DiSpace zaczyna siÄ od £90 za pojedynczy tekst (podstrona usÅugi, opis produktu, krótki wpis blogowy do 800
69sÅów). PeÅna redakcja tekstów na 5-podstronowÄ
stronÄ firmowÄ
to koszt od £390, opisy 20 produktów w sklepie WooCommerce od £490, a staÅa wspóÅpraca content marketingowa (4 artykuÅy blogowe miesiÄcznie + optymalizacja SEO) od £490 / miesiÄ
c. WycenÄ indywidualnÄ
â pod zakres, branÅ¼Ä i liczbÄ tekstów â przygotowujemy w 24 godziny.",tag:"Cennik"},{q:"Czy piszecie teksty pod pozycjonowanie w Google UK?",a:"Tak â caÅy copywriting UK w DiSpace jest z zaÅożenia SEO copywritingiem. Przed napisaniem tekstu robimy krótki research sÅów kluczowych w Google UK (Ahrefs, Semrush, Search Console), sprawdzamy intencje wyszukiwania i konkurencjÄ, a dopiero potem ukÅadamy strukturÄ tekstu i piszemy treÅÄ pod konkretne frazy z rynku brytyjskiego. Efekt: tekst od pierwszego dnia pracuje na pozycjÄ strony w Google UK, a nie tylko âÅadnie wyglÄ
daâ.",tag:"SEO"},{q:"Ile trwa napisanie tekstów na stronÄ www w UK?",a:"Standardowa 5-podstronowa strona firmowa (home, oferta, o nas, kontakt, blog) to okoÅo 5â7 dni roboczych: 1 dzieÅ na brief i research sÅów kluczowych, 3â4 dni na pisanie tekstów, 1â2 dni na Twoje uwagi i korektÄ. Opisy 20 produktów w sklepie WooCommerce â 7â10 dni. Pojedynczy artykuÅ blogowy pod SEO â 3â4 dni robocze. Terminy pilne (24â48 h) sÄ
możliwe za dopÅatÄ
.",tag:"Termin"},{q:"Czy piszecie teksty również po angielsku?",a:"Tak â obsÅugujemy klientów prowadzÄ
cych komunikacjÄ w dwóch jÄzykach: polskim (do polskiej spoÅecznoÅci w UK) i angielskim (do brytyjskich klientów). Teksty angielskie piszÄ
copywriterzy wspóÅpracujÄ
cy z native speakerami, którzy znajÄ
realia rynku UK â od tone of voice po lokalne sÅownictwo (colour zamiast color, Ltd zamiast Sp. z o.o., £ zamiast $). Robimy też tÅumaczenia PL â EN i EN â PL z zachowaniem SEO w obu wersjach jÄzykowych.",tag:"JÄzyki"},{q:"Dla jakich branż piszecie teksty w UK?",a:"Copywriting UK w DiSpace to gÅównie polskie firmy usÅugowe i handlowe w Wielkiej Brytanii: budowlanka i wykoÅczenia (bathroom fitters, plasterers, electricians), transport i logistyka, gastronomia i catering, salony kosmetyczne i fryzjerskie, kancelarie i doradcy, sklepy internetowe (moda, dom, meble, akcesoria), agencje i freelancerzy. Znamy specyfikÄ tych branż â od sÅownictwa po typowe pytania klientów â wiÄc teksty piszemy szybciej i celniej niż copywriter âogólnyâ.",tag:"Branże"},{q:"Czy mogÄ zamówiÄ tylko poprawÄ istniejÄ
cych tekstów?",a:"Tak â bardzo czÄsty scenariusz to redakcja i optymalizacja SEO istniejÄ
cych tekstów na stronie WordPress, WooCommerce lub Shopify. Robimy audyt aktualnych tekstów pod kÄ
tem sÅów kluczowych, struktury (H1/H2, meta description) i intencji wyszukiwania w Google UK, a nastÄpnie przepisujemy je tak, żeby zaczÄÅy przyciÄ
gaÄ ruch organiczny. To najczÄÅciej najszybszy i najtaÅszy sposób, żeby odzyskaÄ pozycje w Google po migracji strony lub redesignie.",tag:"Optymalizacja"}],V9=[{q:"Ile kosztuje stworzenie sklepu internetowego w UK?",a:"Wdrożenie sklepu internetowego UK zaczyna siÄ od £1 400 (WooCommerce, do 20 produktów, integracje Royal Mail, VAT UK). Sklep Growth dla katalogu 150â1000 produktów z projektem indywidualnym, wielojÄzycznoÅciÄ
PL+EN i peÅnym pakietem integracji kurierów kosztuje ok. £2 900. Sklep B2B / hurtownia z panelem firmowym, cenami hurtowymi i integracjÄ
ERP wyceniamy indywidualnie â od £4 500. Wszystkie ceny w GBP, faktura z UK, VAT konfigurowany pod HMRC.",tag:"Cennik"},{q:"WooCommerce czy Shopify dla sklepu w UK?",a:"WooCommerce polecamy sklepom, które chcÄ
peÅnej kontroli nad danymi i wyglÄ
dem, majÄ
blog SEO i planujÄ
wielojÄzycznoÅÄ PL+EN â typowo sklepy spożywcze, B2B i odzieżowe z rozbudowanÄ
ofertÄ
. Shopify sprawdza siÄ przy szybkim starcie marki DTC, dropshippingu i sklepach do 500 produktów, gdzie priorytetem jest natywna integracja Shopify Payments w GBP i szybkie uruchomienie. Po briefie rekomendujemy platformÄ, która realnie zarobi w Twojej branży â nie âulubionÄ
â.",tag:"Platforma"},{q:"Jak dÅugo trwa wdrożenie sklepu internetowego w UK?",a:"Standardowy sklep internetowy UK (Sklep Start / Growth) uruchamiamy w 2â4 tygodnie: tydzieÅ 1 to brief i wybór platformy, tygodnie 2â3 to projekt UX, wdrożenie i import produktów, tydzieÅ 4 to integracje kurierów, testy checkoutu w GBP i szkolenie zespoÅu. Sklepy B2B z panelem firmowym, integracjÄ
ERP i kontami hurtowymi zajmujÄ
6â10 tygodni w zależnoÅci od zakresu integracji.",tag:"Termin"},{q:"Czy zajmiecie siÄ konfiguracjÄ
VAT UK i HMRC?",a:"Tak â konfiguracja VAT UK to standard każdego wdrożenia sklepu online w Wielkiej Brytanii. Ustawiamy stawki 0% (żywnoÅÄ, ksiÄ
żki), 5% (energia, produkty dla dzieci) i 20% (standardowa), faktury zgodne z wymaganiami HMRC, numer VAT UK na dokumentach oraz obsÅugÄ âVAT reverse chargeâ przy sprzedaży B2B do UE. Dla pakietu Enterprise integrujemy sklep bezpoÅrednio z HMRC MTD (Making Tax Digital) â kwartalne raporty VAT trafiajÄ
automatycznie do HMRC.",tag:"VAT / HMRC"},{q:"Jakich kurierów UK integrujecie ze sklepem?",a:"Standardowo integrujemy trzech gÅównych operatorów: Royal Mail (Tracked 24 / 48, Special Delivery), DPD UK (Next Day, DPD Local) i Evri (d
69awniej Hermes â najtaÅsza opcja dla lekkich paczek). Integracja obejmuje kalkulacjÄ kosztów wysyÅki na żywo w checkoucie, automatyczne generowanie etykiet, tracking dla klienta oraz webhooki potwierdzajÄ
ce dorÄczenie. Dla sklepów B2B dodajemy Parcelforce, DHL Express UK lub kuriera dedykowanego.",tag:"Kurierzy"},{q:"Czy sklep obsÅuży sprzedaż B2B â ceny hurtowe i konta firmowe?",a:"Tak â pakiet Enterprise (od £4 500) zawiera peÅny panel B2B: grupy cenowe (ceny hurtowe widoczne po zalogowaniu firmy), rejestracjÄ konta firmowego z weryfikacjÄ
VAT, minimum zamówienia dla grup B2B, terminy pÅatnoÅci NET 14/30/60 i faktury pro-forma. Integrujemy sklep z magazynem (WMS) lub systemem ERP (Optima, Enova, Odoo, SAP Business One) â zamówienia B2B trafiajÄ
automatycznie do systemu ksiÄgowego.",tag:"B2B"},{q:"Czy pozycjonujecie sklep internetowy UK w Google?",a:"Tak â SEO on-page dla kategorii i kart produktów wchodzi w skÅad pakietu Growth i wyżej. Rozbudowane pozycjonowanie sklepów internetowych UK prowadzimy w osobnej usÅudze â obejmuje ono link building z domen .co.uk, treÅci blogowe pod frazy zakupowe, Schema Product z opiniami i cenami w GBP oraz optymalizacjÄ Core Web Vitals (LCP, INP, CLS). Sklepy naszych klientów po 6 miesiÄ
cach SEO regularnie wchodzÄ
do TOP 10 dla fraz produktowych i dÅugiego ogona zakupowego.",tag:"SEO"},{q:"Czy migrujecie istniejÄ
cy sklep (Etsy, Allegro, WooCommerce z Polski)?",a:"Tak â migracje sklepów do UK to jeden z naszych staÅych scenariuszy. Przenosimy sklep z Etsy, Allegro, Shopify, WooCommerce PL, PrestaShop lub Magento na WooCommerce/Shopify pod domenÄ
.co.uk lub .uk, z zachowaniem historii zamówieÅ (opcjonalnie), przekierowaniami 301 dla starych URL-i, konfiguracjÄ
VAT UK i przewalutowaniem cen do GBP. Migracja z Etsy szczególnie siÄ opÅaca â eliminuje 6,5% prowizji od każdego zamówienia i pozwala budowaÄ wÅasny brand pod domenÄ
UK.",tag:"Migracja"},{q:"Kto jest wÅaÅcicielem sklepu i danych po wdrożeniu?",a:"Ty â 100%. Sklep WooCommerce hostujemy na serwerze UK zarejestrowanym na Ciebie (lub przekazujemy dostÄpy do już posiadanego hostingu), peÅne prawa autorskie do projektu graficznego przechodzÄ
na Ciebie po ostatniej pÅatnoÅci, baza klientów i zamówieÅ jest Twoja i możesz jÄ
w każdej chwili wyeksportowaÄ. Dla Shopify â sklep zakÅada siÄ na Twoje konto Shopify, my mamy tylko dostÄp jako wspóÅpracownik, który możesz odwoÅaÄ jednym klikniÄciem.",tag:"WÅasnoÅÄ"},{q:"Co po uruchomieniu sklepu â utrzymanie, wsparcie, aktualizacje?",a:"Utrzymanie sklepu internetowego UK to £45â£320 / miesiÄ
c w zależnoÅci od pakietu i platformy. W ramach opÅaty miesiÄcznej: hosting UK (dla WooCommerce), backupy dzienne, aktualizacje WordPressa i wtyczek, monitoring uptime, certyfikat SSL, wsparcie techniczne (email + telefon) oraz drobne zmiany (do 2h/mc). Dla pakietu Enterprise dodajemy SLA 24h dla bÅÄdów krytycznych i dedykowanego PM-a.",tag:"Utrzymanie"}],F9=()=>W(()=>import("./agencja-reklamowa-uk-BK_WmF_v.js"),__vite__mapDeps([60,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,73,12,74,75,76,77])),$g=we(Bg.slug),Xf=`${Me}${$g}`,H9=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:$g}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:$g,override:t?.override??null,defaultTitle:Bg.title,defaultDescription:Bg.description});return{...e,scripts:[...e.scripts??[],aa({name:"Agencja reklamowa UK â reklama dla polskich firm w Wielkiej Brytanii",description:"Agencja reklamowa UK dla polskich firm w Wielkiej Brytanii: Google Ads UK, Meta Ads (Facebook i Instagram), pozycjonowanie stron w Google UK, projekty graficzne, obsÅuga social media oraz strony internetowe UK â w jednym miejscu.",url:Xf,serviceType:"Advertising Agency",areaServed:["United Kingdom","England","Scotland","Wales"]}),Ea(W9),Re([{name:"DiSpace",url:re},{name:"Agencja reklamowa UK",url:Xf}]),L9({url:Xf})]}},component:G(F9,"component")}),q9=[{slug:"pozycjonowanie-uk-jak-wejsc-do-top-3-google",title:"Pozycjonowanie UK â jak wejÅÄ do TOP 3 Google w 2026",date:"2026-02-04",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK w 2026 to gra o intencjÄ, lokalnoÅÄ i Core Web Vitals. Zobacz, jak wprowadziÄ polskÄ
firmÄ w Wielkiej Brytanii do TOP 3 Google.co.uk krok po kroku â bez marnowania budżetu na frazy, które nic nie dajÄ
.",metaDesc:"Pozycjonowanie UK 2026 â praktyczny przewodnik po wejÅciu do TOP 3 Google.co.uk. SÅowa kluczowe, SEO lokalne, link building i ceny agencji dla polskich firm w Anglii.",readMinutes:9,blocks:[{type:"p",text:'Pozycjonowanie UK w 2026 roku różni siÄ od tego, co dziaÅaÅo w Polsce jeszcze dwa lata temu. Google.co.uk faworyzuje strony z jasnÄ
intencjÄ
, sygnaÅami lokalnymi (Google Business Profile, NAP, opinie), bÅyskawicznym Core Web Vitals oraz treÅciÄ
pokazujÄ
cÄ
realne doÅwiadczenie autora. Ten przewodnik krok po kroku pokazuje, jak polska firma
69w Wielkiej Brytanii wchodzi do TOP 3 na frazy typu âpolski hydraulik London", âstrony internetowe UK" czy âksiÄgowa Manchester" â bez przepalania budżetu.'},{type:"h2",text:"Dlaczego pozycjonowanie UK jest inne niż SEO w Polsce"},{type:"p",text:'Google.co.uk to osobny indeks z osobnymi konkurentami, osobnymi frazami i osobnymi sygnaÅami E-E-A-T. Polskie firmy w UK najczÄÅciej popeÅniajÄ
trzy bÅÄdy: pozycjonujÄ
siÄ na frazy bez lokalizacji (âstrona internetowa" zamiast âstrona internetowa UK"), używajÄ
domeny .pl zamiast .uk lub .co.uk, i nie majÄ
zoptymalizowanego Google Business Profile. Skutek â spadek widocznoÅci po migracji, mimo Åwietnie napisanych tekstów.'},{type:"p",text:"Ranking w UK w 2026 opiera siÄ na czterech filarach: intencji użytkownika, jakoÅci treÅci (E-E-A-T), lokalnoÅci (mapy, opinie, cytowania NAP) oraz technikaliach (Core Web Vitals, mobile-first, dane strukturalne). Brak któregokolwiek z nich to sufit na pozycji 8-15 â dokÅadnie tam, gdzie lÄ
duje wiÄkszoÅÄ migracji z WordPressa bez planu SEO."},{type:"h2",text:"Krok 1: audyt fraz i intencji pod Google.co.uk"},{type:"p",text:"Zacznij od twardych danych â Google Search Console, Semrush lub Ahrefs z bazÄ
UK. Zbuduj listÄ fraz, na które strona już siÄ wyÅwietla na pozycjach 8-20 (tzw. striking distance). To najszybsza droga do TOP 3, bo Google już uznaÅ CiÄ za sensowny wynik â brakuje sygnaÅów, żeby wypchnÄ
Ä CiÄ wyżej."},{type:"p",text:'Dla polskich firm w UK zwykle najlepiej konwertujÄ
frazy typu âpolski [usÅuga] [miasto]" (polski hydraulik London, polski elektryk Manchester), â[usÅuga] uk dla polskich firm" (ksiÄgowoÅÄ UK dla polskich firm, strony internetowe UK dla polskich firm) oraz frazy typowo brytyjskie w jÄzyku angielskim, jeÅli Åwiadczysz usÅugi też Anglikom. PeÅnÄ
listÄ intencji podzielÄ
Ci profesjonalni copywriterzy w agencji SEO UK.'},{type:"h2",text:"Krok 2: SEO techniczne â Core Web Vitals i mobile"},{type:"p",text:'W 2026 roku Google ranker Core Web Vitals ma bezpoÅredni wpÅyw na pozycjÄ dla fraz komercyjnych. Sprawdź w PageSpeed Insights: LCP poniżej 2,5 s, INP poniżej 200 ms, CLS poniżej 0,1. Klasyczne WordPressy z piÄcioma wtyczkami typu âpage builder" osiÄ
gajÄ
LCP 4-6 s na mobile â i to jest realna przyczyna spadków widocznoÅci po ostatnich Core Update.'},{type:"ul",items:["WÅÄ
cz HTTP/2 lub HTTP/3, kompresjÄ Brotli i cache statyczny.","Wygeneruj zdjÄcia w AVIF lub WebP z lazy loading â nie Åaduj obrazu 3 MB na mobile.","UsuÅ nieużywane wtyczki JS (najczÄÅciej Elementor, Slider Revolution, WPBakery).","Serwuj fonts z display: swap zamiast blokowaÄ renderowanie.","Sprawdź stronÄ w Lighthouse na iPhone 12 â Google mobile-first indexuje wÅaÅnie takie urzÄ
dzenia."]},{type:"h2",text:"Krok 3: On-page SEO pod Google.co.uk"},{type:"p",text:"Każda strona docelowa musi mieÄ: jeden H1 z frazÄ
gÅównÄ
, meta title do 60 znaków z frazÄ
+ korzyÅciÄ
, meta description do 155 znaków z CTA, semantycznÄ
strukturÄ H2/H3 zawierajÄ
cÄ
frazy pochodne, oraz treÅÄ odpowiadajÄ
cÄ
na intencjÄ (informacyjna vs transakcyjna vs lokalna). W UK dziaÅa gÄsta warstwa danych strukturalnych: Organization, LocalBusiness, Service, FAQPage, Article. Bez schema.org konkurent z lepszym markupem wygra rich snippet."},{type:"h2",text:"Krok 4: SEO lokalne UK â Google Business Profile i cytowania NAP"},{type:"p",text:"Dla wiÄkszoÅci polskich firm w Wielkiej Brytanii SEO lokalne generuje 60-80% wszystkich zapytaÅ. Zoptymalizuj Google Business Profile: peÅny opis, zdjÄcia realizacji co tydzieÅ, kategorie gÅówne i pomocnicze, godziny otwarcia, obszar dziaÅania (service area) z miastami w promieniu 30 mil. Dodaj minimum 20 spójnych cytowaÅ NAP (Name, Address, Phone) w brytyjskich katalogach: Yell, Thomson Local, Scoot, FreeIndex, Cylex UK."},{type:"p",text:"Opinie to waluta SEO lokalnego 2026. Google faworyzuje profile z 30+ opiniami, aktualnymi (ostatnie 90 dni) i z odpowiedziami wÅaÅciciela. WyÅlij proÅbÄ o opiniÄ do każdego klienta w ciÄ
gu 48 godzin od zakoÅczenia usÅugi â najlepiej z linkiem skróconym prowadzÄ
cym prosto do formularza re
69cenzji Google."},{type:"h2",text:"Krok 5: content marketing pod frazy UK"},{type:"p",text:'Content w 2026 to nie âiloÅÄ tekstu", tylko pokrycie tematyczne (topical authority). Google wchodzi do TOP 3 stronom, które kompleksowo omawiajÄ
temat, a nie tym, które napisaÅy jeden artykuÅ â30 wskazówek". Zaplanuj klaster: strona filarowa (np. âPozycjonowanie UK") + 10-15 artykuÅów wspierajÄ
cych (âIle kosztuje SEO w UK", âSEO lokalne dla polskich firm", âGoogle Business Profile UK krok po kroku") + linkowanie wewnÄtrzne z opisowymi anchorami.'},{type:"h2",text:"Krok 6: link building UK"},{type:"p",text:"W UK zdobywasz linki z lokalnych mediów (Polish Express, Cooltura, Dziennik Polski), brytyjskich blogów branżowych, izb handlowych (British Polish Chamber of Commerce), stron partnerskich i katalogów lokalnych. Unikaj Polskich SWL-i i taniej wymiany linków â algorytm SpamBrain widzi to od razu i degraduje pozycje."},{type:"h2",text:"Ile trwa pozycjonowanie UK do TOP 3"},{type:"p",text:'Realny horyzont dla nowej domeny w UK to 6-9 miesiÄcy do TOP 10 i 9-12 miesiÄcy do TOP 3 na frazy Årednio konkurencyjne (âpolski hydraulik Reading"). Dla fraz wysoko konkurencyjnych (âksiÄgowa Londyn", âstrony internetowe uk") liczy siÄ 12-18 miesiÄcy, chyba że robisz to na starszej domenie z historiÄ
i backlinkami â wtedy pierwsze pozycje w 3-4 miesiÄ
ce sÄ
w zasiÄgu.'},{type:"h2",text:"Ile kosztuje pozycjonowanie UK w 2026"},{type:"p",text:"Rzetelna agencja SEO UK dla polskich firm to £490-£1490 netto miesiÄcznie w zależnoÅci od zakresu (jedno miasto vs caÅy UK, jedna usÅuga vs peÅna oferta, tylko SEO vs SEO + content + link building). Wszystko poniżej £300/mc to zwykle automat i generowanie raportów bez realnych dziaÅaÅ. SzczegóÅowy cennik i przykÅady projektów opisaliÅmy w artykule Ile kosztuje pozycjonowanie UK â cennik 2026."},{type:"h2",text:"Podsumowanie"},{type:"p",text:'Pozycjonowanie UK w TOP 3 Google.co.uk w 2026 to praca na 6 frontach jednoczeÅnie: intencja + technika + on-page + SEO lokalne + content + linki. Skróty nie dziaÅajÄ
â algorytm zbyt dobrze widzi thin content, farmy linków i wolne strony. JeÅli chcesz wejÅÄ do TOP 3 dla âpozycjonowanie uk", âstrony internetowe uk" czy fraz miejskich (Londyn, Manchester, Glasgow, Edynburg, Aberdeen), potrzebujesz agencji, która zna specyfikÄ rynku brytyjskiego i polskich firm w UK. Zamów darmowy audyt SEO â sprawdzimy Twoje frazy striking distance i podamy realny plan wejÅcia do TOP 3.'}]},{slug:"ile-kosztuje-pozycjonowanie-uk-cennik-2026",title:"Ile kosztuje pozycjonowanie UK â cennik SEO 2026",date:"2026-02-06",category:"Pozycjonowanie UK",excerpt:"Ile realnie kosztuje pozycjonowanie w UK w 2026? Rozbijamy cennik SEO w Anglii, Szkocji i Walii na abonamenty, projekty i success fee. Zobacz, ile pÅacÄ
polskie firmy w UK za wejÅcie do TOP 3 Google.co.uk â i za co dopÅacasz w agencjach premium.",metaDesc:"Cennik pozycjonowania UK 2026: abonamenty £490-£1490, ceny SEO lokalnego, sklepów WooCommerce i link buildingu. Zobacz, ile realnie kosztuje SEO w Anglii i Szkocji.",readMinutes:8,blocks:[{type:"p",text:'âIle kosztuje pozycjonowanie UK?" to pytanie, które sÅyszymy codziennie od polskich firm w Wielkiej Brytanii. Odpowiedź âto zależy" jest prawdziwa, ale bezużyteczna. W tym artykule podajemy konkretne wideÅki cenowe dla SEO w UK w 2026 roku â z rozbiciem na modele rozliczeÅ, miasta, branże i zakresy usÅug.'},{type:"h2",text:"Trzy modele rozliczeÅ SEO w UK"},{type:"p",text:"Na rynku brytyjskim spotkasz trzy modele: abonament miesiÄczny (najpopularniejszy, £490-£3000+), rozliczenie za projekt (audyty SEO, jednorazowe migracje, £1200-£8000), i success fee / rozliczenie za pozycje (£50-£300 za frazÄ w TOP 3 miesiÄcznie). Dla polskich firm w UK najczÄÅciej sprawdza siÄ abonament â daje przewidywalnoÅÄ budżetu i dÅugoterminowÄ
pracÄ nad domenÄ
."},{type:"h2",text:"Cennik pozycjonowania UK â abonamenty 2026"},{type:"ul",items:["SEO Starter (£490-£690/mc): jedno miasto, 8-12 fraz, audyt SEO, optymalizacja on-page, Google Business Profile, 1-2 artykuÅy blogowe miesiÄcznie. Dla mikro firm i freelancerów w UK.","SEO Growth (£790-£1190/mc): 2-4 miasta, 20-35 fraz, on-page + techniczne SEO, 3-4 artykuÅy miesiÄcznie, link building (2-4 linki/mc), raportowanie w Looker Studio. Dla maÅych firm usÅugowych i sklepów.","SEO Pro (£1290-£1990/mc): caÅy UK, 50-80 fraz, peÅny content marketing, 5-8 artykuÅów miesiÄcznie, aktywny link building, prasowe publikacje, SEO PR. Dla firm skalujÄ
cych siÄ na caÅy rynek brytyjski.",'SEO Enterprise (od £2500/mc): sklepy WooCommerce/Shopify z 500+ produktami, multi-branch, konkurencyjne frazy typu âinsurance uk", âmortgage broker london". Dedykowany team SEO + copywriterzy.']},{type:"h2",text:"Ile kosztuje SEO lokalne UK (jedno miasto)"},{type:"p",text:"Pozycjonowanie lokalne w Londynie, Manchesterze, Birmingham czy Glasgow dla polskich firm zaczyna siÄ od £490/mc. W tej cenie dostajesz optymalizacjÄ Google Business Profile, 15-20 cytowaÅ NAP, on-page 3-5 podstron docelowych i miesiÄcznego bloga. Dla mniejszych miast (Reading, Slough, Southampton, Aberdeen) czÄsto wystarczy niższy pakiet £390-£490 i wciÄ
ż wchodzimy do TOP 3 w 4-6 miesiÄcy."},{type:"h2",text:"Ile kosztuje pozycjonowanie sklepu internetowego UK"},{type:"p",text:"SEO dla sklepu WooCommerce lub Shopify w UK to inna gra â pracujesz na setkach kart produktów, kategoriach i filtrach. Realne wideÅki: £790-£1990/mc dla sklepu do 500 SKU, £1990-£3990/mc dla wiÄkszych. Koszt zwraca siÄ przy CAC (koszcie pozyskania klienta) niższym niż w Google Ads â a to zwykle nastÄpuje miÄdzy 6 a 9 miesiÄ
cem."},{type:"h2",text:"Cena link buildingu w UK"},{type:"p",text:'W 2026 roku jakoÅciowy backlink z brytyjskiego serwisu tematycznego (DR 40+) to £150-£450 za jedno umieszczenie. Publikacje sponsorowane w mediach niszowych (Polish Express, Cooltura, lokalne portale ekonomiczne) â £250-£800. BroÅ Boże nie kupuj paczek â100 linków za £50" â SpamBrain widzi taki profil w tydzieÅ i zjeżdżasz o 20-30 pozycji.'},{type:"h2",text:"Za co realnie pÅacisz w agencji SEO UK"},{type:"ol",items:["Audyt techniczny i konkurencyjny (raz na start + raz w roku).","Godziny copywritera piszÄ
cego pod frazy UK po polsku i angielsku.","Optymalizacja on-page (meta, nagÅówki, dane strukturalne, linkowanie wewnÄtrzne).","ZarzÄ
dzanie Google Business Profile i cytowaniami
69NAP.","Link building â czasochÅonna praca outreach i publikacje.","Raportowanie miesiÄczne (pozycje, ruch, konwersje, konsola GSC).","Konsultacje strategiczne i reagowanie na Core Update."]},{type:"h2",text:"Kiedy pozycjonowanie UK zwraca siÄ finansowo"},{type:"p",text:'Prosta matematyka: jeżeli w Google Ads UK pÅacisz £4 CPC za frazÄ âpolski hydraulik London" i konwersja na leada wynosi 8%, kupujesz leada za £50. Ta sama fraza w TOP 3 Google.co.uk generuje 20-30 klikniÄÄ dziennie za £0. Przy abonamencie £690/mc już od 15 leadów miesiÄcznie SEO jest taÅsze niż Ads â a wiÄkszoÅÄ dobrze poprowadzonych projektów przekracza tÄ granicÄ w 4-5 miesiÄ
cu.'},{type:"h2",text:"Ile kosztuje pozycjonowanie UK w DiSpace"},{type:"p",text:"W DiSpace prowadzimy SEO wyÅÄ
cznie dla polskich firm w UK â znamy specyfikÄ fraz, GBP i migracji z polskich domen na .uk. Nasze pakiety zaczynajÄ
siÄ od £490/mc netto (SEO lokalne, jedno miasto) i siÄgajÄ
£1990/mc (peÅny SEO enterprise). W każdym pakiecie: audyt startowy, GBP, on-page, content, linki, raportowanie i konsultacje. Zamów darmowÄ
wycenÄ â w 24 h wracamy z listÄ
striking-distance fraz i planem wejÅcia do TOP 3."}]},{slug:"strony-internetowe-uk-ile-kosztuja-i-jak-wybrac",title:"Strony internetowe UK â ile kosztujÄ
i jak wybraÄ agencjÄ w Anglii",date:"2026-02-09",category:"Strony internetowe UK",excerpt:"Strony internetowe UK dla polskich firm â od £890 do £6900 w zależnoÅci od zakresu. Zobacz, ile realnie kosztuje strona firmowa w Anglii, jak nie przepÅacaÄ za WordPressa i dlaczego szybka strona = wyższy ranking w Google.co.uk.",metaDesc:"Strony internetowe UK â peÅny cennik 2026 (£890-£6900), technologie (WordPress, Shopify, headless), SEO ready. Jak wybraÄ agencjÄ dla polskiej firmy w Wielkiej Brytanii.",readMinutes:8,blocks:[{type:"p",text:'Strony internetowe UK to dziÅ nie tylko wizytówka â to pierwszy handlowiec, który pracuje 24/7 i decyduje, czy klient w Anglii kliknie do Ciebie, czy do konkurencji jeden wynik niżej w Google.co.uk. W tym artykule pokażÄ, ile realnie kosztujÄ
strony internetowe w UK w 2026, jakie technologie wybraÄ i po czym poznasz agencjÄ, która nie zostawi CiÄ z âgotowÄ
" stronÄ
bez pozycji w Google.'},{type:"h2",text:"Ile kosztuje strona internetowa w UK â cennik 2026"},{type:"ul",items:['Landing page / one-pager (£890-£1490): 1 strona, formularz, integracja z Google Analytics 4 i GBP. Dla wÄ
skiej oferty typu âpolski hydraulik London".',"Strona firmowa standard (£1490-£2490): 6-10 podstron, blog, formularze, wielojÄzyczna (PL/EN), peÅne SEO on-page. Dla wiÄkszoÅci firm usÅugowych w UK.","Strona firmowa premium (£2490-£4900): 15-25 podstron, klaster SEO lokalny (miasta), animacje, integracje z CRM (HubSpot, Pipedrive), booking online. Dla firm skalowanych na caÅy UK.","Sklep WooCommerce/Shopify UK (£2900-£6900): koszyk, pÅatnoÅci Stripe/Klarna, wysyÅki Royal Mail/DPD, zwroty, integracja ksiÄgowa. Dla e-commerce.","Portal / aplikacja webowa (od £6900): custom logika, panele użytkownika, API, integracje. Dla platform i marketplace'ów."]},{type:"h2",text:"Technologie stron internetowych w UK w 2026"},{type:"p",text:"WordPress ciÄ
gle dominuje (~40% wszystkich stron w UK), ale w 2026 traci ranking na rzecz stron nowej generacji budowanych w React (Next.js, TanStack Start, Astro). Powód: Core Web Vitals. Klasyczny WordPress z Elementorem serwuje LCP 4-6 s na mobile â nowoczesna strona headless osiÄ
ga 0.8-1.5 s. Ta różnica to +15-25 pozycji w Google.co.uk na fraz konkurencyjne."},{type:"p",text:'Kiedy WordPress ma sens? Gdy firma sama chce prowadziÄ bloga bez developera i budżet na start to £1200-£1800. Kiedy nowoczesny stack (Next/Astro/TanStack) ma przewagÄ? Gdy zależy Ci na TOP 3 dla âstrony internetowe uk", âpozycjonowanie uk" i innych fraz z dużÄ
konkurencjÄ
brytyjskÄ
â wtedy każda sekunda LCP to realne miejsca w rankingu.'},{type:"h2",text:"Co musi mieÄ strona internetowa UK żeby rankowaÄ"},{type:"ol",items:["Core Web Vitals: LCP < 2.5 s, INP < 200 ms, CLS < 0.1 (mobile).","Dane strukturalne schema.org: Organization, LocalBusiness, Service, FAQPage.","hreflang PL/EN, canonical na jednej wersji URL bez trailing slash.","Sitemap.xml aktualizowana automatycznie, poprawny robots.txt.","SSL A+ na SSL Labs, HTTP/2 lub HTTP/3, Brotli.","ZdjÄcia w AVIF/WebP z lazy loading.","Formularze z ochronÄ
anty-spam (Cloudflare Turnstile lub reCAPTCHA v3).","Integracja z GA4, Google Tag Manager, Meta Pixel â zgodnie z UK GDPR."]},{type:"h2",text:"Jak wybraÄ agencjÄ stron internetowych w UK"},{type:"p",text:'Pierwsze pytanie: âPokażcie realizacje polskich firm w UK z ostatnich 12 miesiÄcy i ich obecne pozycje w Google.co.uk". Agencja, która tylko robi âstrony" bez SEO, oddaje Ci Åadny projekt, który nikt nie znajdzie. Drugie pytanie: âJaki mamy budżet na Core Web Vitals i jak monitorujecie pozycje po wdrożeniu?". Trzecie: âKto pisze teksty i czy zna specyfikÄ polskich firm w UK?". JeÅli agencja nie ma copywritera po polsku i po angielsku, tworzy âcontent marketing" z ChatGPT i to widaÄ w Google.'},{type:"h2",text:"Ile trwa realizacja strony internetowej w UK"},{type:"p",text:'Landing page â 5-10 dni roboczych. Strona firmowa standard â 3-4 tygodnie. Strona premium z klasterami SEO â 5-8 tygodni. Sklep WooCommerce/Shopify â 6-10 tygodni. Ważne: SEO nie zaczyna siÄ âpo" wdrożeniu, tylko już przy makietowaniu (architektura URL, klaster tematyczny, sitemap). Agencje, które ustawiajÄ
SEO dopiero po launchu, tracÄ
2-3 miesiÄ
ce potencjalnego rankingu.'},{type:"h2",text:"Strony internetowe UK a lokalizacja (Londyn, Manchester, Szkocja)"},{type:"p",text:'Jeżeli dziaÅasz lokalnie, potrzebujesz landingów miejskich (np. /strony-internetowe-londyn, /strony-internetowe-manchester, /strony-internetowe-szkocja). To wprowadza CiÄ w TOP 3 dla fraz typu âstrona internetowa London", âfirma stron internetowych Manchester" czy âstrony internetowe Szkocja". Osobny artykuÅ o rynku szk
69ockim (Edynburg, Glasgow, Aberdeen) znajdziesz w naszej bazie wiedzy.'},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Strony internetowe UK w 2026 to inwestycja £890-£6900 zależnie od zakresu, ale prawdziwy koszt to nie cena wdrożenia â tylko koszt utraconych leadów przy sÅabym Core Web Vitals i braku SEO. W DiSpace budujemy strony internetowe UK dla polskich firm od 2018 roku, wdrażamy je od razu pod pozycjonowanie UK i monitorujemy pozycje w Google.co.uk co tydzieÅ. Zamów darmowÄ
wycenÄ strony â w 24 h dostajesz konkretny zakres i termin realizacji."}]},{slug:"strony-internetowe-uk-wordpress-vs-nowoczesne-technologie",title:"Strony internetowe UK: WordPress vs nowoczesne technologie w 2026",date:"2026-02-12",category:"Strony internetowe UK",excerpt:"WordPress, Shopify, Next.js, Astro czy TanStack Start? Porównujemy technologie stron internetowych UK pod kÄ
tem SEO, Core Web Vitals, kosztów utrzymania i pozycji w Google.co.uk. Zobacz, którÄ
technologiÄ wybraÄ dla polskiej firmy w Anglii.",metaDesc:"Strony internetowe UK 2026 â porównanie WordPress vs Next.js/Astro pod SEO, Core Web Vitals i koszty. KtórÄ
technologiÄ wybraÄ dla polskiej firmy w Wielkiej Brytanii?",readMinutes:7,blocks:[{type:"p",text:"WordPress ciÄ
gle rzÄ
dzi rynkiem stron internetowych w UK â w 2026 stoi na nim okoÅo 40% wszystkich witryn brytyjskich firm. Ale w rankingach Google.co.uk coraz czÄÅciej wygrywajÄ
strony nowej generacji budowane na Next.js, Astro albo TanStack Start. Sprawdźmy, dlaczego â i jakÄ
technologiÄ wybraÄ dla polskiej firmy w Anglii w 2026 roku."},{type:"h2",text:"WordPress w UK â zalety i puÅapki"},{type:"p",text:"WordPress to olbrzymia biblioteka wtyczek i motywów, prosta administracja i tanie hostingi (Hostinger, SiteGround, Bluehost UK â £3-£15/mc). Åwietnie sprawdza siÄ dla firm, które chcÄ
samodzielnie prowadziÄ bloga i nie potrzebujÄ
ekstremalnej wydajnoÅci. PuÅapki: nadmiar wtyczek zabija Core Web Vitals, page builderzy typu Elementor i WPBakery generujÄ
ciÄżki HTML, a WordPress bez opieki technicznej staje siÄ wektorem ataków (Årednio 30k prób logowania miesiÄcznie)."},{type:"h2",text:"Shopify w UK â kiedy ma sens dla e-commerce"},{type:"p",text:"Shopify to standard dla e-commerce w UK w 2026 (£25-£299/mc + prowizja). Zalety: gotowe integracje z Royal Mail, DPD, Klarna, Clearpay, Stripe, natywne SEO, Åwietne Core Web Vitals na starterze. Wady: ograniczenia w custom logice i drogie appki (£10-£100/mc każda). Idealny dla sklepów 20-2000 SKU. Powyżej 2000 SKU lub przy custom flow lepiej sprawdza siÄ WooCommerce lub headless commerce (Medusa, Shopify Hydrogen)."},{type:"h2",text:"Next.js, Astro, TanStack Start â nowa era SEO"},{type:"p",text:'Nowoczesne strony w React (Next.js 15, TanStack Start) lub Astro/Svelte to dziÅ realna przewaga SEO. Powód: pre-rendering statyczny, edge functions, natywne image optimization i minimalny JavaScript. Efekt: LCP < 1.5 s, INP < 100 ms, PageSpeed 95-100. Google w Core Update 2025 i 2026 mocno faworyzuje takie strony dla fraz komercyjnych â a to bezpoÅrednio przekÅada siÄ na TOP 3 dla âstrony internetowe uk" czy âpozycjonowanie uk".'},{type:"h2",text:"Twarde porównanie: WordPress vs Next.js/Astro"},{type:"ul",items:["Koszt startu: WordPress £1200-£2500, Next.js/Astro £1800-£4500.","Koszt utrzymania miesiÄczny: WordPress £30-£80 (hosting + aktualizacje), Next.js £15-£40 (Vercel/Cloudflare).","LCP mobile (Årednia): WordPress 3.8 s, Next.js/Astro 1.2 s.","PageSpeed mobile: WordPress 45-70, Next.js/Astro 92-99.","BezpieczeÅstwo: WordPress wymaga staÅych aktualizacji wtyczek, Next.js/Astro â minimalna powierzchnia ataku.","Edycja treÅci: WordPress Åatwa (WYSIWYG), Next.js/Astro wymaga CMS headless (Sanity, Contentful) lub interfejsu custom.","Ranking SEO 2026: WordPress ~stabilny, Next.js/Astro rosnÄ
cy dziÄki Core Web Vitals."]},{type:"h2",text:"Który stack wybraÄ dla polskiej firmy w UK"},{type:"ol",items:["Mikro firma z 1-2 usÅugami i budżetem £1200-£2000 â WordPress + Astra/GeneratePress + Rank Math SEO.","Firma usÅugowa 3-15 osób, cel: TOP 3 lokalnie â nowoczesny stack (Next.js/Astro) + headless CMS. Zwrot inwestycji w 6-9 miesiÄcy.","E-commerce do 500 SKU â Shopify Basic/Shopify + polski copywriter i SEO UK.","E-commerce 500-5000 SKU â Shopify Plus lub WooCommerce z headless frontendem.","Firma skalujÄ
ca siÄ na caÅy UK z klasterami miast â nowoczesny stack z dynamicznymi landingami (jak dispace.uk)."]},{type:"h2",text:"Migracja z WordPressa na nowoczesny stack â co warto wiedzieÄ"},{type:"p",text:"NajczÄstszy bÅÄ
d migracji to utrata rankingu przez brak 301 z URL-i legacy i zmiana struktury URL. PrawidÅowa migracja zachowuje: URL-e (albo 1:1 mapowane 301), meta title/description, dane strukturalne, sitemap.xml. MigracjÄ warto poprzedziÄ eksportem GSC (frazy striking distance) i backupem contentu. Bez tego stracisz 30-70% widocznoÅci na 3-6 miesiÄcy â i to jest realny scenariusz, który widzimy u polskich firm w UK migrujÄ
cych samodzielnie."},{type:"h2",text:"Podsumowanie"},{type:"p",text:'W 2026 wybór technologii strony internetowej w UK to strategiczna decyzja o pozycji w Google.co.uk na najbliższe 3-5 lat. WordPress ma sens dla mikro firm i blogów. Shopify dla wiÄkszoÅci e-commerce. Nowoczesny stack (Next.js, Astro, TanStack Start) dla firm celujÄ
cych w TOP 3 dla konkurencyjnych fraz. W DiSpace wdrażamy oba Åwiaty â pomożemy Ci wybraÄ technologiÄ, która przyniesie najwiÄcej leadów, a nie tylko âÅadnie wyglÄ
da". Umów darmowÄ
konsultacjÄ.'}]},{slug:"strony-internetowe-szkocja-edynburg-glasgow-aberdeen",title:"Strony internetowe Szkocja â Edynburg, Glasgow, Aberdeen 2026",date:"2026-02-15",category:"Strony internetowe Szkocja",excerpt:"Strony internetowe Szkocja dla polskich firm w Edynburgu, Glasgow, Aberdeen i Dundee. Zobacz, dlaczego rynek szkocki różni siÄ od angielskiego, ile kosztujÄ
strony w Szkocji i jak wejÅÄ do TOP 3 Google.co.uk na frazy geolokalne.",metaDesc:"Strony internetowe Szkocja â projekt, wdrożenie i pozycjonowanie w Edynburgu, Glasgow, Aberdeen. Cennik, technologie i SEO lokalne dla polskich firm w Szkocji.",readMinutes:7,blocks:[{type:"p",text:"Szkocja to osobny rynek w ramach Wielkiej Brytanii â z wÅasnÄ
izbÄ
handlowÄ
, wÅasnymi mediami (Herald Scotland, Scotsman, STV) i wÅasnymi frazami SEO w Google.co.uk. Polskich firm w Szkocji jest ponad 90 000, gÅównie w Edynburgu, Glasgow, Aberdeen i Dundee. Strony internetowe pod ten rynek majÄ
swojÄ
specyfikÄ, którÄ
warto poznaÄ przed uruchomieniem projektu."},{type:"h2",text:"Dlaczego strony internetowe Szkocja to osobna gra"},{type:"p",text:'Google.co.uk różnicuje wyniki dla użytkownika w Edinburgh, Glasgow, Aberdeen i Dundee â inna kolejnoÅÄ wyników niż w Londynie czy Manchesterze. Dodatkowo czÄÅÄ fraz zawiera lokalne warianty pisowni (âEdinburgh" vs âEdynburg", âGlasgow" bez odmiany po polsku). Skuteczna strona internetowa w Szkocji musi obsÅużyÄ oba warianty jÄzykowe i mieÄ dedykowane landingi miejskie.'},{type:"h2",text:"Kluczowe miasta szkockie â potencjaÅ dla polskich firm"},{type:"ul",items:['Edynburg â ~25 000 Polaków, stolica administracyjna i finansowa Szkocji. Frazy: âpolska ksiÄgowa Edinburgh", âstrony internetowe Edynburg", âpolski hydraulik Edinburgh".','Glasgow â ~30 000 Polaków, najwiÄksze miasto Szkocji, silny sektor budowlany i logistyczny. Frazy: âpolski elektryk Glasgow", âstrony internetowe Glasgow", âpolski mechanik Glasgow".','Aberdeen â ~10 000 Polaków, silna branża oil & gas i logistyka. Frazy: âpolska firma sprzÄ
tajÄ
ca Aberdeen", âpolski hydraulik Aberdeen".','Dundee â ~5 000 Polaków, sektor kreatywny i medyczny. Frazy: âpolska ksiÄgowa Dun
69dee", âpolski dentysta Dundee".',"Inverness, Stirling, Perth â mniejsze rynki z niskÄ
konkurencjÄ
SEO, Åwietne pod szybkie wejÅcie do TOP 3 w 3-4 miesiÄ
ce."]},{type:"h2",text:"Strony internetowe Szkocja â ile kosztujÄ
w 2026"},{type:"p",text:"Ceny sÄ
zbliżone do reszty UK, ale realizacja bywa taÅsza od Londynu o 10-20%: strona firmowa standard £1290-£2290, sklep Shopify/WooCommerce £2500-£5900, landing lokalny £790-£1290. Sam koszt hostingu i domeny .scot lub .co.uk to £30-£80/rok. W praktyce dla wiÄkszoÅci polskich firm w Szkocji sensowna inwestycja to strona firmowa z 3-5 landingami miejskimi (Edinburgh, Glasgow, Aberdeen) â koszt £1800-£2900 i realny zwrot w 4-6 miesiÄcy."},{type:"h2",text:"Pozycjonowanie strony w Szkocji â SEO lokalne"},{type:"p",text:'Konkurencja SEO w Szkocji jest niższa niż w Londynie â Åatwiej wejÅÄ do TOP 3 na frazy takie jak âstrony internetowe Glasgow", âSEO Edinburgh" czy âpolska ksiÄgowa Aberdeen". Kluczowe elementy: Google Business Profile z lokalizacjÄ
szkockÄ
, cytowania NAP w szkockich katalogach (Scoot, Yell Scotland, Scottish Business Directory), publikacje w Polish Express Scotland i Cooltura, oraz osobne landingi miejskie z lokalnymi opiniami klientów.'},{type:"h2",text:"hreflang, waluty i strefa czasowa"},{type:"p",text:'Strona internetowa Szkocja powinna mieÄ poprawnie ustawione hreflang="en-GB" i alternatywy "pl-GB" (dla polskich użytkowników), walutÄ GBP (£), format daty DD/MM/YYYY i podanie strefy czasowej BST/GMT. Dodatkowo warto dodaÄ dane strukturalne LocalBusiness z adresem i geokoordynatami dla każdego z miast, w których operujesz.'},{type:"h2",text:"Content marketing dla firm w Szkocji"},{type:"p",text:'Content pisany pod rynek szkocki powinien odwoÅywaÄ siÄ do lokalnych realiów: kursu funta, cen usÅug w Edynburgu vs Londynie, specyfiki VAT w Szkocji (identycznej jak w Anglii, ale Scottish Rate of Income Tax jest inny). Blog to naturalne miejsce na frazy typu âile kosztuje strona internetowa w Szkocji", âpolska firma remontowa Edinburgh â na co uważaÄ", âksiÄgowoÅÄ dla self-employed w Szkocji".'},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Strony internetowe Szkocja to olbrzymia szansa dla polskich firm â mniejsza konkurencja SEO, wyraźna spoÅecznoÅÄ lokalna i chÅonny rynek B2C. Realny plan: dedykowana strona z landingami dla Edynburga, Glasgow, Aberdeen i Dundee, Google Business Profile w każdym z tych miast, publikacje w Polish Express Scotland i regularny blog pod frazy lokalne. W DiSpace projektujemy i pozycjonujemy strony internetowe w Szkocji od 2019 roku â zamów darmowÄ
wycenÄ i wejdź do TOP 3 w swoim mieÅcie w 4-6 miesiÄcy."}]},{slug:"wdrozenie-sklepu-internetowego-uk-cennik",title:"Wdrożenie sklepu internetowego w UK â peÅny cennik 2026 (WooCommerce vs Shopify)",date:"2026-03-02",category:"Sklepy internetowe UK",excerpt:"Wdrożenie sklepu internetowego UK w 2026 kosztuje od
69£1 400 do £8 000+ w zależnoÅci od platformy, integracji i zakresu migracji. Zobacz realny cennik WooCommerce i Shopify dla polskich firm w Anglii, Szkocji i Walii â bez ukrytych kosztów hostingu, VAT/HMRC i kurierów.",metaDesc:"Wdrożenie sklepu internetowego UK â cennik 2026 (£1 400-£8 000). WooCommerce vs Shopify, koszty VAT/HMRC, pÅatnoÅci GBP, integracje Royal Mail/DPD. Agencja e-commerce dla polskich firm w UK.",readMinutes:8,blocks:[{type:"p",text:'âIle kosztuje wdrożenie sklepu internetowego w UK?" â to pierwsze pytanie, jakie zadaje polska firma otwierajÄ
ca e-commerce w Anglii, Szkocji lub Walii. Odpowiedź âto zależy" jest prawdziwa, ale bezużyteczna. W tym artykule pokazujemy konkretne wideÅki cenowe dla wdrożenia sklepu internetowego w UK w 2026 roku â z rozbiciem na platformy (WooCommerce, Shopify, custom Next.js), zakres migracji, integracje kurierów i pÅatnoÅci GBP, VAT pod HMRC i koszty ukryte, o których nie mówiÄ
agencje.'},{type:"h2",text:"Wdrożenie sklepu internetowego UK â wideÅki cenowe 2026"},{type:"ul",items:["Sklep MVP WooCommerce UK (£1 400-£2 200): 20-100 SKU, pÅatnoÅci Stripe GBP, VAT UK, kurier Royal Mail Click & Drop, jeden jÄzyk (PL lub EN), motyw premium + drobne customizacje. Start w 14 dni.","Sklep Shopify UK dla polskich firm (£1 900-£3 200): motyw Dawn/Impulse, Shopify Payments GBP + Klarna, aplikacje: Judge.me (opinie), Langify (PL/EN), DPD/Evri. Start w 10-14 dni.","Sklep WooCommerce UK standard (£2 400-£4 200): 100-500 SKU, migracja z Etsy/Allegro/WooCommerce PL, panel B2B z cenami hurtowymi, Xero/QuickBooks, opinie Trustpilot, custom motyw pod Core Web Vitals.","Sklep custom Next.js / TanStack UK (£4 900-£8 900): headless commerce, LCP < 1.2 s, integracje ERP, wielojÄzycznoÅÄ PL/EN/UA, dedykowany panel admina, checkout jednostronicowy z Klarna/PayPal.","Enterprise Shopify Plus / WooCommerce hosting Kinsta (od £8 900): multi-store UK/EU, 1000+ SKU, integracje magazynowe (Linnworks, Katana), replatforming z Magento."]},{type:"h2",text:"Cennik WooCommerce UK â co dostajesz od £1 400"},{type:"p",text:"WooCommerce jest najczÄstszym wyborem polskich firm w UK, bo daje peÅnÄ
wÅasnoÅÄ sklepu i zerowe opÅaty transakcyjne od Shopify. Za £1 400-£2 200 netto dostajesz: instalacjÄ WooCommerce na hostingu UK (Kinsta London, WPX Manchester lub SiteGround Ireland), motyw komercyjny (Astra Pro, Blocksy, Kadence), 20-100 produktów z importem CSV, konfiguracjÄ VAT UK (20%, 5%, 0% zero-rated), integracjÄ Stripe GBP + PayPal, Royal Mail Click & Drop, formularze kontaktowe RODO/UK GDPR, cache LiteSpeed lub WP Rocket i peÅne SEO on-page (schema.org Product, Organization, LocalBusiness)."},{type:"h2",text:"Cennik Shopify UK â kiedy siÄ realnie opÅaca"},{type:"p",text:"Shopify UK to najszybsza droga do sprzedaży online â sklep MVP potrafimy uruchomiÄ w 10 dni. Za £1 900-£3 200 dostajesz: konfiguracjÄ Shopify Basic lub Grow (£25-£65/mc do Shopify), motyw premium (Impulse £320, Prestige £360) lub Dawn free z customizacjÄ
, Shopify Payments GBP (najniższe stawki na rynku UK â od 1.5% + 25p dla Grow), Klarna Pay in 3, aplikacje Judge.me (opinie), Langify (PL/EN), integracje DPD, Royal Mail i Evri. Shopify wygrywa gdy: sprzedajesz DTC, potrzebujesz POS w sklepie stacjonarnym w UK, chcesz szybko testowaÄ rynek bez inwestycji w rozwój."},{type:"h2",text:"Koszty ukryte wdrożenia sklepu internetowego w UK"},{type:"ol",items:["Hosting UK: WooCommerce od £15/mc (SiteGround), premium od £30-£100/mc (Kinsta, WPX). Shopify: £25-£299/mc w opÅacie subskrypcji.","Rejestracja VAT UK w HMRC â bezpÅatna, ale konfiguracja stawek i faktur VAT-owych w sklepie to 4-6 h pracy agencji (£240-£420).","PÅatnoÅci GBP: Stripe 1.5% + 20p (EEA cards) / 2.5% + 20p (international), PayPal 2.9%, Klarna 4-6% od transakcji.","Kurierzy: konto biznesowe Royal Mail (bezpÅatne), DPD od £200 depozytu, Evri OneParcel od £2/paczka.","Opinie: Trustpilot Free lub Judge.me Free na start, pÅatne plany od £22/mc (Trustpilot Standard).","Backup + monitoring: UpdraftPlus Premium £70/rok (WooCommerce), Shopify wliczone.","SSL: bezpÅatne (Let's Encrypt na hostingu), Shopify wliczone."]},{type:"h2",text:"Wdrożenie sklepu internetowego UK z migracjÄ
z Etsy/Allegro"},{type:"p",text:"Migracja z Etsy do WooCommerce UK to £600-£1 400 dodatkowo (do 500 produktów, przekierowania 301 z dotychczasowych URL-i, transfer opinii przez recenzje weryfikowane). Migracja z Allegro do Shopify UK â £900-£1 900 (obsÅuga wariantów produktowych, kategorii Allegro do kolekcji Shopify, import zdjÄÄ). Migracja z WooCommerce PL do WooCommerce UK z zachowaniem SEO i zamówieÅ historycznych â £1 200-£2 400."}
69,{type:"h2",text:"Ile kosztuje sklep B2B w UK"},{type:"p",text:"Panel B2B (rejestracja firmowa z weryfikacjÄ
VAT, ceny netto vs brutto, cenniki grupowe, VAT reverse charge dla klientów z UE) to dodatek £600-£1 400 do wdrożenia WooCommerce (wtyczki: Wholesale Suite, B2BKing) lub £900-£1 900 do Shopify (aplikacja B2B & Wholesale Solution, Bold Custom Pricing). WiÄcej w artykule Sklep B2B w UK dla polskich firm."},{type:"h2",text:"Kalkulator: policz budżet swojego sklepu"},{type:"p",text:"Na stronie usÅugi wdrożenia mamy interaktywny kalkulator kosztów â wybierz platformÄ, liczbÄ produktów, integracje i kraj magazynu, a policzymy realnÄ
wycenÄ. Sprawdź kalkulator na stronie agencja wdrożeÅ sklepów internetowych w UK."},{type:"h2",text:"Ile trwa wdrożenie sklepu internetowego w UK"},{type:"p",text:"Sklep MVP WooCommerce lub Shopify: 10-14 dni roboczych. Sklep standard z migracjÄ
z Etsy/Allegro: 3-4 tygodnie. Sklep custom Next.js lub headless commerce: 6-10 tygodni. Enterprise Shopify Plus / WooCommerce z ERP: 10-14 tygodni. Realny start sprzedaży w 14 dni od podpisania umowy jest w zasiÄgu dla wiÄkszoÅci polskich firm w UK â pod warunkiem, że masz przygotowane zdjÄcia produktów, opisy i konto Stripe/Shopify."},{type:"h2",text:"Podsumowanie â od czego zaczÄ
Ä"},{type:"p",text:"Wdrożenie sklepu internetowego w UK od £1 400 to realny start, ale każde 500 SKU, panel B2B, migracja z Etsy/Allegro i integracja ksiÄgowa (Xero, QuickBooks) doda £600-£1 900. NajczÄstsza konfiguracja polskich firm w UK w 2026 to sklep WooCommerce na hostingu Kinsta lub Shopify Grow za £1 900-£2 900, z Stripe GBP + Klarna, Royal Mail Tracked i faktury VAT z UK. Zamów bezpÅatnÄ
wycenÄ w 24 h â dostaniesz konkretny brief, harmonogram i cenÄ bez ukrytych kosztów."}]},{slug:"woocommerce-vs-shopify-uk",title:"WooCommerce vs Shopify w UK â który sklep wybraÄ dla polskiej firmy (2026)",date:"2026-03-05",category:"Sklepy internetowe UK",excerpt:"WooCommerce czy Shopify w UK? Porównanie dla polskich firm otwierajÄ
cych sklep online w Anglii â koszty, VAT/HMRC, integracje kurierów Royal Mail/DPD/Evri, pÅatnoÅci GBP, skalowanie i migracje z Etsy/Allegro. Wybierz Åwiadomie zanim wdrożysz.",metaDesc:"WooCommerce vs Shopify UK 2026 â peÅne porównanie dla polskich firm w Anglii, Szkocji i Walii. Koszty, VAT, integracje UK, skalowanie. Który sklep online wybraÄ do wdrożenia?",readMinutes:9,blocks:[{type:"p",text:"WooCommerce czy Shopify w UK? To pytanie zadaje sobie każda polska firma otwierajÄ
ca sklep internetowy w Anglii, Szkocji lub Walii. Obie platformy trzymajÄ
razem ponad 60% rynku e-commerce UK, ale różniÄ
siÄ kosztami, elastycznoÅciÄ
, kosztami transakcyjnymi i sposobem obsÅugi VAT pod HMRC. W tym porównaniu dostajesz konkretne kryteria wyboru â bez marketingowej papki i bez ukrywania minusów."},{type:"h2",text:"WooCommerce vs Shopify UK â tabela porównawcza"},{type:"ul",items:["Koszty startowe: WooCommerce £1 400-£2 200 wdrożenie + £15-£100/mc hosting UK. Shopify: £1 900-£3 200 wdrożenie + £25-£299/mc subskrypcja.","OpÅaty transakcyjne: WooCommerce 0% od platformy (pÅacisz tylko Stripe/PayPal). Shopify: 0% z Shopify Payments, 2% bez.","VAT UK / HMRC: WooCommerce EU VAT + wtyczka YITH lub Aelia (£99/rok). Shopify: natywna obsÅuga VAT UK i EU OSS od Shopify Plus.","Integracje kurierów UK: WooCommerce â Royal Mail Click & Drop (bezpÅatna), DPD Local, Evri, wtyczki po £30-£120. Shopify â natywne integracje w aplikacjach z App Store.","Skalowanie: WooCommerce od 1 do 10 000+ produktów â hosting Kinsta/WPX skaluje w górÄ. Shopify â od Basic do Shopify Plus (od $2 000/mc) dla enterprise.","WÅasnoÅÄ sklepu: WooCommerce â peÅna wÅasnoÅÄ, dowolne modyfikacje. Shopify â sklep na infrastrukturze Shopify, ograniczenia w checkout (poza Plus).","B2B: WooCommerce â Wholesale Suite / B2BKing (£120-£300 licencja). Shopify â B2B & Wholesale Solution app / natywne B2B na Shopify Plus."]},{type:"h2",text:"WooCommerce UK â kiedy wygrywa dla polskiej firmy"},{type:"p",text:"WooCommerce sprawdza siÄ, gdy: masz sklep z 100+ produktami wariantowymi (rozmiary, kolory), chcesz panel B2B z indywidualnymi cennikami dla klientów hurtowych, potrzebujesz peÅnej kontroli nad checkoutem (jednostronicowy, wieloetapowy, custom pola), migrujesz z Etsy/Allegro/WooCommerce PL z zachowaniem SEO i URL-i, chcesz uniknÄ
Ä opÅat transakcyjnych Shopify (2% bez Shopify Payments), planujesz integracjÄ z polskim WMS/ERP (Sello, Subiekt, Optima). WooCommerce daje peÅne SEO on-page (Yoast/RankMath), wÅasnoÅÄ danych klientów i dowolnoÅÄ w projekcie UX. Dla wiÄkszoÅci polskich firm usÅugowo-produktowych w UK to wybór #1."},{type:"h2",text:"Shopify UK â kiedy wygrywa dla polskiej firmy"},{type:"p",text:"Shopify wygrywa, gdy: chcesz startowaÄ w 10 dni bez developera na retainerze, sprzedajesz DTC (direct-to-consumer) z zestawem 20-100 produktów, potrzebujesz Shopify POS w sklepie stacjonarnym w UK (Manchester, Londyn, Glasgow), planujesz dropshipping z UK/UE (aplikacje Zendrop, Spocket), zależy Ci na najniższych opÅatach Stripe/Shopify Payments (od 1.5% + 25p dla Grow), potrzebujesz natywnej sprzedaży miÄdzynarodowej (Shopify Markets â automatyczne przewalutowanie GBP â EUR, PLN, USD). Shopify daje szybszy time-to-market i mniej pracy operacyjnej â kosztem elastycznoÅci i miesiÄcznej subskrypcji."},{type:"h2",text:"Integracje kurierów UK â Royal Mail, DPD, Evri"},{type:"p",text:"WooCommerce: Royal Mail Click & Drop bezpÅatny plugin, DPD Shipping for WooCommerce £99/rok, Evri â WooCommerce Advanced Shipment Tracking. Etykiety generujesz w panelu WooCommerce z jednym klikniÄciem. Shopify: aplikacje Starshipit (£25/mc), Shippo, ShipStation â peÅna integracja Royal Mail, DPD Local, Evri, DHL Express UK. Oba systemy obsÅugujÄ
tracking numbers automatycznie i wysyÅajÄ
e-mail z linkiem do Åledzenia pacz
69ki. W praktyce koszt operacyjny wysyÅki w UK dla polskiej firmy to £2.50-£6.50 za paczkÄ Royal Mail Tracked lub Evri OneParcel."},{type:"h2",text:"PÅatnoÅci GBP â Stripe, PayPal, Klarna, Shopify Payments"},{type:"p",text:"WooCommerce: Stripe 1.5% + 20p (EEA), PayPal 2.9%, Klarna 4-6%, Adyen dla enterprise. Zero opÅat od WooCommerce. Shopify: Shopify Payments (najkorzystniejsze â od 1.5% + 25p dla Grow), Stripe/PayPal/Klarna również dostÄpne, ale Shopify pobiera dodatkowe 2% od transakcji poza Shopify Payments. Rekomendacja dla polskich firm w UK: Stripe GBP + Klarna Pay in 3 (obsÅuguje 45% klientów w UK) + PayPal Express (opcja dla starszych klientów). Konfiguracja pÅatnoÅci trwa 1-2 dni robocze i wymaga rejestracji firmy w UK (LTD lub sole trader)."},{type:"h2",text:"Case: migracja z Etsy do WooCommerce UK"},{type:"p",text:"Warsztat ceramiki z Londynu (500 produktów na Etsy, £8 000/mc obrotu) zmigrowaÅ siÄ do WooCommerce UK w 4 tygodnie. Wynik po 6 miesiÄ
cach: obrót £14 500/mc (+81%), CAC spadÅ z £22 na £11, marża wzrosÅa o 12% dziÄki zerowym opÅatom Etsy (5% + £0.20/listing). Koszt wdrożenia: £2 900 (WooCommerce + migracja + hosting Kinsta + Stripe + panel B2B dla hoteli). Zwrot inwestycji w 2 miesiÄ
ce."},{type:"h2",text:"Podsumowanie â który sklep wybraÄ w UK w 2026"},{type:"p",text:"WooCommerce UK â dla polskich firm z 100+ produktami, panelem B2B, migracjÄ
z Etsy/Allegro i dÅugoterminowÄ
kontrolÄ
nad sklepem. Shopify UK â dla firm DTC startujÄ
cych szybko, z 20-100 SKU, POS-em i sprzedażÄ
miÄdzynarodowÄ
. Oba wybory sÄ
dobre â decyduje profil biznesu, nie ideologia. W DiSpace wdrażamy oba systemy dla polskich firm w UK od 2019 roku â zamów bezpÅatnÄ
wycenÄ wdrożenia sklepu internetowego w UK, a w 24 h wracamy z rekomendacjÄ
i konkretnÄ
cenÄ
."}]},{slug:"migracja-sklepu-do-uk",title:"Migracja sklepu internetowego do UK â checklist krok po kroku (Etsy, Allegro, WooCommerce PL)",date:"2026-03-08",category:"Sklepy internetowe UK",excerpt:"Przenosisz sklep z Polski do UK? Kompletny checklist migracji â audyt sklepu PL, rejestracja VAT UK/HMRC, wybór platformy (WooCommerce vs Shopify), transfer produktów i klientów, konfiguracja pÅatnoÅci GBP i kurierów UK, SEO 301 i hreflang. Bez utraty pozycji w Google i zamówieÅ.",metaDesc:"Migracja sklepu internetowego do UK â checklist 2026. Z Etsy, Allegro lub WooCommerce PL do WooCommerce UK / Shopify UK. VAT/HMRC, pÅatnoÅci GBP, przekierowania 301. Agencja migracji.",readMinutes:8,blocks:[{type:"p",text:"Migracja sklepu internetowego do UK to jedna z najczÄstszych operacji, jakÄ
wykonujemy dla polskich firm w Anglii, Szkocji i Walii. Powód jest prosty â brytyjski klient B2C i B2B nie kupuje z domeny .pl, pÅatnoÅci PLN nie dziaÅajÄ
w UK, a Etsy pobiera 5% + £0.20 od każdego listingu. Ten checklist pokazuje, jak przenieÅÄ sklep z Polski do UK w 4-6 tygodni bez utraty pozycji w Google.co.uk, historii zamówieÅ i zaufania klientów."},{type:"h2",text:"Dlaczego polskie firmy migrujÄ
sklep do UK w 2026"},{type:"ul",items:["Klient brytyjski pÅaci w GBP i nie chce przewalutowaÅ â obniża CAC i porzucone koszyki.","Faktura VAT z UK (LTD lub sole trader) buduje zaufanie w B2B i pozwala odliczaÄ VAT.","Etsy i Allegro pobierajÄ
prowizje 5-15% + opÅaty za listingi â wÅasny sklep to marża +20-30%.","Ranking w Google.co.uk wymaga domeny .co.uk lub .uk oraz hostingu UK/EU dla Core Web Vitals.","Rejestracja VAT UK poniżej £90 000 obrotu rocznie jest opcjonalna â poniżej progu nie pÅacisz VAT."]},{type:"h2",text:"Krok 1: audyt sklepu PL (SEO, produkty, przekierowania)"},{type:"p",text:'Zanim zaczniesz migracjÄ, zrób twardy audyt: eksport wszystkich URL-i, meta title, meta description i pozycji w Google Search Console (ostatnie 16 miesiÄcy). Zapisz listÄ top 20 fraz, na które sklep PL rankuje w TOP 10. Ta lista bÄdzie podstawÄ
mapowania przekierowaÅ 301 na nowe URL-e UK. Wyeksportuj katalog produktów (CSV z Etsy / XML z Allegro / WooCommerce Product CSV) â zdjÄcia, ceny, warianty, opisy, kategorie. Sprawdź, które produkty warto sprzedawaÄ w UK (frazy typu âpolish pottery uk", âpolish amber jewelry" majÄ
realny volume).'},{type:"h2",text:"Krok 2: rejestracja VAT UK / HMRC + wybór stawek"},{type:"p",text:"Firma UK to najczÄÅciej LTD (Companies House, £12, 24 h) lub sole trader (HMRC self-assessment, bezpÅatnie). Rejestracja VAT UK jest opcjonalna poniżej £90 000 obrotu rocznego (próg 2026). JeÅli przekraczasz próg, rejestrujesz VAT w HMRC (bezpÅatnie) i konfigurujesz stawki: 20% standard, 5% reduced (energia, dzieciÄce foteliki), 0% zero-rated (żywnoÅÄ, ksiÄ
żki, ubrania dzieciÄce). W sklepie ustawiasz VAT jako inclusive (dla B2C) lub exclusive (dla B2B) â WooCommerce i Shopify obsÅugujÄ
oba tryby natywnie."},{type:"h2",text:"Krok 3: wybór platformy â WooCommerce UK vs Shopify UK"},{type:"p",text:"Dla migracji z Etsy najczÄÅciej rekomendujemy Shopify UK (10 dni, motyw Impulse, aplikacja Etsy Importer) lub WooCommerce UK (14-21 dni, wtyczka Etsy Product Importer). Dla migracji z Allegro â WooCommerce UK z niestandardowym importem XML (warianty produktowe Allegro nie mapujÄ
siÄ 1:1 do Shopify). Dla migracji z WooCommerce PL â WooCommerce UK z peÅnym transferem bazy danych, przekierowaniami 301 i zachowaniem historii zamówieÅ. WiÄcej w porównaniu WooCommerce vs Shopify UK."},{type:"h2",text:"Krok 4: migracja produktów, zdjÄÄ, klientów, zamówieÅ"},{type:"ol",items:["Eksport produktów z platformy źródÅowej (CSV / XML / API).","Czyszczenie danych: usuniÄcie duplikatów, standaryzacja wariantów (rozmiar S/M/L zamiast small/medium/large).","Import do platformy docelowej z mapowaniem kategorii (Etsy Categories â WooCommerce Product Categories).","Transfer zdjÄÄ produktów w oryginalnej rozdzielczoÅci + konwersja na WebP/AVIF dla Core Web Vitals.","Migracja klientów (adresy, e-maile, historia zakupów) z opcjÄ
ponownego opt-in do newslettera (UK GDPR).","Transfer zamówieÅ historycznych (opcjonalny â 12-24 mc wstecz dla obsÅugi zwrotów).","Import opinii produktowych z platformy źródÅowej (Judge.me, Yotpo)."]},{type:"h2",text:"Krok 5: konfiguracja pÅatnoÅci GBP i kurierów UK"},{type:"p",text:"Konto Stripe UK (rejestracja z NI number, 1-2 dni), PayPal Business UK (natychmiast), Klarna UK (aplikacja online, 2-3 dni). Kurierzy: Royal Mail Click & Drop (bezpÅatny), DPD Local Online (depozyt £200), Evri OneParcel (od £2/paczka). Konfiguracja stref wysyÅki: UK Mainland (£3.99), Highlands & Islands (£8.99), Northern Ireland (£12.99), EU (£14.99). Etykiety wysyÅkowe generujesz w panelu sklepu z Royal Mail API lub aplikacji Starshipit."},{type:"h2",text:"Krok 6: SEO â przekierowania 301, hreflang PL/EN, sitemap"},{type:"p",text:'Najważniejszy krok migracji. Dla każdego URL-a starego sklepu (Etsy / Allegro / WooCommerce PL) ustaw przekierowanie 301 na nowy odpowiednik w sklepie UK. Bez tego tracisz caÅy link juice i pozycje w Google. W WooCommerce używamy Redirection plugin lub bezpoÅrednio .htaccess. W Shopify â natywne redirects w Settings > Navigation. Dodaj hreflang="pl" (dla polskiej wersji) i hreflang="en-GB" (angielskiej) w headerze każdej strony. Wygeneruj sitemap.xml z nowymi URL-ami i zgÅoÅ do Google Search Console i Bing Webmaster Tools.'},{type:"h2",text:"NajczÄstsze bÅÄdy migracji sklepu do UK"},{type:"ul",items:["Brak przekierowaÅ 301 â utrata 60-80% ruchu organicznego w 2-3 miesiÄ
ce.","Duplikaty treÅci miÄdzy starym a nowym sklepem â Google karze i degraduje pozycje.","ZÅy format cen (PLN zamiast GBP) po migracji â Google Merchant Center odrzuca feed.","Brak konfiguracji VAT UK w koszyku â problem ksiÄgowy przy sprzedaży B2B.","Utrata opinii produktowych â spadek CTR i konwersji o 15-25%.","ZdjÄcia produktów w rozdzielczoÅci 3000x3000 bez WebP â LCP 4-6 s i spadek Core Web Vitals."]},{type:"h2",text:"Ile trwa i ile kosztuje migracja sklepu do UK"},{type:"p",text:"Migracja z Etsy do Shopify UK (do 500 SKU): 3 tygodnie, £1 900-£2 900. Migracja z Allegro do WooCommerce UK (do 500 SKU): 4-5 tygodni, £2 400-£3 900. Migracja z WooCommerce PL do WooCommerce UK z bazÄ
zamówieÅ: 4-6 tygodni, £2 900-£4 900. Zwrot inwestycji dla wiÄkszoÅci polskich firm to 3-6 miesiÄcy dziÄki zerowym prowizjom Etsy/Allegro i wyższej marży."},{type:"h2",text:"Podsumowanie â od czego zaczÄ
Ä migracjÄ"},{type:"p",text:"Zacznij od audytu sklepu PL i decyzji o platformie docelowej (WooCommerce UK dla elastycznoÅci, Shopify UK dla szybkoÅci). Zarezerwuj 4-6 tygodni na peÅnÄ
migracjÄ z przekierowaniami 301 i konfiguracjÄ
VAT UK. W DiSpace prowadzimy migracje sklepów z Polski do UK od 2019 roku â bez utraty pozycji w Google, historii zamówieÅ i opinii. Zamów bezpÅatnÄ
wycenÄ migracji jako czÄÅÄ naszej agencji wdrożeÅ sklepów internetowych w UK."}]}
69,{slug:"sklep-b2b-uk-panel-hurtowy",title:"Sklep B2B w UK dla polskich firm â panel hurtowy, ceny netto, VAT reverse charge",date:"2026-03-11",category:"Sklepy internetowe UK",excerpt:"Sklep B2B w UK â panel hurtowy z rejestracjÄ
firmowÄ
, weryfikacjÄ
VAT, cenami netto, cennikami grupowymi i VAT reverse charge dla klientów z UE. Wdrożenie na WooCommerce lub Shopify Plus dla polskich firm sprzedajÄ
cych hurtowo w Wielkiej Brytanii.",metaDesc:"Sklep B2B UK dla polskich firm â panel hurtowy WooCommerce/Shopify, ceny netto, VAT reverse charge, minimalne zamówienia. Wdrożenie od £2 400. Agencja e-commerce B2B w UK.",readMinutes:8,blocks:[{type:"p",text:"Sklep B2B w UK to najwyższa marża w e-commerce dla polskich firm w Wielkiej Brytanii â mniej klientów, wyższa wartoÅÄ koszyka (£300-£8 000), dÅuższy Customer Lifetime Value i niższe koszty pozyskania. Ten artykuÅ pokazuje, jak wdrożyÄ sklep B2B UK z panelem hurtowym, weryfikacjÄ
VAT, cenami netto i VAT reverse charge dla klientów z UE â na WooCommerce lub Shopify Plus, w 4-6 tygodni, od £2 400 netto."},{type:"h2",text:"Czym różni siÄ sklep B2B UK od B2C w Wielkiej Brytanii"},{type:"ul",items:["Rejestracja firmowa z weryfikacjÄ
VAT number (HMRC VIES) â klient wprowadza VAT number, sklep weryfikuje automatycznie i pokazuje ceny netto.","Ceny netto (exclusive VAT) zamiast brutto (inclusive VAT) â B2B ksiÄguje netto i odlicza VAT.","Cenniki grupowe (tiered pricing) â dyskonty od £500, £2 000, £5 000 wartoÅci zamówienia lub dla klientów strategicznych.","Minimalne wartoÅci zamówienia (MOQ) â np. £250 dla nowych klientów, £100 dla staÅych.","PÅatnoÅci odroczone (Net 30, Net 60) â faktura z terminem pÅatnoÅci, obsÅugiwane przez Two.inc, Kriya, Klarna B2B.","VAT reverse charge dla klientów z UE â sprzedaż z UK do firm w UE bez VAT (klient rozlicza VAT u siebie).","Panel klienta z historiÄ
zamówieÅ, ponownymi zamówieniami one-click i pobraniem faktur PDF."]},{type:"h2",text:"Panel hurtowy WooCommerce UK â Wholesale Suite / B2BKing"},{type:"p",text:"Dla WooCommerce najczÄÅciej wdrażamy Wholesale Suite (£149-£249/rok) lub B2BKing (£129-£399/rok). Oba dajÄ
: rejestracjÄ B2B z formularzem firmowym, ceny netto ukryte za loginem, cenniki grupowe (Wholesale, Distributor, VIP), MOQ per produkt lub per zamówienie, VAT reverse charge dla UE, panel klienta z fakturami PDF, ceny tabelaryczne (quantity breaks) i quick order form (klient wpisuje SKU i iloÅÄ â zamówienie w 30 sekund). Wdrożenie na WooCommerce z panelem B2B: £2 400-£3 900."},{type:"h2",text:"Panel hurtowy Shopify UK â B2B & Wholesale / Shopify Plus B2B"},{type:"p",text:"Dla Shopify B2B mamy dwie Åcieżki. Shopify Grow + aplikacja B2B & Wholesale Solution (£25-£45/mc) â cenniki grupowe, ceny netto, MOQ, ale ograniczenia w checkout (max Shopify Basic). Shopify Plus (od $2 000/mc) â natywne B2B: Companies (klient firmowy z wieloma userami), Price Lists (cenniki dedykowane), Draft Orders z fakturami, Net 30 payment terms wbudowane. Shopify Plus B2B to standard dla polskich hurtowni FMCG i dystrybutorów w UK z obrotem powyżej £40 000/mc."},{type:"h2",text:"VAT reverse charge â sprzedaż B2B z UK do UE"},{type:"p",text:'Po Brexicie sprzedaż B2B z UK do firm w UE (Polska, Niemcy, Francja) podlega VAT reverse charge â sklep UK wystawia fakturÄ z 0% VAT, a klient w UE rozlicza VAT u siebie (mechanizm reverse charge). Wymaga: weryfikacji VAT number klienta przez VIES API, adnotacji na fakturze âReverse charge â Article 196 of Directive 2006/112/EC", eksportu do Intrastat (jeÅli obrót przekracza próg). WooCommerce i Shopify obsÅugujÄ
to natywnie po konfiguracji wtyczek EU VAT for WooCommerce lub Shopify Tax.'},{type:"h2",text:"PÅatnoÅci B2B UK â Net 30, Klarna Business, Two.inc"},{type:"p",text:"Klient B2B w UK oczekuje odroczonych pÅatnoÅci â Net 30 (30 dni), Net 60 (60 dni), rzadziej Net 90. RozwiÄ
zania na sklepie: Two.inc (autoryzacja klienta B2B w 2 minuty, Two.inc wypÅaca Ci od razu 100% i przejmuje ryzyko, opÅata 2.5-3.5% od transakcji), Kriya (dawniej Mar
69ketFinance, dla enterprise), Klarna Business (Net 30, opÅata 2.9-4.5%), fakturowanie rÄczne z Xero/QuickBooks (0% opÅat, ale ryzyko braku pÅatnoÅci). Dla nowych klientów rekomendujemy Two.inc â obsÅuguje weryfikacjÄ, kredytowanie i windykacjÄ."},{type:"h2",text:"Integracje B2B UK â Xero, QuickBooks, Linnworks"},{type:"p",text:"Sklep B2B w UK integruje siÄ z: Xero (£15-£70/mc) lub QuickBooks (£10-£40/mc) dla ksiÄgowoÅci, fakturowania VAT UK i eksportu do HMRC Making Tax Digital. Linnworks (£150-£400/mc) lub Katana dla zarzÄ
dzania magazynem multi-channel (Shopify + WooCommerce + Amazon UK + eBay UK). Panel B2B dla polskich firm z magazynem w UK to zwykle: sklep WooCommerce/Shopify + Linnworks + Xero + Royal Mail/DPD w jednym pipeline. Koszt integracji: £900-£2 400 dodatkowo do wdrożenia sklepu."},{type:"h2",text:"Case: hurtownia FMCG z Londynu â £45 000/mc po 6 miesiÄ
cach"},{type:"p",text:"Polska hurtownia importowa (produkty spożywcze, kosmetyki) z magazynem w Enfield (Londyn) wdrożyÅa sklep WooCommerce UK z panelem B2B (Wholesale Suite + B2BKing) w listopadzie 2025. Konfiguracja: 1 200 SKU, 3 grupy cenowe (Retailer, Wholesaler, Distributor), MOQ £250, Net 30 przez Two.inc, integracja z Xero. Wyniki po 6 miesiÄ
cach: 87 klientów B2B (sklepy polskie w UK, delikatesy, restauracje), Årednia wartoÅÄ zamówienia £520, obrót £45 000/mc, marża 24%. Koszt wdrożenia: £3 900 + £600/mc utrzymania. Zwrot inwestycji: 2 miesiÄ
ce."},{type:"h2",text:"Ile kosztuje wdrożenie sklepu B2B w UK"},{type:"p",text:"Sklep B2B WooCommerce UK z Wholesale Suite (do 500 SKU): £2 400-£3 900. Sklep B2B WooCommerce UK z B2BKing + Linnworks + Xero (do 2 000 SKU): £3 900-£5 900. Sklep B2B Shopify Plus UK (natywne B2B, Net 30, multi-company): od £6 900 + $2 000/mc subskrypcja Shopify Plus. Enterprise B2B z ERP i multi-warehouse UK/EU: od £12 000. WiÄcej w naszym cenniku wdrożeÅ sklepów internetowych w UK."},{type:"h2",text:"Podsumowanie â od czego zaczÄ
Ä sklep B2B w UK"},{type:"p",text:"Sklep B2B w UK dla polskiej firmy zaczyna siÄ od dwóch decyzji: WooCommerce z Wholesale Suite (elastycznoÅÄ, niższy koszt) vs Shopify Plus B2B (natywne funkcje, wyższa opÅata miesiÄczna) oraz Two.inc / Klarna Business dla odroczonych pÅatnoÅci. Realny start w 4-6 tygodni, koszt od £2 400, zwrot w 2-6 miesiÄcy przy typowej marży hurtowej 20-30%. W DiSpace wdrażamy panele B2B dla polskich firm w UK od 2020 roku â zamów bezpÅatnÄ
wycenÄ wdrożenia sklepu B2B jako czÄÅÄ agencji wdrożeÅ sklepów internetowych w UK."}]},{slug:"pozycjonowanie-uk-lokalne-google-business-profile",title:"Pozycjonowanie UK lokalne â Google Business Profile krok po kroku",date:"2026-03-02",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK lokalne w Google Maps i Local Pack zaczyna siÄ od Google Business Profile. Zobacz, jak polska firma w Anglii i Szkocji zdobywa TOP 3 wizytówki w Londynie, Manchesterze i Glasgow.",metaDesc:"Pozycjonowanie UK lokalne 2026 â Google Business Profile, cytowania NAP, opinie i Local Pack. Poradnik SEO lokalnego dla polskich firm w Anglii i Szkocji.",readMinutes:8,blocks:[{type:"p",text:'Pozycjonowanie UK lokalne to najszybszy zwrot z inwestycji dla polskich firm w Wielkiej Brytanii. 76% zapytaÅ typu âpolski hydraulik London" koÅczy siÄ kontaktem w ciÄ
gu 24 godzin â pod warunkiem, że jesteÅ w Local Pack (mapka + 3 wizytówki). Ten przewodnik pokazuje, jak od zera zbudowaÄ obecnoÅÄ w Google Business Profile i wejÅÄ do TOP 3 wizytówki dla swoich fraz lokalnych.'},{type:"h2",text:"Czym różni siÄ pozycjonowanie UK lokalne od klasycznego SEO"},{type:"p",text:'Klasyczne pozycjonowanie UK celuje w niebieskie linki (organic). Pozycjonowanie lokalne UK celuje w Local Pack â trzy wizytówki wyÅwietlane nad wynikami organicznymi dla fraz z lokalizacjÄ
(âpolski elektryk Reading", âksiÄgowa Manchester"). SygnaÅy rankingowe sÄ
inne: bliskoÅÄ (proximity), trafnoÅÄ kategorii, spójnoÅÄ NAP, gÄstoÅÄ opinii i ich aktualnoÅÄ, aktywnoÅÄ wÅaÅciciela (posty, zdjÄcia, Q&A).'},{type:"h2",text:"Krok 1: konfiguracja Google Business Profile dla firmy w UK"},{type:"p",text:'ZaÅóż profil na business.google.com używajÄ
c adresu email firmowego (@twojafirma.co.uk). Zweryfikuj firmÄ pocztówkÄ
na adres UK, wideo weryfikacjÄ
lub telefonicznie (dla czÄÅci kategorii). UzupeÅnij: peÅnÄ
nazwÄ firmy (bez keyword stuffing â âDiSpace" a nie âDiSpace Pozycjonowanie UK London Cheap"), kategoriÄ gÅównÄ
(jak najbardziej precyzyjnÄ
â âWeb Designer" vs generic âMarketing Agency"), 5-9 kategorii pomocniczych, obszar dziaÅania (service area z konkretnymi miastami w promieniu 30 mil), godziny otwarcia, telefon UK (+44) i stronÄ www.'},{type:"h2",text:"Krok 2: NAP â spójnoÅÄ w caÅym internecie"},{type:"p",text:'NAP (Name, Address, Phone) musi byÄ identyczne wszÄdzie: na Twojej stronie w stopce, w Google Business Profile, w brytyjskich katalogach (Yell, Thomson Local, Scoot, FreeIndex, Cylex UK, Bark, Trustpilot), na Facebooku, LinkedIn i Twitter/X. Nawet drobna różnica (âStreet" vs âSt." vs âStr.") osÅabia sygnaÅy lokalne. Zbuduj minimum 25 cytowaÅ NAP w pierwszych 60 dniach â to fundament pozycji w Local Pack.'},{type:"h2",text:"Krok 3: opinie klientów â waluta SEO lokalnego 2026"},{type:"p",text:"Google od 2025 roku faworyzuje profile z 30+ opiniami, aktualnymi (min. 3 opinie w ostatnich 90 dniach) i z odpowiedziami wÅaÅciciela. WyÅlij proÅbÄ o opiniÄ do każdego klienta w 48 godzin od zakoÅczenia usÅugi â najlepiej SMS-em z linkiem g.page/r/xxx/review skróconym przez Bitly. Odpowiadaj na 100% o
69pinii, w tym na negatywne (spokojnie, konstruktywnie, z propozycjÄ
rozwiÄ
zania). Konkurenci z 5-10 opiniami zniknÄ
z Local Pack po 3-4 miesiÄ
cach."},{type:"h2",text:"Krok 4: posty, zdjÄcia i Q&A â sygnaÅy aktywnoÅci"},{type:"p",text:"Google Business Profile to mini-CMS. Publikuj: post tygodniowo (aktualnoÅci, oferta, case), min. 4 zdjÄcia realizacji miesiÄcznie (Google waży EXIF z geolokalizacjÄ
!), odpowiadaj na Q&A od użytkowników (a najlepiej sam zadawaj pytania i odpowiadaj â Google pozwala). Wizytówka nieaktywna 60+ dni traci widocznoÅÄ o 20-40%. To najczÄÅciej ignorowany element pozycjonowania UK lokalnego."},{type:"h2",text:"Krok 5: strona docelowa pod frazÄ lokalnÄ
"},{type:"p",text:"Wizytówka wpina siÄ w konkretnÄ
stronÄ na Twojej witrynie. Dla każdego miasta zbuduj oddzielny landing (np. /polski-hydraulik-manchester) z: unikalnym H1 zawierajÄ
cym miasto, opisem usÅug, cennikiem, danymi strukturalnymi LocalBusiness + Service, mapÄ
Google, telefonem klikalnym (tel:+44...), formularzem kontaktowym, opiniami. Bez landingów miejskich Twoja wizytówka konkuruje sama ze sobÄ
â algorytm nie wie, którÄ
stronÄ pokazaÄ."},{type:"h2",text:"Krok 6: budowanie autorytetu lokalnego (link building UK lokalny)"},{type:"p",text:"Zdobywaj linki i wzmianki lokalne: sponsoring klubu sportowego w Twoim mieÅcie (link do sponsors page), czÅonkostwo w izbie handlowej (British Polish Chamber of Commerce, Chamber of Commerce lokalna), publikacje w Polish Express, Cooltura, Dziennik Polski Nowy Czas z lokalizacjÄ
miasta, guest posty na blogach polskich firm partnerskich w UK. Każdy link z brytyjskiej domeny .co.uk / .uk wzmacnia sygnaÅ lokalny 3-5x mocniej niż link z .pl."},{type:"h2",text:"Ile trwa pozycjonowanie UK lokalne do TOP 3 wizytówki"},{type:"p",text:"Dla nowej wizytówki w Årednio konkurencyjnym mieÅcie (Reading, Nottingham, Leeds) â 3-4 miesiÄ
ce do TOP 3 Local Pack. Dla Londynu i Manchester (wysoka konkurencja) â 5-7 miesiÄcy. Dla Glasgow, Edynburga, Aberdeen â 2-3 miesiÄ
ce (znacznie mniej polskich firm w kategorii). Kluczowe: minimum 15-20 opinii w pierwszych 90 dniach oraz kompletnie wypeÅniony profil od pierwszego dnia."},{type:"h2",text:"Ile kosztuje pozycjonowanie UK lokalne w 2026"},{type:"p",text:"Setup Google Business Profile + 25 cytowaÅ NAP + landing miejski + system pozyskiwania opinii: £890-£1490 jednorazowo. Prowadzenie miesiÄczne (posty, zdjÄcia, opinie, monitoring): £290-£590/mc. Sprawdź nasz szczegóÅowy cennik pozycjonowania UK â pokazujemy każdy komponent osobno. Dla polskich firm z kilku miast w UK budujemy pakiety multi-location od £790/mc."},{type:"h2",text:"NajczÄstsze bÅÄdy pozycjonowania UK lokalnego"},{type:"ul",items:["Keyword stuffing w nazwie firmy w GBP â Google zawiesza profil.","Wirtualny adres (mailbox) â brak weryfikacji + ryzyko usuniÄcia.","Nieaktualne godziny otwarcia â spadek CTR i widocznoÅci.","Ignorowanie negatywnych opinii â Google to widzi i degraduje.","Ta sama strona docelowa dla wielu wizytówek w różnych miastach.","Brak spójnoÅci NAP miÄdzy katalogami a witrynÄ
."]},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Pozycjonowanie UK lokalne to najszybsza droga do klientów dla polskich firm w Anglii i Szkocji â 3-6 miesiÄcy do TOP 3 wizytówki i realny ruch od pierwszego miesiÄ
ca dziÄki Local Pack. Podstawa: kompletny Google Business Profile + spójne NAP + 30+ opinii + landingi miejskie + aktywnoÅÄ (posty, zdjÄcia, Q&A). W DiSpace prowadzimy pozycjonowanie UK lokalne dla polskich firm od 2020 roku â sprawdź nasz przewodnik jak wejÅÄ do TOP 3 Google w UK i zamów bezpÅatny audyt widocznoÅci lokalnej."}]},{slug:"pozycjonowanie-uk-dla-polskich-firm-w-anglii",title:"Pozycjonowanie UK dla polskich firm w Anglii â kompletny przewodnik 2026",date:"2026-03-05",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK dla polskich firm w Anglii wymaga innej strategii niż SEO w PL. Zobacz, jak targetowaÄ polskojÄzyczne i angielskojÄzyczne frazy jednoczeÅnie, wygrywaÄ w Local Pack i budowaÄ autorytet w Google.co.uk.",metaDesc:"Pozycjonowanie UK dla polskich firm w Anglii â strategia SEO 2026: hreflang PL/EN, frazy lokalne, GBP, link building UK. Cennik od £490/mc.",readMinutes:8,blocks:[{type:"p",text:'Polska firma
69w Anglii ma innÄ
sytuacjÄ SEO niż zwykÅy brytyjski biznes. Musi rankowaÄ dla polskich fraz (âpolski hydraulik London") i angielskich fraz (âpolish plumber London") jednoczeÅnie, obsÅużyÄ dwie wersje jÄzykowe strony (hreflang PL/EN), zbudowaÄ autorytet na Google.co.uk bez historii domeny i konkurowaÄ z zasiedziaÅymi firmami brytyjskimi. Ten przewodnik pokazuje, jak zrobiÄ to skutecznie w 2026.'},{type:"h2",text:"Dlaczego pozycjonowanie UK dla polskich firm to inna dyscyplina"},{type:"p",text:"Google.co.uk to inny indeks niż google.pl. Polska firma migrowana z .pl na .co.uk traci najczÄÅciej 60-80% ruchu w pierwszych 3 miesiÄ
cach â bo domena .co.uk startuje od zera, historyczne linki .pl majÄ
mniejsze znaczenie w UK, a intencja fraz jest inna. To normalne â a przewidywalne straty można zminimalizowaÄ dobrym mapowaniem 301 i strategiÄ
dwujÄzycznÄ
."},{type:"h2",text:"Strategia 1: architektura jÄzykowa PL/EN"},{type:"p",text:"Trzy gÅówne opcje: (1) tylko wersja polska na .co.uk â najprostsze, ale odcinasz siÄ od 60% rynku brytyjskiego, (2) dwie wersje pod /pl i /en na jednej domenie z hreflang â zalecane, (3) dwie osobne domeny (.co.uk EN i .co.uk/pl subfolder) â dla dużych marek. Kluczowe: poprawny hreflang w head każdej strony, dedykowane meta title/description w każdym jÄzyku, żadnego auto-tÅumaczenia (Google widzi to jako thin content)."},{type:"h2",text:"Strategia 2: frazy â polskie i angielskie równolegle"},{type:"p",text:'Zbuduj dwie listy fraz. POLSKIE (dla spoÅecznoÅci polskiej w UK): âpolski [usÅuga] [miasto]", â[usÅuga] UK po polsku", âpolska agencja marketingowa Anglia". ANGIELSKIE (dla mieszanego rynku): â[service] in [city]", âpolish [service] [city]" (czÄÅÄ Anglików Åwiadomie szuka polskich fachowców â taÅsi i solidni). Semrush UK pokazuje np. 320/mo dla âpolish handyman london" â warto konkurowaÄ w obu jÄzykach.'},{type:"h2",text:"Strategia 3: SEO lokalne â Google Business Profile w UK"},{type:"p",text:'Dla polskiej firmy w Anglii wizytówka to zwykle 60-80% wszystkich zapytaÅ. Zoptymalizuj: nazwa firmy zgodna z zarejestrowanÄ
w Companies House (bez âpolski"/âpolish" w nazwie â to keyword stuffing), kategoria gÅówna po angielsku (Google mapuje jÄ
dwujÄzycznie), opis firmy w dwóch jÄzykach jeÅli to możliwe (Google w 2026 to obsÅuguje w czÄÅci kategorii), opinie w obu jÄzykach (naturalna sygnalizacja bilingual services). WiÄcej w naszym przewodniku po pozycjonowaniu UK lokalnym z Google Business Profile.'},{type:"h2",text:"Strategia 4: content marketing dwujÄzyczny"},{type:"p",text:'Content plan dla polskiej firmy w UK: 60% polskiego contentu (klaster tematyczny wokóŠâpolski [usÅuga] UK"), 30% angielskiego (klaster wokóŠâ
69polish [service] UK / [service] London"), 10% wspólnego (case studies, portfolio â dziaÅajÄ
w obu jÄzykach). Nie tÅumacz artykuÅów 1:1 â pisz je od nowa pod intencjÄ wÅaÅciwego rynku. Polski użytkownik szuka âile kosztuje", angielski âhow much does it cost" â inna kolejnoÅÄ argumentów, inne case studies, inne CTA.'},{type:"h2",text:"Strategia 5: link building UK dla polskich firm"},{type:"p",text:"Link building dla polskiej firmy w UK dziaÅa najlepiej z trzech źródeÅ: (1) media polonijne w UK (Polish Express, Cooltura, Dziennik Polski Nowy Czas, PolskiObserwator.co.uk, MojaWyspa.co.uk) â Åatwe, tematyczne, wysoka moc, (2) izby handlowe (British Polish Chamber of Commerce, lokalne Chamber of Commerce z miasta bazowego), (3) partnerstwa z brytyjskimi firmami (guest posty, wzajemne rekomendacje, sponsoring lokalny). Unikaj SWL i taniej wymiany linków z .pl â Google.co.uk widzi to jako spam."},{type:"h2",text:"Techniczne SEO dla polskiej firmy w UK â checklist"},{type:"ul",items:["Hosting z serwerem w UK/EU (nie w USA) â TTFB < 300 ms.","Domena .co.uk lub .uk (najlepiej), nie .com dla firmy lokalnej.",'hreflang="pl-GB" i hreflang="en-GB" w headzie (nie samo "pl" i "en"!).',"Sitemap.xml zawierajÄ
cy oba jÄzyki, przesÅany w Google Search Console.",'Schema.org LocalBusiness z addressCountry: "GB".',"Core Web Vitals na mobile (Google indexuje po iPhone 12).","SSL wildcard i HTTP/2 minimum."]},{type:"h2",text:"Ile kosztuje pozycjonowanie UK dla polskiej firmy w 2026"},{type:"p",text:"Solidne pozycjonowanie UK dla polskiej firmy w Anglii to £490-£1490/mc w zależnoÅci od zakresu (jeden jÄzyk vs dwa, jedno miasto vs caÅy UK, tylko SEO vs SEO + content + link building). Poniżej £300/mc to zwykle automat bez realnych dziaÅaÅ lokalnych. PeÅny cennik w naszym artykule ile kosztuje pozycjonowanie UK â cennik SEO 2026."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Pozycjonowanie UK dla polskich firm w Anglii to gra na dwóch rynkach jednoczeÅnie â polskim i angielskim. Wymaga poprawnego hreflang, dedykowanych fraz w obu jÄzykach, aktywnego Google Business Profile i link buildingu z mediów polonijnych oraz brytyjskich. Horyzont wyników: 4-6 miesiÄcy do TOP 10 na frazy polonijne, 8-12 miesiÄcy na TOP 3. W DiSpace prowadzimy peÅne pozycjonowanie UK dla polskich firm od 2020 roku â zamów bezpÅatny audyt SEO i strategiÄ dwujÄzycznÄ
."}]},{slug:"pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo",title:"Pozycjonowanie UK vs Polska â czym różni siÄ SEO w Google.co.uk",date:"2026-03-08",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK to inne frazy, inne sygnaÅy lokalne, inne ceny i inny algorytm rankingu niż w Polsce. Zobacz kluczowe różnice i konkretne puÅapki, na których polskie agencje SEO wchodzÄ
c do UK gubiÄ
budżet klienta.",metaDesc:"Pozycjonowanie UK vs Polska â 12 różnic w SEO Google.co.uk. Frazy, ceny, link building, Google Business Profile, hreflang. Przewodnik dla polskich firm 2026.",readMinutes:7,blocks:[{type:"p",text:"Polska agencja SEO wchodzÄ
ca do UK bez korekty strategii traci pieniÄ
dze klienta w ciÄ
gu 3 miesiÄcy. Google.co.uk to inny algorytm â ta sama logika, ale inne sygnaÅy wagi, inne SERP-y, inne oczekiwania użytkownika. Ten artykuÅ zestawia pozycjonowanie UK vs Polska w 12 kluczowych wymiarach â żebyÅ wiedziaÅ, gdzie strategia z PL zadziaÅa, a gdzie musisz zbudowaÄ jÄ
od nowa."},{type:"h2",text:"1. Domena â .pl vs .co.uk / .uk"},{type:"p",text:"W Polsce .pl daje wyraźnÄ
przewagÄ w google.pl. W UK najsilniejszym sygnaÅem lokalnym jest .co.uk lub .uk. Domena .com dla firmy dziaÅajÄ
cej tylko w UK to nadal handicap 3-5 pozycji. Polska firma wchodzÄ
ca do UK powinna wziÄ
Ä osobnÄ
domenÄ .co.uk, a nie próbowaÄ rankowaÄ .pl w Google.co.uk (traci wiarygodnoÅÄ geograficznÄ
)."},{type:"h2",text:"2. Autorytet domeny startuje od zera"},{type:"p",text:"Twoje 5 lat historii na .pl nie liczy siÄ w indeksie UK. Nowa .co.uk startuje z Domain Rating 0-5. Pierwsze 3-6 miesiÄcy to sandbox â nawet dobre treÅci rankujÄ
poza TOP 20. RozwiÄ
zanie: agresywny link building z .co.uk / .uk od dnia 1, migracja treÅci z 301, hreflang, publikacja w mediach polonijnych UK (Polish Express, Cooltura)."},{type:"h2",text:"3. Frazy â inne intencje, inna dÅugoÅÄ"},{type:"p",text:'W PL popularne sÄ
krótkie frazy âhydraulik warszawa" (2 200/mo). W UK ekwiwalent âplumber london" ma 12 100/mo â 5x wiÄkszy wolumen. Ale konkurencja też jest 10x wiÄksza. Za to fraza âpolish plumber london" (390/mo) ma dispace-typu difficulty tylko 15 â realna szansa na TOP 3 w 4-6 miesiÄcy. Nisze polonijne w UK sÄ
niedopozycjonowane vs polski rynek.'},{type:"h2",text:"4. Google Business Profile jest ważniejszy w UK"},{type:"p",text:'W UK Local Pack pojawia siÄ nawet dla fraz bez lokalizacji (np. âplumber" â Google zakÅada intencjÄ lokalnÄ
). W PL wizytówka pojawia siÄ rzadziej. Efekt: w UK optymalizacja Google Business Profile daje 60-80% ruchu dla lokalnych firm. WiÄcej w naszym przewodniku po pozycjonowaniu UK lokalnym.'},{type:"h2",text:"5. Opinie â waga inna, kultura inna"},{type:"p",text:"Brytyjczyk zostawia opiniÄ 3x rzadziej niż Polak (badanie BrightLocal 2025). Za to ceni opinie z odpowiedziÄ
wÅaÅciciela wyżej niż same gwiazdki. Strategia w UK: aktywne proszenie o opinie (SMS w 48h po usÅudze), odpowied
69ź na 100% opinii w tym samym tygodniu, publikacja opinii jako case study. Konkurent z 40 opiniami i 40 odpowiedziami zawsze bije konkurenta ze 100 opiniami bez odpowiedzi."},{type:"h2",text:"6. Link building â inne źródÅa"},{type:"p",text:"W PL dziaÅajÄ
SWL, katalogi, wpisy sponsorowane na blogach parentingowych. W UK wiÄkszoÅÄ tych taktyk jest degradowana przez SpamBrain. DziaÅa: Digital PR (HARO, Qwoted, Muck Rack), guest posty na blogach branżowych .co.uk, publikacje w mediach polonijnych UK, sponsoring lokalny, izby handlowe. Cena linku UK: £100-£500 vs 30-100 zÅ w PL."},{type:"h2",text:"7. Ceny SEO â 2-3x wyższe"},{type:"p",text:"Abonament SEO w PL: 1 500-4 000 zÅ/mc (300-800 GBP). Abonament SEO w UK: £490-£1490/mc (2 500-7 500 zÅ). Wyższe ceny linków, droższy content copywritera-native, wyższe koszty utrzymania agencji w UK. Realistyczny budżet na start: £590-£890/mc dla lokalnej firmy, £1 200+/mc dla e-commerce. Nasz szczegóÅowy cennik pozycjonowania UK pokazuje każdy komponent."},{type:"h2",text:"8. Core Web Vitals â surowsze"},{type:"p",text:"W UK Åredni LCP TOP 10 to 1,8 s (vs 2,4 s w PL). Konkurencja szybsza, technologiczna. Klasyczny WordPress z Elementorem osiÄ
ga LCP 4-6 s na mobile â automatyczny sufit na pozycji 15-20. Migracja na Astro, TanStack Start lub headless WordPress + Next.js to czÄsto warunek wejÅcia do TOP 10 dla fraz komercyjnych. Zobacz nasze porównanie WordPress vs nowoczesne technologie dla stron internetowych UK."},{type:"h2",text:"9. E-E-A-T â inne dowody"},{type:"p",text:"W UK Google wymaga wyraźnych sygnaÅów E-E-A-T: numer rejestracji w Companies House w stopce, wpis w izbach handlowych (British Polish Chamber of Commerce), certyfikaty branżowe (Gas Safe, NICEIC dla instalatorów), publikacje autora na LinkedIn i branżowych portalach. To wszystko jest weryfikowane przez algorytm i ludzkich Quality Raters w Google UK."},{type:"h2",text:"10. hreflang â obowiÄ
zkowy dla dwujÄzycznych"},{type:"p",text:'Polska strona z wersjÄ
PL i EN w UK MUSI mieÄ poprawny hreflang: "pl-GB" i "en-GB" (nie samo "pl" i "en"!). Bez tego Google traktuje wersje jako duplicate content i wybiera jednÄ
â zwykle niewÅaÅciwÄ
dla intencji. CzÄsty bÅÄ
d polskich firm w UK.'},{type:"h2",text:"11. Konkurencja â bardziej techniczna"},{type:"p",text:"TOP 10 w UK dla fraz komercyjnych to zwykle strony na Next.js, Astro, headless CMS, ze zoptymalizowanÄ
strukturÄ
schema.org i Digital PR w tle. W PL nadal wygrywajÄ
WordPress z dÅugim contentem. WyjÅcie: peÅny audyt technicznego SEO co 3 miesiÄ
ce, testy A/B na title/meta, monitoring Core Web Vitals w RUM (real user monitoring)."},{type:"h2",text:"12. SezonowoÅÄ â inna dla polonijnego rynku"},{type:"p",text:'Zapytania âpolski [usÅuga] [miasto]" w UK majÄ
szczyt we wrzeÅniu (nowi migranci po wakacjach) i styczniu-marcu (New Year, wiosenne remonty). SierpieÅ i grudzieÅ to doÅek. Dla brytyjskiego rynku szczyt: marzec-czerwiec. Content plan powinien uwzglÄdniaÄ obie sezonowoÅci.'},{type:"h2",text:"Podsumowanie â 12 różnic, jedna strategia"},{type:"p",text:'Pozycjonowanie UK vs Polska to nie âto samo w innym jÄzyku", tylko osobna dyscyplina wymagajÄ
ca innej domeny, innych fraz, innych źródeÅ linków, innych narzÄdzi (Semrush UK, Ahrefs UK, GSC z targetowaniem UK) i innych cen. Dla polskiej firmy w UK najskuteczniejsza strategia to hybrid: agresywny start w niszach polonijnych (niski KD, szybkie TOP 3) + dÅugoterminowa budowa autorytetu na frazy angielskie (wysoki wolumen). W DiSpace robimy to od 2020 roku dla polskich firm w Anglii, Szkocji i Walii â zamów darmowy audyt SEO UK.'}]},{slug:"pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac",title:"Pozycjonowanie UK â jak wybraÄ frazy kluczowe na 2026 (analiza Semrush UK)",date:"2026-03-12",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK zaczyna siÄ od dobrych fraz. Zobacz, jak z Semrush UK, Ahrefs UK i Google Search Console wybraÄ frazy z realnÄ
intencjÄ
, niskim KD i wysokim potencjaÅem konwersji dla polskiej firmy w Anglii.",metaDesc:"Pozycjonowanie UK 2026 â jak wybraÄ frazy kluczowe. Analiza Semrush UK, striking distance, intencja, lokalnoÅÄ. Przewodnik SEO dla polskich firm.",readMinutes:7,blocks:[{type:"p",text:'NajczÄstszy bÅÄ
d polskich firm zaczynajÄ
cych pozycjonowanie UK: wybór fraz przez âwydaje mi siÄ" zamiast twardych danych. Efekt â budżet SEO przez 6 miesiÄcy leci na frazy z zerowym wolumenem albo z konkurencjÄ
na poziomie Amazon UK. Ten przewodnik pokazuje, jak w 3 krokach zbudowaÄ listÄ fraz UK, która realnie zamienia siÄ w klientów.'},{type:"h2",text:"Krok 1: audyt fraz z Google Search Console â striking distance"},{type:"p",text:'Otwórz Google Search Console â Performance â Filtr Country = United Kingdom â Position: 8-20. To Twoje frazy âstriking distance" â Google już CiÄ tam wyÅwietla, wystarczy podnieÅÄ o 5-10 pozycji, żeby wejÅÄ do TOP 3. Eksportuj do CSV, posortuj po Impressions. Frazy z 100+ wyÅwietleniami/mc i pozycjÄ
8-15 to Twój priorytet #1 na najbliższe 3 miesiÄ
ce.'},{type:"h2",text:"Krok 2: Semrush UK â Keyword Magic Tool i Keyword Gap"},{type:"p",text:"W Semrush UK (baza uk) wpisz swojÄ
domenÄ â Organic Research â Positions. Filtr Position 4-20 + Volume 50+ + Difficulty <30. To lista realnych szans wzrostu. NastÄpnie Keyword Gap: porównaj siÄ z 2-3 konkurentami (np. innymi polskimi firmami w Twojej branży w UK). Frazy, na które oni rankujÄ
a Ty nie â kandydaci #1 na nowy content."},{type:"h2",text:"Krok 3: klasyfikacja intencji â 4 typy fraz"},{type:"ul",items:['Informacyjne (âjak dziaÅa VAT UK", âile trwa rejestracja LTD") â content edukacyjny, generujÄ
ruch, ale nie sprzedaż.','Nawigacyjne (âcompanies house login", âhmrc uk") â trudne, dominujÄ
strony rzÄ
dowe.','Komercyjne badawcze (ânajlepsza agencja SEO UK", âile kosztuje strona internetowa UK") â Twoje case studies i cenniki.','Transakcyjne (âpolski hydraulik London", âksiÄgowa Manchester") â najwyższa konwersja, priorytet #1.']},{type:"p",text:"Dla polskich firm w UK najlepszy mix: 60% transakcyjne + lokalne, 25% komercyjne badawcze (cenniki, porównania), 15% informacyjne (content blog dla top-of-funnel)."},{type:"h2",text:"Krok 4: analiza SERP dla każdej frazy"},{type:"p",text:"Zanim wpiszesz frazÄ do content planu, sprawdź SERP w Google.co.uk (użyj VPN UK lub Semrush SERP overview). Zobacz: (1) czy jest Local Pack (fraza lokalna â buduj landing miejski + GBP), (2) czy dominujÄ
strony rzÄ
dowe/Wikipedia (odpuÅÄ), (3) jaka jest dÅugoÅÄ TOP 3 artykuÅów (jeÅli 3 000+ sÅów, potrzebujesz podobnej gÅÄbi), (4) czy jest Featured Snippet (szansa na position zero). Ten krok oszczÄdza tygodnie pracy nad frazami, których nie da siÄ wygraÄ."},{type:"h2",text:"Krok 5: klastry tematyczne zamiast pojedynczych fraz"},{type:"p",text:'Google w 2026 wynagradza topical authority â kompleksowe pokrycie tematu, nie pojedyncze artykuÅy. Buduj klastry: strona filarowa (np. âPozycjonowanie UK") + 8-15 artykuÅów wspierajÄ
cych + linkowanie wewnÄtrzne z opisowymi anchorami. Każdy artykuÅ w klastrze linkuje do 3-5 innych + do filaru. Efekt: caÅy klaster rankuje razem, wzajemnie siÄ wzmacnia, a Google zaczyna traktowaÄ CiÄ jako eksperta w danym temacie.'},{type:"h2",text:"PrzykÅadowe frazy UK z realnym potencjaÅem (dane Semrush 2026)"},{type:"ul",items:['âpozycjonowanie uk" â 140/mo, KD 12 (bardzo Åatwa).','âstrony internetowe uk" â 390/mo, KD 12 (bardzo Åatwa).','âpolski hydraulik london" â 320/mo, KD 15.','âksiÄgowa uk" â 480/mo, KD 22.','âagencja marketingowa uk" â 210/mo, KD 18.','âsklep internetowy uk" â 260/mo, KD 20.','âstrony internetowe szk
69ocja" â 90/mo, KD 8 (bardzo Åatwa, niedopozycjonowana!).']},{type:"h2",text:"NarzÄdzia SEO dla pozycjonowania UK"},{type:"p",text:"Minimum: Google Search Console (darmowe), Semrush UK (free trial â od $130/mc), Screaming Frog (£149/rok). Zaawansowane: Ahrefs UK ($108/mc), Sitebulb (£13/mc), BrightLocal dla SEO lokalnego ($29/mc), Surfer SEO dla content ($89/mc). Nie warto zaczynaÄ bez Semrush UK lub Ahrefs UK â Google Keyword Planner nie ma bazy fraz polonijnych w UK."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Pozycjonowanie UK zaczyna siÄ od dobrych fraz â striking distance z GSC + Semrush UK Keyword Gap + klasyfikacja intencji + analiza SERP. Zamiast atakowaÄ 200 fraz pÅytko, wybierz 20-30 z realnym potencjaÅem, zbuduj wokóŠnich klastry tematyczne, i skupione linkowanie wewnÄtrzne. W DiSpace robimy analizÄ fraz dla polskich firm w UK w ramach peÅnego pozycjonowania UK dla polskich firm w Anglii â zamów bezpÅatny audyt i listÄ Twoich fraz striking distance."}]},{slug:"pozycjonowanie-uk-audyt-seo-krok-po-kroku",title:"Pozycjonowanie UK â audyt SEO strony krok po kroku (checklist 2026)",date:"2026-03-15",category:"Pozycjonowanie UK",excerpt:"Pozycjonowanie UK bez audytu SEO to strzelanie w ciemno. Zobacz kompletny checklist audytu technicznego, on-page i off-page dla polskiej firmy w Anglii â z konkretnymi narzÄdziami i progami akceptacji dla Google.co.uk 2026.",metaDesc:"Pozycjonowanie UK â audyt SEO krok po kroku 2026. Checklist techniczny, on-page, treÅÄ, linki, Core Web Vitals. NarzÄdzia i progi dla polskich firm w UK.",readMinutes:8,blocks:[{type:"p",text:'Audyt SEO to zawsze pierwszy krok pozycjonowania UK. Bez niego pracujesz âna czuja" â pompujesz content i linki, ale strona traci ranking z powodu bÅÄdu technicznego, którego nie widaÄ goÅym okiem. Ten checklist pochodzi z 200+ audytów SEO dla polskich firm w UK â pokazuje każdy poziom weryfikacji z konkretnymi narzÄdziami i progami akceptacji.'},{type:"h2",text:"Poziom 1: audyt techniczny â dostÄpnoÅÄ i indeksacja"},{type:"ul",items:["Sprawdź robots.txt â czy nie blokuje ważnych sekcji (czÄsty bÅÄ
d po migracji z WordPressa).","Zweryfikuj sitemap.xml w Google Search Console â czy zawiera wszystkie strony i jest submitted.","Uruchom Screaming Frog crawl (do 500 URL za darmo) â sprawdź kody odpowiedzi (200/301/404), gÅÄbokoÅÄ, duplikaty title/meta.","Sprawdź canonical na każdej stronie â musi self-referencing, bez cross-domain.",'hreflang PL/EN â poprawnie âpl-GB" i âen-GB", z self-reference i x-default.',"Coverage report w GSC â brak Errors, minimum Warnings."]},{type:"h2",text:"Poziom 2: Core Web Vitals i wydajnoÅÄ"},{type:"p",text:"Uruchom PageSpeed Insights dla 5 kluczowych URL (home + 2 landing + 2 blog). Progi akceptacji 2026:"},{type:"ul",items:["LCP < 2,5 s (dobry), < 4 s (do poprawy), > 4 s (blokada TOP 10).","INP < 200 ms (dobry), < 500 ms (do poprawy).","CLS < 0,1 (dobry), < 0,25 (do poprawy).","TTFB < 300 ms (mobile), < 200 ms (desktop) â wskazuje na jakoÅÄ hostingu.","Total Blocking Time < 300 ms."]},{type:"p",text:"JeÅli Twoja strona nie mieÅci siÄ w tych progach, żaden content ani linki nie wypchnÄ
CiÄ do TOP 3. Rozważ migracjÄ z WordPress na nowoczesnÄ
technologiÄ â patrz nasze porównanie stron internetowych UK: WordPress vs nowoczesne technologie."},{type:"h2",text:"Poziom 3: on-page SEO â title, meta, nagÅówki"},{type:"ul",items:["Każda strona ma unikalny title (30-60 znaków) z frazÄ
gÅównÄ
na poczÄ
tku.","Meta description 130-155 znaków z CTA â wpÅywa na CTR, nawet jeÅli nie na ranking.","Jeden H1 na stronÄ zawierajÄ
cy frazÄ gÅównÄ
.","H2/H3 zawierajÄ
ce frazy pochodne (Semantic HTML).",'Alt text na wszystkich obrazach z opisowÄ
treÅciÄ
(nie âimage-1234.jpg").','WewnÄtrzne linki z opisowymi anchorami (nie âkliknij tutaj").',"Dane strukturalne: Organization, LocalBusiness, Service, FAQPage, Article, BreadcrumbList."]},{type:"h2",text:"Poziom 4: audyt treÅci â pokrycie tematyczne"},{type:"p",text:'Dla każdej frazy gÅównej sprawdź w Semrush lub Surfer SEO ÅredniÄ
dÅugoÅÄ TOP 10 artykuÅów. Twoja strona powinna mieÄ 80-120% tej dÅugoÅci i pokrywaÄ wszystkie subtopiki. Uruchom Screaming Frog + Content Analysis â zidentyfikuj strony z <500 sÅów (âthin content"), duplicate content (Similarity Score > 70%), nieaktualne treÅci (data ostatniej modyfikacji > 12 miesiÄcy). OdÅwież lub usuÅ â thin content ciÄ
gnie w dóŠcaÅy serwis.'},{type:"h2",text:"Poziom 5: audyt off-page â profil linków"},{type:"p",text:"Otwórz Ahrefs UK lub Semrush Backlink Audit. Sprawdź: Domain Rating / Authority Score (0-30 = sÅaba, 30-50 = Årednia, 50+ = silna dla lokalnej firmy w UK), Referring Domains (nie sam link count!), Toxicity Score < 15% (jeÅli wiÄcej â disavow file), stosunek dofollow/nofollow (naturalnie 60/40 do 80/20), anchor text distribution (naturalny mix branded + exact + partial + generic â jeÅli 60%+ to exact match, wysokie ryzyko Penguin)."},{type:"h2",text:"Poziom 6: audyt SEO lokalnego â Google Business Profile"},{type:"ul",items:["Wizytówka zweryfikowana i kompletna (kategorie, godziny, telefon, opis, obszar dziaÅania).","Minimum 20 opinii z ostatnich 12 miesiÄcy.","Odpowiedź wÅaÅciciela na 100% o
69pinii.","Minimum 4 posty i 4 zdjÄcia miesiÄcznie w ostatnich 90 dniach.","NAP spójne we wszystkich brytyjskich katalogach (Yell, Thomson Local, FreeIndex, Cylex UK, Scoot).","Landing miejski dla każdej lokalizacji (nie generic strona kontakt dla wszystkich miast)."]},{type:"p",text:"WiÄcej w naszym peÅnym przewodniku pozycjonowanie UK lokalne â Google Business Profile krok po kroku."},{type:"h2",text:"Poziom 7: audyt konkurencji"},{type:"p",text:"Wybierz 3 gÅównych konkurentów w Google.co.uk (nie w PL!). Porównaj: Authority Score, Referring Domains, top pages, ich frazy TOP 10 których Ty nie masz (Keyword Gap w Semrush), ich profil linków (skÄ
d zdobywajÄ
linki UK), ich Core Web Vitals. To 80% Twojego roadmap SEO na najbliższe 6 miesiÄcy â konkurencja pokazuje, co dziaÅa w Twojej niszy w UK."},{type:"h2",text:"Format raportu audytu SEO"},{type:"p",text:'Dobry raport audytu SEO UK ma: (1) executive summary (co jest krytyczne, co dobre), (2) listÄ bÅÄdów posegregowanÄ
Critical/High/Medium/Low, (3) każdy bÅÄ
d z konkretnÄ
rekomendacjÄ
naprawy, (4) priorytet i szacowany impact (np. â+15-25% widocznoÅci w 3 miesiÄ
ce"), (5) zaÅÄ
czony crawl Screaming Frog i raport Semrush. Bez tego audyt jest tylko listÄ
narzekaÅ.'},{type:"h2",text:"Ile kosztuje audyt SEO UK w 2026"},{type:"p",text:"Rzetelny audyt SEO UK dla polskiej firmy: £490-£1490 jednorazowo w zależnoÅci od wielkoÅci serwisu (do 50 URL vs e-commerce z 5 000 URL). Poniżej £200 to zwykle raport automatyczny z SEMrush Site Audit â nie warto. W DiSpace audyt SEO UK oferujemy bezpÅatnie dla klientów, którzy zamawiajÄ
pozycjonowanie UK w abonamencie â sprawdź nasz peÅny cennik pozycjonowania UK â SEO 2026."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Audyt SEO to fundament pozycjonowania UK â bez niego pracujesz na Ålepo. 7 poziomów (techniczny, wydajnoÅÄ, on-page, treÅÄ, linki, lokalne, konkurencja) daje Ci peÅny obraz w 3-5 dni pracy. Wyniki audytu zamieÅ w priorytetowany roadmap na 3-6 miesiÄcy. W DiSpace robimy audyty SEO UK dla polskich firm od 2020 roku â zobacz jak wchodzimy z klientami do TOP 3 Google w UK i zamów bezpÅatny audyt swojej strony."}]}],Z9=[{slug:"litery-3d-swietlne-cennik-uk",title:"Litery 3D Åwietlne â cennik 2026 w UK (stal, akryl, halo)",date:"2026-07-30",category:"Litery 3D Åwietlne",excerpt:"Ile kosztujÄ
litery 3D Åwietlne w Wielkiej Brytanii? Rozbijamy cenÄ liter przestrzennych LED na materiaÅ, wysokoÅÄ znaku, typ podÅwietlenia i montaż â z realnymi wideÅkami dla sklepu, restauracji i biura.",metaDesc:"Litery 3D Åwietlne â cennik UK 2026. Ceny liter przestrzennych LED ze stali nierdzewnej i akrylu, efekt halo vs front lit, koszt montażu i advertisement consent.",readMinutes:8,blocks:[{type:"p",text:"Litery 3D Åwietlne to dziÅ najczÄÅciej zamawiany typ szyldu w UK â zarówno przez restauracje i salony beauty, jak i przez hale przemysÅowe czy biura. Cena liter przestrzennych LED nie jest jednak jednÄ
liczbÄ
: skÅada siÄ z materiaÅu, wysokoÅci znaku, typu podÅwietlenia, konstrukcji montażowej i miejsca instalacji. Poniżej rozbijamy każdy z tych elementów na realne wideÅki, które podajemy klientom w wycenie."},{type:"h2",text:"Ile kosztujÄ
litery 3D Åwietlne â wideÅki 2026"},{type:"ul",items:["Litery 3D LED z akrylu (front lit), wysokoÅÄ 15-25 cm: od ok. £450 za komplet krótkiego napisu.","Litery przestrzenne ze stali nierdzewnej z efektem halo (echo), wysokoÅÄ 20-30 cm: od ok. £850.","Duży szyld fasadowy 40-60 cm, stal 304 z podÅwietleniem front lit + halo: £1 800-£4 500.","Logo 3D w recepcji (bez zasilania zewnÄtrznego, montaż na dystansach): £600-£1 500.","Montaż na wysokoÅci z podnoÅnikiem (cherry picker): +£250-£600 w zależnoÅci od lokalizacji."]},{type:"h2",text:"Co realnie podnosi cenÄ liter Åwietlnych 3D"},{type:"p",text:"Pierwszym czynnikiem jest materiaÅ. Litery ze stali nierdzewnej 304 lub 316 kosztujÄ
wiÄcej niż akryl, ale to one dajÄ
premium, lustrzany lub zÅoty efekt widoczny w restauracjach typu Fumo czy w recepcjach klubów. Drugim jest liczba znaków â każda litera to osobna wanna, osobny moduÅ LED i osobny szablon montażowy. Trzeci to typ podÅwietlenia: front lit (ÅwiecÄ
ca Åciana litery) jest najtaÅszy, halo (echo) wymaga precyzyjnego dystansu od Åciany, a kombinacja front + halo podwaja instalacjÄ LED."},{type:"h2",text:"Front lit czy efekt halo â co wybraÄ przy budżecie"},{type:"p",text:"JeÅli szyld ma byÄ czytelny z drugiej strony ulicy â wybierz front lit. Litery 3D LED ÅwiecÄ
ce przodem majÄ
najwyższÄ
siÅÄ przyciÄ
gania z odlegÅoÅci i najlepiej sprawdzajÄ
siÄ na fasadach sklepów oraz przy drogach. JeÅli natomiast chodzi o prestiż wnÄtrza, recepcjÄ hotelu lub restauracjÄ, efekt halo daje ciepÅÄ
poÅwiatÄ na Åcianie i wyglÄ
da dużo drożej, niż kosztuje. WiÄcej o różnicach opisaliÅmy w przewodniku o efekcie halo."},{type:"h2",text:"Koszty ukryte: zasilanie, sterowanie, consent"},{type:"p",text:"Przy wycenie liter podÅwietlanych warto z góry uwzglÄdniÄ: doprowadzenie zasilania 230 V do miejsca szyldu (elektryk £150-£400), czujnik zmierzchu lub sterownik czasowy (£60-£180), a przy szyldach fasadowych â advertisement consent od lokalnego council (opÅata wniosku zwykle £132, plus przygotowanie rysunków). Pomagamy skompletowaÄ wizualizacje i dokumentacjÄ technicznÄ
do wniosku."},{type:"h2",text:"Ile trwa produkcja i montaż"},{type:"p",text:"Standardowy termin dla liter 3D LED to 10-15 dni roboczych od akceptacji wizualizacji 3D. Przy otwarciach restauracji i eventach realizujemy tryb ekspresowy. Montaż w Szkocji (Glasgow, Edynburg, Aberdeen) i w caÅej Anglii wykonujemy wÅasnÄ
ekipÄ
, a poza obszarem dojazdu wysyÅamy komplet z szablonem i instrukcjÄ
."},{type:"h2",text:"Jak zamówiÄ wycenÄ liter 3D Åwietlnych"},{type:"p",text:"Do wyceny potrzebujemy trzech rzeczy: logo w wektorze (AI, EPS, PDF), zdjÄcia miejsca montażu oraz przybliżonej szerokoÅci napisu. Na tej podstawie przygotowujemy wizualizacjÄ na Twojej elewacji i wycenÄ w 24 h. Zobacz peÅnÄ
ofertÄ liter 3D Åwietlnych LED wraz z galeriÄ
realizacji."}]},{slug:"litery-3d-led-efekt-halo-czy-front-lit",title:"Litery 3D LED: efekt halo (echo) czy front lit â porównanie",date:"2026-07-30",category:"Litery 3D Åwietlne",excerpt:"Halo lit, front lit, side lit i trim lit â cztery sposoby podÅwietlenia liter przestrzennych LED. Porównujemy czytelnoÅÄ, koszt, żywotnoÅÄ i miejsca, w których każdy typ wyglÄ
da najlepiej.",metaDesc:"Litery 3D LED â efekt halo (echo) vs front lit. Porównanie czytelnoÅci, kosztów i zastosowaÅ podÅwietlanych liter przestrzennych ze stali nierdzewnej i akrylu w UK.",readMinutes:7,blocks:[{type:"p",text:"Wybór typu podÅwietlenia decyduje o tym, jak litery 3D LED bÄdÄ
wyglÄ
daÄ po zmroku â i czy szyld w ogóle speÅni swojÄ
rolÄ. W praktyce spotykamy cztery warianty: front lit, halo (echo), side lit oraz kombinacje. Każdy z nich ma inny koszt, innÄ
czytelnoÅÄ i inne naturalne miejsce zastosowania."},{type:"h2",text:"Front lit â litery ÅwiecÄ
ce przodem"},{type:"p",text:"Front lit to klasyczne litery przestrzenne LED z licem z akrylu mlecznego. ÅwiatÅo wychodzi przez przód znaku, dziÄki czemu napis jest czytelny z dużej odlegÅoÅci nawet przy zÅej pogodzie. To rozwiÄ
zanie numer jeden dla sklepów, punktów usÅugowych, myjni, przychodni i wszystkiego, c
69o ma byÄ zauważone z jezdni."},{type:"h2",text:"Halo (echo) â poÅwiata na Åcianie"},{type:"p",text:"W literach halo lit lico pozostaje peÅne â najczÄÅciej ze stali nierdzewnej, zÅota lub czerni â a moduÅy LED ÅwiecÄ
od tyÅu, rysujÄ
c na Åcianie miÄkkÄ
aureolÄ. Efekt jest wyraźnie bardziej premium i idealnie pasuje do recepcji, hoteli, klubów oraz restauracji. Warunek: Åciana musi byÄ wzglÄdnie jasna i równa, inaczej poÅwiata rozmyje kontur."},{type:"h2",text:"Side lit i trim lit"},{type:"p",text:"Side lit oznacza ÅwiecÄ
ce boki litery przy nieprzezroczystym licu â rzadkie, ale bardzo efektowne w witrynach. Trim lit to litera z widocznÄ
, ÅwiecÄ
cÄ
krawÄdziÄ
wykoÅczeniowÄ
; ÅÄ
czy czytelnoÅÄ front lit z detalem premium."},{type:"h2",text:"Porównanie w praktyce"},{type:"ul",items:["CzytelnoÅÄ z 30+ metrów: front lit > trim lit > halo > side lit.","Wrażenie premium: halo > trim lit > side lit > front lit.","Koszt wykonania: front lit (najniższy), halo i side lit (+20-40%), front + halo (+60%).","OdpornoÅÄ zewnÄtrzna: przy stali 304/316 i moduÅach IP65-IP67 wszystkie warianty nadajÄ
siÄ na fasadÄ.","Zużycie energii: litery 3D LED zużywajÄ
zwykle 8-20 W na metr bieżÄ
cy napisu."]},{type:"h2",text:"Który wariant wybraÄ dla swojej branży"},{type:"p",text:"Restauracja lub kawiarnia z witrynÄ
od ulicy â front lit ze stali malowanej albo litery zÅote z halo, jeÅli lokal jest premium. Salon beauty i barber â halo w kolorze różowego zÅota. Hala produkcyjna lub magazyn â duży front lit, bo liczy siÄ widocznoÅÄ z drogi dojazdowej. Biuro i recepcja â halo lub logo 3D bez podÅwietlenia na dystansach."},{type:"h2",text:"Podsumowanie"},{type:"p",text:'Nie ma jednego ânajlepszego" typu podÅwietlenia liter 3D Åwietlnych â jest dopasowanie do odlegÅoÅci obserwacji, tÅa i charakteru marki. PrzeÅlij nam zdjÄcie elewacji, a przygotujemy wizualizacjÄ obu wariantów: front lit i halo. PeÅnÄ
specyfikacjÄ i galeriÄ znajdziesz na stronie liter 3D Åwietlnych LED.'}]},{slug:"litery-przestrzenne-ze-stali-nierdzewnej-uk",title:"Litery przestrzenne ze stali nierdzewnej â trwaÅoÅÄ w UK",date:"2026-07-30",category:"Litery 3D Åwietlne",excerpt:"Stal 304 czy 316, szczotkowana czy polerowana, zÅoto PVD czy czerÅ â jak dobraÄ materiaÅ liter przestrzennych LED, żeby szyld przetrwaÅ brytyjski klimat bez rdzy i matowienia.",metaDesc:"Litery przestrzenne ze stali nierdzewnej w UK â stal 304 vs 316, wykoÅczenia PVD, klasa IP moduÅów LED i pielÄgnacja szyldu w klimacie morskim. Poradnik DiSpace.",readMinutes:7,blocks:[{type:"p",text:"Litery przestrzenne ze stali nierdzewnej to najtrwalszy wariant szyldu 3D â ale tylko wtedy, gdy dobrano wÅaÅciwy gatunek stali i klasÄ szczelnoÅci moduÅów LED. W brytyjskim klimacie, zwÅaszcza na wybrzeżu Szkocji i w Aberdeen, źle dobrany materiaÅ potrafi pokryÄ siÄ nalotem w jeden sezon."},{type:"h2",text:"Stal 304 vs 316 â kiedy dopÅaciÄ"},{type:"p",text:"Stal 304 wystarcza dla wiÄkszoÅci lokalizacji miejskich: Glasgow, Edynburg, Manchester, Londyn. Stal 316 zawiera molibden, przez co znacznie lepiej znosi sól â jeÅli szyld wisi w promieniu kilku kilometrów od morza albo przy drodze intensywnie solonej zimÄ
, różnica w cenie (zwykle 15-25%) zwraca siÄ w trwaÅoÅci."},{type:"h2",text:"WykoÅczenia: szczotkowana, polerowana, PVD"},{type:"ul",items:["Szczotkowana (brushed) â nie pokazuje odcisków, neutralna, uniwersalna do biur.","Polerowana lustrzana â spektakularna z efektem halo, wymaga czÄstszego czyszczenia.","ZÅoto PVD / rose gold PVD â powÅoka próżniowa, odporna na zarysowania, klasyk restauracji premium.","CzerÅ matowa (powlekanie proszkowe) â nowoczesna, dobrze kontrastuje z halo w ciepÅej barwie."]},{type:"h2",text:"Elektronika: klasa IP i zasilacze"},{type:"p",text:"Do zastosowaÅ zewnÄtrznych używamy moduÅów LED IP65-IP67 i zasilaczy w obudowach IP66 montowanych w wentylowanej skrzynce. WnÄtrze litery musi mieÄ otwory odpÅywowe â kondensat zawsze siÄ pojawi, kluczowe jest, żeby miaÅ którÄdy wyjÅÄ. To detal, który odróżnia szyld dziaÅajÄ
cy 8 lat od takiego, który gaÅnie po dwóch zimach."},{type:"h2",text:"Montaż i konserwacja"},{type:"p",text:"Litery montujemy na dystansach ze stali nierdzewnej lub na ukrytej szynie montażowej â nigdy bezpoÅrednio na koÅkach przez lico. Konserwacja jest prosta: przemycie wodÄ
z Åagodnym detergentem dwa razy w roku, na wybrzeżu cztery. Nie stosuj Årodków chlorowych ani druciaków â to one, a nie deszcz, zwykle niszczÄ
powierzchniÄ."},{type:"h2",text:"Gwarancja i serwis"},{type:"p",text:"Na konstrukcjÄ liter przestrzennych ze stali nierdzewnej dajemy 5 lat gwarancji, na elektronikÄ LED 2-3 lata w zależnoÅci od serii moduÅów. Serwis realizujemy w caÅej UK. Sprawdź szczegóÅy i zdjÄcia realizacji na stronie liter 3D Åwietlnych LED."}]},{slug:"podswietlany-szyld-uk-advertisement-consent",title:"PodÅwietlany szyld w UK â advertisement consent krok po kroku",date:"2026-07-30",category:"Litery 3D Åwietlne",excerpt:"Czy litery 3D Åwietlne wymagajÄ
pozwolenia? WyjaÅniamy,
69kiedy potrzebny jest advertisement consent, ile kosztuje wniosek, jakie dokumenty przygotowaÄ i jak dÅugo czeka siÄ na decyzjÄ council.",metaDesc:"PodÅwietlany szyld UK â kiedy potrzebujesz advertisement consent na litery 3D LED, ile kosztuje wniosek do council, jakie rysunki przygotowaÄ i ile trwa decyzja.",readMinutes:6,blocks:[{type:"p",text:"Zanim zamontujesz litery 3D Åwietlne na fasadzie, sprawdź, czy Twój szyld wymaga zgody. W Wielkiej Brytanii reklamÄ zewnÄtrznÄ
reguluje Town and Country Planning (Control of Advertisements) Regulations, a decyzjÄ wydaje lokalny council. PodÅwietlane szyldy prawie zawsze wymagajÄ
advertisement consent â nawet jeÅli niepodÅwietlony znak tej samej wielkoÅci byÅby objÄty deemed consent."},{type:"h2",text:"Kiedy consent jest wymagany"},{type:"ul",items:["Szyld jest podÅwietlany (litery 3D LED, kaseton, neon) â praktycznie zawsze.","Budynek jest listed lub leży w conservation area â dodatkowo listed building consent.","Znak wystaje poza liniÄ elewacji lub przekracza limity wysokoÅci i powierzchni.","Zmieniasz istniejÄ
cy szyld na jaÅniejszy lub wiÄkszy."]},{type:"h2",text:"Jakie dokumenty przygotowaÄ"},{type:"p",text:"Standardowy wniosek zawiera: formularz advertisement consent, plan lokalizacji (site plan 1:1250), rysunek elewacji z naniesionym szyldem w skali, specyfikacjÄ technicznÄ
(materiaÅ, wymiary, źródÅo ÅwiatÅa, luminancja w cd/m²) oraz opÅatÄ. Przy literach 3D LED council zwykle pyta o poziom jasnoÅci i o to, czy szyld gaÅnie w godzinach nocnych â sterownik czasowy w specyfikacji czÄsto przesÄ
dza o pozytywnej decyzji."},{type:"h2",text:"Koszt i czas oczekiwania"},{type:"p",text:"OpÅata za wniosek to zwykle £132 (stawka standardowa w Anglii; w Szkocji obowiÄ
zujÄ
lokalne taryfy). Decyzja zapada zazwyczaj w 8 tygodni. Dlatego produkcjÄ liter przestrzennych planujemy równolegle z procedurÄ
, a montaż po decyzji â tak, żeby otwarcie lokalu nie czekaÅo dodatkowego kwartaÅu."},{type:"h2",text:"NajczÄstsze powody odmowy"},{type:"p",text:"Zbyt duża luminancja w obszarze mieszkalnym, brak wyÅÄ
czania nocnego, szyld zasÅaniajÄ
cy detal architektoniczny w conservation area i migajÄ
ce elementy Åwietlne. Wszystkie te ryzyka da siÄ usunÄ
Ä na etapie projektu â dlatego wizualizacjÄ i rysunki techniczne przygotowujemy przed zÅożeniem wniosku."},{type:"h2",text:"Pomagamy w caÅym procesie"},{type:"p",text:"Dla klientów zamawiajÄ
cych litery 3D Åwietlne przygotowujemy komplet rysunków i wizualizacjÄ fotorealistycznÄ
do wniosku. Napisz do nas z adresem lokalu â sprawdzimy wymogi Twojego council i wycenimy szyld w 24 h."}]}],Y9=[{slug:"kampanie-reklamowe-uk-ile-kosztuja-budzet-2026",title:"Kampanie reklamowe UK â ile kosztujÄ
? Budżety Google Ads i Meta Ads 2026",date:"2026-09-10",category:"Kampanie reklamowe UK",excerpt:"Ile realnie trzeba wydaÄ na kampanie reklamowe w UK w 2026? Rozbijamy budżety Google Ads, Meta Ads i TikTok Ads na branże, koszty klikniÄcia w GBP oraz koszt pozyskania klienta â z przykÅadami dla polskich firm w Anglii i Szkocji.",metaDesc:"Kampanie reklamowe UK 2026 â ile kosztujÄ
Google Ads, Meta Ads i TikTok Ads. Budżety od £300/mc, realne CPC w GBP, koszt leada i obsÅuga agencji dla polskich firm w UK.",readMinutes:8,blocks:[{type:"p",text:'âIle muszÄ wydaÄ, żeby reklama w Anglii siÄ opÅaciÅa?" â to pierwsze pytanie, które dostajemy od polskich firm planujÄ
cych kampanie reklamowe UK. W tym artykule podajemy konkretne wideÅki: budżety mediowe w GBP, realne koszty klikniÄcia w brytyjskim Google, koszt pozyskania leada w najpopularniejszych branżach i to, ile kosztuje samo prowadzenie kampanii przez agencjÄ.'},{type:"h2",text:"Budżet mediowy â od czego realnie zaczÄ
Ä w UK"},{type:"p",text:"Minimalny sensowny budżet mediowy na jeden kanaÅ w Wielkiej Brytanii to £300-£500 miesiÄcznie. Poniżej tej kwoty Google nie zbierze wystarczajÄ
cej liczby konwersji, żeby algorytm nauczyÅ siÄ, kto jest Twoim klientem â kampania zostaje w fazie uczenia i przepala pieniÄ
dze na przypadkowy ruch. Dla usÅug lokalnych (remonty, hydraulika, kosmetyka, transport) £400-£800 miesiÄcznie wystarcza na stabilny dopÅyw zapytaÅ z jednego miasta."},{type:"ul",items:["UsÅugi lokalne w jednym mieÅcie: £300-£800 / mc budżetu mediowego.","UsÅugi w caÅym UK (ksiÄgowoÅÄ, prawo, budownictwo): £800-£2 500 / mc.","Sklep internetowy (e-commerce, DTC): od £1 000 / mc, żeby zebraÄ dane o zakupach.","B2B i branże premium (£5 000+ wartoÅci zlecenia): £1 500-£4 000 / mc."]},{type:"h2",text:"Ile kosztuje klikniÄcie w Google Ads UK"},{type:"p",text:'Stawki w Google.co.uk sÄ
wyższe niż w Polsce â to najczÄstsze zaskoczenie przy przenoszeniu kampanii na rynek brytyjski. Orientacyjne CPC w 2026: usÅugi remontowe i budowlane £1,20-£3,50, hydraulika i elektryka £2,00-£5,00, usÅugi ksiÄgowe i prawne £4,00-£12,00, branża beauty £0,80-£2,20, e-commerce (Shopping) £0,35-£1,10. Frazy z intencjÄ
awaryjnÄ
(âemergency plumber London") potrafiÄ
przekroczyÄ Â£15 za klikniÄcie.'},{type:"p",text:'Dlatego sens ma zaczynanie od fraz z konkretnÄ
lokalizacjÄ
i wysokÄ
intencjÄ
, a nie od ogólnych haseÅ. Kampania na âplumber" w Londynie spali £500 w tydzieÅ; kampania na âpolski hydraulik Ealing" przyniesie telefony przy £200 miesiÄcznie.'},{type:"h2",text:"Koszt leada i koszt klienta â liczby, które naprawdÄ decydujÄ
"},{type:"p",text:"Budżet sam z siebie nic nie mówi. Liczy siÄ koszt pozyskania zapytania (CPL) i koszt klienta (CAC). Realne CPL w UK w 2026: usÅugi lokalne £8-£25, budownictwo i remonty £20-£60, ksiÄgowoÅÄ i usÅugi finansowe £35-£90, B2B £60-£180. Przy wspóÅczynniku domkniÄcia 25-35% (typowym dla dobrze prowadzonego telefonu) koszt klienta wychodzi 3-4à CPL."},{type:"p",text:'Zanim zwiÄkszysz budżet, sprawdź trzy rzeczy: czy strona docelowa ma jasnÄ
ofertÄ i numer telefonu w kciuku, czy konwersje sÄ
poprawnie mierzone i czy ktoÅ odbiera telefon w ciÄ
gu 5 minut. W 80% przypadków, w których âreklamy nie dziaÅajÄ
", problem leży w jednym z tych trzech miejsc, nie w stawkach.'},{type:"h2",text:"Meta Ads (Facebook i Instagram) â inne koszty, inna rola"},{type:"p",text:"Meta Ads w UK to zwykle £0,04-£0,20 za wyÅwietlenie 1000 osób taniej niż Google, ale intencja zakupowa jest niższa â użytkownik nie szuka CiÄ, tylko przewija rolkÄ. Dlatego Meta Åwietnie dziaÅa jako budowanie rozpoznawalnoÅci, remarketing do osób, które byÅy na stronie, oraz sprzedaż produktów wizualnych (wnÄtrza, beauty, gastronomia, moda). Koszt leada z formularza na Facebooku bywa niski (£4-£15), ale jakoÅÄ takich zapytaÅ wymaga szybkiego kontaktu telefonicznego."},{type:"h2",text:"TikTok Ads â kiedy warto w Wielkiej Brytanii"},{type:"p",text:"TikTok w UK ma najtaÅszy zasiÄg i najmÅodszÄ
grupÄ odbiorców. Ma sens dla usÅug i produktów, które da siÄ pokazaÄ w 15 sekundach: metamorfozy wnÄtrz, paznokcie i rzÄsy, jedzenie, siÅownie, kursy. Budżet startowy £250-£500 miesiÄcznie plus 3-5 krótkich wideo na miesiÄ
c â bez regularnych materiaÅów kampania szybko siÄ wypala."},{type:"h2",text:"Ile kosztuje prowadzenie kampanii przez agencjÄ"},{type:"p",text:"Na rynku brytyjskim spotkasz dwa modele: staÅa opÅata miesiÄczna (£290-£890 za kanaÅ, zależnie od zakresu) albo procent od budżetu mediowego (zwykle 10-20%, przy wiÄkszych budżetach 8-12%). Przy budżetach do £3 000 miesiÄcznie staÅa opÅata jest dla klienta korzystniejsza i przewidywalna. Nasza obsÅuga kampanii reklamowych UK startuje od
69£390 miesiÄcznie i obejmuje strategiÄ, konfiguracjÄ konwersji, teksty i kreacje, optymalizacjÄ stawek oraz miesiÄczny raport z kosztem leada."},{type:"h2",text:"Jak podzieliÄ budżet na start â przykÅad dla £1 000 / mc"},{type:"ol",items:["£600 Google Ads na frazy z intencjÄ
i lokalizacjÄ
(search).","£250 Meta Ads: remarketing do ruchu ze strony + jedna kampania zasiÄgowa.","£150 rezerwa na testy nowych fraz, kreacji i grup odbiorców."]},{type:"p",text:"Po pierwszym miesiÄ
cu przesuwasz pieniÄ
dze tam, gdzie koszt leada jest najniższy â nie tam, gdzie jest najwiÄcej klikniÄÄ. To jedna prosta zasada, która najczÄÅciej decyduje o tym, czy reklama w UK zarabia."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Kampanie reklamowe UK w 2026 zaczynajÄ
siÄ realnie od £300-£500 budżetu mediowego na kanaÅ, a o wyniku decyduje mierzenie konwersji i szybkoÅÄ reakcji na zapytanie, nie sama stawka. JeÅli chcesz mieÄ policzone wideÅki pod swojÄ
branÅ¼Ä i miasto, sprawdź naszÄ
stronÄ kampanii reklamowych UK â przygotujemy prognozÄ kosztu leada przed wydaniem pierwszego funta."}]},{slug:"kampanie-reklamowe-uk-google-ads-vs-meta-ads",title:"Google Ads vs Meta Ads w UK â który kanaÅ wybraÄ na start (2026)",date:"2026-09-12",category:"Kampanie reklamowe UK",excerpt:"Google Ads Åapie klienta, który już szuka. Meta Ads tworzy potrzebÄ i wraca do niezdecydowanych. Porównujemy oba kanaÅy na rynku brytyjskim: koszty, intencjÄ, czas do pierwszych efektów i branże, w których każdy z nich wygrywa.",metaDesc:"Google Ads vs Meta Ads w UK 2026 â porównanie kosztów, intencji i efektów. Sprawdź, który kanaÅ reklamowy wybraÄ na start dla polskiej firmy w Wielkiej Brytanii.",readMinutes:7,blocks:[{type:"p",text:"Przy pierwszej kampanii w Wielkiej Brytanii prawie każdy zadaje to samo pytanie: Google czy Facebook? Odpowiedź zależy od jednej rzeczy â czy Twoi klienci już szukajÄ
tego, co sprzedajesz, czy trzeba im to najpierw pokazaÄ. Poniżej rozkÅadamy oba kanaÅy na czynniki, które realnie decydujÄ
o wyniku kampanii reklamowej w UK."}
69,{type:"h2",text:"Najkrótsza odpowiedź"},{type:"ul",items:["UsÅuga, której ludzie szukajÄ
w potrzebie (hydraulik, elektryk, mechanik, prawnik, ksiÄgowa, laweta, awarie) â zaczynaj od Google Ads.","Produkt lub usÅuga wizualna, o której klient nie wie, że jej chce (beauty, wnÄtrza, gastronomia, moda, fotografia) â zaczynaj od Meta Ads.","Sklep internetowy â Google Shopping + remarketing Meta, prawie zawsze razem.","B2B w UK â Google Ads na frazy problemowe + kampanie Meta do wÄ
skich grup zawodowych."]},{type:"h2",text:"Intencja: kto jest po drugiej stronie ekranu"},{type:"p",text:'W Google użytkownik sam wpisuje âemergency electrician Manchester" â ma problem teraz i wybiera z trzech pierwszych wyników. WspóÅczynnik konwersji z takiego ruchu w UK to zwykle 6-15% na dobrze przygotowanej stronie. W Meta ten sam czÅowiek przewija rolki i nie ma zamiaru nic kupowaÄ; konwersja bezpoÅrednia to 0,8-3%. Dlatego kampaniÄ na Facebooku ocenia siÄ w dÅuższym okresie i w poÅÄ
czeniu z remarketingiem, a nie po pierwszym tygodniu.'},{type:"h2",text:"Koszty w GBP â czego siÄ spodziewaÄ"},{type:"p",text:"Google Ads UK: £0,80-£12 za klikniÄcie zależnie od branży, koszt leada £8-£90. Meta Ads UK: £0,15-£1,20 za klikniÄcie, koszt leada £4-£40, ale z niższÄ
jakoÅciÄ
zapytaÅ i dÅuższÄ
drogÄ
do decyzji. Google kosztuje wiÄcej za klikniÄcie i mniej za klienta â o ile frazy sÄ
dobrze dobrane i strona konwertuje."},{type:"h2",text:"Czas do pierwszych efektów"},{type:"p",text:"Google Ads zwykle daje pierwsze telefony w 3-7 dni od startu. Meta Ads potrzebuje 2-3 tygodni na wyjÅcie z fazy uczenia i zebranie danych o odbiorcach, a peÅny efekt (z remarketingiem) widaÄ po 4-6 tygodniach. JeÅli musisz zapeÅniÄ kalendarz w tym miesiÄ
cu, wybór jest prosty: Google."},{type:"h2",text:"Co jest potrzebne po Twojej stronie"},{type:"p",text:"Google Ads wymaga dobrej strony docelowej: jasna oferta, telefon w widocznym miejscu, krótki formularz, opinie klientów. Meta Ads wymaga materiaÅów â minimum 3-4 zdjÄcia lub krótkie wideo z realnych realizacji, odÅwieżane co miesiÄ
c. Firma bez zdjÄÄ i bez strony zwykle powinna zaczÄ
Ä od Google, a Meta doÅÄ
czyÄ po zbudowaniu podstaw. JeÅli strona jest stara lub wolna, najpierw warto zajÄ
Ä siÄ niÄ
â reklama tylko powiÄkszy stratÄ."},{type:"h2",text:"Kiedy prowadziÄ oba kanaÅy razem"},{type:"p",text:"Powyżej £800 miesiÄcznego budżetu mediowego ÅÄ
czenie kanaÅów niemal zawsze obniża koszt klienta. Schemat, który sprawdza siÄ u polskich firm w UK: Google Ads zbiera ruch z intencjÄ
, Meta wraca do osób, które weszÅy na stronÄ i nie zadzwoniÅy, a treÅci z Facebooka i Instagrama budujÄ
zaufanie przed decyzjÄ
. Do tego pozycjonowanie UK, żeby po kilku miesiÄ
cach czÄÅÄ zapytaÅ przychodziÅa z Google bez opÅaty za klikniÄcie."},{type:"h2",text:"NajczÄstsze bÅÄdy przy starcie w UK"},{type:"ol",items:["Brak mierzenia konwersji â bez tego żaden z kanaÅów nie potrafi siÄ optymalizowaÄ.","Kampania na ogólne frazy bez miasta â najszybszy sposób na spalenie budżetu w Londynie.","Jeden zestaw reklam na caÅÄ
WielkÄ
BrytaniÄ, bez podziaÅu na regiony i stawki.","Kierowanie ruchu na stronÄ gÅównÄ
zamiast na podstronÄ konkretnej usÅugi.","Ocena kampanii po klikniÄciach zamiast po koszcie zapytania i sprzedaży."]},{type:"h2",text:"Podsumowanie"},{type:"p",text:"W Wielkiej Brytanii Google Ads najszybciej przynosi zapytania, a Meta Ads najtaniej buduje rozpoznawalnoÅÄ i domyka niezdecydowanych. Dobrze poprowadzone kampanie reklamowe UK zwykle używajÄ
obu, ale w kolejnoÅci dopasowanej do branży i budżetu. Chcesz wiedzieÄ, od czego zaczÄ
Ä u siebie â napisz do nas, policzymy prognozÄ dla Twojego miasta i usÅugi."}]},{slug:"kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku",title:"Jak uruchomiÄ kampanie reklamowe w UK â checklist krok po kroku (2026)",date:"2026-09-15",category:"Kampanie reklamowe UK",excerpt:"Konto reklamowe, pÅatnoÅci w GBP, mierzenie konwersji, struktura kampanii, teksty i pierwsze 30 dni optymalizacji. Kompletna lista kontrolna uruchomienia reklamy w Wielkiej Brytanii â dla firm, które robiÄ
to pierwszy raz.",metaDesc:"Jak uruchomiÄ kampanie reklamowe w UK krok po kroku: konto Google Ads, pÅatnoÅci GBP, konwersje GA4, struktura kampanii i pierwsze 30 dni. Checklist 2026 dla polskich firm.",readMinutes:9,blocks:[{type:"p",text:'Uruchomienie reklamy w Wielkiej Brytanii to nie jedno klikniÄcie âStart". Poniżej znajdziesz kolejnoÅÄ, w której robimy to u klientów â od konta i rozliczeÅ w GBP, przez mierzenie konwersji, aż po pierwsze trzydzieÅci dni optymalizacji. PrzejÅcie caÅej listy zajmuje zwykle 5 dni roboczych.'},{type:"h2",text:"Krok 1: konto reklamowe i rozliczenia w GBP"},{type:"p",text:"Ustaw kraj rozliczeniowy na United Kingdom i walutÄ GBP â waluty nie da siÄ później zmieniÄ bez zakÅadania nowego konta. Wpisz numer VAT UK, jeÅli firma jest zarejestrowana (Google wystawi fakturÄ bez VAT w mechanizmie reverse charge). Dodaj kartÄ firmowÄ
i drugÄ
jako zapasowÄ
: odrzucona pÅatnoÅÄ zatrzymuje kampaniÄ w Årodku miesiÄ
ca."},{type:"h2",text:"Krok 2: mierzenie konwersji â bez tego nie startuj"},{type:"p",text:"Ustaw GA4 i konwersje dla każdego realnego kontaktu: wysÅanie formularza, klik w numer telefonu, klik w WhatsApp, rezerwacja terminu, zakup. Dla Meta i TikToka dodaj piksele i zdarzenia po stronie serwera, jeÅli to możliwe. Zweryfikuj w trybie podglÄ
du, że zdarzenie faktycznie siÄ zapisuje â najczÄstszy bÅÄ
d to piksel na stronie, ale zdarzenie nigdy
69nie uruchamiane."},{type:"h2",text:"Krok 3: strona docelowa"},{type:"p",text:"Reklama kieruje na podstronÄ konkretnej usÅugi, nie na stronÄ gÅównÄ
. Na pierwszym ekranie: co robisz, gdzie dziaÅasz, cena lub wideÅki, telefon i przycisk kontaktu. Do tego opinie, zdjÄcia realizacji i czas otwarcia strony poniżej 2,5 sekundy na telefonie. JeÅli strona nie speÅnia tych warunków, kampania podniesie koszt klikniÄcia i obniży liczbÄ zapytaÅ â Google ocenia jakoÅÄ strony docelowej."},{type:"h2",text:"Krok 4: struktura kampanii pod rynek brytyjski"},{type:"ul",items:["Oddzielna kampania na każdÄ
usÅugÄ â inne stawki, inne teksty, inny budżet.","Kierowanie na miasta i promieÅ w milach, nie na caÅe UK jednym zestawem.","Frazy dopasowane ÅciÅle i do wyrażenia; szeroki typ dopasowania dopiero po zebraniu danych.",'Lista wykluczeÅ: âfree", âjobs", âsalary", âDIY", âcourses", nazwy konkurentów, których nie chcesz.',"Harmonogram: godziny, w których ktoÅ odbiera telefon."]},{type:"h2",text:"Krok 5: teksty i kreacje"},{type:"p",text:'W tekstach reklam używaj brytyjskiej pisowni i realnych liczb: ceny
69w £, czas realizacji, obszar dziaÅania, âno obligation quote". Przygotuj minimum 8 nagÅówków i 4 opisy na kampaniÄ, żeby system miaÅ z czego wybieraÄ. Dla Meta i TikToka: pionowe wideo 9:16, pierwsze 2 sekundy pokazujÄ
efekt, napisy zawsze wÅÄ
czone â wiÄkszoÅÄ ludzi patrzy bez dźwiÄku.'},{type:"h2",text:"Krok 6: rozszerzenia i formy kontaktu"},{type:"p",text:"Dodaj rozszerzenia poÅÄ
czeÅ, lokalizacji (powiÄ
zane z Google Business Profile), linki do podstron i ceny. Dla usÅug awaryjnych rozszerzenie poÅÄ
czeÅ robi najwiÄkszÄ
różnicÄ â klient dzwoni z wyników, bez wchodzenia na stronÄ. JeÅli obsÅugujesz klientów po polsku i po angielsku, przygotuj osobne zestawy reklam dla każdego jÄzyka."},{type:"h2",text:"Krok 7: pierwsze 30 dni â co i kiedy zmieniaÄ"},{type:"ol",items:["Dni 1-3: nic nie zmieniaj poza oczywistymi bÅÄdami. System siÄ uczy.","Dni 4-7: wyklucz frazy bez sensu z raportu wyszukiwanych haseÅ, sprawdź, czy konwersje siÄ zapisujÄ
.","Dni 8-14: wyÅÄ
cz najsÅabsze reklamy, zwiÄksz budżet tam, gdzie koszt zapytania jest najniższy.","Dni 15-21: doÅóż remarketing do osób, które byÅy na stronie i nie zadzwoniÅy.","Dni 22-30: policz koszt klienta i zysk, ustal budżet na kolejny miesiÄ
c na twardych liczbach."]},{type:"h2",text:"Krok 8: raportowanie, które ma sens"},{type:"p",text:"Raz w miesiÄ
cu potrzebujesz czterech liczb: wydany budżet, liczba zapytaÅ, koszt jednego zapytania i przychód z pozyskanych klientów. Wszystko inne (wyÅwietlenia, klikniÄcia, wskaźnik jakoÅci) to narzÄdzia pracy agencji, nie miara sukcesu. Tak wyglÄ
dajÄ
nasze miesiÄczne raporty przy prowadzeniu kampanii reklamowych UK."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Dobrze uruchomiona kampania w Wielkiej Brytanii to: konto w GBP, poprawnie mierzone konwersje, mocna strona docelowa, kampanie podzielone na usÅugi i miasta oraz zdyscyplinowane pierwsze trzydzieÅci dni. JeÅli wolisz oddaÄ to w rÄce zespoÅu, który robi to codziennie dla polskich firm w UK â sprawdź naszÄ
obsÅugÄ kampanii reklamowych i poproÅ o prognozÄ kosztu zapytania."}]}],J9=[{slug:"paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel",title:"Paczki do Polski i przeprowadzki SzkocjaâPolska â jak wysÅaÄ tanio i bez stresu z Nova Parcel",date:"2026-10-05",category:"Å»ycie w UK",excerpt:"WysyÅka paczek do Polski i przeprowadzka ze Szkocji do Polski nie muszÄ
byÄ drogie ani skomplikowane. SprawdziliÅmy, jak dziaÅa Nova Parcel â polska firma kurierska, która odbiera przesyÅki prosto spod drzwi w caÅej Wielkiej Brytanii.",metaDesc:"Paczki do Polski i przeprowadzki SzkocjaâPolska z Nova Parcel â odbiór spod drzwi w caÅym UK, atrakcyjne ceny, polska obsÅuga. Zobacz, jak wysÅaÄ paczkÄ lub zorganizowaÄ przeprowadzkÄ.",readMinutes:6,blocks:[{type:"p",text:"Å»ycie na emigracji w Wielkiej Brytanii to nie tylko praca i nowe obowiÄ
zki â to także staÅy kontakt z bliskimi w Polsce. Prezenty dla rodziny, ubrania, dokumenty, a czasem caÅy dobytek, gdy przychodzi moment przeprowadzki. Wszystko to trzeba jakoÅ przetransportowaÄ miÄdzy Wyspami a PolskÄ
. Na szczÄÅcie sÄ
firmy, które robiÄ
to codziennie i wiedzÄ
, jak zorganizowaÄ transport szybko, bezpiecznie i w rozsÄ
dnej cenie."},{type:"plink",before:"JednÄ
z najchÄtniej polecanych przez Polaków w UK firm jest ",linkText:"Nova Parcel â paczki do Polski i przeprowadzki SzkocjaâPolska",href:"https://www.novaparcel.co.uk",after:". To polska firma kuriersko-transportowa, która specjalizuje siÄ wÅaÅnie w przewozach na trasie Wielka BrytaniaâPolska."},{type:"h2",text:"Paczki do Polski â odbiór prosto spod Twoich drzwi"},{type:"p",text:"NajwiÄkszÄ
zaletÄ
wysyÅki z Nova Parcel jest wygoda. Nie musisz nigdzie jechaÄ ani staÄ w kolejkach â kurier odbiera paczkÄ prosto spod Twoich drzwi, w dowolnym miejscu w Wielkiej Brytanii: w Anglii, Szkocji, Walii i Irlandii PóÅnocnej. Paczka trafia nastÄpnie pod wskazany adres w Polsce, również z dostawÄ
do odbiorcy."},{type:"h3",text:"Co możesz wysÅaÄ?"},{type:"ul",items:["paczki standardowe â ubrania, zabawki, kosmetyki, artykuÅy
69spożywcze (trwaÅe),","prezenty i przesyÅki okazjonalne dla rodziny i przyjacióÅ,","dokumenty i przesyÅki firmowe,","sprzÄt AGD, elektronikÄ i rowery (w odpowiednim opakowaniu),","walizy i worki z rzeczami osobistymi."]},{type:"p",text:"Ceny sÄ
konkurencyjne wzglÄdem tradycyjnych przewoźników, a caÅÄ
wysyÅkÄ zaÅatwisz po polsku â od zamówienia kuriera, przez Åledzenie przesyÅki, po kontakt z obsÅugÄ
klienta. To ogromne uÅatwienie, zwÅaszcza gdy chcesz szybko wyjaÅniÄ szczegóÅy transportu."},{type:"h2",text:"Przeprowadzki SzkocjaâPolska â caÅe mieszkanie pod jednym dachem"},{type:"p",text:"Przeprowadzka miÄdzynarodowa to zupeÅnie inna skala niż wysyÅka paczki. Meble, sprzÄt AGD, kartony z caÅym dobytkiem â to wymaga odpowiedniego auta, doÅwiadczonej ekipy i sprawnej logistyki. Nova Parcel organizuje przeprowadzki na trasie SzkocjaâPolska (oraz w caÅej Wielkiej Brytanii), oferujÄ
c transport door-to-door."},{type:"p",text:"Niezależnie od tego, czy wracasz do Polski na staÅe, czy przeprowadzasz siÄ z Glasgow czy Edynburga do Warszawy, Krakowa albo maÅej miejscowoÅci â firma dopasuje wielkoÅÄ pojazdu do Twoich potrzeb. Możesz zamówiÄ transport peÅny (caÅe auto tylko dla Ciebie) albo doÅadunek, jeÅli masz mniej rzeczy i chcesz obniżyÄ koszty."},{type:"h3",text:"Jak przygotowaÄ siÄ do przeprowadzki SzkocjaâPolska?"},{type:"ol",items:["Zrób listÄ rzeczy â zdecyduj, co zabierasz, a co sprzedasz lub oddasz.","PoproÅ o darmowÄ
wycenÄ â podaj przybliżonÄ
liczbÄ kartonów i mebli.","Zabezpiecz delikatne przedmioty â folia bÄ
belkowa i solidne kartony to podstawa.","Ustal termin odbioru â ekipa przyjedzie pod wskazany adres w Szkocji.","Odbierz rzeczy w Polsce â dostawa pod drzwi nowego miejsca zamieszkania."]},{type:"h2",text:"Dlaczego warto wybraÄ Nova Parcel?"},{type:"ul",items:["Polska obsÅuga â wszystko zaÅatwisz w swoim jÄzyku, bez stresu i nieporozumieÅ.","Odbiór i dostawa door-to-door â kurier przyjeżdża pod Twój adres w UK i dowozi pod adres w Polsce.","Atrakcyjne ceny â konkurencyjne stawki za paczki i przeprowadzki na trasie UKâPolska.","Regularne kursy â przesyÅki nie czekajÄ
tygodniami na transport.","DoÅwiadczenie â firma specjalizuje siÄ wyÅÄ
cznie w transporcie miÄdzy WielkÄ
BrytaniÄ
a PolskÄ
."]},{type:"plink",before:"JeÅli planujesz wysyÅkÄ paczki do Polski albo przeprowadzkÄ ze Szkocji do Polski, sprawdź aktualne ceny i zamów odbiór na stronie ",linkText:"www.novaparcel.co.uk",href:"https://www.novaparcel.co.uk",after:". Wycena jest darmowa i niezobowiÄ
zujÄ
ca â wystarczy podaÄ, co i skÄ
d chcesz przewieźÄ."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Transport miÄdzy WielkÄ
BrytaniÄ
a PolskÄ
nie musi byÄ drogi ani stresujÄ
cy. Z polskÄ
firmÄ
kurierskÄ
, która odbiera przesyÅki spod drzwi i dowozi je pod adres w Polsce, wysyÅka paczki czy przeprowadzka SzkocjaâPolska stajÄ
siÄ prostÄ
formalnoÅciÄ
. ZaoszczÄdzony czas i nerwy możesz przeznaczyÄ na to, co naprawdÄ ważne."}]}],Q9=[{slug:"wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac",title:"Wizualizacje 3D na stronie dewelopera â w jaki sposób wykorzystaÄ",date:"2024-06-27",category:"Web Development",excerpt:"Fotorealistyczne renderingi, wizualizacje 360° i rzuty 3D â jak deweloperzy w UK wykorzystujÄ
trójwymiarowÄ
grafikÄ, żeby ożywiÄ ofertÄ i przyspieszyÄ sprzedaż mieszkaÅ przez stronÄ internetowÄ
.",metaDesc:"Wizualizacje 3D na stronie dewelopera w UK â fotorealistyczne renderingi, wirtualne spacery 360° i rzuty. Zobacz, jak wykorzystaÄ je, by szybciej sprzedaÄ mieszkania.",readMinutes:3,blocks:[{type:"h2",text:"Jak zachwyciÄ klientów wizualizacjami 3D"},{type:"p",text:"UsiÄ
dź wygodnie, bo zaraz zabieram CiÄ w prawdziwÄ
podróż peÅnÄ
niesamowitych możliwoÅci, jakie dajÄ
wizualizacje 3D na stronie internetowej dewelopera. Dzisiejsza technologia pozwala nam na stworzenie niemal dowolnej wizualizacji, która sprawi, że Twoi klienci bÄdÄ
wrÄcz zachwyceni tym, co im oferujesz. Przygotuj siÄ na zaskoczenie, bo to, co mam Ci do powiedzenia, wywoÅa prawdziwe âwowâ u Twoich przyszÅych wÅaÅcicieli nieruchomoÅci."},{type:"h2",text:"OżywiÄ marzenia klientów"},{type:"p",text:"Wyobraź sobie, że jesteÅ osobÄ
, która marzy o swojej wymarzonych czterech kÄ
tach. Widzisz w swojej wyobra
69źni piÄkny, nowoczesny apartament z dużymi oknami, z którego rozpoÅciera siÄ wspaniaÅy widok. Zastanawiasz siÄ, jak bÄdzie wyglÄ
daÄ Twoja przyszÅa kuchnia, sypialnia, a może gabinet? Teraz pomyÅl, że możesz to wszystko zobaczyÄ jeszcze przed zakupem. Wizualizacje 3D to nic innego jak stworzenie cyfrowej repliki tego, co zamierza zbudowaÄ deweloper. DziÄki temu Twoi klienci mogÄ
nie tylko wyobraziÄ sobie swoje przyszÅe mieszkanie, ale także âpoczuÄâ je."},{type:"p",text:"Jak podkreÅla firma 2XP Studio, wykorzystujÄ
c szeroki wybór wizualizacji 3D, można osiÄ
gnÄ
Ä niemal dowolny cel biznesowy. Kluczowe jest jednak zrozumienie, co każdy typ wizualizacji ma do zaoferowania i jaka jest najlepsza praktyka jego wykorzystania. Deweloperzy, architekci i producenci mogÄ
dziÄki nim przekonywaÄ odbiorców do swoich pomysÅów."},{type:"h2",text:"ZachwycajÄ
ce fotorealistyczne wizualizacje"},{type:"p",text:"Jednym z najistotniejszych rodzajów wizualizacji, jakie możesz wykorzystaÄ na swojej stronie internetowej, sÄ
fotorealistyczne renderingi produktów lub budynków. Jak podkreÅla firma Innovar, ten rodzaj wizualizacji 3D pozwala na przedstawienie produktu w odpowiednio zaaranżowanej scenie, co jest szczególnie ważne w przypadku mebli, które powinny zostaÄ umieszczone w stylowych wnÄtrzach."},{type:"p",text:"Wyobraź sobie, że Twoi klienci mogÄ
obejrzeÄ swoje przyszÅe mieszkanie z każdej możliwej strony, przybliżajÄ
c siÄ do detali czy obracajÄ
c wokóŠwÅasnej osi. To prawdziwa rewolucja w branży deweloperskiej, która pozwala na stworzenie niezapomnianego wrażenia i uÅatwia podejmowanie decyzji o zakupie."},{type:"h2",text:"Interaktywne wizualizacje 360 stopni"},{type:"p",text:"Kolejnym niesamowitym narzÄdziem, jakie możesz wykorzystaÄ na swojej stronie internetowej, sÄ
interaktywne wizualizacje 360 stopni. To forma atrakcyjnej prezentacji produktów w Internecie, dziÄki której klienci mogÄ
obejrzeÄ dany obiekt z każdej możliwej strony."},{type:"p",text:"Firma 2XP Studio podkreÅla, że taka forma prezentacji wzbudza wiÄksze zainteresowanie i zaufanie wÅród klientów branży e-commerce niż statyczne zdjÄcia. Wyobraź sobie, że Twoi klienci mogÄ
âdotknÄ
Äâ meblÄ
, wykoÅczenia czy instalacji, zanim podejmÄ
decyzjÄ o zakupie. To naprawdÄ potÄżne narzÄdzie, które może przynieÅÄ Ci ogromne korzyÅci."},{type:"h2",text:"Rzuty 3D jako narzÄdzie sprzedażowe"},{type:"p",text:"Ostatnim, ale nie mniej ważnym rodzajem wizualizacji, jaki możesz wykorzystaÄ na swojej stronie internetowej, sÄ
rzuty 3D. To doskonaÅe narzÄdzie sprzedażowe, szczególnie przydatne dla deweloperów i architektów."},{type:"p",text:"Jak podkreÅla firma 2XP Studio, rzuty 3D pozwalajÄ
na realistyczne odwzorowanie trójwymiarowej przestrzeni, co jest najciekawszym sposobem na zaprezentowanie przekrojów różnego typu obiektów â domów, mieszkaÅ czy budynków. DziÄki temu Twoi klienci mogÄ
wyobraziÄ sobie, jak bÄdzie wyglÄ
daÄ ich przyszÅe lokum, co z pewnoÅciÄ
uÅatwi im podjÄcie decyzji o zakupie."},{type:"h2",text:"Jak zaczÄ
Ä przygodÄ z wizualizacjami 3D?"},{type:"p",text:"JeÅli chcesz wprowadziÄ na swojÄ
stronÄ internetowÄ
niesamowite wizualizacje 3D, które zachwycÄ
Twoich klientów, to koniecznie skontaktuj siÄ ze specjalistycznÄ
firmÄ
, która zajmuje siÄ tworzeniem tego typu materiaÅów. PamiÄtaj, że strony internetowe to nasza specjalnoÅÄ , wiÄc możemy Ci pomóc w doborze odpowiedniej formy prezentacji Twoich inwestycji."},{type:"p",text:"Wystarczy, że przeÅlesz nam wytyczne dotyczÄ
ce Twoich oczekiwaÅ, a my przygotujemy dla Ciebie kosztorys oraz harmonogram prac. Po akceptacji zaczniemy realizacjÄ projektu, a Ty bÄdziesz mógÅ na bieżÄ
co opiniowaÄ nasze dziaÅania. Nie mamy żadnego limitu konsultacji â to Ty decydujesz, kiedy jesteÅ gotowy, by zatwierdziÄ ostatecznÄ
wersjÄ renderingu 3D."},{type:"p",text:"PamiÄtaj, że strony internetowe to nasza specjalnoÅÄ , dlatego jesteÅmy w stanie kompleksowo zaopiekowaÄ siÄ Twoim projektem â od stworzenia wizualizacji 3D, aż po zaprojektowanie i wdrożenie nowoczesnej, przyciÄ
gajÄ
cej klientów strony internetowej. To gwarancja, że Twoja firma bÄdzie wyróżniaÄ siÄ na tle konkurencji i skutecznie pozyskiwaÄ nowych klientów."},{type:"p",text:"Nie czekaj dÅużej â umów siÄ na darmowÄ
konsultacjÄ już dziÅ! Razem stworzymy niesamowite wizualizacje 3D, które sprawiÄ
, że Twoi klienci bÄdÄ
zachwyceni TwojÄ
ofertÄ
."}]},{slug:"wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna",title:"Wyszukiwarka na stronie â gdzie i jak umieÅciÄ, aby byÅa użyteczna?",date:"2023-05-29",category:"UX / Content",excerpt:"ZÅa wyszukiwarka na stronie potrafi zabiÄ konwersjÄ. Zobacz, gdzie jÄ
umieÅciÄ, jak zaprojektowaÄ pole i wyniki, żeby użytkownicy znajdowali to, czego szukajÄ
â i zostawali dÅużej.",metaDesc:"Wyszukiwarka na stronie internetowej â gdzie jÄ
umieÅciÄ, jak zaprojektowaÄ i jakie funkcje musi mieÄ, żeby realnie pomagaÅa użytkownikom. Praktyczny poradnik UX.",readMinutes:6,blocks:[{type:"p",text:"Przyznajcie siÄ, ile razy zrezygnowaliÅcie z wizyty na stronie internetowej tylko dlatego, że nie mogliÅcie znaleÅºÄ tego, czego szukaliÅcie? Dla mnie to bardzo czÄsta sytuacja. Nic tak mnie nie irytuje, jak rozczarowanie, gdy trafiam na stronÄ, która wyglÄ
da interesujÄ
co, ale w której nie mogÄ odnaleÅºÄ kluczowych informacji czy produktów. I wtedy najczÄÅciej rezygnujÄ i uciekam do konkurencji."},{type:"p",text:"Czy zdarzyÅo wam siÄ kiedyÅ zastanawiaÄ, dlaczego tak bardzo cenimy sobie obecnoÅÄ wyszukiwarki na stronie? Przecież, kiedy wchodzimy na stronÄ, zwykle mamy już jakieÅ oczekiwania co do jej zawartoÅci, wiÄc po co nam ta dodatkowa funkcja? Otóż okazuje siÄ, że wyszukiwarka to naprawdÄ ważny element, który może znaczÄ
co poprawiÄ doÅwiadczenie użytkownika (tzw. user experience) na naszej stronie. A co za tym idzie â przeÅożyÄ siÄ na zwiÄkszenie sprzedaży, a nawet lojalnoÅci klientów."},{type:"h3",text:"Wyszukiwarka â dlaczego warto jÄ
mieÄ?"},{type:"p",text:"Wyobraźcie sobie taki scenariusz: Macie ogromny sklep internetowy z tysiÄ
cami produktów. Użytkownik, który wchodzi na waszÄ
stronÄ, chce kupiÄ konkretnÄ
rzecz, na przykÅad czarnÄ
koszulkÄ w rozmiarze M. Bez wyszukiwarki musiaÅby przeglÄ
daÄ kolejne kategorie i podkategorie, aby w koÅcu trafiÄ n
69a ten produkt. Frustracja gwarantowana. A co jeÅli okaże siÄ, że akurat tej konkretnej koszulki nie ma w magazynie? Użytkownik zmarnuje caÅe mnóstwo czasu i prawdopodobnie zrezygnuje z zakupów w waszym sklepie."},{type:"p",text:"Z kolei z dobrze zaprojektowanÄ
wyszukiwarkÄ
wszystko wyglÄ
da zupeÅnie inaczej. Użytkownik wpisuje âczarna koszulka Mâ i w ciÄ
gu uÅamka sekundy wyÅwietlajÄ
mu siÄ wszystkie dostÄpne produkty speÅniajÄ
ce te kryteria. JeÅli akurat tej konkretnej koszulki nie ma, wyszukiwarka może zaproponowaÄ podobne modele lub akcesoria, które mogÅyby go zainteresowaÄ. W ten sposób nie tylko skracamy drogÄ do pożÄ
danego produktu, ale też zachÄcamy klienta do dalszej interakcji z naszÄ
witrynÄ
i potencjalnie wiÄkszych zakupów."},{type:"p",text:"Åwietna wyszukiwarka to też doskonaÅe narzÄdzie do zbierania informacji o naszych użytkownikach. Możemy ÅledziÄ, jakich fraz najczÄÅciej używajÄ
, aby znaleÅºÄ interesujÄ
ce ich produkty. DziÄki temu możemy lepiej dostosowaÄ ofertÄ i treÅci na stronie do ich preferencji."},{type:"h3",text:"Gdzie umieÅciÄ wyszukiwarkÄ na stronie?"},{type:"p",text:"Skoro już wiemy, że wyszukiwarka to ważny element każdej wiÄkszej witryny internetowej, to logicznym krokiem jest zastanowienie siÄ, gdzie jÄ
najlepiej umieÅciÄ. Jak siÄ okazuje, istniejÄ
pewne sprawdzone schematy, które warto wziÄ
Ä pod uwagÄ."},{type:"p",text:"Badania wykazaÅy, że użytkownicy oczekujÄ
, że wyszukiwarka bÄdzie znajdowaÄ siÄ w górnej czÄÅci strony â najczÄÅciej w lewym lub prawym rogu. Jest to naturalne miejsce, w którym wzrok użytkownika siÄ zatrzymuje, gdy wchodzi na nowÄ
stronÄ. Umieszczenie wyszukiwarki w tym miejscu sprawia, że jest ona dobrze widoczna i Åatwo dostÄpna."},{type:"p",text:"OczywiÅcie, nie oznacza to, że nie można jej umieÅciÄ w innym miejscu. JeÅli na przykÅad mamy bardzo rozbudowanÄ
nawigacjÄ, wyszukiwarka może Åwietnie sprawdziÄ siÄ również w dolnej czÄÅci strony. Ważne jest jednak, aby byÅa ona spójna z resztÄ
projektu i dobrze zintegrowana z pozostaÅymi elementami interfejsu."},{type:"h3",text:"FunkcjonalnoÅÄ to podstawa"},{type:"p",text:"Samo umieszczenie wyszukiwarki to jednak za maÅo. Istotne jest również, aby byÅa ona dobrze zaprojektowana i dziaÅaÅa sprawnie. Oto kilka wskazówek, na co warto zwróciÄ uwagÄ:"},{type:"ul",items:["WielkoÅÄ pola wyszukiwania : Pole do wpisywania zapytaÅ powinno byÄ na tyle duże, aby użytkownik mógÅ bez problemu wpisaÄ caÅe sÅowo lub frazÄ. Badania pokazujÄ
, że optymalna dÅugoÅÄ to okoÅo 27 znaków â to tyle, ile mieÅci siÄ wiÄkszoÅÄ zapytaÅ.","AutouzupeÅnianie i korekta bÅÄdów : Wyszukiwarka powinna umieÄ radziÄ sobie z literówkami i ortograficznymi pomyÅkami użytkowników. Funkcje autouzupeÅniania i sugerowania poprawnych fraz znacznie uÅatwiajÄ
i przyspieszajÄ
proces wyszukiwania.","Synonimy i powiÄ
zane produkty : Wyszukiwarka powinna nie tylko odnajdywaÄ produkty pasujÄ
ce dokÅadnie do zapytania, ale też wyÅwietlaÄ te, które mogÄ
byÄ powiÄ
zane lub stanowiÄ alternatywÄ. DziÄki temu użytkownik ma wiÄkszy wybór i może trafiÄ na coÅ, czego nawet nie szukaÅ.","ResponsywnoÅÄ : W dobie powszechnego korzystania z urzÄ
dzeÅ mobilnych ważne jest, aby wyszukiwarka dziaÅaÅa sprawnie również na smartfonach i tabletach. Musi byÄ czytelna i Åatwa w obsÅudze niezależnie od urzÄ
dzenia.","Wyniki wyszukiwania : Uzyskane wyniki powinny byÄ czytelne, dobrze zorganizowane i zawieraÄ istotne informacje o produktach. Można je dodatkowo wzbogaciÄ o zdjÄcia, opisy czy odnoÅniki do szczegóÅowych kart produktowych.","Analiza danych : Wyszukiwarka to nie tylko narzÄdzie uÅatwiajÄ
ce użytkownikom poruszanie siÄ po stronie. To również kopalnia danych na temat tego, czego ludzie u nas szukajÄ
. Warto wiÄc ÅledziÄ statystyki i na bieżÄ
co dostosowywaÄ dziaÅanie wyszukiwarki do potrzeb naszych klientów."]},{type:"p",text:"WielkoÅÄ pola wyszukiwania : Pole do wpisywania zapytaÅ powinno byÄ na tyle duże, aby użytkownik mógÅ bez problemu wpisaÄ caÅe sÅowo lub frazÄ. Badania pokazujÄ
, że optymalna dÅugoÅÄ to okoÅo 27 znaków â to tyle, ile mieÅci siÄ wiÄkszoÅÄ zapytaÅ."},{type:"p",text:"AutouzupeÅnianie i korekta bÅÄdów : Wyszukiwarka powinna umieÄ radziÄ sobie z literówkami i ortograficznymi pomyÅkami użytkowników. Funkcje autouzupeÅniania i sugerowania poprawnych fraz znacznie uÅatwiajÄ
i przyspieszajÄ
proces wyszukiwania."},{type:"p",text:"Synonimy i powiÄ
zane produkty : Wyszukiwarka powinna nie tylko odnajdywaÄ produkty pasujÄ
ce dokÅadnie do zapytania, ale też wyÅwietlaÄ te, które mogÄ
byÄ powiÄ
zane lub stanowiÄ alternatywÄ. DziÄki temu użytkownik ma wiÄkszy wybór i może trafiÄ n
69a coÅ, czego nawet nie szukaÅ."},{type:"p",text:"ResponsywnoÅÄ : W dobie powszechnego korzystania z urzÄ
dzeÅ mobilnych ważne jest, aby wyszukiwarka dziaÅaÅa sprawnie również na smartfonach i tabletach. Musi byÄ czytelna i Åatwa w obsÅudze niezależnie od urzÄ
dzenia."},{type:"p",text:"Wyniki wyszukiwania : Uzyskane wyniki powinny byÄ czytelne, dobrze zorganizowane i zawieraÄ istotne informacje o produktach. Można je dodatkowo wzbogaciÄ o zdjÄcia, opisy czy odnoÅniki do szczegóÅowych kart produktowych."},{type:"p",text:"Analiza danych : Wyszukiwarka to nie tylko narzÄdzie uÅatwiajÄ
ce użytkownikom poruszanie siÄ po stronie. To również kopalnia danych na temat tego, czego ludzie u nas szukajÄ
. Warto wiÄc ÅledziÄ statystyki i na bieżÄ
co dostosowywaÄ dziaÅanie wyszukiwarki do potrzeb naszych klientów."},{type:"h3",text:"Przypadek WebWave â jak zrobiÄ wyszukiwarkÄ na stronie?"},{type:"p",text:"JeÅli prowadzicie stronÄ internetowÄ
w oparciu o kreator WebWave, wbudowanie wyszukiwarki to naprawdÄ banalnie proste zadanie. Wystarczy kilka klikniÄÄ, aby dodaÄ tÄ funkcjonalnoÅÄ do naszej witryny."},{type:"p",text:"Pierwszym krokiem jest wejÅcie na stronÄ Google Custom Search Engine , gdzie możemy stworzyÄ wÅasnÄ
, spersonalizowanÄ
wyszukiwarkÄ. Wystarczy podaÄ adres naszej strony, a Google doda jÄ
do indeksu i wygeneruje gotowy kod HTML, który możemy później umieÅciÄ na naszej witrynie."},{type:"p",text:"NastÄpnie, w kreatorze WebWave, przeÅÄ
czamy siÄ w tryb edycji i klikamy ikonkÄ dodawania nowego elementu. Znajdujemy sekcjÄ âKod HTMLâ i wklejamy tam wygenerowany wczeÅniej kod. Możemy go również dodatkowo wyedytowaÄ, na przykÅad dostosowaÄ rozmiar pola wyszukiwania lub kolor przycisku âSzukajâ."},{type:"p",text:"I to naprawdÄ tyle! Wystarczy zapisaÄ zmiany i opublikowaÄ stronÄ, a nasza nowa, w peÅni funkcjonalna wyszukiwarka bÄdzie gotowa do użycia."},{type:"p",text:"OczywiÅcie, w przypadku bardziej rozbudowanych serwisów, z dużÄ
iloÅciÄ
treÅci i produktów, warto zastanowiÄ siÄ nad bardziej zaawansowanymi rozwiÄ
zaniami. Ale nawet w takich sytuacjach WebWave zapewnia wsparcie i podpowiada, jak najlepiej skonfigurowaÄ tÄ funkcjonalnoÅÄ."},{type:"h3",text:"Podsumowanie"},{type:"p",text:"Wyszukiwarka to naprawdÄ ważny element każdej wiÄkszej strony internetowej. Dobrze zaprojektowana i zintegrowana z witrynÄ
, może znaczÄ
co poprawiÄ doÅwiadczenie użytkowników, a w efekcie przeÅożyÄ siÄ na wiÄkszÄ
sprzedaż i lojalnoÅÄ klientów."},{type:"p",text:"Kluczowe jest, aby wyszukiwarka byÅa widoczna, Åatwa w obsÅudze i oferowaÅa użytkownikom satysfakcjonujÄ
ce wyniki. Warto także ÅledziÄ dane z niej pochodzÄ
ce i na bieżÄ
co dostosowywaÄ jej dziaÅanie do potrzeb naszych klientów."},{type:"p",text:"JeÅli prowadzicie stronÄ internetowÄ
w oparciu o kreator WebWave, dodanie wyszukiwarki to naprawdÄ banalnie proste zadanie. Wystarczy kilka klikniÄÄ, aby mieÄ w peÅni funkcjonalne narzÄdzie, które może znacznie usprawniÄ nawigacjÄ po naszej witrynie."},{type:"p",text:"ZachÄcam, abyÅcie zastanowili siÄ nad wdrożeniem wyszukiwarki na waszej stronie. To naprawdÄ ważny element, który może przynieÅÄ wiele korzyÅci â zarówno dla was, jak i dla waszych użytkowników. A jeÅli potrzebujecie dodatkowej pomocy, to pamiÄtajcie, że zespóŠDispace zawsze chÄtnie sÅuży radÄ
i wsparciem."}]},{slug:"filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne",title:"Filtrowanie i sortowanie treÅci â jak zaprojektowaÄ, by byÅo intuicyjne?",date:"2023-05-28",category:"UX / E-commerce",excerpt:"Filtry i sortowanie decydujÄ
, czy klient w sklepie internetowym znajdzie produkt w 10 sekund, czy porzuci koszyk. Zasady projektowania, typy filtrów i przykÅady, które dziaÅajÄ
w UK.",metaDesc:"Filtrowanie i sortowanie w sklepie internetowym â jak zaprojektowaÄ, żeby byÅo intuicyjne i podniosÅo konwersjÄ. Zasady UX, typy filtrów, przykÅady z e-commerce.",readMinutes:7,blocks:[{type:"h2",text:"Chcesz przeszukiwaÄ produkty jak prawdziwy ekspert? Poznaj sekrety filtrowania i sortowania, które odmieniÄ
Twoje doÅwiadczenie zakupowe!"},{type:"p",text:"Dzisiejszy Åwiat oferuje nam nieograniczonÄ
liczbÄ produktów i usÅug, które możemy dowolnie przeglÄ
daÄ i wybieraÄ w Internecie. Zakupy online staÅy siÄ codziennoÅciÄ
, ale czy zawsze przychodzÄ
nam z ÅatwoÅciÄ
? Odpowiedź może zależeÄ od tego, jak zaprojektowano narzÄdzia filtrowaniaTbsorozowania, z których korzystamy."},{type:"p",text:"Jako projektant stron internetowych nieustannie poszukujÄ sposobów, by uÅatwiÄ użytkownikom przeglÄ
danie ofert i szybkie dotarcie do najbardziej pożÄ
danych produktów. Dlatego postanowiÅem podzieliÄ siÄ z Wami mojÄ
wiedzÄ
na temat filtrowania i sortowania treÅci w e-commerce. Dowiesz siÄ, jak sprawiÄ, by te funkcje byÅy intuicyjne i zwiÄkszaÅy satysfakcjÄ klientów z Twoich sklepów online."},{type:"h2",text:"Filtrowanie vs sortowanie â czym siÄ różniÄ
?"},{type:"p",text:"Zanim zagÅÄbimy siÄ w szczegóÅy, warto wyjaÅniÄ kluczowÄ
różnicÄ pomiÄdzy filtrowaniem a sortowaniem. ChoÄ czÄsto wystÄpujÄ
one razem, to peÅniÄ
zupeÅnie inne funkcje w procesie wyszukiwania."},{type:"p",text:"Filtrowanie polega na zawÄżaniu listy produktów do tych, które speÅniajÄ
okreÅlone kryteria. Użytkownik zaznacza interesujÄ
ce go kategorie, takie jak kolor, rozmiar czy cena, a nastÄpnie oglÄ
da tylko wyniki odpowiadajÄ
ce jego preferencjom. DziÄki temu szybko dociera do najistotniejszych ofert."},{type:"p",text:"Z kolei sortowanie to funkcja zmieniajÄ
ca kolejnoÅÄ wyÅwietlanych produktów wedÅug wybranej cechy, np. od najtaÅszych do najdroższych lub wedÅug ocen klientów. Pozwala to na analizÄ dostÄpnych opcji pod kÄ
tem konkretnych kryteriów, nawet jeÅli nie zawÄżamy listy."},{type:"p",text:"Innymi sÅowy, filtrowanie pomaga w selekcji, a sortowanie w uporzÄ
dkowaniu wyników wyszukiwania. Obie te funkcje uzupeÅniajÄ
siÄ i sprawiajÄ
, że proces zakupowy staje siÄ o wiele wydajniejszy."},{type:"h2",text:"Rodzaje filtrów i na co zwróciÄ uwagÄ przy ic
69h projektowaniu"},{type:"p",text:"Filtry produktowe mogÄ
przybieraÄ różne formy, w zależnoÅci od specyfiki danego sklepu internetowego i potrzeb klientów. Oto najczÄÅciej spotykane typy:"},{type:"h3",text:"Filtry jednokrotnego wyboru"},{type:"p",text:"Użytkownik może zaznaczyÄ tylko jednÄ
wartoÅÄ z danej kategorii, np. wybraÄ tylko bluzy z kapturem. Ten rodzaj filtrów sprawdza siÄ, gdy istniejÄ
wyraźne rozróżnienia pomiÄdzy poszczególnymi opcjami."},{type:"h3",text:"Filtry wielokrotnego wyboru"},{type:"p",text:"UmożliwiajÄ
zaznaczenie kilku wartoÅci z tej samej kategorii, np. telefonów od trzech różnych producentów. DajÄ
one wiÄkszÄ
elastycznoÅÄ i pozwalajÄ
na bardziej zÅożone wyszukiwania."},{type:"h3",text:"Filtry z zakresem"},{type:"p",text:"ZnajdujÄ
zastosowanie w przypadku atrybutów mierzalnych, takich jak cena lub rozmiar. PozwalajÄ
one na okreÅlenie konkretnego przedziaÅu, w którym majÄ
siÄ mieÅciÄ interesujÄ
ce nas produkty."},{type:"p",text:"WedÅug badaÅ, aż 84% sklepów internetowych nie oferuje wystarczajÄ
cej liczby opcji filtrowania, co niekorzystnie wpÅywa na doÅwiadczenie użytkowników. Dlatego przy projektowaniu filtrów trzeba zwróciÄ uwagÄ na kilka kluczowych kwestii:"},{type:"ul",items:["ZrozumiaÅoÅÄ i intuicyjnoÅÄ â nazwy kategorii i wartoÅci powinny byÄ jasne i czytelne, bez specjalistycznego żargonu. Użytkownik musi od razu wiedzieÄ, czego dana filtra dotyczy.","Logika dziaÅania â filtry muszÄ
aktualizowaÄ listÄ produktów w sposób oczywisty i automatyczny. JeÅli wymagane jest klikniÄcie przycisku âFiltrujâ, musi to byÄ dobrze widoczne.","WidocznoÅÄ i dostÄpnoÅÄ â opcje filtrowania powinny znajdowaÄ siÄ w Åatwo dostÄpnym miejscu, np. na górze strony. Użytkownik musi je szybko zauważyÄ i bez problemu z nich skorzystaÄ.","Dopasowanie do urzÄ
dzeÅ â filtrowanie musi dziaÅaÄ równie dobrze na komputerach, tabletach i smartfonach. ResponsywnoÅÄ jest kluczowa, zwÅaszcza w Åwietle rosnÄ
cego udziaÅu mobilnego ruchu na stronach e-commerce."]},{type:"p",text:"DziÄki wnikliwemu podejÅciu do tych aspektów, możesz zaprojektowaÄ filtry, które nie tylko uÅatwiÄ
przeglÄ
danie oferty, ale też wzbudzÄ
zaufanie klientów i zachÄcÄ
ich do dokonania zakupu."},{type:"h2",text:"Filtrowanie produktów a user experience (UX)"},{type:"p",text:"Dobre filtrowanie to jeden z najważniejszych elementów user experience w sklepie internetowym. WedÅug badaÅ firmy Baymard, zaledwie 16% sklepów oferuje satysfakcjonujÄ
ce opcje filtrowania. To pokazuje, jak wiele jest jeszcze do zrobienia w tej dziedzinie."},{type:"p",text:"Dlaczego filtrowanie ma tak kluczowe znaczenie dla UX? PomyÅl, ile czasu spÄdzasz w Internecie, przeglÄ
dajÄ
c różne produkty i usÅugi. Chcesz jak najszybciej dotrzeÄ do tych, które CiÄ rzeczywiÅcie interesujÄ
, prawda? JeÅli sklep internetowy nie daje Ci tego narzÄdzia, frustracja gwarantowana."},{type:"p",text:"Dobrze zaprojektowane filtry pozwalajÄ
natomiast w prosty i intuicyjny sposób ograniczyÄ ofertÄ do najbardziej pożÄ
danych pozycji. DziÄki temu użytkownik nie traci czasu na przeglÄ
danie setek, a nawet tysiÄcy, produktów, które go nie interesujÄ
. To z kolei przekÅada siÄ na wyższÄ
konwersjÄ i wiÄksze zadowolenie klientów."},{type:"p",text:"Co ważne, filtrowanie powinno dziaÅaÄ nie tylko na komputerach, ale również na urzÄ
dzeniach mobilnych. Coraz wiÄcej osób robi zakupy online wÅaÅnie z poziomu smartfonów i tabletów, dlatego responsywnoÅÄ tej funkcji ma kluczowe znaczenie."},{type:"h2",text:"Gdzie umieÅciÄ opcje filtrowania?"},{type:"p",text:"Dobrze zaprojektowane filtry to jedno, ale nie mniej ważne jest również ich umiejscowienie na stronie. Optymalne rozmieszczenie tej funkcjonalnoÅci również wpÅywa na user experience."},{type:"p",text:"OgólnÄ
zasadÄ
jest, by opcje filtrowania znajdowaÅy siÄ w widocznym miejscu, najlepiej na górze listy produktów. DziÄki temu użytkownicy od razu wiedzÄ
, że mogÄ
z nich skorzystaÄ i nie muszÄ
dÅugo ich szukaÄ."},{type:"p",text:"CzÄsto filtry sÄ
umieszczane w osobnym panelu po lewej lub prawej stronie strony. Taki ukÅad pozwala utrzymaÄ przejrzystoÅÄ interfejsu i uÅatwia obsÅugÄ, szczególnie na mniejszych ekranach."},{type:"p",text:"Warto również rozważyÄ umieszczenie najpopularniejszych filtrów bezpoÅrednio na liÅcie produktów, np. w postaci przycisków nad miniaturami. To sprawi, że bÄdÄ
one jeszcze bardziej widoczne i Åatwo dostÄpne."},{type:"p",text:"Niezależnie od konkretnego rozwiÄ
zania, pamiÄtaj, by zachowaÄ spójnoÅÄ w obrÄbie caÅego sklepu. Użytkownicy powinni móc intuicyjnie odnaleÅºÄ filtry niezależnie od tego, który produkt aktualnie przeglÄ
dajÄ
."},{type:"h2",text:"Zasady tworzenia efektywnych filtrów"},{type:"p",text:"ProjektujÄ
c filtry produktowe, warto kierowaÄ siÄ kilkoma sprawdzonymi zasadami, które zwiÄkszÄ
ich użytecznoÅÄ:"},{type:"ul",items:["Dopasuj filtry do Twoich klientów â zastanów siÄ, jakie kryteria wyszukiwania bÄdÄ
dla nich najistotniejsze. UwzglÄdnij branżÄ, specyfikÄ produktów i zwyczaje Twoich odbiorców.","Ogranicz liczbÄ filtrów â nie przesadzaj z ich iloÅciÄ
, by nie przytÅoczyÄ użytkownika. Skoncentruj siÄ na najważniejszych kategoriach.","Zadbaj o czytelnoÅÄ â nazwy filtrów powinny byÄ proste i zrozumiaÅe. Unikaj specjalistycznych terminów.","UwzglÄdnij sortowanie â filtry najlepiej ÅÄ
czyÄ z opcjami sortowania, by użytkownicy mogli jeszcze dokÅadniej dopasowaÄ wyniki do swoich preferencji.","Pokazuj liczbÄ produktów â przy każdej wartoÅci filtra warto wyÅwietlaÄ informacjÄ, ile pozycji
69speÅnia dane kryterium. UÅatwi to podjÄcie decyzji.","ZapamiÄtuj ustawienia â jeÅli użytkownik opuÅci stronÄ i wróci później, filtry powinny nadal byÄ ustawione tak, jak je zostawiÅ. To wysoko zwiÄksza komfort korzystania.","Testuj i ulepszaj â nie bój siÄ modyfikowaÄ filtrów w oparciu o analizÄ zachowaÅ klientów. Nieustanne doskonalenie to klucz do wysokiej satysfakcji użytkowników."]},{type:"p",text:"Dopasuj filtry do Twoich klientów â zastanów siÄ, jakie kryteria wyszukiwania bÄdÄ
dla nich najistotniejsze. UwzglÄdnij branżÄ, specyfikÄ produktów i zwyczaje Twoich odbiorców."},{type:"p",text:"Ogranicz liczbÄ filtrów â nie przesadzaj z ich iloÅciÄ
, by nie przytÅoczyÄ użytkownika. Skoncentruj siÄ na najważniejszych kategoriach."},{type:"p",text:"Zadbaj o czytelnoÅÄ â nazwy filtrów powinny byÄ proste i zrozumiaÅe. Unikaj specjalistycznych terminów."},{type:"p",text:"UwzglÄdnij sortowanie â filtry najlepiej ÅÄ
czyÄ z opcjami sortowania, by użytkownicy mogli jeszcze dokÅadniej dopasowaÄ wyniki do swoich preferencji."},{type:"p",text:"Pokazuj liczbÄ produktów â przy każdej wartoÅci filtra warto wyÅwietlaÄ informacjÄ, ile pozycji speÅnia dane kryterium. UÅatwi to podjÄcie decyzji."},{type:"p",text:"ZapamiÄtuj ustawienia â jeÅli użytkownik opuÅci stronÄ i wróci później, filtry powinny nadal byÄ ustawione tak, jak je zostawiÅ. To wysoko zwiÄksza komfort korzystania."},{type:"p",text:"Testuj i ulepszaj â nie bój siÄ modyfikowaÄ filtrów w oparciu o analizÄ zachowaÅ klientów. Nieustanne doskonalenie to klucz do wysokiej satysfakcji użytkowników."},{type:"p",text:"StosujÄ
c siÄ do tych wytycznych, możesz zapewniÄ Twoim klientom niezapomniane doÅwiadczenia zakupowe, które zachÄcÄ
ich do pozostania w Twoim sklepie internetowym."},{type:"h2",text:"Jak filtrowanie produktów wpÅywa na SEO?"},{type:"p",text:"Zastanawiasz siÄ pewnie, czy implementacja filtrów ma również jakiÅ wpÅyw na pozycjonowanie Twojej strony w wyszukiwarkach? Okazuje siÄ, że tak â dobrze zaprojektowane filtry mogÄ
przynieÅÄ wymierne korzyÅci w obszarze SEO."},{type:"p",text:"Po pierwsze, filtry pomagajÄ
tworzyÄ unikalne strony produktowe, które majÄ
nieco innÄ
zawartoÅÄ niż pozostaÅe w Twoim sklepie. To zwiÄksza szansÄ na uzyskanie lepszej pozycji w wynikach wyszukiwania."},{type:"p",text:"Ponadto, odpowiednie wykorzystanie filtrów uÅatwia indeksowanie Twoich produktów przez wyszukiwarki. Roboty Google Åatwiej bÄdÄ
mogÅy zrozumieÄ i sklasyfikowaÄ ofertÄ, co z kolei pozytywnie wpÅynie na widocznoÅÄ sklepu."},{type:"p",text:"Nie bez znaczenia jest również komfort użytkowników korzystajÄ
cych z Twojej strony. Jak już wspominaÅem, dobrze zaprojektowane filtry to klucz do wysokiej konwersji. A zadowoleni klienci to wyższa pozycja w rankingach wyszukiwarek â Google woli kierowaÄ użytkowników do stron, które dostarczajÄ
im wartoÅciowych treÅci i satysfakcjonujÄ
cych doÅwiadczeÅ."},{type:"p",text:"PodsumowujÄ
c, filtrowanie produktów to aspekt, na który warto zwróciÄ uwagÄ nie tylko z punktu widzenia user experience, ale również efektywnej strategii SEO. Inwestycja w tÄ funkcjonalnoÅÄ może przynieÅÄ Ci wymierne korzyÅci w dÅugoterminowej perspektywie."},{type:"h2",text:"Podsumowanie â filtrowanie i sortowanie to klucz do sukcesu e-commerce"},{type:"p",text:"Projektowanie dobrych filtrów i narzÄdzi sortowania to jedno z najważniejszych zadaÅ, jakie stojÄ
przed twórcami sklepów internetowych. Te funkcje majÄ
kluczowe znaczenie dla user experience, a co za tym idzie, także dla konwersji i pozycjonowania w wyszukiwarkach."},{type:"p",text:"PamiÄtaj, by tworzyÄ intuicyjne, czytelne i spójne rozwiÄ
zania, dostosowane do potrzeb Twoich klientów. Umieszczaj filtry w widocznych miejscach, dbaj o ich responsywnoÅÄ i stale je ulepszaj na podstawie analizy zachowaÅ użytkowników."},{type:"p",text:"DziÄki temu Twój sklep online bÄdzie prawdziwÄ
przyjemnoÅciÄ
do przeglÄ
dania, a Twoi klienci z pewnoÅciÄ
doceniÄ
Twoje starania. Warto zainwestowaÄ w tÄ funkcjonalnoÅÄ â to klucz do sukcesu e-commerce!"},{type:"p",text:"A jeÅli chcesz, by Twoja strona internetowa wyglÄ
daÅa równie profesjonalnie i przyciÄ
gaÅa klientów, zapraszamy CiÄ do wspóÅpracy z nami . Nasz zespóŠprojektantów i programistów dba o każdy detal, by zapewniÄ Ci najwyższÄ
jakoÅÄ."}]},{slug:"ankiety-i-formularze-w-ui-zasady-tworzenia",title:"Ankiety i formularze w UI â zasady tworzenia",date:"2024-06-27",category:"UX / Formularze",excerpt:"Zasady projektowania ankiet i formularzy w interfejsie strony â od dÅugoÅci pól, przez walidacjÄ, po copywriting, który sprawia, że użytkownik dokaÅcza formularz zamiast go porzuciÄ.",metaDesc:"Ankiety i formularze w UI â zasady tworzenia, które podnoszÄ
wypeÅnialnoÅÄ. DÅugoÅÄ pól, walidacja, kolejnoÅÄ, copy i przykÅady z projektów stron w UK.",readMinutes:5,blocks:[{type:"h2",text:"Ankiety i formularze w UI â zasady tworzenia"},{type:"p",text:"Jako projektant stron internetowych, wiem, jak ważnÄ
rolÄ odgrywajÄ
ankiety i formularze w budowaniu efektywnych i angażujÄ
cych interfejsów użytkownika. Nie sÄ
one jedynie nudnymi elementami, do których zmuszamy naszych odwiedzajÄ
cych â to potÄżne narzÄdzia, które mogÄ
pomóc nam w zrozumieniu potrzeb i preferencji naszych klientów, a także wspomóc ich w osiÄ
ganiu wÅasnych celów."},{type:"p",text:"W dzisiejszym artykule chciaÅbym podzieliÄ siÄ z Wami moimi najlepszymi praktykami tworzenia ankiet i formularzy, które nie tylko wyglÄ
dajÄ
atrakcyjnie, ale także zapewniajÄ
pÅynne i efektywne doÅwiadczenie użytkownika. Przygotujcie siÄ, bo to bÄdzie dÅuższa podróż, ale obiecujÄ, że na koÅcu bÄdziecie dysponowaÄ niezbÄdnÄ
wiedzÄ
, by stworzyÄ naprawdÄ Åwietne ankiety i formularze!"},{type:"h3",text:"Ustal cel"},{type:"p",text:"Zanim zaczniesz tworzyÄ swojÄ
ankietÄ lub formularz, musisz jasno okreÅliÄ cel, jaki chcesz osiÄ
gnÄ
Ä. Czy chcesz zebraÄ informacje na temat poziomu satysfakcji klientów? A może chcesz lepiej zrozumieÄ, co motywuje Twoich odwiedzajÄ
cych do dokonania konwersji? A może po prostu chcesz, aby Twoi użytkownicy mogli w prosty sposób skontaktowaÄ siÄ z TobÄ
? Cokolwiek to jest, musisz mieÄ to jasno sprecyzowane."},{type:"p",text:"Bez okreÅlenia celu, Twoja ankieta lub formularz może okazaÄ siÄ po prostu chaotycznÄ
listÄ
pytaÅ bez konkretnego kierunku. To z kolei może prowadziÄ do uzyskania nieistotnych lub niepeÅnych informacji, co nie pomoże Ci w osiÄ
gniÄciu zamierzonych celów. Zatem zanim zaczniesz, zatrzymaj siÄ na chwilÄ i zastanów siÄ: âCo chcÄ osiÄ
gnÄ
Ä za pomocÄ
tej ankiety/formularza?â."},{type:"p",text:"NarzÄdzie do tworzenia ankiet Google Forms jest Åwietnym przykÅadem, jak zaczÄ
Ä od jasno okreÅlonego celu. Platforma ta umożliwia użytkownikom tworzenie ankiet online w celu zbierania danych i uzyskiwania spersonalizowanych informzwrotnych. Wszystko zaczyna siÄ od wyboru celu â czy chcesz zbadaÄ opinie klientów, zebraÄ informacje kontaktowe, czy może przeprowadziÄ quiz? Ta jasnoÅÄ celu pozwala na stworzenie znacznie bardziej ukierunkowanej i efektywnej ankiety."},{type:"h3",text:"Zaprojektuj z myÅlÄ
o użytkowniku"},{type:"p",text:"JednÄ
z najczÄstszych bÅÄdów popeÅnianych przy tworzeniu ankiet i formularzy jest ignorowanie doÅwiadczenia użytkownika. Zbyt czÄsto projektanci sÄ
tak skoncentrowani na tym, co chcÄ
uzyskaÄ od respondentów, że zapominajÄ
wÅożyÄ siÄ w ich buty. Efektem sÄ
dÅugie, nudne formularze, które zniechÄcajÄ
69i frustrujÄ
użytkowników."},{type:"p",text:"Zamiast tego, powinieneÅ zaprojektowaÄ swojÄ
ankietÄ lub formularz z myÅlÄ
o uÅatwieniu życia osobom, które z nich korzystajÄ
. Weź pod uwagÄ, jak przebiega ich typowy proces â od momentu, gdy decydujÄ
siÄ wziÄ
Ä udziaÅ, aż do zakoÅczenia. Zastanów siÄ, co mogÅoby ich zniechÄciÄ lub rozpraszaÄ na każdym etapie, i stwórz rozwiÄ
zania, które te problemy wyeliminujÄ
."},{type:"p",text:"Na przykÅad, Webankieta.pl podkreÅla, że dÅugoÅÄ ankiety powinna mieÅciÄ siÄ w 5 minutach, aby utrzymaÄ skupienie respondentów. Ponadto, zalecajÄ
ograniczenie liczby odpowiedzi w pytaniach wielokrotnego wyboru do maksymalnie 10, aby nie spowalniaÄ tempa wypeÅniania. To doskonaÅe przykÅady projektowania z myÅlÄ
o użytkowniku â skupianie siÄ na ich potrzebach i preferencjach, a nie tylko na tym, co chcesz od nich uzyskaÄ."},{type:"p",text:"PamiÄtaj też, że responsywnoÅÄ jest kluczowa â Twoja ankieta lub formularz muszÄ
dziaÅaÄ pÅynnie niezależnie od urzÄ
dzenia, z którego korzysta użytkownik. Typeform to platforma, która dobrze radzi sobie z tym aspektem, oferujÄ
c intuicyjne i atrakcyjne formularze dostosowujÄ
ce siÄ do różnych ekranów."},{type:"h3",text:"BÄ
dź prosty i konkretny"},{type:"p",text:"Nie ma nic gorszego niż dÅuga, zawiÅa ankieta peÅna niejasnych pytaÅ. Zamiast tego, dÄ
ż do prostoty i konkretnoÅci. Każde pytanie powinno byÄ sformuÅowane w jasny i zrozumiaÅy sposób, koncentrujÄ
cy siÄ na jednym konkretnym zagadnieniu."},{type:"p",text:"Webankieta.pl radzi, aby unikaÄ pytaÅ, które badajÄ
dwa niezwiÄ
zane ze sobÄ
tematy â na przykÅad âCzy lubisz lody i pizzÄ?â. Zamiast tego, należy skoncentrowaÄ siÄ na jednym zagadnieniu na raz, aby uniknÄ
Ä dezorientacji respondentów."},{type:"p",text:"Ponadto, staraj siÄ używaÄ jak najwiÄkszej liczby pytaÅ zamkniÄtych â zarówno jednokrotnego, jak i wielokrotnego wyboru. Nie tylko skracajÄ
one czas wypeÅniania ankiety, ale także uÅatwiajÄ
późniejszÄ
analizÄ danych. OczywiÅcie, pamiÄtaj, aby zapewniÄ respondentom możliwoÅÄ udzielenia odpowiedzi âInneâ lub âWolÄ nie odpowiadaÄâ, aby nie ograniczaÄ ich swobody."},{type:"p",text:"PamiÄtaj też, aby unikaÄ sugerowania odpowiedzi. SformuÅuj pytania w sposób neutralny, bez używania sÅów nacechowanych emocjonalnie, takich jak âzawszeâ czy ânigdyâ. Pozwól respondentom swobodnie wyraziÄ ich opinie, a nie narzucaj im wÅasnych preferencji."},{type:"h3",text:"BÄ
dź atrakcyjny wizualnie"},{type:"p",text:"ChoÄ zawartoÅÄ Twojej ankiety lub formularza jest oczywiÅcie najważniejsza, nie możesz zapomnieÄ o warstwie wizualnej. Estetyka i atrakcyjnoÅÄ projektu majÄ
ogromny wpÅyw na doÅwiadczenie użytkownika i jego chÄÄ do wypeÅnienia formularza."},{type:"p",text:"Zadbaj o spójny, atrakcyjny design, wykorzystujÄ
c odpowiednie kolory, czcionki i grafiki. Unikaj przeÅadowania, zamiast tego stwórz czysty i przejrzysty ukÅad, który uÅatwia nawigacjÄ. Możesz też rozważyÄ użycie ciekawych elementów, takich jak progress bar czy animacje, aby utrzymaÄ zaangażowanie respondentów."},{type:"p",text:"Google Forms to Åwietny przykÅad platformy, która ÅÄ
czy prostotÄ obsÅugi z atrakcyjnym wyglÄ
dem. Możesz Åatwo dostosowaÄ kolory, czcionki i ukÅad, aby odzwierciedliÄ markÄ Twojej firmy, a jednoczeÅnie zapewniÄ intuicyjne doÅwiadczenie użytkownika."},{type:"p",text:"Warto również rozważyÄ wykorzystanie niestandardowych szablonów lub narzÄdzi, takich jak Typeform, które oferujÄ
jeszcze wiÄksze możliwoÅci personalizacji i angażujÄ
cych elementów wizualnych."},{type:"h3",text:"Testuj, testuj, testuj"},{type:"p",text:"ChoÄ wszystkie powyższe wskazówki sÄ
niezbÄdne do stworzenia skutecznej ankiety lub formularza, nie ma gwarancji, że Twoje pierwsze podejÅcie bÄdzie idealnie trafione. Dlatego kluczowe jest przetestowanie swojego projektu, zanim udostÄpnisz go szerokiej publicznoÅci."},{type:"p",text:"PoproÅ znajomych lub czÅonków zespoÅu, aby wypeÅnili TwojÄ
ankietÄ lub formularz i daj im możliwoÅÄ podzielenia siÄ swoimi opiniami. ZwrÃ³Ä uwagÄ na to, czy pytania sÄ
zrozumiaÅe, czy nawigacja jest intuicyjna, a także czy caÅy proces jest przyjemny i angażujÄ
cy. Nie bój siÄ też poprosiÄ o bezpoÅrednie sugestie dotyczÄ
ce ulepszenia."},{type:"p",text:"Iteruj i poprawiaj swój projekt, dopóki nie bÄdziesz w peÅni usatysfakcjonowany. PamiÄtaj, że dobre projektowanie to ciÄ
gÅy proces, a nie jednorazowe zadanie. Tylko dziÄki regularnym testom i udoskonaleniom bÄdziesz w stanie stworzyÄ naprawdÄ ÅwietnÄ
ankietÄ lub formularz, które speÅniÄ
oczekiwania Twoich użytkowników."},{type:"h3",text:"Podsumowanie"},{type:"p",text:"Tworzenie skutecznych ankiet i formularzy to zÅożone zadanie, wymagajÄ
ce przemyÅlenia wielu aspektów. Jednak jeÅli skupisz siÄ na jasnym celu, projektowaniu zorientowanym na użytkownika, prostej i konkretnej strukturze oraz atrakcyjnej warstwie wizualnej, a do tego bÄdziesz systematycznie testowaÄ i udoskonalaÄ swoje rozwiÄ
zania, jesteÅ na dobrej drodze do stworzenia naprawdÄ angażujÄ
cych narzÄdzi, które pomogÄ
Ci w osiÄ
gniÄciu Twoich celów."},{type:"p",text:"PamiÄtaj, że strony internetowe to nie tylko atrakcyjna szata graficzna, ale także funkcjonalne elementy, takie jak ankiety i formularze. Zainwestuj czas w ic
69h staranne zaprojektowanie, a z pewnoÅciÄ
Twoi użytkownicy doceniÄ
to wysiÅek."},{type:"p",text:"Mam nadziejÄ, że ten artykuÅ dostarczyÅ Ci wielu cennych wskazówek. JeÅli masz jakiekolwiek pytania lub chciaÅbyÅ przedyskutowaÄ konkretny projekt, zawsze jestem do Twojej dyspozycji. Powodzenia w tworzeniu fantastycznych ankiet i formularzy!"}]},{slug:"wyszukiwarka-kursow-na-platformie-edukacyjnej",title:"Wyszukiwarka kursów na platformie edukacyjnej",date:"2024-06-27",category:"Web Development",excerpt:"Wyszukiwarka kursów to serce platformy edukacyjnej. Zobacz, jakie filtry, taksonomie i wyniki musi obsÅużyÄ, żeby studenci szybko znaleźli kurs, a Ty zwiÄkszyÅ sprzedaż zapisów.",metaDesc:"Wyszukiwarka kursów na platformie edukacyjnej â funkcje, filtry i UX, które podnoszÄ
konwersjÄ zapisów. Praktyczny przewodnik dla wÅaÅcicieli platform e-learning.",readMinutes:5,blocks:[{type:"h2",text:"Wyszukiwarka kursów na platformie edukacyjnej â funkcjonalnoÅÄ i użytecznoÅÄ"},{type:"p",text:"Zastanawiasz siÄ, jak stworzyÄ funkcjonalnÄ
i użytecznÄ
wyszukiwarkÄ na Twojej platformie edukacyjnej? Dobrze trafiÅeÅ! Jako wÅaÅciciel firmy projektujÄ
cej strony internetowe, mam doÅwiadczenie w tworzeniu efektywnych rozwiÄ
zaÅ, które zapewniÄ
Twoim użytkownikom najlepsze wrażenia."},{type:"p",text:"Edukacja online to gra, w której liczy siÄ funkcjonalnoÅÄ i użytecznoÅÄ. PamiÄtaj â Twoja wyszukiwarka to pierwsza rzecz, z którÄ
użytkownicy bÄdÄ
mieÄ kontakt, wiÄc musi ona byÄ po prostu doskonaÅa. Nie ma miejsca na póÅÅrodki, jeÅli chcesz, aby Twoja platforma odnosiÅa sukcesy."},{type:"p",text:"Przypomnij sobie, co mówiÅa globalna4net.com: âNajważniejsze funkcje platformy edukacyjnej online dla kont uczniów to ustawienia profilu i danych osobowych, kursy i ich status, zakupione subskrypcje, dostÄp do Centrum pomocy oraz kalendarzâ. Widzisz, użytkownicy oczekujÄ
, że bÄdÄ
mogli Åatwo nawigowaÄ po Twojej platformie i mieÄ peÅnÄ
kontrolÄ nad swoim profilem i kursami."},{type:"p",text:"Zatem, jak stworzyÄ wyszukiwarkÄ, która speÅni te oczekiwania? Oto kilka kluczowych elementów, na które musisz zwróciÄ uwagÄ:"},{type:"h3",text:"Rejestracja i personalizacja"},{type:"p",text:"Pierwszym krokiem jest zapewnienie Åatwej i intuicyjnej rejestracji. Jak podkreÅla globalna4net.com, możliwoÅÄ logowania przez portale spoÅecznoÅciowe to Åwietne rozwiÄ
zanie, które oszczÄdza czas i wysiÅek użytkowników. Ale nie zatrzymuj siÄ tylko na tym â daj im także opcjÄ dostosowania swojego profilu, na przykÅad poprzez wybór niestandardowego awatara czy ustawienie preferencji e-mail."},{type:"p",text:"Personalizacja to klucz do sukcesu. Gdy użytkownicy poczujÄ
, że ta platforma jest âichâ, bÄdÄ
o wiele bardziej skÅonni do pozostania i aktywnego korzystania z niej. A co za tym idzie, bÄdziesz mógÅ lepiej zrozumieÄ ich potrzeby i dostarczaÄ im jeszcze lepsze treÅci."},{type:"h3",text:"Intuicyjna nawigacja i wyszukiwanie"},{type:"p",text:"Użytkownicy chcÄ
móc szybko i Åatwo znaleÅºÄ to, czego szukajÄ
. Dlatego Twoja wyszukiwarka musi byÄ prosta i intuicyjna w obsÅudze. Postaraj siÄ, aby po wpisaniu kilku kluczowych sÅów, system wyÅwietlaÅ zorganizowane i przejrzyste wyniki, pogrupowane wedÅug kategorii."},{type:"p",text:"Econsulting.pl podkreÅla, że âWyszukiwarka wyÅwietli Ci kilka pasujÄ
cych kursów w tym programy dla poczÄ
tkujÄ
cych i zaawansowane kursy mistrzowskieâ. Takie podejÅcie pozwala użytkownikom na Åatwe przeglÄ
danie oferty i podejmowanie Åwiadomych decyzji."},{type:"p",text:"PamiÄtaj też o dodaniu zaawansowanych filtrów, dziÄki którym użytkownicy bÄdÄ
mogli zawÄziÄ wyszukiwanie wedÅug oceny, czasu trwania czy innych ważnych dla nich kryteriów."},{type:"h3",text:"Intuicyjny interfejs użytkownika"},{type:"p",text:"Wyszukiwarka to tylko czÄÅÄ wiÄkszej ukÅadanki â Twoja platforma edukacyjna musi mieÄ spójny i intuicyjny interfejs użytkownika (UI) na każdym kroku. WedÅug Ideo.pl, âInteraktywnoÅÄ powinna byÄ zrozumiaÅa i użyteczna. Na przykÅad uczniowie mogÄ
w ciÄ
gu kilku minut przejÅÄ do szu
69kanej strony lub cieszyÄ siÄ treÅciÄ
wideo bez przerwâ."},{type:"p",text:"Musisz wiÄc zadbaÄ o to, aby caÅa nawigacja byÅa intuicyjna, a użytkownicy mogli swobodnie przemieszczaÄ siÄ po platformie i docieraÄ do poszukiwanych materiaÅów. Ważne jest również, aby treÅci byÅy prezentowane w przejrzysty i atrakcyjny sposób, zachÄcajÄ
c odbiorców do dalszej interakcji."},{type:"h3",text:"Personalizowane sugestie i rekomendacje"},{type:"p",text:"Nie od dziÅ wiadomo, że najlepsze platformy edukacyjne to te, które potrafiÄ
zaskakiwaÄ użytkowników. W jaki sposób? Przez dostarczanie im spersonalizowanych sugestii i rekomendacji kursów."},{type:"p",text:"Wyobraź sobie, że Twoja wyszukiwarka nie tylko wyÅwietla wyniki zgodne z wpisanymi frazami, ale także proponuje użytkownikom kursy, które mogÄ
ich zainteresowaÄ na podstawie ich wczeÅniejszych wyborów i preferencji. To nie tylko uÅatwia im znalezienie tego, czego szukajÄ
, ale także otwiera drzwi do odkrywania nowych, fascynujÄ
cych tematów."},{type:"p",text:"Takie podejÅcie nie tylko zwiÄksza zadowolenie użytkowników, ale także sprzyja budowaniu lojalnoÅci wobec Twojej platformy. Użytkownicy doceniÄ
, że wychodzisz im naprzeciw i pomagasz im w rozwoju."},{type:"h3",text:"Wsparcie i komunikacja"},{type:"p",text:"Nic nie frustruje bardziej niż utkniÄcie w martwym punkcie bez możliwoÅci uzyskania pomocy. Dlatego Twoja platforma musi mieÄ solidne zaplecze wsparcia, które pomoże użytkownikom w razie problemów lub pytaÅ."},{type:"p",text:"Jak radzi globalna4net.com, âCoursera na przykÅad posiada dobrze zorganizowane Centrum pomocy z tematami zawierajÄ
cymi odpowiedzi na czÄsto zadawane pytania. JeÅli użytkownik ma konkretne zapytanie, może skontaktowaÄ siÄ z zespoÅem przez e-mailâ."},{type:"p",text:"Poza tym nie zapomnij o budowaniu spoÅecznoÅci wokóŠTwojej platformy. Fora dyskusyjne, czaty i komunikatory to Åwietne narzÄdzia, które pozwolÄ
użytkownikom na wymianÄ doÅwiadczeÅ, zadawanie pytaÅ i wspóÅpracÄ. To z kolei przyczyni siÄ do stworzenia inspirujÄ
cego Årodowiska edukacyjnego."},{type:"h3",text:"Elastyczne opcje pÅatnoÅci"},{type:"p",text:"Klienci chcÄ
mieÄ wybór. Gdy przyjdzie czas na zakup, upewnij siÄ, że Twoja platforma oferuje różnorodne i wygodne metody pÅatnoÅci â od tradycyjnych kart kredytowych po alternatywne rozwiÄ
zania, takie jak PayPal czy Affirm."},{type:"p",text:"Ponadto, warto rozważyÄ opcje bezpÅatnych wersji próbnych lub atrakcyjnych kuponów rabatowych. Jak zauważa globalna4net.comâ, âDocebo zapewnia darmowe kupony dziÄki którym cena kursu jest bardzo atrakcyjnaâ. To pomoże w budowaniu zaufania i zachÄceniu użytkowników do regularnego korzystania z Twojej platformy."},{type:"h3",text:"Kompleksowa funkcjonalnoÅÄ"},{type:"p",text:"Wyszukiwarka to oczywiÅcie kluczowy element, ale nie zapominaj o caÅoÅciowym podejÅciu do funkcjonalnoÅci Twojej platformy edukacyjnej. Powinna ona byÄ wyposażona w narzÄdzia do tworzenia i sprzedaży kursów, edycji programów, Åledzenia postÄpów uczniów, zarzÄ
dzania dokumentami i wiele innych."},{type:"p",text:"WedÅug globalna4net.com, âWszystkie typy platform e-learningowych korporacyjne witryny edukacyjne lub globalni dostawcy usÅug nauczania na odlegÅoÅÄ majÄ
pulpity administracyjne do zarzÄ
dzania każdym aspektem platformy. Powinny byÄ one wyposażone w funkcje organizowania, zarzÄ
dzania, monitorowania i raportowania dziaÅaÅ na kursieâ."},{type:"p",text:"To wÅaÅnie kompleksowoÅÄ funkcjonalna sprawia, że użytkownicy bÄdÄ
chÄtnie wracaÄ na TwojÄ
platformÄ i polecaÄ jÄ
swoim znajomym. PamiÄtaj â im wiÄcej możliwoÅci zaoferujesz, tym wiÄksze bÄdzie Twoje pole do konkurowania na rynku."},{type:"h3",text:"Wsparcie powdrożeniowe"},{type:"p",text:"Budowa doskonaÅej platformy edukacyjnej to dopiero poczÄ
tek. Aby zapewniÄ najwyższÄ
satysfakcjÄ użytkowników, musisz zadbaÄ także o kompleksowe wsparcie powdrożeniowe."},{type:"p",text:"Jak wspomina globalna4net.com, âJeÅli chcesz zaczÄ
Ä od MVP (Minimum Viable Product), wiele firm deweloperskich posiada usÅugi oferujÄ
ce pomoc i rozwój platformy e-learningowej o rozszerzonej funkcjonalnoÅciâ. Takie rozwiÄ
zanie zapewni Ci bieżÄ
cÄ
optymalizacjÄ, ulepszanie interfejsu użytkownika i staÅe dostosowywanie do zmieniajÄ
cych siÄ potrzeb."},{type:"p",text:"Zaufaj ekspertom i pozwól im poprowadziÄ CiÄ przez caÅy proces â od stworzenia MVP, po rozbudowÄ peÅnej funkcjonalnoÅci. DziÄki temu Twoja platforma bÄdzie stale rozwijana i dostosowywana do oczekiwaÅ użytkowników."},{type:"p",text:"PodsumowujÄ
c, aby stworzyÄ wyszukiwarkÄ, która sprawi, że Twoja platforma edukacyjna bÄdzie funkcjonalna i użyteczna, musisz zadbaÄ o kilka kluczowych elementów:"},{type:"ul",items:["IntuicyjnÄ
rejestracjÄ i personalizacjÄ profilu użytkownika","PrzejrzystÄ
nawigacjÄ i zaawansowane filtry wyszukiwania","Spójny i atrakcyjny interfejs użytkownika","Personalizowane sugestie i rekomendacje kursów","Solidne wsparcie i budowanie spoÅecznoÅci","Elastyczne opcje pÅatnoÅci","KompleksowÄ
funkcjonalnoÅÄ platformy","Profesjonalne wsparcie powdrożeniowe"]},{type:"p",text:"JeÅli uda Ci siÄ poÅÄ
czyÄ te elementy w harmonijnÄ
caÅoÅÄ, Twoja platforma edukacyjna z pewnoÅciÄ
stanie siÄ prawdziwym magnesem dla użytkowników. A DiSpace bÄdzie Twoim niezawodnym partnerem w tym procesie."}]},{slug:"wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac",title:"WyskakujÄ
ce okienka â kiedy stosowaÄ i jak zaprojektowaÄ",date:"2023-05-26",category:"UX / Conversion",excerpt:"WyskakujÄ
ce okienka to broÅ obosieczna â dobrze zrobione podnoszÄ
konwersjÄ o kilkadziesiÄ
t procent, źle zrobione przepÄdzajÄ
użytkowników. Kiedy i jak stosowaÄ popupy w 2026 roku.",metaDesc:"WyskakujÄ
ce okienka (popupy) â kiedy stosowaÄ, jak zaprojektowaÄ i jakich bÅÄdów unikaÄ, żeby nie zabijaÅy konwersji. Zasady, momenty wyzwolenia i przykÅady.",readMinutes:4,blocks:[{type:"h2",text:"WyskakujÄ
ce okienka â kiedy stosowaÄ i jak zaprojektowaÄ"},{type:"p",text:"Witajcie moi drodzy! UsiÄ
dźcie wygodnie, bo zabieram was na niezwykÅÄ
podróż po Åwiecie wyskakujÄ
cych okienek. Tak, wiem, wiÄkszoÅÄ z was pewnie patrzy n
69a nie z niechÄciÄ
â to irytujÄ
ce przeszkody, które utrudniajÄ
wygodne przeglÄ
danie stron internetowych. Ale czy aby na pewno? Przekonacie siÄ, że wyskakujÄ
ce okienka, odpowiednio zaprojektowane i zastosowane, mogÄ
byÄ potÄżnymi narzÄdziami, które pomogÄ
wam przyciÄ
gnÄ
Ä uwagÄ klientów i zwiÄkszyÄ konwersje w waszym sklepie internetowym."},{type:"h3",text:"Czym wÅaÅciwie sÄ
te wyskakujÄ
ce okienka?"},{type:"p",text:"WyskakujÄ
ce okienka, potocznie zwane pop-upami, to graficzne elementy, które pojawiajÄ
siÄ na stronie internetowej, najczÄÅciej kilka sekund po jej zaÅadowaniu. Ich celem jest przyciÄ
gniÄcie uwagi użytkownika i skÅonienie go do podjÄcia jakiejÅ akcji â na przykÅad wypeÅnienia formularza, zapisania siÄ do newslettera czy dokonania zakupu."},{type:"p",text:"Pop-upy mogÄ
przybieraÄ różne formy â od prostych banerów, przez wysuwanÄ
dolnÄ
lub bocznÄ
belkÄ, aż po peÅnoekranowe okna modalne. Niezależnie od wyglÄ
du, ÅÄ
czy je jedno: skutecznoÅÄ w przyciÄ
ganiu uwagi. Badania pokazujÄ
, że wyskakujÄ
ce okienka mogÄ
zwiÄkszaÄ konwersjÄ nawet o 1000%!"},{type:"h3",text:"Kiedy warto stosowaÄ wyskakujÄ
ce okienka?"},{type:"p",text:"Chociaż wyskakujÄ
ce okienka majÄ
ogromny potencjaÅ, nie w każdej sytuacji bÄdÄ
najlepszym rozwiÄ
zaniem. Å»eby dobrze zrozumieÄ, kiedy warto po nie siÄgnÄ
Ä, musimy najpierw okreÅliÄ, jakie cele chcemy dziÄki nim osiÄ
gnÄ
Ä."},{type:"p",text:"Oto kilka najczÄstszych zastosowaÅ pop-upów:"},{type:"p",text:"Budowanie listy mailingowej Jednym z najpopularniejszych zastosowaÅ wyskakujÄ
cych okienek jest zachÄcanie odwiedzajÄ
cych do zapisania siÄ do newslettera. Dobrze zaprojektowany pop-up z atrakcyjnÄ
ofertÄ
(np. zniżka na pierwsze zamówienie) może znaczÄ
co zwiÄkszyÄ liczbÄ subskrybentów."},{type:"p",text:"ZwiÄkszanie sprzedaży Pop-upy mogÄ
byÄ również wykorzystywane do promowania specjalnych ofert, wyprzedaży lub nowych produktów. UmiejÄtnie zaprojektowany komunikat zachÄcajÄ
cy do skorzystania z okazji może przeÅożyÄ siÄ na konkretne zyski."},{type:"p",text:"Zbieranie informacji o użytkownikach WyskakujÄ
ce okienka to Åwietna okazja, by dowiedzieÄ siÄ czegoÅ wiÄcej o odwiedzajÄ
cych naszÄ
stronÄ. Możemy na przykÅad poprosiÄ ich o wypeÅnienie krótkiej ankiety w zamian za atrakcyjnÄ
nagrodÄ."},{type:"p",text:"Wsparcie obsÅugi klienta Pop-upy mogÄ
byÄ wykorzystywane do wyÅwietlania ważnych komunikatów, na przykÅad informacji o aktualnych promocjach, zmianach w regulaminie czy dostÄpnoÅci produktów. DziÄki temu klienci majÄ
staÅy dostÄp do najważniejszych wiadomoÅci."},{type:"p",text:"OczywiÅcie, to tylko kilka przykÅadów. KreatywnoÅÄ graniczy z nieskoÅczonoÅciÄ
, dlatego nie wahajcie siÄ eksperymentowaÄ i testowaÄ różnych wariantów wyskakujÄ
cych okienek."},{type:"h3",text:"Jak zaprojektowaÄ skuteczne wyskakujÄ
ce okienka?"},{type:"p",text:"Teraz, kiedy wiemy już, w jakich celach możemy wykorzystywaÄ pop-upy, pora skupiÄ siÄ na ich wÅaÅciwym zaprojektowaniu. Bowiem nawet najlepszy pomysÅ może siÄ spaliÄ, jeÅli nie bÄdzie on odpowiednio zrealizowany."},{type:"p",text:"Oto kilka kluczowych wskazówek, które pomogÄ
wam stworzyÄ efektywne wyskakujÄ
ce okienka:"},{type:"p",text:"1. OkreÅl cel i grupÄ docelowÄ
Zanim zaczniesz projektowaÄ pop-up, odpowiedz sobie na kilka podstawowych pytaÅ: Jaki jest cel tego dziaÅania? Do kogo chcesz dotrzeÄ? Jakie informacje chcesz przekazaÄ użytkownikom? DziÄki temu bÄdziesz mógÅ dostosowaÄ treÅÄ, wyglÄ
d i ustawienia wyskakujÄ
cego okienka do potrzeb i preferencji Twoich klientów."},{type:"p",text:"2. Zadbaj o odpowiedni timing Kiedy pop-up ma siÄ pojawiÄ, aby skutecznie przyciÄ
gnÄ
Ä uwagÄ, a jednoczeÅnie nie zniechÄciÄ użytkowników? NajczÄÅciej rekomenduje siÄ, aby wyskakujÄ
ce okienka pojawiaÅy siÄ po kilkunastu sekundach od zaÅadowania strony lub po przewiniÄciu jej do okreÅlonego miejsca. DziÄki temu użytkownik bÄdzie mógÅ zapoznaÄ siÄ z najważniejszymi treÅciami, a nastÄpnie bÄdzie gotowy na interakcjÄ. Warto też zastanowiÄ siÄ nad wyÅwietlaniem pop-upów w momencie, gdy użytkownik próbuje opuÅciÄ stronÄ (tzw. exit intent)."},{type:"p",text:"3. Zadbaj o czytelny i atrakcyjny design Pop-up musi przykuwaÄ uwagÄ, ale nie może byÄ agresywny lub przytÅaczajÄ
cy. Dlatego zwrÃ³Ä szczególnÄ
uwagÄ na dobranie odpowiedniej kolorystyki, czcionki i grafik. Kluczowe jest również wÅaÅciwe rozmieszczenie poszczególnych elementów â tak, aby przekaz byÅ czytelny i zachÄcajÄ
cy."},{type:"p",text:"4. Stwórz przekonujÄ
cy komunikat TreÅÄ wyskakujÄ
cego okienka powinna byÄ zwiÄzÅa, ale jednoczeÅnie konwincujÄ
ca. PamiÄtaj, że masz zaledwie kilka sekund, by zachÄciÄ użytkownika do podjÄcia pożÄ
danego dziaÅania. Dlatego skoncentruj siÄ na kluczowych korzyÅciach, które on może uzyskaÄ, i nie bój siÄ użyÄ mocnych sformuÅowaÅ."},{type:"p",text:"5. Zapewnij Åatwy sposób zamkniÄcia ChoÄ celem pop-upa jest przykucie uwagi użytkownika, nie możesz go traktowaÄ jak wiÄźnia. Upewnij
69siÄ, że ma on Åatwy dostÄp do przycisku zamkniÄcia okienka â najlepiej umieszczonego w prawym górnym rogu. W przeciwnym razie ryzykujesz, że zniechÄcisz go do dalszej interakcji z TwojÄ
stronÄ
."},{type:"p",text:"6. Testuj i analizuj Projektowanie skutecznych wyskakujÄ
cych okienek to naprawdÄ iteracyjny proces. Nigdy nie wiesz na pewno, co zadziaÅa najlepiej, dopóki nie przetestujesz różnych wariantów. Dlatego nie bój siÄ eksperymentowaÄ z różnymi ustawieniami i bacznie obserwuj, jak użytkownicy reagujÄ
na Twoje pop-upy."},{type:"p",text:"PamiÄtajcie, że warto również zwracaÄ uwagÄ na to, jak wyskakujÄ
ce okienka mogÄ
wpÅywaÄ na widocznoÅÄ Waszej strony w wynikach wyszukiwania. Google bardzo restrykcyjnie podchodzi do nadużywania pop-upów, które utrudniajÄ
dostÄp do treÅci. Dlatego starajcie siÄ projektowaÄ je w taki sposób, by nie blokowaÅy kluczowych informacji."},{type:"h3",text:"WyskakujÄ
ce okienka â killer feature czy przekleÅstwo UX?"},{type:"p",text:"ChoÄ wyskakujÄ
ce okienka majÄ
ogromny potencjaÅ, wciÄ
ż budzi to wiele kontrowersji. Dla wielu użytkowników sÄ
one postrzegane jako irytujÄ
ce przeszkody, które utrudniajÄ
komfortowe przeglÄ
danie stron internetowych. I trudno siÄ z nimi nie zgodziÄ â źle zaprojektowane pop-upy rzeczywiÅcie mogÄ
byÄ poważnym problemem."},{type:"p",text:"Dlatego niezwykle ważne jest, aby podchodziÄ do wykorzystywania wyskakujÄ
cych okienek z dużÄ
dozÄ
rozwagi i odpowiedzialnoÅci. Tylko wtedy bÄdÄ
one stanowiÄ skuteczne narzÄdzie marketingowe, a nie przekleÅstwo użytkowników."},{type:"p",text:"A Wy co o tym sÄ
dzicie? Czy w Waszej opinii pop-upy mogÄ
byÄ użyteczne, czy raczej stanowiÄ
wyÅÄ
cznie irytujÄ
cÄ
przeszkodÄ? Koniecznie dajcie mi znaÄ w komentarzach! Jestem bardzo ciekaw Waszych doÅwiadczeÅ i przemyÅleÅ na ten temat."},{type:"p",text:"I pamiÄtajcie â jeÅli macie jakiekolwiek pytania lub chcecie skonsultowaÄ projekt Waszych wyskakujÄ
cych okienek, serdecznie zapraszam do kontaktu z naszym zespoÅem . Zawsze z chÄciÄ
pomożemy Wam w stworzeniu efektywnych rozwiÄ
zaÅ, które bÄdÄ
dobrze sÅużyÄ Wam i Waszym klientom."}]},{slug:"jak-uzyskac-pierwsza-strone-google-w-3-miesiace",title:"Jak uzyskaÄ pierwszÄ
stronÄ Google w 3 miesiÄ
ce?",date:"2024-06-27",category:"SEO",excerpt:"Realny plan dziaÅaÅ SEO, który pozwala maÅej firmie z UK wejÅÄ na pierwszÄ
stronÄ Google w 3 miesiÄ
ce dla lokalnych fraz. Bez magii â konkretne kroki, których używamy z klientami.",metaDesc:"Jak wejÅÄ na pierwszÄ
stronÄ Google w 3 miesiÄ
ce â realny plan SEO dla firm z UK. Analiza konkurencji, sÅowa kluczowe, on-site i link building krok po kroku.",readMinutes:4,blocks:[{type:"p",text:"UsiÄ
dź wygodnie, bo zaraz poznasz mój sekretny przepis na szybkie i skuteczne pozycjonowanie strony w Google! Czy to możliwe, aby w zaledwie 3 miesiÄ
ce znaleÅºÄ siÄ na pierwszej stronie wyszukiwarki? Odpowiem Ci na to pytanie, a przy okazji podzielÄ siÄ moim sprawdzonym planem dziaÅania."},{type:"h2",text:"Poznaj swojÄ
konkurencjÄ"},{type:"p",text:"Pierwszym krokiem na drodze do sukcesu w pozycjonowaniu jest dogÅÄbne poznanie swojej konkurencji. Musisz ustaliÄ, jakie strony internetowe rywalizujÄ
z TwojÄ
firmÄ
o cenne miejsca w wyszukiwarce Google. W tym celu wykorzystam kilka narzÄdzi, które pomogÄ
mi przeprowadziÄ wnikliwÄ
analizÄ."},{type:"p",text:"RozpocznÄ od wpisania w Google kluczowych sÅów zwiÄ
zanych z TwojÄ
branżÄ
i sprawdzenia, jakie strony pojawiajÄ
siÄ na pierwszych pozycjach. NastÄpnie skorzystam z platformy SEMrush , aby zbadaÄ, jakie dziaÅania podejmujÄ
Twoi konkurenci w zakresie optymalizacji SEO. Dowiem siÄ, jakie techniki stosujÄ
, jakie treÅci publikujÄ
i na jakich kanaÅach budujÄ
swojÄ
widocznoÅÄ w sieci."},{type:"p",text:"Ponadto wykorzystam narzÄdzie Ahrefs , aby oceniÄ jakoÅÄ linków przychodzÄ
cych do stron konkurencji. To kluczowy czynnik, który wpÅywa na pozycjÄ w wyszukiwarce, wiÄc muszÄ zdobyÄ na ten temat jak najwiÄcej informacji."},{type:"p",text:"Uzbrojony w wiedzÄ o dziaÅaniach konkurencji, bÄdÄ mógÅ sformuÅowaÄ skutecznÄ
strategiÄ, która pozwoli mi szybko wspiÄ
Ä siÄ na szczyt wyników wyszukiwania."},{type:"h2",text:"Zdefiniuj swoje kluczowe sÅowa"},{type:"p",text:"Kolejnym ważnym krokiem jest precyzyjne zdefiniowanie kluczowych sÅów, na których chcesz siÄ pozycjonowaÄ. MuszÄ wnikliwie przeanalizowaÄ, jakie frazy wpisujÄ
Twoi potencjalni klienci w wyszukiwarkÄ, aby trafiÄ n
69a TwojÄ
stronÄ internetowÄ
."},{type:"p",text:"RozpocznÄ od prostych, jednoznacznych fraz, takich jak âstrony internetoweâ lub âpozycjonowanie stronâ. NastÄpnie bÄdÄ zagÅÄbiaÄ siÄ w bardziej szczegóÅowe i dÅugie frazy, takie jak âtanie strony internetowe dla maÅych firmâ lub âprofesjonalne pozycjonowanie stron WWWâ."},{type:"p",text:"Przy pomocy narzÄdzi Google Ads Keyword Planner oraz Ubersuggest sprawdzÄ, jakÄ
popularnoÅÄ majÄ
poszczególne sÅowa kluczowe, a także jak duża jest konkurencja na nie. DziÄki temu bÄdÄ mógÅ wybraÄ te frazy, które jednoczeÅnie generujÄ
duży ruch, a jednoczeÅnie nie sÄ
zbyt trudne do zdobycia wysokich pozycji."},{type:"p",text:"Zgromadzone informacje pozwolÄ
mi stworzyÄ kompleksowÄ
strategiÄ pozycjonowania, uwzglÄdniajÄ
cÄ
zarówno popularne, jak i bardziej niszowe sÅowa kluczowe."},{type:"h2",text:"Zadbaj o jakoÅÄ treÅci"},{type:"p",text:"Kluczem do sukcesu w pozycjonowaniu jest tworzenie wysokiej jakoÅci, wartoÅciowych treÅci, które przyciÄ
gnÄ
uwagÄ Twoich potencjalnych klientów. Nie bÄdÄ siÄ ograniczaÅ do prostego wypeÅniania strony sÅowami kluczowymi. Moim celem bÄdzie stworzenie angażujÄ
cych, informacyjnych artykuÅów, które faktycznie pomogÄ
użytkownikom rozwiÄ
zaÄ ich problemy."},{type:"p",text:"RozpocznÄ od dogÅÄbnego zrozumienia potrzeb i oczekiwaÅ Twoich klientów. PrzeprowadzÄ badania rynkowe, rozmowy z obecnymi klientami, a także przeanalizujÄ popularne zapytania kierowane do wyszukiwarki. DziÄki temu bÄdÄ mógÅ tworzyÄ treÅci, które w peÅni odpowiadajÄ
na bolÄ
czki i pytania Twoich potencjalnych klientów."},{type:"p",text:"Zadbam również o atrakcyjnÄ
formÄ prezentacji treÅci. BÄdÄ wykorzystywaÄ różne formaty, takie jak artykuÅy, poradniki, infografiki czy filmy wideo. DziÄki temu moja strona stanie siÄ bardziej interesujÄ
ca i zapadnie w pamiÄÄ odwiedzajÄ
cych jÄ
użytkowników."},{type:"p",text:"BÄdÄ również systematycznie aktualizowaÅ i rozbudowywaÅ treÅci na Twojej stronie. Nowe, Åwieże artykuÅy bÄdÄ
przyciÄ
gaÅy uwagÄ wyszukiwarki i pozwalaÅy mi wspinaÄ siÄ w rankingach."},{type:"h2",text:"Buduj wartoÅciowe linki"},{type:"p",text:"Jednym z kluczowych czynników decydujÄ
cych o pozycji strony w Google jest jakoÅÄ i iloÅÄ linków przychodzÄ
cych. Dlatego też bÄdÄ pracowaÅ nad budowaniem silnego i wartoÅciowego profilu linków do Twojej witryny."},{type:"p",text:"RozpocznÄ od analizy linków konkurencji, aby zidentyfikowaÄ najpopularniejsze i najskuteczniejsze źródÅa linków w Twojej branży. NastÄpnie stworzÄ listÄ potencjalnych partnerów, którzy mogliby linkowaÄ do Twojej strony, takich jak firmy wspóÅpracujÄ
ce, branżowe portale, influencerzy czy strony tematyczne."},{type:"p",text:"BÄdÄ nawiÄ
zywaÅ kontakty i budowaÅ relacje z tymi podmiotami, proponujÄ
c im ciekawe, wartoÅciowe treÅci, które chÄtnie umieszczÄ
na swoich witrynach z linkiem do Twojej strony. Postaram siÄ również o obecnoÅÄ w branżowych katalogach, na forach oraz w social mediach, gdzie również bÄdÄ mógÅ promowaÄ TwojÄ
stronÄ."},{type:"p",text:"PamiÄtaj, że jakoÅÄ linków jest ważniejsza niż ich iloÅÄ. Dlatego bÄdÄ dbaÅ o to, aby pozyskiwane linki pochodziÅy z wiarygodnych, tematycznie powiÄ
zanych źródeÅ. DziÄki temu moja strategia linkowania przyczyni siÄ do trwaÅego wzrostu pozycji Twojej strony w wyszukiwarce."},{type:"h2",text:"Monitoruj i dostosowuj swoje dziaÅania"},{type:"p",text:"Pozycjonowanie to ciÄ
gÅy proces, który wymaga staÅego monitoringu i dostosowywania dziaÅaÅ. Dlatego też bÄdÄ na bieżÄ
co ÅledziÄ wyniki moich dziaÅaÅ i analizowaÄ, które z nich przynoszÄ
najlepsze efekty."},{type:"p",text:"Wykorzystam narzÄdzia takie jak Google Analytics oraz Google Search Console , aby dokÅadnie ÅledziÄ ruch na Twojej stronie, pochodzenie odwiedzajÄ
cych, a także pozycje, na których znajduje siÄ Twoja witryna w wynikach wyszukiwania."},{type:"p",text:"Na podstawie tych danych bÄdÄ mógÅ podejmowaÄ trafne decyzje odnoÅnie dalszych kroków. JeÅli zauważÄ, że pewne dziaÅania przynoszÄ
pożÄ
dane rezultaty, bÄdÄ je intensyfikowaÅ. Natomiast te, które nie generujÄ
oczekiwanych efektów, bez wahania zmodyfikujÄ lub caÅkowicie wycofam."},{type:"p",text:"Pozycjonowanie to nieustanna walka o pierwsze miejsca w Google. Dlatego też bÄdÄ stale aktualizowaÅ mojÄ
strategiÄ, dostosowujÄ
c jÄ
do zmieniajÄ
cych siÄ trendów i algorytmów wyszukiwarki. Tylko w ten sposób mogÄ zagwarantowaÄ Ci, że Twoja strona utrzyma wysokie pozycje przez dÅugi czas."},{type:"h2",text:"Podsumowanie"},{type:"p",text:"Teraz, gdy poznaÅeÅ mój kompleksowy plan dziaÅania, jestem pewien, że uda nam siÄ osiÄ
gnÄ
Ä Twój cel â znalezienie siÄ na pierwszej stronie Google w ciÄ
gu zaledwie 3 miesiÄcy. PamiÄtaj jednak, że pozycjonowanie to dÅugotrwaÅy proces,
69który wymaga cierpliwoÅci, systematycznoÅci i elastycznoÅci."},{type:"p",text:"DoÅoÅ¼Ä wszelkich staraÅ, aby Twoja strona internetowa staÅa siÄ prawdziwym magnesem dla Twoich potencjalnych klientów. DziÄki skutecznej strategii opartej na dogÅÄbnej analizie konkurencji, okreÅleniu kluczowych sÅów, tworzeniu wartoÅciowych treÅci oraz budowaniu silnego profilu linków, jesteÅmy w stanie szybko wspiÄ
Ä siÄ na szczyt wyników wyszukiwania."},{type:"p",text:"CaÅy czas bÄdÄ monitorowaÅ postÄpy naszych dziaÅaÅ i wprowadzaÅ niezbÄdne korekty, aby utrzymaÄ wysokie pozycje Twojej strony w Google . JesteÅ gotowy, aby razem podbiÄ wyszukiwarkÄ? Zaczynajmy!"}]}],X9=[...Q9,...q9,...Z9,...Y9,...J9],e7=Object.fromEntries(X9.map(t=>[t.slug,t]));function ct(t){return e7[t]}const t7=()=>W(()=>import("./ankiety-i-formularze-w-ui-zasady-tworzenia-BjSZSVYI.js"),__vite__mapDeps([78,61,79,32])),GA="ankiety-i-formularze-w-ui-zasady-tworzenia",VA=`/${GA}`,ew=`${Me}${VA}`,a7=q()({loader:()=>{const t=ct(GA);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:ew},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}],links:nt(VA),scripts:[rt({url:ew,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:ew}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(t7,"component")}),Ts=Ze("apple-ads-management-uk"),FA={"google-ads-uk":{name:"Google Ads UK â prowadzenie kampanii reklamowych",serviceType:"Google Ads",breadcrumb:"Google Ads UK",areaServed:["United Kingdom"],faqs:[{q:"Ile kosztuje prowadzenie Google Ads w UK?",a:"Prowadzenie kampanii Google Ads UK zaczyna siÄ od £390 miesiÄcznie. Kwota obejmuje konfiguracjÄ konta i konwersji, budowÄ kampanii, teksty reklam, bieżÄ
cÄ
optymalizacjÄ stawek i miesiÄczny raport. Budżet reklamowy wpÅacany do Google rozliczasz osobno.",tag:"Cennik"},{q:"Jaki budżet reklamowy przyjÄ
Ä na start w Google Ads?",a:"Dla lokalnej firmy usÅugowej w UK sensowny start to £300â£600 miesiÄcznie budżetu klikowego. Przy e-commerce i szerszym zasiÄgu na caÅÄ
WielkÄ
BrytaniÄ rekomendujemy od £800 miesiÄcznie, żeby zebraÄ dane do optymalizacji.",tag:"Budżet"},{q:"Po jakim czasie widaÄ efekty kampanii Google Ads?",a:"Pierwsze klikniÄcia i zapytania pojawiajÄ
siÄ zwykle w ciÄ
gu 24â72 godzin od startu kampanii. Stabilne wyniki i obniżony koszt pozyskania zapytania osiÄ
gamy najczÄÅciej po 4â6 tygodniach optymalizacji.",tag:"Efekty"},{q:"Jakie kampanie Google Ads prowadzicie?",a:"Prowadzimy kampanie Search (wyszukiwarka Google.co.uk), Performance Max, remarketing oraz kampanie lokalne powiÄ
zane z Google Business Profile. Dobór formatu zależy od branży, budżetu i celu kampanii.",tag:"Zakres"},{q:"Czy dostanÄ raport z wyników kampanii?",a:"Tak. Co miesiÄ
c otrzymujesz raport z liczbÄ
klikniÄÄ, kosztem klikniÄcia, liczbÄ
konwersji i kosztem pozyskania zapytania, wraz z rekomendacjami na kolejny miesiÄ
c.",tag:"Raporty"}]},"microsoft-ads-uk":{name:"Microsoft Ads UK (Bing Ads) â prowadzenie kampanii",serviceType:"Microsoft Advertising",breadcrumb:"Microsoft Ads UK",areaServed:["United Kingdom"],faqs:[{q:"Czy warto reklamowaÄ siÄ w Microsoft Ads w UK?",a:"Tak. Bing i Edge majÄ
w Wielkiej Brytanii istotny udziaÅ w wyszukiwaniach, zwÅaszcza wÅród użytkowników firmowych komputerów. Konkurencja reklamowa jest mniejsza niż w Google, wiÄc koszt klikniÄcia bywa niższy nawet o 20â40%.",tag:"SkutecznoÅÄ"},{q:"Ile kosztuje prowadzenie Microsoft Ads?",a:"Prowadzenie kampanii Microsoft Ads UK zaczyna siÄ od £290 miesiÄcznie i obejmuje konfiguracjÄ konta, import lub budowÄ kampanii, tag konwersji UET, optymalizacjÄ oraz raport miesiÄczny.",tag:"Cennik"},{q:"Czy można przenieÅÄ kampanie z Google Ads do Microsoft Ads?",a:"Tak. Microsoft Advertising pozwala zaimportowaÄ strukturÄ kampanii z Google Ads. Po imporcie zawsze przebudowujemy stawki, sÅowa kluczowe i teksty reklam pod innÄ
charakterystykÄ użytkowników Bing.",tag:"Migracja"},{q:"Dla jakich branż Microsoft Ads sprawdza siÄ najlepiej?",a:"Najlepsze wyniki widzimy w B2B, usÅugach profesjonalnych, budowlance, transporcie i finansach â
69czyli tam, gdzie decyzje zapadajÄ
na komputerach firmowych z domyÅlnÄ
wyszukiwarkÄ
Bing.",tag:"Branże"}]},"apple-ads-uk":{name:"Apple Ads UK â Apple Search Ads w App Store",serviceType:"Apple Search Ads",breadcrumb:"Apple Ads UK",areaServed:["United Kingdom"],faqs:[{q:"Czym sÄ
Apple Ads (Apple Search Ads)?",a:"To system reklamowy Apple, który wyÅwietla aplikacje w wynikach wyszukiwania App Store, w zakÅadce Today oraz na stronach produktowych innych aplikacji. PÅacisz za klikniÄcie (CPT) prowadzÄ
ce do karty Twojej aplikacji.",tag:"Podstawy"},{q:"Ile kosztuje prowadzenie Apple Search Ads w UK?",a:"Prowadzenie kampanii Apple Ads UK zaczyna siÄ od £290 miesiÄcznie. Budżet reklamowy w brytyjskim App Store rekomendujemy od £500 miesiÄcznie, aby zebraÄ wystarczajÄ
ce dane do optymalizacji sÅów kluczowych.",tag:"Cennik"},{q:"Jakie typy kampanii Apple Ads prowadzicie?",a:"Prowadzimy kampanie Search Results (wyniki wyszukiwania w App Store), Search Tab, Today Tab oraz Product Page Ads, wraz z testami kreacji i wariantów strony produktowej aplikacji.",tag:"Zakres"},{q:"Jak mierzycie efekty kampanii Apple Ads?",a:"Raportujemy liczbÄ wyÅwietleÅ, wskaźnik konwersji karty aplikacji, liczbÄ instalacji, koszt instalacji (CPA) oraz â po integracji z narzÄdziem analitycznym â aktywnoÅÄ użytkowników po instalacji.",tag:"Pomiar"}]},"kampanie-reklamowe-uk":{name:"Kampanie reklamowe UK â Google, Microsoft, Apple i Meta Ads",serviceType:"Kampanie reklamowe online",breadcrumb:"Kampanie reklamowe UK",areaServed:["United Kingdom"],faqs:[{q:"Jakie kampanie reklamowe prowadzicie w UK?",a:"Prowadzimy kampanie Google Ads, Microsoft Ads (Bing), Apple Search Ads oraz Meta Ads (Facebook i Instagram). KanaÅy dobieramy do branży, budżetu i tego, gdzie realnie szukajÄ
Twoi klienci w Wielkiej Brytanii.",tag:"Zakres"},{q:"Ile kosztuje prowadzenie kampanii reklamowych w UK?",a:"ObsÅuga kampanii reklamowych zaczyna siÄ od £390 miesiÄcznie za jeden kanaÅ, a pakiet wielokanaÅowy wyceniamy indywidualnie. Budżet reklamowy pÅacony platformom rozliczasz osobno i w peÅni kontrolujesz.",tag:"Cennik"},{q:"Jak szybko uruchomicie kampaniÄ?",a:"Standardowo start kampanii nastÄpuje w 5 dni roboczych od akceptacji strategii: dzieÅ 1â2 konfiguracja kont i konwersji, dzieÅ 3â4 kampanie i kreacje, dzieÅ 5 uruchomienie i kontrola pierwszych danych.",tag:"Terminy"},{q:"Czy prowadzicie kampanie po polsku i po angielsku?",a:"Tak. Przygotowujemy kampanie i kreacje w obu jÄzykach â polskie pod spoÅecznoÅÄ polskÄ
w UK, angielskie pod szerszy rynek brytyjski, z osobnym targetowaniem i budżetem.",tag:"JÄzyki"},{q:"Czy mogÄ poÅÄ
czyÄ reklamÄ pÅatnÄ
z pozycjonowaniem?",a:"Tak i zwykle to rekomendujemy. Kampanie pÅatne dajÄ
zapytania od pierwszego tygodnia, a pozycjonowanie UK obniża koszt pozyskania klienta w dÅuższym okresie.",tag:"Strategia"}]},"kampanie-reklamowe-szkocja":{name:"Kampanie reklamowe Szkocja â Google Ads i Meta Ads",serviceType:"Kampanie reklamowe online",breadcrumb:"Kampanie reklamowe Szkocja",areaServed:["Scotland","United Kingdom"],faqs:[{q:"W jakich miastach Szkocji prowadzicie kampanie reklamowe?",a:"Prowadzimy kampanie z geotargetowaniem na Edynburg, Glasgow, Aberdeen, Dundee, Stirling, Perth i Inverness, a także na wybrane promienie kilometrowe wokóŠsiedziby firmy.",tag:"ZasiÄg"},{q:"Jaki budżet reklamowy wystarczy w Edynburgu lub Glasgow?",a:"Dla lokalnej firmy usÅugowej w Szkocji zwykle wystarcza £250â£500 miesiÄcznie budżetu klikowego, ponieważ zasiÄg jest wÄższy niż przy kampanii na caÅÄ
WielkÄ
BrytaniÄ.",tag:"Budżet"},{q:"Jak targetujecie szkockie miasta?",a:"Używamy geotargetowania na miasta i promienie, lokalnych fraz kluczowych z nazwami miast oraz osobnych grup reklam i kreacji dla każdego regionu, co pozwala raportowaÄ wyniki miasto po mieÅcie.",tag:"Targetowanie"},{q:"Po jakim czasie spÅywajÄ
pierwsze zapytania?",a:"Przy kampanii Search pierwsze telefony i formularze pojawiajÄ
siÄ najczÄÅciej w ciÄ
gu pierwszego tygodnia od uruchomienia reklam.",tag:"Efekty"}]},"kampanie-reklamowe-wielka-brytania":{name:"Kampanie reklamowe Wielka Brytania â reklama online dla firm",serviceType:"Kampanie reklamowe online",breadcrumb:"Kampanie reklamowe Wielka Brytania",areaServed:["United Kingdom","
69England","Scotland","Wales"],faqs:[{q:"Ile kosztuje reklama online w Wielkiej Brytanii?",a:"Prowadzenie kampanii zaczyna siÄ od £390 miesiÄcznie. Budżet reklamowy zależy od branży â lokalne usÅugi startujÄ
od £300 miesiÄcznie, e-commerce i kampanie ogólnokrajowe od £800 miesiÄcznie.",tag:"Cennik"},{q:"Jak dzielicie budżet miÄdzy kanaÅy reklamowe?",a:"Zwykle wiÄkszoÅÄ budżetu trafia do Google Ads, gdzie klient sam szuka usÅugi. Microsoft Ads dokÅadamy dla taÅszych klikniÄÄ w B2B, a Meta Ads dla zasiÄgu i remarketingu. Proporcje korygujemy na podstawie danych z pierwszych tygodni.",tag:"Strategia"},{q:"Czy prowadzicie kampanie na caÅÄ
WielkÄ
BrytaniÄ?",a:"Tak. ObsÅugujemy kampanie w Anglii, Szkocji i Walii â z geotargetowaniem ogólnokrajowym lub podziaÅem na regiony i miasta z osobnymi budżetami.",tag:"ZasiÄg"},{q:"Jak mierzycie zwrot z inwestycji w reklamÄ?",a:"Konfigurujemy Åledzenie konwersji w GA4 i na koncie reklamowym: formularze, telefony, wiadomoÅci i zakupy. W raporcie miesiÄcznym pokazujemy koszt pozyskania zapytania i wartoÅÄ konwersji.",tag:"Pomiar"}]},"google-ads-setup-uk":{name:"Google Ads setup UK â konfiguracja konta i kampanii",serviceType:"Google Ads setup",breadcrumb:"Google Ads setup UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje Google Ads setup w UK?",a:"ZakÅadamy konto Google Ads z rozliczeniem w GBP, budujemy strukturÄ kampanii Search i Performance Max, dobieramy sÅowa kluczowe pod Google.co.uk, piszemy teksty reklam i rozszerzenia oraz konfigurujemy Åledzenie konwersji w GA4 i Google Tag.",tag:"Zakres"},{q:"Ile kosztuje jednorazowa konfiguracja Google Ads?",a:"Setup konta
69i kampanii to koszt od £490 jednorazowo. JeÅli po wdrożeniu zlecisz nam staÅÄ
obsÅugÄ kampanii, czÄÅÄ kosztu setupu zaliczamy na poczet pierwszego miesiÄ
ca prowadzenia.",tag:"Cennik"},{q:"Ile trwa wdrożenie konta Google Ads?",a:"Standardowo 5 dni roboczych od przekazania dostÄpów i akceptacji strategii: analiza sÅów kluczowych, budowa kampanii, konfiguracja konwersji, kontrola przed startem i uruchomienie.",tag:"Terminy"},{q:"Czy po setupie mogÄ prowadziÄ kampanie samodzielnie?",a:"Tak. Konto pozostaje TwojÄ
wÅasnoÅciÄ
, przekazujemy peÅne dostÄpy, dokumentacjÄ struktury kampanii oraz szkolenie wdrożeniowe. Możesz prowadziÄ kampanie sam lub zleciÄ nam staÅÄ
obsÅugÄ.",tag:"WspóÅpraca"}]},"google-ads-management-uk":{name:"Google Ads management UK â staÅa obsÅuga kampanii",serviceType:"Google Ads management",breadcrumb:"Google Ads management UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje staÅa obsÅuga Google Ads?",a:"CotygodniowÄ
optymalizacjÄ stawek i budżetów, rozbudowÄ i wykluczanie sÅów kluczowych, testy tekstów reklam, opiekÄ nad kampaniami Performance Max i remarketingiem oraz miesiÄczny raport z rekomendacjami.",tag:"Zakres"},{q:"Ile kosztuje Google Ads management w UK?",a:"StaÅe prowadzenie kampanii zaczyna siÄ od £390 miesiÄcznie. Przy wiÄkszych budżetach reklamowych wycena jest indywidualna, najczÄÅciej jako procent od budżetu klikowego.",tag:"Cennik"},{q:"Czy przejmiecie istniejÄ
ce konto Google Ads?",a:"Tak. Zaczynamy od audytu konta: sprawdzamy strukturÄ kampanii, konwersje, jakoÅÄ sÅów kluczowych i marnowany budżet, a nastÄpnie przedstawiamy plan naprawczy przed przejÄciem obsÅugi.",tag:"Audyt"},{q:"Czy wymagacie umowy na czas okreÅlony?",a:"Nie. WspóÅpracÄ rozliczamy miesiÄcznie, bez okresu wypowiedzenia dÅuższego niż jeden miesiÄ
c. Konto reklamowe zawsze pozostaje TwojÄ
wÅasnoÅciÄ
.",tag:"Warunki"}]},"microsoft-ads-setup-uk":{name:"Microsoft Ads setup UK â konfiguracja konta Bing Ads",serviceType:"Microsoft Advertising setup",breadcrumb:"Microsoft Ads setup UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje Microsoft Ads setup?",a:"ZaÅożenie konta Microsoft Advertising, import kampanii z Google Ads lub budowÄ od zera, przebudowÄ stawek i sÅów kluczowych pod Bing, instalacjÄ tagu konwersji UET oraz kontrolÄ przed startem.",tag:"Zakres"},{q:"Ile kosztuje konfiguracja Microsoft Ads?",a:"Jednorazowe wdrożenie konta i kampanii Microsoft Ads UK zaczyna siÄ od £390. Przy równoczesnym setupie Google Ads przygotowujemy wycenÄ pakietowÄ
.",tag:"Cennik"},{q:"Czy import z Google Ads wystarczy?",a:"Sam import to dopiero punkt wyjÅcia. Użytkownicy Bing i Edge zachowujÄ
siÄ inaczej, dlatego po imporcie zawsze korygujemy stawki, dopasowania sÅów kluczowych i teksty reklam.",tag:"Migracja"},{q:"Jak dÅugo trwa wdrożenie?",a:"Zwykle 5 dni roboczych od przekazania dostÄpów, wliczajÄ
c weryfikacjÄ konta rozliczeniowego po stronie Microsoftu.",tag:"Terminy"}]},"microsoft-ads-management-uk":{name:"Microsoft Ads management UK â obsÅuga kampanii w Bing",serviceType:"Microsoft Advertising management",breadcrumb:"Microsoft Ads management UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje staÅa obsÅuga Microsoft Ads?",a:"OptymalizacjÄ stawek i budżetów, rozbudowÄ sÅów kluczowych i wykluczeÅ, testy reklam, kampanie Audience Network, kontrolÄ konwersji UET oraz raport miesiÄczny z rekomendacjami.",tag:"Zakres"},{q:"Ile kosztuje Microsoft Ads management w UK?",a:"StaÅe prowadzenie kampanii zaczyna siÄ od £290 miesiÄcznie. JeÅli równolegle prowadzimy Twoje Google Ads, obsÅugÄ Microsoft Ads wyceniamy taniej w pakiecie.",tag:"Cennik"},{q:"Jaki budżet reklamowy ma sens w Bing?",a:"Dla wiÄkszoÅci firm w UK sensowny start to £200â£500 miesiÄcznie. Niższa konkurencja oznacza taÅsze klikniÄcia, wiÄc mniejszy budżet daje porównywalnÄ
liczbÄ wejÅÄ co w Google.",tag:"Budżet"},{q:"Jak raportujecie wyniki?",a:"Co miesiÄ
c przekazujemy raport z liczbÄ
klikniÄÄ, kosztem klikniÄcia, konwersjami i kosztem pozyskania zapytania, z porównaniem do wyników z Google Ads.",tag:"Raporty"}]},"apple-ads-setup-uk":{name:"Apple Ads setup UK â konfiguracja Apple Search Ads",serviceType:"Apple Search Ads setup",breadcrumb:"Apple Ads setup UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje Ap
69ple Ads setup?",a:"KonfiguracjÄ konta Apple Search Ads, powiÄ
zanie z App Store Connect, budowÄ kampanii Search Results, Search Tab i Today Tab, dobór sÅów kluczowych w brytyjskim App Store oraz konfiguracjÄ pomiaru instalacji.",tag:"Zakres"},{q:"Ile kosztuje konfiguracja Apple Search Ads?",a:"Jednorazowe wdrożenie zaczyna siÄ od £390 i obejmuje strukturÄ kampanii, listy sÅów kluczowych, wykluczenia oraz konfiguracjÄ raportowania instalacji.",tag:"Cennik"},{q:"Czy potrzebujÄ gotowej strony produktowej aplikacji?",a:"Tak, karta aplikacji w App Store powinna mieÄ dopracowany tytuÅ, podtytuÅ, zrzuty ekranu i opis. W ramach setupu wskazujemy elementy do poprawy, bo wpÅywajÄ
na konwersjÄ kampanii.",tag:"Wymagania"},{q:"Ile trwa wdrożenie Apple Ads?",a:"Zwykle 5 dni roboczych od przekazania dostÄpów do App Store Connect i akceptacji listy sÅów kluczowych.",tag:"Terminy"}]},"apple-ads-management-uk":{name:"Apple Ads management UK â obsÅuga Apple Search Ads",serviceType:"Apple Search Ads management",breadcrumb:"Apple Ads management UK",areaServed:["United Kingdom"],faqs:[{q:"Co obejmuje staÅa obsÅuga Apple Search Ads?",a:"OptymalizacjÄ sÅów kluczowych i stawek CPT, rozbudowÄ wykluczeÅ, testy wariantów strony produktowej, kontrolÄ kosztu instalacji oraz miesiÄczny raport wyników.",tag:"Zakres"},{q:"Ile kosztuje Apple Ads management w UK?",a:"StaÅe prowadzenie kampanii Apple Search Ads zaczyna siÄ od £290 miesiÄcznie, niezależnie od budżetu reklamowego wpÅacanego do Apple.",tag:"Cennik"},{q:"Jak optymalizujecie koszt instalacji?",a:"Analizujemy dane po sÅowach kluczowych: przenosimy skuteczne frazy do osobnych kampanii z wyższymi stawkami, wykluczamy nietrafione zapytania i testujemy warianty karty aplikacji, żeby podnieÅÄ konwersjÄ.",tag:"Optymalizacja"},{q:"Czy raportujecie zachowanie użytkowników po instalacji?",a:"Tak, po integracji z narzÄdziem analitycznym raportujemy nie tylko instalacje, ale też rejestracje i zdarzenia w aplikacji, żeby oceniÄ realnÄ
jakoÅÄ ruchu z Apple Ads.",tag:"Pomiar"}]}};function gi(t,e,a){const i=FA[t],r=`${Me}/${t}`;return[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"WebPage","@id":`${r}#webpage`,url:r,name:e,description:a,inLanguage:"pl-PL",isPartOf:{"@type":"WebSite","@id":`${re}#website`,name:"DiSpace",url:re},about:{"@type":"Service",name:i.name}})},Ea(i.faqs),aa({name:i.name,description:a,url:r,serviceType:i.serviceType,areaServed:i.areaServed}),Re([{name:"DiSpace",url:re},{name:i.breadcrumb,url:r}])]}const i7=()=>W(()=>import("./apple-ads-management-uk-7Qj1cxJH.js"),__vite__mapDeps([80,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),n7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ts.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ts.slug),override:t?.override??null,defaultTitle:Ts.title,defaultDescription:Ts.description});return{...e,scripts:[...e.scripts,...gi("apple-ads-management-uk",Ts.title,Ts.description)]}},component:G(i7,"component")}),Es=Ze("apple-ads-setup-uk"),o7=()=>W(()=>import("./apple-ads-setup-uk-DwGf2exT.js"),__vite__mapDeps([83,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),r7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Es.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Es.slug),override:t?.override??null,defaultTitle:Es.title,defaultDescription:Es.description});return{...e,scripts:[...e.scripts,...gi("apple-ads-setup-uk",Es.title,Es.description)]}},component:G(o7,"component")}),As=Ze("apple-ads-uk"),s7=()=>W(()=>import("./apple-ads-uk-D1a-T9wr.js"),__vite__mapDeps([84,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),l7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(As.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(As.slug),override:t?.override??null,defaultTitle:As.title,defaultDescription:As.description});return{...e,scripts:[...e.scripts,...gi("apple-ads-uk",As.title,As.description)]}},component:G(s7,"component")}),rp=Ze("banery-reklamowe-uk"),c7=()=>W(()=>import("./banery-reklamowe-uk-CPSHA51o.js"),__vite__mapDeps([85,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),u7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(rp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(rp.slug),override:t?.override??null,defaultTitle:rp.title,defaultDescription:rp.description}),component:G(c7,"component")}),d7=()=>W(()=>import("./cookies-DtqBFgK5.js"),[]),p7=q()({beforeLoad:()=>{throw Kt({to:"/pl/cookies",code:301,throw:!0})},component:G(d7,"component")}),Ig=Ze("copywriting-uk"),h7=()=>W(()=>import("./copywriting-uk-DNLgg4vS.js"),__vite__mapDeps([95,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,96,74,93,94,75])),Wg=we(Ig.slug),Ox=`${Me}${Wg}`,y7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Wg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Wg,override:t?.override??null,defaultTitle:Ig.title,defaultDescription:Ig.description});return{...e,scripts:[...e.scripts??[],aa({name:"Copywriting UK â teksty na stronÄ i opisy produktów",description:"Copywriting UK dla polskich firm w Wielkiej Brytanii: teksty na stronÄ www, opisy produktów WooCommerce/Shopify, artykuÅy blogowe pod SEO, oferty i landing page. Pisane pod intencje wyszukiwania w Google UK.",url:Ox,serviceType:"Copywriting / SEO Content Writing",areaServed:["United Kingdom"]}),Ea(G9),Re([{name:"DiSpace",url:re},{name:"Copywriting UK",url:Ox}]),Hh("pl")]}},component:G(h7,"component")}),m7=()=>W(()=>import("./dispace-formularz-DtqBFgK5.js"),[]),f7=q()({beforeLoad:()=>{throw Kt({to:"/pl/dispace-formularz",code:301,throw:!0})},component:G(m7,"component")}),w7=()=>W(()=>import("./en-DKS2EUna.js"),__vite__mapDeps([97,61])),g7=q()({component:G(w7,"component")}),k7=q()({beforeLoad:()=>{throw Kt({to:"/pl/faq"})}}),z7=()=>W(()=>import("./filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne-BZFetxAW.js"),__vite__mapDeps([98,61,79,32])),HA="filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne",qA=`/${HA}`,tw=`${Me}${qA}`,b7=q()({loader:()=>{const t=ct(HA);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:tw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}
69],links:nt(qA),scripts:[rt({url:tw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:tw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(z7,"component")}),sp=Ze("gadzety-reklamowe-uk"),j7=()=>W(()=>import("./gadzety-reklamowe-uk-CAKRoLyw.js"),__vite__mapDeps([99,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),v7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(sp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(sp.slug),override:t?.override??null,defaultTitle:sp.title,defaultDescription:sp.description}),component:G(j7,"component")}),Ps=Ze("google-ads-management-uk"),S7=()=>W(()=>import("./google-ads-management-uk-B9-WMb6A.js"),__vite__mapDeps([100,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),x7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ps.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ps.slug),override:t?.override??null,defaultTitle:Ps.title,defaultDescription:Ps.description});return{...e,scripts:[...e.scripts,...gi("google-ads-management-uk",Ps.title,Ps.description)]}},component:G(S7,"component")}),Cs=Ze("google-ads-setup-uk"),_7=()=>W(()=>import("./google-ads-setup-uk-CtGVHu6x.js"),__vite__mapDeps([101,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),T7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Cs.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Cs.slug),override:t?.override??null,defaultTitle:Cs.title,defaultDescription:Cs.description});return{...e,scripts:[...e.scripts,...gi("google-ads-setup-uk",Cs.title,Cs.description)]}},component:G(_7,"component")}),Rs=Ze("google-ads-uk"),E7=()=>W(()=>import("./google-ads-uk-r0HdSuH8.js"),__vite__mapDeps([102,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),A7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Rs.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Rs.slug),override:t?.override??null,defaultTitle:Rs.title,defaultDescription:Rs.description});return{...e,scripts:[...e.scripts,...gi("google-ads-uk",Rs.title,Rs.description)]}},component:G(E7,"component")}),lp=Ze("grafiki-social-media-uk"),P7=()=>W(()=>import("./grafiki-social-media-uk-CjEGl7xY.js"),__vite__mapDeps([103,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74])),C7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(lp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(lp.slug),override:t?.override??null,defaultTitle:lp.title,defaultDescription:lp.description}),component:G(P7,"component")}),cp=Ze("identyfikacja-wizualna-uk"),R7=()=>W(()=>import("./identyfikacja-wizualna-uk-Cd6I26_w.js"),__vite__mapDeps([104,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),D7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(cp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(cp.slug),override:t?.override??null,defaultTitle:cp.title,defaultDescription:cp.description}),component:G(R7,"component")}),O7=()=>W(()=>import("./ile-kosztuje-pozycjonowanie-uk-cennik-2026-Bry8Vgw6.js"),__vite__mapDeps([105,61,79,32,106,74])),ZA="ile-kosztuje-pozycjonowanie-uk-cennik-2026",YA=`/${ZA}`,aw=`${Me}${YA}`,U7=q()({loader:()=>{const t=ct(ZA);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"cennik pozycjonowania uk, ile kosztuje seo uk, ceny seo uk, pozycjonowanie uk cena"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:aw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}
69],links:nt(YA),scripts:[rt({url:aw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:aw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(O7,"component")}),L7=()=>W(()=>import("./jak-uzyskac-pierwsza-strone-google-w-3-miesiace-CR6Jo_My.js"),__vite__mapDeps([107,61,79,32])),JA="jak-uzyskac-pierwsza-strone-google-w-3-miesiace",QA=`/${JA}`,iw=`${Me}${QA}`,K7=q()({loader:()=>{const t=ct(JA);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:iw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}],links:nt(QA),scripts:[rt({url:iw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:iw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(L7,"component")}),up=Ze("kampanie-facebook-ads"),M7=()=>W(()=>import("./kampanie-facebook-ads-BxBxYEfv.js"),__vite__mapDeps([108,61,81,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74])),N7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(up.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(up.slug),override:t?.override??null,defaultTitle:up.title,defaultDescription:up.description}),component:G(M7,"component")}),dp=Ze("kampanie-google-ads"),B7=()=>W(()=>import("./kampanie-google-ads-NSugPDTS.js"),__vite__mapDeps([109,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74,81,82])),$7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(dp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(dp.slug),override:t?.override??null,defaultTitle:dp.title,defaultDescription:dp.description}),component:G(B7,"component")}),pp=Ze("kampanie-reklamowe-facebook"),I7=()=>W(()=>import("./kampanie-reklamowe-facebook-Wsirwh7Z.js"),__vite__mapDeps([110,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74,81,82])),W7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(pp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(pp.slug),override:t?.override??null,defaultTitle:pp.title,defaultDescription:pp.description}),component:G(I7,"component")}),hp=Ze("kampanie-reklamowe-google-adwords"),G7=()=>W(()=>import("./kampanie-reklamowe-google-adwords-B4cFBO5B.js"),__vite__mapDeps([111,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74,81,82])),V7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(hp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(hp.slug),override:t?.override??null,defaultTitle:hp.title,defaultDescription:hp.description}),component:G(G7,"component")}),Ds=Ze("kampanie-reklamowe-szkocja"),F7=()=>W(()=>import("./kampanie-reklamowe-szkocja-BCFhrlzT.js"),__vite__mapDeps([112,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),H7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ds.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ds.slug),override:t?.override??null,defaultTitle:Ds.title,defaultDescription:Ds.description});return{...e,scripts:[...e.scripts,...gi("kampanie-reklamowe-szkocja",Ds.title,Ds.description)]}},component:G(F7,"component")}),yp=Ze("kampanie-reklamowe-tiktok"),q7=()=>W(()=>import("./kampanie-reklamowe-tiktok-DA9WbumL.js"),__vite__mapDeps([113,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74,81,82])),Z7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(yp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(yp.slug),override:t?.override??null,defaultTitle:yp.title,defaultDescription:yp.description}),component:G(q7,"component")}),Os=Ze("kampanie-reklamowe-uk"),Y7=()=>W(()=>import("./kampanie-reklamowe-uk-CppKsx_O.js"),__vite__mapDeps([114,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74,77,115,76])),J7=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Os.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Os.slug),override:t?.override??null,defaultTitle:Os.title,defaultDescription:Os.description});return{...e,scripts:[...e.scripts,...gi("kampanie-reklamowe-uk",Os.title,Os.description)]}},component:G(Y7,"component")}),XA="kampanie-reklamowe-uk-google-ads-vs-meta-ads",Q7=()=>W(()=>import("./kampanie-reklamowe-uk-google-ads-vs-meta-ads-Cv6JOhWc.js"),__vite__mapDeps([116,61,79,32,77,74,115])),eP=`/${XA}`,nw=`${Me}${eP}`,X7=q()({loader:()=>{const t=ct(XA);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"kampanie reklamowe uk, google ads vs facebook ads, meta ads uk, reklama w anglii, reklama facebook uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:nw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}
69],links:nt(eP),scripts:[rt({url:nw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:nw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(Q7,"component")}),tP="kampanie-reklamowe-uk-ile-kosztuja-budzet-2026",eV=()=>W(()=>import("./kampanie-reklamowe-uk-ile-kosztuja-budzet-2026-Ck4W16cL.js"),__vite__mapDeps([117,61,79,32,77,74,115])),aP=`/${tP}`,ow=`${Me}${aP}`,tV=q()({loader:()=>{const t=ct(tP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"kampanie reklamowe uk, reklama google uk cennik, google ads uk koszty, meta ads uk, tiktok ads uk, budżet reklamowy uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:ow},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(aP),scripts:[rt({url:ow,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:ow}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(eV,"component")}),iP="kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku",aV=()=>W(()=>import("./kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku-Cz-yCnKw.js"),__vite__mapDeps([118,61,79,32,77,74,115])),nP=`/${iP}`,rw=`${Me}${nP}`,iV=q()({loader:()=>{const t=ct(iP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"kampanie reklamowe uk, jak uruchomiÄ google ads uk, konwersje ga4, reklama uk krok po kroku, konto google ads gbp"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:rw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(nP),scripts:[rt({url:rw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:rw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(aV,"component")}),Us=Ze("kampanie-reklamowe-wielka-brytania"),nV=()=>W(()=>import("./kampanie-reklamowe-wielka-brytania-CUOX7yuE.js"),__vite__mapDeps([119,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),oV=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Us.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Us.slug),override:t?.override??null,defaultTitle:Us.title,defaultDescription:Us.description});return{...e,scripts:[...e.scripts,...gi("kampanie-reklamowe-wielka-brytania",Us.title,Us.description)]}},component:G(nV,"component")});function rV(t){return[{q:`Ile kosztujÄ
kampanie reklamowe ${t.locative}?`,a:`Prowadzenie kampanii zaczyna siÄ od £390 miesiÄcznie i obejmuje strategiÄ, konfiguracjÄ konta i konwersji, teksty oraz kreacje, optymalizacjÄ stawek i raport miesiÄczny. ${t.budgetNote} Budżet reklamowy wpÅacany do Google, Meta lub TikToka rozliczasz osobno, w GBP.`,tag:"Cennik"},{q:`Jak kierujecie reklamy na ${t.city} i okolice?`,a:`Kierujemy kampanie na miasto oraz promieÅ w milach dopasowany do obszaru, w którym realnie obsÅugujesz klientów, i wykluczamy lokalizacje generujÄ
ce puste klikniÄcia. ${t.marketNote}`,tag:"Kierowanie"},{q:`Dla jakich branż prowadzicie kampanie ${t.locative}?`,a:`NajczÄÅciej pracujemy tu z firmami z branż: ${t.industries.join(", ")}. ObsÅugujemy zarówno jednoosobowe firmy usÅugowe, jak i spóÅki z kilkoma oddziaÅami w regionie ${t.region}.`,tag:"Branże"},...FA["kampanie-reklamowe-uk"].faqs.slice(0,4)]}function mee(){return k.jsxs("main",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-[#070C16] text-white",children:[k.jsx("h1",{className:"text-2xl font-semibold",children:"Nie znaleziono strony"}),k.jsx(Xi,{to:"/kampanie-reklamowe-uk",className:"underline underline-offset-4",children:"Zobacz kampanie reklamowe UK"})]})}const oP=[{slug:"londyn",city:"Londyn",locative:"w Londynie",region:"Greater London, Anglia",marketNote:"Londyn to najdroższy rynek reklamowy w Wielkiej Brytanii â stawki za klikniÄcie bywajÄ
2â3à wyższe niż w póÅnocnej Anglii, dlatego kampanie budujemy na wÄ
skich frazach z dzielnicami (Ealing, Hounslow, Croydon, Barking) zamiast na caÅym mieÅcie.",industries:["remonty i budownictwo","transport i przeprowadzki","usÅugi ksiÄgowe","beauty i fryzjerstwo","gastronomia"],budgetNote:"Realny start w Londynie to £500â£900 budżetu mediowego miesiÄcznie na jeden kanaÅ; poniżej tego poziomu reklama znika w aukcji już przed poÅudniem.",nearby:["slough","luton","reading"],title:"Kampanie reklamowe Londyn â Google i Meta Ads od £390 | DiSpace",description:"Kampanie reklamowe w Londynie dla polskich firm: Google Ads, Meta Ads i TikTok Ads. Kierowanie na dzielnice, konwersje GA4, raport co miesiÄ
c. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Londyn (PL)"},{slug:"manchester",city:"Manchester",locative:"w Manchesterze",region:"Greater Manchester, Anglia",marketNote:"Manchester i okolice (Salford, Stockport, Bolton) to jeden z najbardziej opÅacalnych rynków w Anglii â koszt klikniÄcia jest zwykle o 30â40% niższy niż w Londynie przy podobnej liczbie zapytaÅ o usÅugi.",industries:["usÅugi budowlane","mechanika i auto detailing","opieka i usÅugi medyczne","e-commerce","eventy i catering"],budgetNote:"Dla firmy usÅugowej z Manchesteru sensowny start to £350â£600 budżetu mediowego miesiÄcznie na jeden kanaÅ.",nearby:["liverpool","leeds","sheffield"],title:"Kampanie reklamowe Manchester â Google Ads i Meta Ads | DiSpace",description:"Prowadzimy kampanie reklamowe w Manchesterze: Google Ads, Meta Ads, TikTok Ads. Niższe CPC niż w Londynie, mierzone konwersje, obsÅuga od £390/mc w GBP.",label:"Kampanie reklamowe â Manchester (PL)"},{slug:"birmingham",city:"Birmingham",locative:"w Birmingham",region:"West Midlands, Anglia",marketNote:"Birmingham i West Midlands to duży rynek usÅug dla domu i motoryzacji, z silnÄ
konkurencjÄ
lokalnych firm rodzinnych â przewagÄ daje tu dobrze skonfigurowany profil Google i rozszerzenia poÅÄ
czeÅ w reklamach.",industries:["usÅugi dla domu","motoryzacja","logistyka i kurierzy","budownictwo","usÅugi finansowe"],budgetNote:"Start w Birmingham to zwykle £350â£700 miesiÄcznie budżetu mediowego, zależnie od promienia kierowania w milach.",nearby:["coventry","nottingham","northampton"],title:"Kampanie reklamowe Birmingham â reklama Google i Facebook | DiSpace",description:"Kampanie reklamowe Birmingham dla polskich firm: Google Ads, Meta Ads i TikTok. Kierowanie lokalne, rozszerzenia poÅÄ
czeÅ, koszt zapytania pod kontrolÄ
. Od £390/mc.",label:"Kampanie reklamowe â Birmingham (PL)"},{slug:"leeds",city:"Leeds",locative:"w Leeds",region:"West Yorkshire, Anglia",marketNote:"Leeds i Yorkshire to rynek, na którym bardzo dobrze dziaÅa poÅÄ
czenie reklam w Google z opiniami lokalnymi â klienci porównujÄ
dwie, trzy firmy i wybierajÄ
tÄ z lepszym profilem.",industries:["remonty i wykoÅczenia","beauty i barbershop","usÅugi sprzÄ
tajÄ
ce","gastronomia","szkolenia"],budgetNote:"Budżet startowy w Leeds to £300â£550 miesiÄcznie na kanaÅ â wystarcza na stabilny dopÅyw zapytaÅ z miasta i okolic.",nearby:["sheffield","manchester","york"],title:"Kampanie reklamowe Leeds â Google Ads dla polskich firm | DiSpace",description:"Kampanie reklamowe w Leeds: Google Ads, Meta Ads i TikTok Ads dla polskich firm w Yorkshire. Konfiguracja konwersji, optymalizacja CPC, raport co miesiÄ
c.",label:"Kampanie reklamowe â Leeds (PL)"},{slug:"liverpool",city:"Liverpool",locative:"w Liverpoolu",region:"Merseyside, Anglia",marketNote:"W Liverpoolu Åwietnie konwertujÄ
kampanie z wyraźnÄ
cenÄ
i terminem w tekÅcie reklamy â rynek jest wrażliwy cenowo, a klienci decydujÄ
szybko, czÄsto z telefonu.",industries:["usÅugi dla domu","transport","beauty","gastronomia","fitness"],budgetNote:"Start w Liverpoolu to £300â£500 miesiÄcznie budżetu mediowego na jeden kanaÅ.",nearby:["manchester","chester","leeds"],title:"Kampanie reklamowe Liverpool â reklama w Google i Meta | DiSpace",description:"Kampanie reklamowe Liverpool dla polskich firm: Google Ads, Facebook i Instagram, TikTok. Ceny w tekstach reklam, mierzone telefony i formularze. Od £390/mc.",label:"Kampanie reklamowe â Liverpool (PL)"},{slug:"glasgow",city:"Glasgow",locative:"w Glasgow",region:"Szkocja",marketNote:"Glasgow to najwiÄkszy rynek w Szkocji i najtaÅsze klikniÄcia wÅród dużych miast UK â dobrze poprowadzona kampania potrafi tu daÄ koszt zapytania o poÅowÄ niższy niż w Londynie.",industries:["budownictwo i remonty","transport i przeprowadzki","beauty","usÅugi ksiÄgowe","gastronomia"],budgetNote:"Budżet startowy w Glasgow to £250â£500 miesiÄcznie na kanaÅ â niski CPC pozwala zaczÄ
Ä ostrożnie i skalowaÄ po pierwszych zapytaniach.",nearby:["edinburgh","aberdeen","falkirk"],title:"Kampanie reklamowe Glasgow â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe w Glasgow dla polskich firm w Szkocji: Google Ads, Meta Ads, TikTok. Niskie CPC, kierowanie lokalne, obsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Glasgow (PL)"},{slug:"edinburgh",city:"Edynburg",locative:"w Edynburgu",region:"Szkocja",marketNote:"Edynburg ma wysokÄ
siÅÄ nabywczÄ
i silny sektor turystyczny â reklamy dziaÅajÄ
tu najlepiej, gdy podkreÅlajÄ
jakoÅÄ i opinie, a nie najniższÄ
cenÄ.",industries:["usÅugi premium dla domu","turystyka i noclegi","beauty i wellness","usÅugi profesjonalne","gastronomia"],budgetNote:"Start w Edynburgu to £350â£600 miesiÄcznie budżetu mediowego; sezon turystyczny (sierpieÅ) wymaga wyższych stawek.",nearby:["glasgow","falkirk","livingston"],title:"Kampanie reklamowe Edynburg â reklama Google i Facebook | DiSpace",description:"Kampanie reklamowe Edynburg: Google Ads, Meta Ads i TikTok dla polskich firm w Szkocji. Komunikacja premium, mierzone konwersje, raport miesiÄczny. Od £390/mc.",label:"Kampanie reklamowe â Edynburg (PL)"},{slug:"aberdeen",city:"Aberdeen",locative:"w Aberdeen",region:"Szkocja",marketNote:"Aberdeen to rynek mocno powiÄ
zany z sektorem offshore â mniejsza konkurencja reklamowa oznacza tanie klikniÄcia, ale liczba zapytaÅ jest ograniczona, wiÄc kampanie prowadzimy oszczÄdnie i precyzyjnie.",industries:["usÅugi techniczne i offshore","budownictwo","transport","beauty","usÅugi dla firm"],budgetNote:"W Aberdeen zwykle wystarcza £250â£400 miesiÄcznie budżetu mediowego, żeby pokryÄ caÅe zapotrzebowanie na frazy usÅugowe.",nearby:["glasgow","edinburgh","dundee"],title:"Kampanie reklamowe Aberdeen â Google Ads dla firm | DiSpace",description:"Kampanie reklamowe w Aberdeen dla polskich firm: Google Ads, Meta Ads, TikTok. Tanie klikniÄcia, precyzyjne kierowanie, obsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Aberdeen (PL)"},{slug:"dundee",city:"Dundee",locative:"w Dundee",region:"Szkocja",marketNote:"Dundee to mniejszy rynek, na którym jedna dobrze ustawiona kampania w Google zwykle wystarcza, żeby pojawiaÄ siÄ przy wiÄkszoÅci zapytaÅ o danÄ
usÅugÄ.",industries:["usÅugi dla domu","beauty","gastronomia","transport","opieka"],budgetNote:"Budżet £200â£400 miesiÄcznie zazwyczaj pokrywa w Dundee caÅy ruch komercyjny dla jednej usÅugi.",nearby:["aberdeen","edinburgh","glasgow"],title:"Kampanie reklamowe Dundee â reklama w Google i Meta | DiSpace",description:"Kampanie reklamowe Dundee: Google Ads, Facebook i Instagram dla polskich firm w Szkocji. MaÅy budżet, peÅne pokrycie fraz lokalnych. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Dundee (PL)"}
69,{slug:"falkirk",city:"Falkirk",locative:"w Falkirk",region:"Szkocja",marketNote:"Falkirk i okolice obsÅugujemy promieniem kierowania obejmujÄ
cym Stirling, Grangemouth i Livingston â samo miasto jest zbyt maÅe, żeby kampania zebraÅa wystarczajÄ
co danych.",industries:["remonty","transport","usÅugi sprzÄ
tajÄ
ce","beauty","mechanika"],budgetNote:"Start w Falkirk to £200â£350 miesiÄcznie z rozszerzonym promieniem kierowania na okoliczne miasta.",nearby:["glasgow","edinburgh","livingston"],title:"Kampanie reklamowe Falkirk â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe Falkirk dla polskich firm: Google Ads i Meta Ads z kierowaniem na Stirling, Grangemouth i Livingston. ObsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Falkirk (PL)"},{slug:"livingston",city:"Livingston",locative:"w Livingston",region:"Szkocja",marketNote:"Livingston leży miÄdzy Edynburgiem a Glasgow, wiÄc kampanie ustawiamy tak, żeby ÅapaÅy zapytania z obu kierunków, bez konkurowania o najdroższe frazy w centrum Edynburga.",industries:["usÅugi dla domu","logistyka","beauty","gastronomia","usÅugi techniczne"],budgetNote:"Budżet startowy w Livingston to £200â£400 miesiÄcznie, zwykle z kierowaniem na West Lothian.",nearby:["edinburgh","glasgow","falkirk"],title:"Kampanie reklamowe Livingston â reklama Google UK | DiSpace",description:"Kampanie reklamowe Livingston: Google Ads i Meta Ads dla polskich firm w West Lothian. Kierowanie miÄdzy Edynburgiem a Glasgow. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Livingston (PL)"},{slug:"bristol",city:"Bristol",locative:"w Bristolu",region:"South West, Anglia",marketNote:"Bristol to rynek z dużym udziaÅem mÅodszych klientów i firm kreatywnych â bardzo dobrze dziaÅa tu poÅÄ
czenie Google Ads z krótkimi wideo na Instagramie i TikToku.",industries:["usÅugi kreatywne","remonty","gastronomia","fitness","e-commerce"],budgetNote:"Start w Bristolu to £350â£600 miesiÄcznie budżetu mediowego, najlepiej podzielonego miÄdzy Google i Meta.",nearby:["cardiff","swindon","southampton"],title:"Kampanie reklamowe Bristol â Google, Meta i TikTok Ads | DiSpace",description:"Kampanie reklamowe w Bristolu dla polskich firm: Google Ads, Meta Ads i TikTok Ads. Wideo pionowe, mierzone konwersje, obsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Bristol (PL)"},{slug:"nottingham",city:"Nottingham",locative:"w Nottingham",region:"East Midlands, Anglia",marketNote:"Nottingham i East Midlands to rynek usÅug dla domu i logistyki â kampanie prowadzimy tu z harmonogramem dopasowanym do godzin, w których firma faktycznie odbiera telefony.",industries:["usÅugi dla domu","logistyka i magazyny","beauty","gastronomia","budownictwo"],budgetNote:"Budżet startowy w Nottingham to £300â£500 miesiÄcznie na jeden kanaÅ.",nearby:["birmingham","sheffield","peterborough"],title:"Kampanie reklamowe Nottingham â reklama Google i Facebook | DiSpace",description:"Kampanie reklamowe Nottingham: Google Ads, Meta Ads i TikTok dla polskich firm w East Midlands. Harmonogram pod telefony, raport miesiÄczny. Od £390/mc.",label:"Kampanie reklamowe â Nottingham (PL)"},{slug:"sheffield",city:"Sheffield",locative:"w Sheffield",region:"South Yorkshire, Anglia",marketNote:"Sheffield ma stosunkowo tanie klikniÄcia i lojalnych klientów lokalnych â po pierwszych miesiÄ
cach reklamy warto doÅożyÄ pozycjonowanie, żeby czÄÅÄ zapytaÅ przychodziÅa bezpÅatnie.",industries:["remonty","mechanika","usÅugi sprzÄ
tajÄ
ce","gastronomia","opieka"],budgetNote:"Start w Sheffield to £250â£450 miesiÄcznie budżetu mediowego.",nearby:["leeds","manchester","nottingham"],title:"Kampanie reklamowe Sheffield â Google Ads dla polskich firm | DiSpace",description:"Kampanie reklamowe Sheffield: Google Ads i Meta Ads dla polskich firm w Yorkshire. Tanie klikniÄcia, mierzone telefony, obsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Sheffield (PL)"},{slug:"coventry",city:"Coventry",locative:"w Coventry",region:"West Midlands, Anglia",marketNote:"Coventry obsÅugujemy razem z Rugby, Nuneaton i Leamington Spa â jedna kampania z promieniem kierowania daje wiÄcej zapytaÅ niż kilka wÄ
skich kampanii miejskich.",industries:["motoryzacja","logistyka","usÅugi dla domu","beauty","budownictwo"],budgetNote:"Budżet startowy w Coventry to £250â£450 miesiÄcznie z kierowaniem na okoliczne miasta.",nearby:["birmingham","northampton","nottingham"],title:"Kampanie reklamowe Coventry â reklama w Google i Meta | DiSpace",description:"Kampanie reklamowe Coventry dla polskich firm: Google Ads, Meta Ads, TikTok. Kierowanie na Rugby, Nuneaton i Leamington Spa. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Coventry (PL)"},{slug:"northampton",city:"Northampton",locative:"w Northampton",region:"East Midlands, Anglia",marketNote:"Northampton to silny rynek magazynowy i budowlany z dużÄ
spoÅecznoÅciÄ
polskÄ
â dobrze dziaÅajÄ
tu kampanie prowadzone równolegle po polsku i po angielsku.",industries:["budownictwo","magazyny i logistyka","usÅugi dla domu","beauty","transport"],budgetNote:"Start w Northampton to £250â£450 miesiÄcznie, zwykle w podziale na dwa jÄzyki reklam.",nearby:["coventry","luton","peterborough"],title:"Kampanie reklamowe Northampton â Google Ads PL i EN | DiSpace",description:"Kampanie reklamowe Northampton: Google Ads i Meta Ads po polsku i angielsku. Kierowanie lokalne, mierzone zapytania, obsÅuga od £390/mc w GBP.",label:"Kampanie reklamowe â Northampton (PL)"},{slug:"peterborough",city:"Peterborough",locative:"w Peterborough",region:"Cambridgeshire, Anglia",marketNote:"Peterborough ma jednÄ
z najwiÄkszych spoÅecznoÅci polskich w Anglii â kampanie po polsku majÄ
tu wyjÄ
tkowo niski koszt zapytania, bo konkurencja o takie frazy jest minimalna.",industries:["usÅugi dla domu","transport","gastronomia","beauty","budownictwo"],budgetNote:"Budżet £200â£400 miesiÄcznie zwykle wystarcza w Peterborough na peÅne pokrycie fraz polskojÄzycznych.",nearby:["northampton","nottingham","luton"],title:"Kampanie reklamowe Peterborough â reklama po polsku | DiSpace",description:"Kampanie reklamowe Peterborough: Google Ads i Meta Ads po polsku dla lokalnej spoÅecznoÅci. Niski koszt zapytania, obsÅuga po polsku od £390/mc.",label:"Kampanie reklamowe â Peterborough (PL)"},{slug:"luton",city:"Luton",locative:"w Luton",region:"Bedfordshire, Anglia",marketNote:"Luton leży w zasiÄgu Londynu, wiÄc kampanie ustawiamy tak, żeby nie wchodziÅy w najdroższe aukcje stoÅeczne, a jednoczeÅnie ÅapaÅy klientów z Dunstable i St Albans.",industries:["transport i lotnisko","usÅugi dla domu","beauty","gastronomia","budownictwo"],budgetNote:"Start w Luton to £250â£450 miesiÄcznie budżetu mediowego z wykluczeniem centrum Londynu.",nearby:["londyn","northampton","peterborough"],title:"Kampanie reklamowe Luton â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe Luton dla polskich firm: Google Ads, Meta Ads, TikTok. Kierowanie na Dunstable i St Albans bez drogich aukcji londyÅskich. Od £390/mc.",label:"Kampanie reklamowe â Luton (PL)"},{slug:"reading",city:"Reading",locative:"w Reading",region:"Berkshire, Anglia",marketNote:"Reading i Thames Valley to rynek zamożny i technologiczny â klikniÄcia sÄ
drogie, wiÄc liczy siÄ bardzo dobra strona docelowa i szybka reakcja na zapytanie.",industries:["usÅugi premium dla domu","IT i B2B","beauty","opieka","transport"],budgetNote:"Start w Reading to £400â£700 miesiÄcznie budżetu mediowego â wyższe CPC rekompensuje wysoka wartoÅÄ zlecenia.",nearby:["londyn","slough","
69swindon"],title:"Kampanie reklamowe Reading â Google Ads dla firm UK | DiSpace",description:"Kampanie reklamowe Reading: Google Ads i Meta Ads dla polskich firm w Thames Valley. Wysoka wartoÅÄ zlecenia, dopracowane strony docelowe. Od £390/mc.",label:"Kampanie reklamowe â Reading (PL)"},{slug:"slough",city:"Slough",locative:"w Slough",region:"Berkshire, Anglia",marketNote:"Slough to jedno z najbardziej wielonarodowych miast w UK i duża spoÅecznoÅÄ polska â kampanie po polsku i po angielsku prowadzimy tu równolegle, z osobnymi zestawami reklam.",industries:["budownictwo","transport i kurierzy","usÅugi dla domu","beauty","gastronomia"],budgetNote:"Budżet startowy w Slough to £250â£500 miesiÄcznie w podziale na dwa jÄzyki reklam.",nearby:["londyn","reading","luton"],title:"Kampanie reklamowe Slough â reklama Google po polsku | DiSpace",description:"Kampanie reklamowe Slough: Google Ads i Meta Ads po polsku i angielsku. Osobne zestawy reklam, mierzone telefony i formularze. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Slough (PL)"},{slug:"southampton",city:"Southampton",locative:"w Southampton",region:"Hampshire, Anglia",marketNote:"Southampton i Portsmouth to rynek portowy i turystyczny z wyraźnÄ
sezonowoÅciÄ
â budżety planujemy z wyprzedzeniem pod wysoki sezon letni.",industries:["usÅugi dla domu","transport morski i logistyka","gastronomia","beauty","turystyka"],budgetNote:"Start w Southampton to £300â£500 miesiÄcznie, z podniesieniem budżetu w miesiÄ
cach letnich.",nearby:["bristol","reading","londyn"],title:"Kampanie reklamowe Southampton â Google i Meta Ads | DiSpace",description:"Kampanie reklamowe Southampton: Google Ads, Meta Ads i TikTok dla polskich firm w Hampshire. Budżety pod sezon letni, raport co miesiÄ
c. Od £390/mc.",label:"Kampanie reklamowe â Southampton (PL)"},{slug:"cardiff",city:"Cardiff",locative:"w Cardiff",region:"Walia",marketNote:"Cardiff to najwiÄkszy rynek w Walii, z relatywnie niskÄ
konkurencjÄ
reklamowÄ
â dobrze prowadzona kampania szybko zbiera tu udziaÅ w wyÅwietleniach powyżej 60%.",industries:["usÅugi dla domu","budownictwo","gastronomia","beauty","eventy"],budgetNote:"Budżet startowy w Cardiff to £250â£450 miesiÄcznie na jeden kanaÅ.",nearby:["bristol","swansea","southampton"],title:"Kampanie reklamowe Cardiff â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe Cardiff dla polskich firm w Walii: Google Ads, Meta Ads, TikTok. Niska konkurencja, wysoki udziaÅ w wyÅwietleniach. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Cardiff (PL)"},{slug:"swansea",city:"Swansea",locative:"w Swansea",region:"Walia",marketNote:"Swansea to mniejszy rynek, w którym jedna kampania w Google plus remarketing na Facebooku zwykle w peÅni pokrywa lokalne zapotrzebowanie.",industries:["usÅugi dla domu","remonty","gastronomia","beauty","transport"],budgetNote:"Start w Swansea to £200â£350 miesiÄcznie budżetu mediowego.",nearby:["cardiff","bristol","swindon"],title:"Kampanie reklamowe Swansea â reklama Google UK | DiSpace",description:"Kampanie reklamowe Swansea: Google Ads i remarketing Meta dla polskich firm w Walii. MaÅy budżet, peÅne pokrycie fraz lokalnych. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Swansea (PL)"},{slug:"belfast",city:"Belfast",locative:"w BelfaÅcie",region:"Irlandia PóÅnocna",marketNote:"Belfast to osobny rynek reklamowy z niższÄ
konkurencjÄ
i innym zachowaniem klientów niż w Anglii â kampanie ustawiamy wyÅÄ
cznie na IrlandiÄ PóÅnocnÄ
, żeby nie mieszaÄ danych z resztÄ
UK.",industries:["usÅugi dla domu","budownictwo","transport","gastronomia","beauty"],budgetNote:"Budżet startowy w BelfaÅcie to £250â£450 miesiÄcznie na jeden kanaÅ.",nearby:["glasgow","liverpool","manchester"],title:"Kampanie reklamowe Belfast â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe Belfast dla polskich firm w Irlandii PóÅnocnej: Google Ads, Meta Ads, TikTok. Osobne kampanie na NI, raport co miesiÄ
c. Od £390/mc.",label:"Kampanie reklamowe â Belfast (PL)"},{slug:"swindon",city:"Swindon",locative:"w Swindon",region:"Wiltshire, Anglia",marketNote:"Swindon obsÅugujemy z promieniem obejmujÄ
cym Oxford i Cheltenham â dziÄki temu kampania zbiera wystarczajÄ
co konwersji, żeby algorytm mógÅ siÄ uczyÄ.",industries:["motoryzacja","logistyka","usÅugi dla domu","beauty","budownictwo"],budgetNote:"Start w Swindon to £250â£400 miesiÄcznie z rozszerzonym promieniem kierowania.",nearby:["bristol","reading","cardiff"],title:"Kampanie reklamowe Swindon â reklama Google i Facebook | DiSpace",description:"Kampanie reklamowe Swindon: Google Ads i Meta Ads dla polskich firm w Wiltshire. Kierowanie na Oxford i Cheltenham, mierzone konwersje. Od £390/mc.",label:"Kampanie reklamowe â Swindon (PL)"},{slug:"chester",city:"Chester",locative:"w Chester",region:"Cheshire, Anglia",marketNote:"Chester to rynek zamożniejszy niż sÄ
siednie miasta i mocno turystyczny â reklamy opieramy na jakoÅci wykonania i opiniach, nie na najniższej cenie.",industries:["usÅugi premium dla domu","turystyka","gastronomia","beauty","eventy"],budgetNote:"Budżet startowy w Chester to £250â£450 miesiÄcznie na jeden kanaÅ.",nearby:["liverpool","manchester","cardiff"],title:"Kampanie reklamowe Chester â Google Ads i Meta Ads | DiSpace",description:"Kampanie reklamowe Chester dla polskich firm: Google Ads, Meta Ads i TikTok. Komunikacja premium, kierowanie na Cheshire i okolice. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â Chester (PL)"}
69,{slug:"york",city:"York",locative:"w York",region:"North Yorkshire, Anglia",marketNote:"York żyje turystykÄ
, wiÄc kampanie dla gastronomii i usÅug wokóŠturystyki planujemy z wyraźnÄ
sezonowoÅciÄ
, a dla usÅug dla domu prowadzimy je równo przez caÅy rok.",industries:["turystyka i gastronomia","usÅugi dla domu","beauty","remonty","eventy"],budgetNote:"Start w York to £200â£400 miesiÄcznie, z wyższym budżetem w sezonie turystycznym.",nearby:["leeds","sheffield","manchester"],title:"Kampanie reklamowe York â reklama w Google i Meta | DiSpace",description:"Kampanie reklamowe York: Google Ads, Meta Ads i TikTok dla polskich firm w North Yorkshire. Plan sezonowy, mierzone zapytania. ObsÅuga od £390/mc.",label:"Kampanie reklamowe â York (PL)"}];oP.map(t=>t.slug);function Ux(t){return`/kampanie-reklamowe-${t}`}function Lx(t){return oP.find(e=>e.slug===t)}const sV=()=>W(()=>import("./kampanie-reklamowe-__city_-BNPK92-w.js"),__vite__mapDeps([120,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74,77,115,76])),lV=()=>W(()=>Promise.resolve().then(()=>FX),void 0),cV=()=>W(()=>Promise.resolve().then(()=>HX),void 0),uV=q()({loader:async({params:t})=>{const e=Lx(t.city);if(!e)throw Ve();let a=null;try{a=await $e({data:{path:Ux(e.slug)}})}catch{a=null}return{override:a}},head:({params:t,loaderData:e})=>{const a=Lx(t.city);if(!a)return{meta:[{title:"DiSpace"},{name:"robots",content:"noindex"}]};const i=Ux(a.slug),r=`${re}${i}`,s=Ie({path:i,override:e?.override??null,defaultTitle:a.title,defaultDescription:a.description});return{...s,scripts:[...s.scripts,aa({name:`Kampanie reklamowe ${a.city}`,description:a.description,url:r,serviceType:"Advertising campaign management",areaServed:[a.city,a.region,"GB"]}),Ea(rV(a)),Re([{name:"DiSpace",url:re},{name:"Kampanie reklamowe UK",url:`${re}/kampanie-reklamowe-uk`},{name:`Kampanie reklamowe ${a.city}`,url:r}])]}},notFoundComponent:G(cV,"notFoundComponent"),errorComponent:G(lV,"errorComponent"),component:G(sV,"component")}),dV=()=>W(()=>import("./kontakt-DtqBFgK5.js"),[]),pV=q()({beforeLoad:()=>{throw Kt({to:"/pl/kontakt",code:301,throw:!0})},component:G(dV,"component")}),rP="litery-3d-led-efekt-halo-czy-front-lit",hV=()=>W(()=>import("./litery-3d-led-efekt-halo-czy-front-lit-D5lC3S4Z.js"),__vite__mapDeps([121,61,79,32,122,74])),sP=`/${rP}`,sw=`${Me}${sP}`,yV=q()({loader:()=>{const t=ct(rP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"litery 3d led efekt halo, halo lit letters, front lit litery 3d, litery podÅwietlane od tyÅu, litery Åwietlne 3d"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:sw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(sP),scripts:[rt({url:sw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Litery 3D Åwietlne",url:`${re}/litery-3d-swietlne`},{name:e.title,url:sw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(hV,"component")}),Kx="/assets/led-letters-fumo-gold-clean-DSm0l16x.jpg",mV="/assets/led-letters-fumo-gold-clean-640-0PP-QDDY.jpg",fV="/assets/led-letters-fumo-gold-clean-960-COr-6M6G.jpg",wV=1,gV="91497d7b-56aa-4ea9-8b68-52f009b7cccd",kV="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",zV="/__l5e/assets-v1/91497d7b-56aa-4ea9-8b68-52f009b7cccd/led-letters-gold-restaurant.jpg",bV="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/91497d7b-56aa-4ea9-8b68-52f009b7cccd/led-letters-gold-restaurant.jpg",jV="led-letters-gold-restaurant.jpg",vV=167892,SV="image/jpeg",xV="2026-07-30T16:41:31Z",_V={version:wV,asset_id:gV,project_id:kV,url:zV,r2_key:bV,original_filename:jV,size:vV,content_type:SV,created_at:xV},TV=1,EV="2db06153-3d04-4efe-9731-ac7dd96f91f8",AV="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",PV="/__l5e/assets-v1/2db06153-3d04-4efe-9731-ac7dd96f91f8/led-letters-stainless-steel.jpg",CV="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/2db06153-3d04-4efe-9731-ac7dd96f91f8/led-letters-stainless-steel.jpg",RV="led-letters-stainless-steel.jpg",DV=115361,OV="image/jpeg",UV="2026-07-30T16:41:35Z",LV={version:TV,asset_id:EV,project_id:AV,url:PV,r2_key:CV,original_filename:RV,size:DV,content_type:OV,created_at:UV},KV=1,MV="b29adac6-9b55-494a-af89-0a03676d838d",NV="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",BV="/__l5e/assets-v1/b29adac6-9b55-494a-af89-0a03676d838d/led-letters-facade-modern-mon.jpg",$V="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/b29adac6-9b55-494a-af89-0a03676d838d/led-letters-facade-modern-mon.jpg",IV="led-letters-facade-modern-mon.jpg",WV=195251,GV="image/jpeg",VV="2026-07-30T16:41:39Z",FV={version:KV,asset_id:MV,project_id:NV,url:BV,r2_key:$V,original_filename:IV,size:WV,content_type:GV,created_at:VV},HV=1,qV="1aa00faa-9c41-44fe-8848-10cc87a3ef97",ZV="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",YV="/__l5e/assets-v1/1aa00faa-9c41-44fe-8848-10cc87a3ef97/led-letters-luna-club.jpg",JV="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/1aa00faa-9c41-44fe-8848-10cc87a3ef97/led-letters-luna-club.jpg",QV="led-letters-luna-club.jpg",XV=192922,eF="image/jpeg",tF="2026-07-30T16:41:45Z",aF={version:HV,asset_id:qV,project_id:ZV,url:YV,r2_key:JV,original_filename:QV,size:XV,content_type:eF,created_at:tF},iF=1,nF="5d2f94e2-fff6-4321-adec-2352064945d7",oF="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",rF="/__l5e/assets-v1/5d2f94e2-fff6-4321-adec-2352064945d7/led-letters-fumo-halo.jpg",sF="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/5d2f94e2-fff6-4321-adec-2352064945d7/led-letters-fumo-halo.jpg",lF="led-letters-fumo-halo.jpg",cF=158867,uF="image/jpeg",dF="2026-07-30T16:41:52Z",pF={version:iF,asset_id:nF,project_id:oF,url:rF,r2_key:sF,original_filename:lF,size:cF,content_type:uF,created_at:dF},hF=1,yF="731f67fb-9a84-40ed-a6f4-3e35e6e9c9c8",mF="a9fcbe36-d8ba-4583-b07f-000d6f8b4d64",fF="/__l5e/assets-v1/731f67fb-9a84-40ed-a6f4-3e35e6e9c9c8/led-letters-modern-mon-front.jpg",wF="a/v1/a9fcbe36-d8ba-4583-b07f-000d6f8b4d64/731f67fb-9a84-40ed-a6f4-3e35e6e9c9c8/led-letters-modern-mon-front.jpg",gF="led-letters-modern-mon-front.jpg",kF=217853,zF="image/jpeg",bF="2026-07-30T16:41:55Z",jF={version:hF,asset_id:yF,project_id:mF,url:fF,r2_key:wF,original_filename:gF,size:kF,content_type:zF,created_at:bF},lP=[{q:"Ile kosztujÄ
litery 3D Åwietlne?",a:"Cena liter 3D LED zależy od wysokoÅci znaku, materiaÅu (stal nierdzewna, akryl, plexi) i typu podÅwietlenia. Mniejsze zestawy liter przestrzennych zaczynajÄ
siÄ od ok. £450, a duże szyldy ze stali nierdzewnej z efektem halo wyceniamy indywidualnie. BezpÅatnÄ
wycenÄ wysyÅamy w 24 h."},{q:"Czym różni siÄ efekt halo (echo) od front lit?",a:"Front lit to litery 3D LED ÅwiecÄ
ce przodem â czytelne z dużej odlegÅoÅci, idealne na fasady sklepów. Halo (echo) to podÅwietlenie od tyÅu: litera pozostaje ciemna lub metalowa, a wokóŠniej powstaje poÅwiata na Åcianie. Efekt halo jest bardziej premium i Åwietnie sprawdza siÄ w recepcjach, restauracjach i klubach."},{q:"Czy litery 3D ze stali nierdzewnej nadajÄ
siÄ na zewnÄ
trz?",a:"Tak. Używamy stali nierdzewnej 304/316, moduÅów LED w klasie IP65-IP67 i zasilaczy przystosowanych do warunków zewnÄtrznych, dziÄki czemu szyld wytrzymuje brytyjski klimat â deszcz, wiatr i wilgoÄ."},{q:"Jak dÅugo trwa realizacja liter 3D LED?",a:"Standardowo 10-1
695 dni roboczych od akceptacji projektu i wizualizacji 3D. Przy pilnych realizacjach dla restauracji i eventów możliwy jest tryb ekspresowy."},{q:"Czy montujecie litery Åwietlne w caÅej UK?",a:"Tak. Produkujemy i montujemy litery 3D LED w Szkocji (Glasgow, Edynburg, Aberdeen) oraz w caÅej Anglii i Walii. Realizujemy też wysyÅkÄ z instrukcjÄ
montażu i szablonem."},{q:"Czy potrzebujÄ pozwolenia na szyld (advertisement consent)?",a:"Dla podÅwietlanych szyldów na fasadzie zwykle wymagane jest advertisement consent od lokalnego council. Pomagamy przygotowaÄ wizualizacje i rysunki techniczne potrzebne do wniosku."}],cP=[{q:"How much do 3D LED letters cost?",a:"Pricing for 3D LED letters depends on letter height, material (stainless steel, acrylic, perspex) and the lighting type. Smaller built-up letter sets start from around £450, while large stainless steel 3D LED letters with a halo effect are quoted individually. Free quote within 24 h."},{q:"What is the difference between halo (echo) and front lit 3D LED letters?",a:"Front lit 3D LED letters glow through the face â the most readable option from a distance and perfect for shopfronts. Halo (echo) letters are back lit: the face stays solid metal while light spills onto the wall behind. Halo signage looks premium and works beautifully in receptions, restaurants and clubs."},{q:"Are stainless steel 3D LED letters suitable for outdoor use?",a:"Yes. We use 304/316 stainless steel, IP65-IP67 rated LED modules and outdoor-rated drivers, so the sign copes with the UK climate â rain, wind and humidity."},{q:"What is the lead time for 3D LED letters?",a:"Typically 10-15 working days from approval of the design and 3D visual. Express production is available for restaurant openings and events."},{q:"Do you install illuminated letters across the UK?",a:"Yes. We fabricate and install 3D LED letters in Scotland (Glasgow, Edinburgh, Aberdeen) and throughout England and Wales. We also ship nationwide with a fitting template and instructions."},{q:"Do I need advertisement consent for an illuminated sign?",a:"Illuminated fascia signage usually requires advertisement consent from the local council. We prepare the visuals and technical drawings needed for the application."}],vF=[{asset:_V,pl:"ZÅote litery 3D LED ze stali nierdzewnej dla restauracji indyjskiej",en:"Gold stainless steel 3D LED letters for an Indian restaurant"},{asset:LV,pl:"Litery przestrzenne 3D LED ze stali nierdzewnej przed montażem",en:"Stainless steel 3D LED built-up letters before installation"},{asset:aF,pl:"Litery 3D LED z efektem halo (echo) w recepcji klubu The Luna Club",en:"Halo (echo) lit 3D LED letters in The Luna Club reception"},{asset:pF,pl:"ZÅote litery 3D Åwietlne z podÅwietleniem halo w restauracji Fumo",en:"Gold halo lit 3D LED letters in the Fumo restaurant"},{asset:jF,pl:"Front lit litery 3D LED na fasadzie hali Modern Mon",en:"Front lit 3D LED letters on the Modern Mon unit fascia"},{asset:FV,pl:"PodÅwietlany szyld 3D LED i grafika na witrynie showroomu",en:"Illuminated 3D LED sign and window graphics on a showroom"}],SF={pl:{eyebrow:"Design & Druk · Reklama zewnÄtrzna",h1a:"Litery 3D Åwietlne",h1b:"LED",h1c:"â efekt echo / halo",lead:"Projektujemy, produkujemy i montujemy litery 3D Åwietlne LED ze stali nierdzewnej dla firm w caÅej Wielkiej Brytanii. Front lit, halo (echo), side lit i wersje dwustronne â szyldy, które widaÄ z drugiej strony ulicy i które robiÄ
wrażenie w recepcji.",tags:["litery 3D LED","stal nierdzewna","efekt halo / echo","front lit","montaż w UK"],cta1:"Odbierz bezpÅatnÄ
wycenÄ",cta2:"Napisz do nas",ctaHref:"/pl/dispace-formularz",contactHref:"/pl/kontakt",typesH2:"Rodzaje liter 3D LED â halo, front lit i side lit",typesLead:"Dobieramy typ podÅwietlenia do miejsca montażu, marki i budżetu. Każdy wariant produkujemy jako litery przestrzenne z metalu lub akrylu.",types:[{t:"Halo / echo (back lit)",d:"Litery ze stali nierdzewnej podÅwietlane od tyÅu â miÄkka poÅwiata na Åcianie. Najbardziej premium efekt: recepcje, hotele, kluby, restauracje."},{t:"Front lit 3D LED letters",d:"ÅwiecÄ
ce lico z plexi lub akrylu w metalowym profilu. Maksymalna czytelnoÅÄ na fasadzie sklepu, salonu czy biura."},{t:"Side lit / trim lit",d:"Åwietlny kontur boków litery. Elegancki, dyskretny akcent â idealny do wnÄtrz o mocnej architekturze."},{t:"Front + halo (dual lit)",d:"Podwójne podÅwietlenie: ÅwiecÄ
ce lico i poÅwiata wokóŠznaku. Efekt, który wygrywa z konkurencyjnymi szyldami po zmroku."},{t:"Litery ze stali nierdzewnej bez podÅwietlenia",d:"ZÅoto szczotkowane, chrom, czerÅ PVD â litery 3D flat cut do wnÄtrz i witryn."},{t:"Neon LED i logotypy 3D",d:"Neony LED, logotypy przestrzenne i panele z podÅwietleniem â spójne z TwojÄ
identyfikacjÄ
wizualnÄ
."}],matH2:"MateriaÅy i wykonanie liter 3D ze stali nierdzewnej",materials:["Stal nierdzewna 304/316 â zÅoto PVD, chrom, czerÅ, szczotkowana","Akryl / plexi 3-10 mm, licowanie z foliÄ
rozpraszajÄ
cÄ
ÅwiatÅo","ModuÅy LED Samsung/Epistar, klasa IP65-IP67, 5 lat gwarancji","Zasilacze Mean Well, opcja sterownika i timera zmierzchowego","Montaż na dystansach, na raster lub na tacy (tray sign)","Barwa ÅwiatÅa 2700K-6500K, opcja RGB i sterowania z aplikacji"],processH2:"Jak powstaje Twój szyld 3D LED â krok po kroku",process:[{t:"1. Wycena i pomiar",d:"Analizujemy fasadÄ lub ÅcianÄ, wysokoÅÄ liter i przepisy lokalnego council. Wycena w 24 h."},{t:"2. Projekt i wizualizacja 3D",d:"Przygotowujemy render na zdjÄciu Twojego lokalu â widzisz efekt dzienny i nocny przed produkcjÄ
."},{t:"3. Produkcja",d:"CiÄcie laserem, giÄcie, spawanie i polerowanie stali, montaż moduÅów LED oraz testy szczelnoÅci."},{t:"4. Montaż i uruchomienie",d:"Montaż z podnoÅnika lub rusztowania, podÅÄ
czenie zasilania, regulacja ÅwiatÅa i przekazanie gwarancji."}],forWhoH2:"Dla kogo produkujemy litery Åwietlne",forWho:["Restauracje, bary i kawiarnie","Kluby, hotele i SPA","Salony beauty, barber shopy i kliniki","Showroomy, hale i biura","Sklepy i punkty usÅugowe","Eventy, targi i stoiska"],seoH2:"Litery 3D LED w Szkocji, Anglii i Walii",seoText:"Produkujemy i montujemy litery 3D Åwietlne w Glasgow, Edynburgu, Aberdeen, Londynie, Manchesterze i Birmingham â a wysyÅkÄ realizujemy w caÅej UK. Dla polskich firm w Wielkiej Brytanii prowadzimy caÅy proces po polsku: od projektu logo i identyfikacji wizualnej, przez wizualizacjÄ szyldu, po montaż i fakturÄ z UK. JeÅli dopiero budujesz markÄ, zacznij od projektu logo, a my przeÅożymy go na podÅwietlane litery przestrzenne.",faqH2:"Litery 3D Åwietlne â najczÄstsze pytania",galleryH2:"Realizacje liter 3D LED",relatedH2:"Zobacz również",related:[{href:"/pl/oferta/design-druk",label:"Design i druk â branding, materiaÅy reklamowe"},{href:"/projekt-logo-uk",label:"Projekt logo UK"},{href:"/identyfikacja-wizualna-uk",label:"Identyfikacja wizualna UK"},{href:"/banery-reklamowe-uk",label:"Banery reklamowe UK"},{href:"/rollupy",label:"Rollupy i systemy wystawiennicze"},{href:"/agencja-reklamowa-uk",label:"Agencja reklamowa UK"}],finalH2:"Zrobimy Twój szyld 3D LED od projektu po montaż",finalText:"WyÅlij nazwÄ marki i zdjÄcie miejsca montażu â odeÅlemy wizualizacjÄ i wycenÄ w 24 h."},en:{eyebrow:"Design & Print · Outdoor signage",h1a:"3D LED letters",h1b:"stainless steel",h1c:"â echo / halo effect",lead:"We design, fabricate and install stainless steel 3D LED letters for businesses across the UK. Front lit, halo (echo), side lit and dual-lit builds â signage that reads from across the street and looks premium in a reception.",tags:["3D LED letters","stainless steel","halo / echo effect","front lit","UK installation"],cta1:"Get a free quote",cta2:"Talk to us",ctaHref:"/en/dispace-form",contactHref:"/en/contact",typesH2:"Types of 3D LED letters â halo, front lit and side lit",typesLead:"We match the lighting style to the location, the brand and the budget. Every option is built as fabricated 3D letters in metal or acrylic.",types:[{t:"Halo / echo (back lit)",d:"Stainless steel letters lit from behind for a soft glow on the wall. The most premium look: receptions, hotels, clubs and restaurants."},{t:"Front lit 3D LED letters",d:"Illuminated acrylic or perspex face inside a metal return. Maximum readability on shopfronts, salons and offices."},{t:"Side lit / trim lit",d:"Light along the letter returns. An elegant, understated accent for interiors with strong architecture."},{t:"Front + halo (dual lit)",d:"Double illumination: a glowing face plus halo behind. The build that beats neighbouring signage after dark."},{t:"Non-illuminated stainless steel letters",d:"Brushed gold, chrome and black PVD flat cut 3D letters for interiors and window displays."},{t:"LED neon and 3D logos",d:"LED neon, fabricated 3D logos and illuminated panels, matched to your brand identity."}],matH2:"Materials and build quality of our stainless steel 3D LED letters",materials:["304/316 stainless steel â PVD gold, chrome, black, brushed finishes","3-10 mm acrylic / perspex faces with light-diffusing film","Samsung/Epistar LED modules, IP65-IP67 rated, 5-year warranty","Mean Well drivers, optional controller and dusk timer","Stand-off, raceway or tray sign mounting","2700K-6500K colour temperature, RGB and app control available"],processH2:"How your 3D LED sign is made â step by step",process:[{t:"1. Quote and survey",d:"We review the fascia or wall, letter height and local council rules. Quote within 24 h."},{t:"2. Design and 3D visual",d:"A render on a photo of your unit â you see the daytime and night-time effect before we build."}
69,{t:"3. Fabrication",d:"Laser cutting, folding, welding and polishing the steel, fitting LED modules and testing the seals."},{t:"4. Installation and handover",d:"Access platform or scaffold install, power connection, light tuning and warranty handover."}],forWhoH2:"Who we build illuminated letters for",forWho:["Restaurants, bars and coffee shops","Clubs, hotels and spas","Beauty salons, barbershops and clinics","Showrooms, industrial units and offices","Retail and service points","Events, trade shows and exhibition stands"],seoH2:"3D LED letters in Scotland, England and Wales",seoText:"We fabricate and install 3D LED letters in Glasgow, Edinburgh, Aberdeen, London, Manchester and Birmingham, and ship nationwide across the UK. If your brand is still taking shape, we can start with the logo and visual identity and then translate it into illuminated built-up letters â one studio for the whole job, invoiced from the UK.",faqH2:"3D LED letters â frequently asked questions",galleryH2:"3D LED letter projects",relatedH2:"See also",related:[{href:"/en/services/design-print",label:"Design & print â branding and marketing materials"},{href:"/en/services/web-shops",label:"Websites & online shops"},{href:"/en/services/marketing-seo",label:"Marketing & SEO"},{href:"/en/portfolio",label:"Portfolio"}],finalH2:"From concept to installed 3D LED sign",finalText:"Send us your brand name and a photo of the site â we will send a visual and a quote within 24 h."}};function fee({lang:t}){const e=SF[t],a=t==="pl"?lP:cP;return k.jsxs("main",{className:"bg-[#070C16] text-white",children:[k.jsxs("section",{className:"relative overflow-hidden pt-32 pb-20 md:pt-40 md:pb-28",children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{background:"radial-gradient(65% 60% at 20% 15%, rgba(224,164,88,0.18), transparent 70%), radial-gradient(55% 55% at 85% 70%, rgba(156,50,140,0.16), transparent 70%)"}}),k.jsxs("div",{className:"relative mx-auto grid max-w-7xl items-center gap-12 px-6 lg:grid-cols-2",children:[k.jsxs("div",{children:[k.jsx("span",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-[#3DB4C9]",children:e.eyebrow}),k.jsxs("h1",{className:"mt-5 text-4xl font-bold leading-[1.08] md:text-6xl",children:[e.h1a," ",k.jsx("span",{style:{background:"linear-gradient(135deg, #E0A458, #9C328C)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text"},children:e.h1b})," ",k.jsx("span",{className:"neon-script inline-block text-4xl leading-[1.5] md:text-6xl",children:e.h1c})]}),k.jsx("p",{className:"mt-6 max-w-xl text-base leading-relaxed text-white/70 md:text-lg",children:e.lead}),k.jsx("div",{className:"mt-7 flex flex-wrap gap-2",children:e.tags.map(i=>k.jsx("span",{className:"rounded-full border border-white/15 px-3 py-1 text-xs text-white/70",children:i},i))}),k.jsxs("div",{className:"mt-9 flex flex-wrap gap-3",children:[k.jsxs(Xi,{to:e.ctaHref,className:"inline-flex items-center gap-2 rounded-full bg-white px-7 py-3.5 text-sm font-semibold text-[#070C16] transition hover:bg-[#E0A458]",children:[e.cta1," ",k.jsx($a,{size:18})]}),k.jsx(Xi,{to:e.contactHref,className:"inline-flex items-center gap-2 rounded-full border border-white/20 px-7 py-3.5 text-sm font-semibold text-white transition hover:border-white/50",children:e.cta2})]})]}),k.jsx("div",{className:"relative overflow-hidden rounded-3xl border border-white/10 bg-black/40 shadow-2xl",children:k.jsx("img",{className:"h-auto w-full object-contain",src:Kx,srcSet:`${mV} 640w, ${fV} 960w, ${Kx} 1296w`,sizes:"(max-width: 768px) 100vw, (max-width: 1280px) 50vw, 620px",width:1296,height:952,alt:t==="pl"?"ZÅote litery 3D Åwietlne ze stali nierdzewnej z efektem halo â restauracja Fumo":"Gold stainless steel 3D LED letters with halo effect â Fumo restaurant",loading:"eager",decoding:"async"})})]})]}),k.jsxs("section",{className:"mx-auto max-w-7xl px-6 py-20 md:py-24",children:[k.jsx("h2",{className:"max-w-3xl text-3xl font-bold md:text-4xl",children:e.typesH2}),k.jsx("p",{className:"mt-4 max-w-2xl text-white/70",children:e.typesLead}),k.jsx("div",{className:"mt-10 grid gap-5 md:grid-cols-2 lg:grid-cols-3",children:e.types.map(i=>k.jsxs("article",{className:"rounded-2xl border border-white/10 bg-white/[0.03] p-6 transition hover:border-[#
69E0A458]/50",children:[k.jsx("h3",{className:"text-lg font-semibold text-white",children:i.t}),k.jsx("p",{className:"mt-3 text-sm leading-relaxed text-white/65",children:i.d})]},i.t))})]}),k.jsxs("section",{className:"mx-auto max-w-7xl px-6 py-12 md:py-16",children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.galleryH2}),k.jsx("div",{className:"mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:vF.map(i=>k.jsx("div",{className:"group relative rounded-2xl p-[2px] transition-transform duration-500 hover:-translate-y-1",style:{background:"linear-gradient(135deg, #9C328C, #E0A458 55%, #3DB4C9)",boxShadow:"0 0 40px -16px rgba(224,164,88,0.8)"},children:k.jsx("div",{className:"overflow-hidden rounded-[0.9rem]",style:{background:"linear-gradient(160deg, #150B22, #070C16 60%, #1B0F2B)"},children:k.jsx("img",{src:i.asset.url,alt:t==="pl"?i.pl:i.en,loading:"lazy",decoding:"async",className:"h-60 w-full object-cover transition-transform duration-700 group-hover:scale-105"})})},i.asset.url))})]}),k.jsx("section",{className:"mx-auto max-w-7xl px-6 py-20 md:py-24",children:k.jsxs("div",{className:"grid gap-10 lg:grid-cols-2 lg:gap-16",children:[k.jsxs("div",{children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.matH2}),k.jsx("ul",{className:"mt-8 space-y-4",children:e.materials.map(i=>k.jsxs("li",{className:"flex items-start gap-3 text-white/75",children:[k.jsx(eB,{size:20,className:"mt-0.5 shrink-0 text-[#3DB4C9]"}),k.jsx("span",{children:i})]},i))})]}),k.jsxs("div",{children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.forWhoH2}),k.jsx("div",{className:"mt-8 grid gap-3 sm:grid-cols-2",children:e.forWho.map(i=>k.jsx("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3 text-sm text-white/75",children:i},i))})]})]})}),k.jsx("section",{className:"border-y border-white/10 bg-white/[0.02]",children:k.jsxs("div",{className:"mx-auto max-w-7xl px-6 py-20 md:py-24",children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.processH2}),k.jsx("div",{className:"mt-10 grid gap-5 md:grid-cols-2 lg:grid-cols-4",children:e.process.map(i=>k.jsxs("div",{className:"rounded-2xl border border-white/10 bg-[#070C16] p-6",children:[k.jsx("h3",{className:"text-base font-semibold text-[#E0A458]",children:i.t}),k.jsx("p",{className:"mt-3 text-sm leading-relaxed text-white/65",children:i.d})]},i.t))})]})}),k.jsxs("section",{className:"mx-auto max-w-4xl px-6 py-20 md:py-24",children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.seoH2}),k.jsx("p",{className:"mt-5 leading-relaxed text-white/70",children:e.seoText})]}),k.jsxs("section",{className:"mx-auto max-w-4xl px-6 pb-20 md:pb-24",children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.faqH2}),k.jsx("div",{className:"mt-8 space-y-4",children:a.map(i=>k.jsxs("details",{className:"group rounded-2xl border border-white/10 bg-white/[0.03] p-6",children:[k.jsx("summary",{className:"cursor-pointer list-none text-base font-semibold text-white marker:hidden",children:i.q}),k.jsx("p",{className:"mt-3 text-sm leading-relaxed text-white/65",children:i.a})]},i.q))})]}),k.jsxs("section",{className:"mx-auto max-w-7xl px-6 pb-20",children:[k.jsx("h2",{className:"text-2xl font-bold md:text-3xl",children:e.relatedH2}),k.jsx("div",{className:"mt-6 grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:e.related.map(i=>k.jsxs(Xi,{to:i.href,className:"flex items-center justify-between gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-5 py-4 text-sm text-white/80 transition hover:border-[#3DB4C9]/60 hover:text-white",children:[i.label," ",k.jsx($a,{size:16})]},i.href))})]}),k.jsxs("section",{className:"relative overflow-hidden border-t border-white/10 py-20 md:py-28",children:[k.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{background:"radial-gradient(50% 70% at 50% 0%, rgba(224,164,88,0.18), transparent 70%)"}}),k.jsxs("div",{className:"relative mx-auto max-w-3xl px-6 text-center",children:[k.jsx("h2",{className:"text-3xl font-bold md:text-4xl",children:e.finalH2}),k.jsx("p",{className:"mt-4 text-white/70",children:e.finalText}
69),k.jsxs(Xi,{to:e.ctaHref,className:"mt-8 inline-flex items-center gap-2 rounded-full bg-white px-8 py-4 text-sm font-semibold text-[#070C16] transition hover:bg-[#E0A458]",children:[e.cta1," ",k.jsx($a,{size:18})]})]})]})]})}const xF=()=>W(()=>import("./litery-3d-swietlne-BLiSWmcS.js"),__vite__mapDeps([123,61,122,74])),Mx="Litery 3D Åwietlne LED od £450 â stal, efekt halo | DiSpace UK",Nx="Litery 3D Åwietlne LED ze stali nierdzewnej â front lit, halo (echo) i side lit. Projekt, produkcja i montaż liter przestrzennych w caÅej UK. Ceny od £450, wycena w 24 h.",_F=q()({head:()=>({meta:[{title:Mx},{name:"description",content:Nx},{property:"og:title",content:Mx},{property:"og:description",content:Nx},{property:"og:type",content:"website"},{property:"og:locale",content:"pl_PL"},{property:"og:url",content:"https://dispace.uk/litery-3d-swietlne"},{name:"twitter:card",content:"summary_large_image"}],links:zt("/litery-3d-swietlne","/litery-3d-swietlne","/en/3d-led-letters"),scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:lP.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})},aa({name:"Litery 3D Åwietlne LED",description:"Projekt, produkcja i montaż liter 3D LED ze stali nierdzewnej â front lit, halo (echo), side lit. PodÅwietlane szyldy dla firm w UK.",url:"https://dispace.uk/litery-3d-swietlne",serviceType:"Illuminated signage / 3D LED letters",areaServed:["GB","IE"]}),Re([{name:"DiSpace",url:re},{name:"Design & druk",url:`${re}/pl/oferta/design-druk`},{name:"Litery 3D Åwietlne",url:`${re}/litery-3d-swietlne`}]),{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Product",name:"Litery 3D Åwietlne LED",description:"Litery przestrzenne 3D LED ze stali nierdzewnej i akrylu â front lit, halo (echo), side lit. Produkcja i montaż w caÅej Wielkiej Brytanii.",brand:{"@type":"Brand",name:"DiSpace"},category:"Illuminated signage",offers:{"@type":"AggregateOffer",priceCurrency:"GBP",lowPrice:"450",highPrice:"4500",offerCount:"5",availability:"https://schema.org/InStock",url:"https://dispace.uk/litery-3d-swietlne"}})}]}),component:G(xF,"component")}),uP="litery-3d-swietlne-cennik-uk",TF=()=>W(()=>import("./litery-3d-swietlne-cennik-uk-C4hfNGt3.js"),__vite__mapDeps([124,61,79,32,122,74])),dP=`/${uP}`,lw=`${Me}${dP}`,EF=q()({loader:()=>{const t=ct(uP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"litery 3d Åwietlne cennik, ile kosztujÄ
litery 3d led, litery przestrzenne led cena uk, podÅwietlany szyld cena"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:lw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(dP),scripts:[rt({url:lw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Litery 3D Åwietlne",url:`${re}/litery-3d-swietlne`},{name:e.title,url:lw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(TF,"component")}),pP="litery-przestrzenne-ze-stali-nierdzewnej-uk",AF=()=>W(()=>import("./litery-przestrzenne-ze-stali-nierdzewnej-uk-CaDEuT_2.js"),__vite__mapDeps([125,61,79,32,122,74])),hP=`/${pP}`,cw=`${Me}${hP}`,PF=q()({loader:()=>{const t=ct(pP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"litery przestrzenne ze stali nierdzewnej, stainless steel 3d led letters, litery 3d led stal 316, litery Åwietlne 3d uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:cw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}
69],links:nt(hP),scripts:[rt({url:cw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Litery 3D Åwietlne",url:`${re}/litery-3d-swietlne`},{name:e.title,url:cw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(AF,"component")}),Ls=Ze("microsoft-ads-management-uk"),CF=()=>W(()=>import("./microsoft-ads-management-uk-C_EHN3TG.js"),__vite__mapDeps([126,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),RF=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ls.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ls.slug),override:t?.override??null,defaultTitle:Ls.title,defaultDescription:Ls.description});return{...e,scripts:[...e.scripts,...gi("microsoft-ads-management-uk",Ls.title,Ls.description)]}},component:G(CF,"component")}),Ks=Ze("microsoft-ads-setup-uk"),DF=()=>W(()=>import("./microsoft-ads-setup-uk-oa_ZFt_L.js"),__vite__mapDeps([127,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),OF=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ks.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ks.slug),override:t?.override??null,defaultTitle:Ks.title,defaultDescription:Ks.description});return{...e,scripts:[...e.scripts,...gi("microsoft-ads-setup-uk",Ks.title,Ks.description)]}},component:G(DF,"component")}),Ms=Ze("microsoft-ads-uk"),UF=()=>W(()=>import("./microsoft-ads-uk-DIdX5gpX.js"),__vite__mapDeps([128,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,81,82,74])),LF=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(Ms.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:we(Ms.slug),override:t?.override??null,defaultTitle:Ms.title,defaultDescription:Ms.description});return{...e,scripts:[...e.scripts,...gi("microsoft-ads-uk",Ms.title,Ms.description)]}},component:G(UF,"component")}),yP="migracja-sklepu-do-uk",KF=()=>W(()=>import("./migracja-sklepu-do-uk-DdCUSc0A.js"),__vite__mapDeps([129,61,79,32,130,74])),mP=`/${yP}`,uw=`${Me}${mP}`,MF=q()({loader:()=>{const t=ct(yP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"migracja sklepu do uk, przeniesienie sklepu z polski do uk, migracja etsy do woocommerce uk, migracja allegro uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:uw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(mP),scripts:[rt({url:uw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Sklepy internetowe UK",url:`${re}/sklepy-internetowe-uk`},{name:e.title,url:uw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(KF,"component")}),mp=Ze("obsluga-social-media-uk"),NF=()=>W(()=>import("./obsluga-social-media-uk-D7_C5fIM.js"),__vite__mapDeps([131,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74,96])),BF=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(mp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(mp.slug),override:t?.override??null,defaultTitle:mp.title,defaultDescription:mp.description}),component:G(NF,"component")}),$F=()=>W(()=>import("./paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel-CqBmUu77.js"),__vite__mapDeps([132,61,79,32])),fP="paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel",wP=`/${fP}`,dw=`${Me}${wP}`,IF=q()({loader:()=>{const t=ct(fP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"paczki do polski, przeprowadzki szkocja polska, nova parcel, kurier uk polska, przeprowadzka uk polska, paczka do polski z anglii"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:dw}
69,{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(wP),scripts:[rt({url:dw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:dw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G($F,"component")}),WF=()=>W(()=>import("./pl-ICPOC4M0.js"),__vite__mapDeps([133,61])),GF=q()({component:G(WF,"component")}),gP="podswietlany-szyld-uk-advertisement-consent",VF=()=>W(()=>import("./podswietlany-szyld-uk-advertisement-consent-BggyjX88.js"),__vite__mapDeps([134,61,79,32,122,74])),kP=`/${gP}`,pw=`${Me}${kP}`,FF=q()({loader:()=>{const t=ct(gP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"podÅwietlany szyld uk, advertisement consent, pozwolenie na szyld uk, litery 3d Åwietlne pozwolenie"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:pw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(kP),scripts:[rt({url:pw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Litery 3D Åwietlne",url:`${re}/litery-3d-swietlne`},{name:e.title,url:pw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(VF,"component")}),HF=()=>W(()=>import("./polityka-prywatnosci-DtqBFgK5.js"),[]),qF=q()({beforeLoad:()=>{throw Kt({to:"/pl/polityka-prywatnosci",code:301,throw:!0})},component:G(HF,"component")}),ZF=()=>W(()=>import("./portfolio-DtqBFgK5.js"),[]),YF=q()({beforeLoad:()=>{throw Kt({to:"/pl/portfolio",code:301,throw:!0})},component:G(ZF,"component")}),Gg=Ze("pozycjonowanie-uk"),JF=()=>W(()=>import("./pozycjonowanie-uk-BprlqBY1.js"),__vite__mapDeps([135,61,62,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,73,12,96,74,106,136,75,76,137,50,138,2,93])),Vg=we(Gg.slug),zc=`${Me}${Vg}`,QF=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Vg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Vg,override:t?.override??null,defaultTitle:Gg.title,defaultDescription:Gg.description});return{...e,links:[...e.links??[],{rel:"alternate",hreflang:"pl",href:zc},{rel:"alternate",hreflang:"en",href:`${Me}/en/services/marketing-seo`},{rel:"alternate",hreflang:"x-default",href:zc}],scripts:[...e.scripts??[],aa({name:"Pozycjonowanie stron UK â SEO stron internetowych w Wielkiej Brytanii",description:"Pozycjonowanie stron internetowych w Wielkiej Brytanii dla polskich firm: audyt SEO, optymalizacja on-page, treÅci pod intencje, lokalne SEO Google Maps i link building z domen .co.uk.",url:zc,serviceType:"SEO / Search Engine Optimization",areaServed:["United Kingdom"]}),Ea(M9),Re([{name:"DiSpace",url:re},{name:"Pozycjonowanie UK",url:zc}]),Hh("pl"),{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"HowTo",name:"Jak wejÅÄ do TOP 3 Google UK â proces pozycjonowania stron w Wielkiej Brytanii",description:"Powtarzalny proces pozycjonowania stron UK dla polskich firm: audyt, on-page, lokalne SEO, link building i content cluster prowadzÄ
cy do TOP 3 Google.co.uk w 6â12 miesiÄcy.",totalTime:"P12M",estimatedCost:{"@type":"MonetaryAmount",currency:"GBP",value:"290"},step:[{"@type":"HowToStep",name:"Audyt SEO UK + strategia fraz",text:"Analiza techniczna, SERP UK, konkurencji i intencji wyszukiwania. Mapa fraz PL/EN i harmonogram."},{"@type":"HowToStep",name:"On-page + treÅci pillar",text:"Optymalizacja meta, nagÅówków, Schema i przepisanie treÅci pod intencje wyszukiwania w Google UK."},{"@type":"HowToStep",name:"Lokalne SEO + Google Business Profile",text:"Wizytówka GBP, cytacje NAP w brytyjskich katalogach, landingi lokalne dla miast UK."},{"@type":"HowToStep",name:"Link building z brytyjskich domen",text:"Linki z UK (DR 30+): guest posty, katalogi branżowe, digital PR."},{"@type":"HowToStep",name:"Content cluster + freshness",text:"Regularne publikacje pod frazy long-tail i aktualizacja starych treÅci."},{"@type":"HowToStep",name:"Skalowanie do TOP 3",text:"Wzmocnienie fraz z pozycji 4â10 i konsolidacja pozycji TOP 3 Google.co.uk."}]})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Product",name:"Pozycjonowanie UK â pakiety SEO 2026",description:"Pakiety pozycjonowania stron UK dla polskich firm w Anglii, Szkocji i Walii. Cena od £290/mc.",brand:{"@type":"Brand",name:"DiSpace"},offers:{"@type":"AggregateOffer",priceCurrency:"GBP",lowPrice:"290",highPrice:"1200",offerCount:3,url:zc}})}]}},component:G(JF,"component")}),XF=()=>W(()=>import("./pozycjonowanie-uk-audyt-seo-krok-po-kroku-BP7GJF0d.js"),__vite__mapDeps([139,61,79,32,106,74])),zP="pozycjonowanie-uk-audyt-seo-krok-po-kroku",bP=`/${zP}`,hw=`${Me}${bP}`,eH=q()({loader:()=>{const t=ct(zP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, audyt seo uk, checklist seo, core web vitals uk, screaming frog uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:hw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}
69],links:nt(bP),scripts:[rt({url:hw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:hw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(XF,"component")}),tH=()=>W(()=>import("./pozycjonowanie-uk-dla-polskich-firm-w-anglii-6SoDf00P.js"),__vite__mapDeps([140,61,79,32,106,74])),jP="pozycjonowanie-uk-dla-polskich-firm-w-anglii",vP=`/${jP}`,yw=`${Me}${vP}`,aH=q()({loader:()=>{const t=ct(jP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, pozycjonowanie uk dla polskich firm, seo dla polskich firm w anglii, hreflang pl en, agencja seo uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:yw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(vP),scripts:[rt({url:yw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:yw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(tH,"component")}),iH=()=>W(()=>import("./pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac-iyKpHPFQ.js"),__vite__mapDeps([141,61,79,32,106,74])),SP="pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac",xP=`/${SP}`,mw=`${Me}${xP}`,nH=q()({loader:()=>{const t=ct(SP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, frazy kluczowe uk, semrush uk, keyword research uk, striking distance seo"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:mw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(xP),scripts:[rt({url:mw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:mw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(iH,"component")}),oH=()=>W(()=>import("./pozycjonowanie-uk-jak-wejsc-do-top-3-google-DaC8BquT.js"),__vite__mapDeps([142,61,79,32,106,74])),_P="pozycjonowanie-uk-jak-wejsc-do-top-3-google",TP=`/${_P}`,fw=`${Me}${TP}`,rH=q()({loader:()=>{const t=ct(_P);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, seo uk, top 3 google uk, pozycjonowanie google.co.uk, seo dla polskich firm w uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:fw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(TP),scripts:[rt({url:fw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:fw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}
69]}},component:G(oH,"component")}),sH=()=>W(()=>import("./pozycjonowanie-uk-lokalne-google-business-profile-D8nVJTd2.js"),__vite__mapDeps([143,61,79,32,106,74])),EP="pozycjonowanie-uk-lokalne-google-business-profile",AP=`/${EP}`,ww=`${Me}${AP}`,lH=q()({loader:()=>{const t=ct(EP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, pozycjonowanie uk lokalne, google business profile uk, seo lokalne uk, local pack uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:ww},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(AP),scripts:[rt({url:ww,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:ww}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(sH,"component")}),cH=()=>W(()=>import("./pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo-DAMNnC-Q.js"),__vite__mapDeps([144,61,79,32,106,74])),PP="pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo",CP=`/${PP}`,gw=`${Me}${CP}`,uH=q()({loader:()=>{const t=ct(PP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"pozycjonowanie uk, pozycjonowanie uk vs polska, seo uk vs pl, google co uk, seo dla polskich firm w uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:gw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(CP),scripts:[rt({url:gw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:gw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(cH,"component")}),fp=Ze("pozycjonowanie-wielka-brytania"),dH=()=>W(()=>import("./pozycjonowanie-wielka-brytania-BVBBUprm.js"),__vite__mapDeps([145,61,
6962,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22,93,74])),pH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(fp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(fp.slug),override:t?.override??null,defaultTitle:fp.title,defaultDescription:fp.description}),component:G(dH,"component")}),wp=Ze("projekt-logo-uk"),hH=()=>W(()=>import("./projekt-logo-uk-Dawt4Fru.js"),__vite__mapDeps([146,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),yH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(wp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(wp.slug),override:t?.override??null,defaultTitle:wp.title,defaultDescription:wp.description}),component:G(hH,"component")}),gp=Ze("projekt-ulotki-uk"),mH=()=>W(()=>import("./projekt-ulotki-uk-DkDxrvXw.js"),__vite__mapDeps([147,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),fH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(gp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(gp.slug),override:t?.override??null,defaultTitle:gp.title,defaultDescription:gp.description}),component:G(mH,"component")}),kp=Ze("projekt-wizytowki-uk"),wH=()=>W(()=>import("./projekt-wizytowki-uk-KCHOCv0g.js"),__vite__mapDeps([148,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),gH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(kp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(kp.slug),override:t?.override??null,defaultTitle:kp.title,defaultDescription:kp.description}),component:G(wH,"component")}),zp=Ze("projekty-graficzne-uk"),kH=()=>W(()=>import("./projekty-graficzne-uk-3BAxmxW2.js"),__vite__mapDeps([149,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20,93,74,94])),zH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(zp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(zp.slug),override:t?.override??null,defaultTitle:zp.title,defaultDescription:zp.description}),component:G(kH,"component")}),bH=()=>W(()=>import("./regulamin-DtqBFgK5.js"),[]),jH=q()({beforeLoad:()=>{throw Kt({to:"/pl/regulamin",code:301,throw:!0})},component:G(bH,"component")}),bp=Ze("rollupy"),vH=()=>W(()=>import("./rollupy-rj36PzY5.js"),__vite__mapDeps([150,61,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20])),SH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(bp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(bp.slug),override:t?.override??null,defaultTitle:bp.title,defaultDescription:bp.description}),component:G(vH,"component")}),Fg=Ze("shopify-uk"),xH=()=>W(()=>import("./shopify-uk-DvaMS5Of.js"),__vite__mapDeps([151,61,152,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22,74,93])),Hg=we(Fg.slug),Bx=`${Me}${Hg}`,_H=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Hg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Hg,override:t?.override??null,defaultTitle:Fg.title,defaultDescription:Fg.description});return{...e,scripts:[...e.scripts??[],aa({name:"Shopify UK â wdrożenie sklepu Shopify dla polskich firm",description:"Wdrożenie sklepu Shopify UK dla polskich firm w Wielkiej Brytanii: Shopify Payments, Klarna, integracja Royal Mail i DPD, VAT UK i SEO UK.",url:Bx,serviceType:"E-commerce development / Shopify",areaServed:["United Kingdom"]}),Ea($9),Re([{name:"DiSpace",url:re},{name:"Shopify UK",url:Bx}])]}},component:G(xH,"component")}),RP="sklep-b2b-uk-panel-hurtowy",TH=()=>W(()=>import("./sklep-b2b-uk-panel-hurtowy-sTTwPKOc.js"),__vite__mapDeps([160,61,79,32,130,74])),DP=`/${RP}`,kw=`${Me}${DP}`,EH=q()({loader:()=>{const t=ct(RP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"sklep b2b uk, panel hurtowy woocommerce uk, sklep hurtowy uk dla polskich firm, vat reverse charge uk, shopify plus b2b"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:kw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}
69],links:nt(DP),scripts:[rt({url:kw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Sklepy internetowe UK",url:`${re}/sklepy-internetowe-uk`},{name:e.title,url:kw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(TH,"component")}),qg=Ze("sklep-online-uk"),AH=()=>W(()=>import("./sklep-online-uk-BT1xx0D_.js"),__vite__mapDeps([161,61,152,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22,74,93])),Zg=we(qg.slug),$x=`${Me}${Zg}`,PH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Zg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Zg,override:t?.override??null,defaultTitle:qg.title,defaultDescription:qg.description});return{...e,scripts:[...e.scripts??[],aa({name:"Sklep online UK â e-commerce dla polskich firm w Wielkiej Brytanii",description:"Sklep online w UK dla polskich firm w Anglii, Szkocji i Walii. Doradzamy WooCommerce vs Shopify, wdrażamy sklep e-commerce z pÅatnoÅciami GBP, VAT UK, SEO UK i kampaniami.",url:$x,serviceType:"E-commerce development",areaServed:["United Kingdom"]}),Ea(I9),Re([{name:"DiSpace",url:re},{name:"Sklep online UK",url:$x}])]}},component:G(AH,"component")}),jp=Ze("sklepy-internetowe-szkocja"),CH=()=>W(()=>import("./sklepy-internetowe-szkocja-CCBQxkek.js"),__vite__mapDeps([162,61,152,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22,93,74])),RH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:we(jp.slug)}})}catch{t=null}return{override:t}},head:({loaderData:t})=>Ie({path:we(jp.slug),override:t?.override??null,defaultTitle:jp.title,defaultDescription:jp.description}),component:G(CH,"component")}),Yg=Ze("sklepy-internetowe-uk"),DH="/__l5e/assets-v1/9f4bd302-9bd0-43af-95aa-447c75787255/og-ecommerce.jpg",OH={url:DH},UH=()=>W(()=>import("./sklepy-internetowe-uk-DUseUQXO.js"),__vite__mapDeps([163,61,152,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22,93,74,136,75,46,130,76,13,2,164])),Jg=we(Yg.slug),bc=`${Me}${Jg}`,Ix=new URL(OH.url,Me).toString(),Wx="Sklepy internetowe UK â agencja e-commerce od £1 400 | DiSpace",Gx="Wdrożenie sklepu internetowego w UK dla polskich firm: WooCommerce, Shopify lub custom. PÅatnoÅci GBP, VAT/HMRC, kurierzy Royal Mail/DPD/Evri. Start w 14 dni.",LH=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Jg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Jg,override:t?.override??null,defaultTitle:Yg.title,defaultDescription:Yg.description}),a=new Set(["og:title","og:description","og:image","og:image:width","og:image:height","twitter:title","twitter:description","twitter:image","twitter:card"]),i=(e.meta??[]).filter(r=>{const s=r.property??r.name;return!s||!a.has(s)});return{...e,meta:[...i,{property:"og:title",content:Wx},{property:"og:description",content:Gx},{property:"og:image",content:Ix},{property:"og:image:width",content:"1200"},{property:"og:image:height",content:"630"},{property:"og:image:alt",content:"Sklepy internetowe UK â DiSpace, agencja e-commerce dla polskich firm w Wielkiej Brytanii"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:Wx},{name:"twitter:description",content:Gx},{name:"twitter:image",content:Ix}],links:[...e.links??[],{rel:"alternate",hreflang:"pl",href:bc},{rel:"alternate",hreflang:"x-default",href:bc}],scripts:[...e.scripts??[],aa({name:"Sklepy internetowe UK â projektowanie i wdrożenie",description:"Projektowanie i wdrożenie sklepów internetowych UK dla polskich firm w Anglii, Szkocji i Walii. WooCommerce, Shopify lub sklep custom (Next.js) z pÅatnoÅciami Stripe/PayPal, integracjami kurierów Royal Mail/DPD/Evri i konfiguracjÄ
VAT UK/HMRC.",url:bc,serviceType:"E-commerce Development / Online Shop Design",areaServed:["United Kingdom"]}),Ea(V9),Re([{name:"DiSpace",url:re},{name:"Sklepy internetowe UK",url:bc}]),{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"HowTo",name:"Jak stworzyÄ sklep internetowy w UK â proces wdrożenia w 4 tygodnie",description:"Powtarzalny proces uruchamiania sklepów online w Wielkiej Brytanii: brief, projekt UX, wdrożenie WooCommerce lub Shopify, integracje kurierów UK i konfiguracja VAT/HMRC.",totalTime:"P4W",estimatedCost:{"@type":"MonetaryAmount",currency:"GBP",value:"1400"},step:[{"@type":"HowToStep",name:"Brief + wybór platformy",text:"Rozmowa strategiczna, dobór WooCommerce / Shopify / custom pod branÅ¼Ä i skalÄ. Mapa integracji."},{"@type":"HowToStep",name:"Projekt UX + wdrożenie",text:"Layout w Figmie, wdrożenie sklepu, import produktów, konfiguracja pÅatnoÅci w GBP i konta HMRC."},{"@type":"HowToStep",name:"Integracje + testy",text:"Kurierzy UK (Royal Mail, DPD, Evri), VAT, checkout PL+EN, testy zamówieÅ end-to-e
69nd i szkolenie zespoÅu."},{"@type":"HowToStep",name:"SEO + iteracje",text:"SEO on-page dla kategorii i produktów, GA4, A/B testy checkoutu, cotygodniowe raporty konwersji."}]})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Product",name:"Sklepy internetowe UK â pakiety wdrożeniowe 2026",description:"Wdrożenie sklepu internetowego w UK: WooCommerce, Shopify lub sklep custom. Konfiguracja VAT UK/HMRC, pÅatnoÅci GBP, integracje kurierów Royal Mail/DPD/Evri.",brand:{"@type":"Brand",name:"DiSpace"},offers:{"@type":"AggregateOffer",priceCurrency:"GBP",lowPrice:"1400",highPrice:"4500",offerCount:3,url:bc}})}]}},component:G(UH,"component")}),KH=()=>W(()=>import("./strony-internetowe-szkocja-edynburg-glasgow-aberdeen-DkVdGP8r.js"),__vite__mapDeps([165,61,79,32,106,74])),OP="strony-internetowe-szkocja-edynburg-glasgow-aberdeen",UP=`/${OP}`,zw=`${Me}${UP}`,MH=q()({loader:()=>{const t=ct(OP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc}
69,{name:"keywords",content:"strony internetowe szkocja, strony internetowe edynburg, strony internetowe glasgow, strony internetowe aberdeen, seo szkocja"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:zw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(UP),scripts:[rt({url:zw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:zw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(KH,"component")}),NH=()=>W(()=>import("./strony-internetowe-uk-ile-kosztuja-i-jak-wybrac-ulG6aVFS.js"),__vite__mapDeps([166,61,79,32,106,74])),LP="strony-internetowe-uk-ile-kosztuja-i-jak-wybrac",KP=`/${LP}`,bw=`${Me}${KP}`,BH=q()({loader:()=>{const t=ct(LP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"strony internetowe uk, cennik stron internetowych uk, agencja stron internetowych uk, strona firmowa uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:bw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(KP),scripts:[rt({url:bw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:bw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(NH,"component")}),$H=()=>W(()=>import("./strony-internetowe-uk-wordpress-vs-nowoczesne-technologie-BKqgICrN.js"),__vite__mapDeps([167,61,79,32,106,74])),MP="strony-internetowe-uk-wordpress-vs-nowoczesne-technologie",NP=`/${MP}`,jw=`${Me}${NP}`,IH=q()({loader:()=>{const t=ct(MP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"strony internetowe uk, wordpress uk, next.js uk, astro uk, technologie stron internetowych uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:jw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(NP),scripts:[rt({url:jw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:jw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G($H,"component")}),WH=()=>W(()=>Promise.resolve().then(()=>qX),void 0),GH=()=>W(()=>Promise.resolve().then(()=>ZX),void 0),VH=()=>W(()=>import("./strony-internetowe-__city_-CmdPu9qc.js"),__vite__mapDeps([168,169,66,91,90,56,88,3,71,32,33,65,92,16,11,12,47,48,13,170,153,171,155,156,157,24,15,8,26,67,68,69,61,138,172,152,63,64,10,23,21,154,89,158,70,9,159,22,74,106,136,75,96,76])),FH=q()({loader:async({params:t})=>{const e=Rx(t.city);if(!e){const i=NA(`/strony-internetowe-${t.city}`);
69throw i?Kt({href:i,code:301,throw:!0}):Ve()}let a=null;try{a=await $e({data:{path:Mc(e.slug)}})}catch{a=null}return{override:a}},head:({params:t,loaderData:e})=>{const a=Rx(t.city);if(!a)return{meta:[{title:"DiSpace"}]};const i=Ie({path:Mc(a.slug),override:e?.override??null,defaultTitle:a.title,defaultDescription:a.description});if(t.city==="uk"){const r=`${re}${Mc(a.slug)}`,s=[aa({name:"Strony internetowe UK",description:"Projektowanie i tworzenie stron internetowych UK dla firm w Wielkiej Brytanii. WordPress, web design UK, techniczne SEO i optymalizacja Core Web Vitals.",url:r,serviceType:"Web design",areaServed:["GB"]}),Ea(N9),Re([{name:"DiSpace",url:re},{name:"Strony internetowe UK",url:r}])];return{...i,scripts:s}}return i},component:G(VH,"component"),notFoundComponent:G(GH,"notFoundComponent"),errorComponent:G(WH,"errorComponent")}),HH=q()({component:qH,head:()=>({meta:[{title:"DiSpace · Design System v1.0"},{name:"description",content:"Tokeny, typografia, komponenty i zasady wizualne dla DiSpace."},{name:"robots",content:"noindex"}]})}),qh={dark:{bg:ie.dark.bg,surface:ie.dark.surface,surface2:ie.dark.surface2,surface3:ie.dark.surface3,text:ie.dark.textPrimary,textMuted:ie.dark.textSecondary,textTertiary:ie.dark.textTertiary,border:ie.dark.border,borderStrong:ie.dark.borderStrong},light:{bg:ie.light.bg,surface:ie.light.surface,surface2:ie.light.surface2,surface3:ie.light.surface3,text:ie.light.textPrimary,textMuted:ie.light.textSecondary,textTertiary:ie.light.textTertiary,border:ie.light.border,borderStrong:ie.light.borderStrong}},En=wa.fonts.display,Qa=wa.fonts.body,ht=wa.fonts.mono;function xt({name:t,value:e,mode:a,large:i=!1}){const[r,s]=N.useState(!1),c=qh[a],d=e.startsWith("linear-")||e.startsWith("radial-"),p=()=>{navigator.clipboard.writeText(e),s(!0),setTimeout(()=>s(!1),1400)};return k.jsxs("button",{onClick:p,style:{textAlign:"left",background:c.surface,border:`1px solid ${c.border}`,borderRadius:qe.lg,overflow:"hidden",cursor:"pointer",fontFamily:Qa,transition:`transform ${Di.duration.base} ${Di.easing.out}, border-color ${Di.duration.base} ${Di.easing.out}`},onMouseEnter:h=>{h.currentTarget.style.transform="translateY(-2px)",h.currentTarget.style.borderColor=c.borderStrong},onMouseLeave:h=>{h.currentTarget.style.transform="translateY(0)",h.currentTarget.style.borderColor=c.border},children:[k.jsx("div",{style:{position:"relative",height:i?132:96,background:e,borderBottom:`1px solid ${c.border}`},children:k.jsx("div",{style:{position:"absolute",top:8,right:8,padding:6,borderRadius:qe.full,background:"rgba(0,0,0,0.45)",color:"#fff",display:"inline-flex"},children:r?k.jsx(JN,{size:12}):k.jsx(nB,{size:12})})}),k.jsxs("div",{style:{padding:"12px 14px"},children:[k.jsx("div",{style:{color:c.text,fontSize:13,fontWeight:600},children:t}),k.jsx("div",{style:{color:c.textMuted,fontSize:11,fontFamily:ht,marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d?"gradient":e})]})]})}function Ja({num:t,title:e,description:a,children:i,mode:r}){const s=qh[r];return k.jsxs("section",{style:{padding:"64px 0",borderTop:`1px solid ${s.border}`},children:[k.jsxs("div",{style:{marginBottom:32},children:[k.jsxs("div",{style:{color:ie.brand.teal,fontFamily:ht,fontSize:11,letterSpacing:"0.22em",textTransform:"uppercase",marginBottom:12},children:["Nº ",t]}),k.jsx("h2",{className:"text-[30px] sm:text-[42px] lg:text-[48px] font-[600] leading-[1] tracking-[-0.045em]",style:{fontFamily:En,color:s.text,margin:0},children:e}),a&&k.jsx("p",{style:{fontFamily:Qa,color:s.textMuted,fontSize:15,lineHeight:1.6,marginTop:12,maxWidth:680},children:a})]}),k.jsx("div",{children:i})]})}function vp({label:t,value:e,mode:a}){const i=qh[a];return k.jsxs("div",{style:{display:"flex",justifyContent:"space-between",padding:"10px 0",borderBottom:`1px dashed ${i.border}`,gap:16},children:[k.jsx("span",{style:{color:i.textMuted,fontSize:13},children:t}),k.jsx("span",{style:{color:i.text,fontFamily:ht,fontSize:12},children:e})]})}const ko={display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:16};function qH(){const[t,e]=N.useState("dark"),a=qh[t];return k.jsxs("div",{style:{minHeight:"100vh",background:a.bg,color:a.text,fontFamily:Qa,transition:`background ${Di.duration.base} ${Di.easing.out}`},children:[k.jsx("header",{style:{position:"sticky",top:0,zIndex:50,background:t==="dark"?"rgba(7,12,22,0.85)":"rgba(247,247,245,0.85)",backdropFilter:"blur(12px)",borderBottom:`1px solid ${a.border}`},children:k.jsxs("div",{style:{maxWidth:1280,margin:"0 auto",padding:"14px 40px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[k.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,fontSize:14},children:[k.jsx("span",{style:{fontFamily:En,fontWeight:800,color:a.text},children:"Di"}),k.jsx("span",{style:{width:5,height:5,borderRadius:qe.full,background:ie.brand.gradient}}),k.jsx("span",{style:{fontFamily:En,fontWeight:800,color:a.text},children:"Space"}),k.jsx("span",{style:{color:a.textTertiary,marginLeft:8},children:"· Design System v1.0"})]}),k.jsxs("button",{onClick:()=>e(t==="dark"?"light":"dark"),style:{display:"inline-flex",alignItems:"center",gap:8,padding:"8px 14px",borderRadius:qe.full,border:`1px solid ${a.borderStrong}`,color:a.text,fontSize:13,fontWeight:500,background:"transparent",curs
69or:"pointer"},children:[t==="dark"?k.jsx(RB,{size:14}):k.jsx(bB,{size:14}),t==="dark"?"Light":"Dark"," mode"]})]})}),k.jsxs("main",{style:{maxWidth:1280,margin:"0 auto",padding:"0 40px 120px"},children:[k.jsxs("section",{style:{padding:"80px 0 40px"},children:[k.jsx("div",{style:{color:ie.brand.teal,fontFamily:ht,fontSize:11,letterSpacing:"0.22em",textTransform:"uppercase",marginBottom:16},children:"Nº 00 - Foundation"}),k.jsxs("h1",{style:{fontFamily:En,fontSize:wa.scale.h1.size,lineHeight:wa.scale.h1.leading,letterSpacing:wa.scale.h1.tracking,fontWeight:wa.scale.h1.weight,color:a.text,margin:0,maxWidth:920},children:["DiSpace Design System.",k.jsx("br",{}),k.jsx("span",{style:{color:a.textMuted},children:"Jeden zestaw tokenów dla caÅej strony - kolory, typografia, komponenty, ruch."})]}),k.jsxs("p",{style:{fontFamily:Qa,color:a.textMuted,fontSize:17,lineHeight:1.7,marginTop:24,maxWidth:720},children:["Każdy prompt do Lovable i każda sekcja strony odwoÅuje siÄ do tych wartoÅci. Strona obsÅuguje dwa tryby: ",k.jsx("strong",{style:{color:a.text},children:"dark"})," (gÅówny) i"," ",k.jsx("strong",{style:{color:a.text},children:"light"}),' (sekcje âpapierowe": Stats, FAQ, Footer).']})]}),k.jsx(Ja,{num:"01",title:"Brand colors",description:"Trzy gÅówne kolory marki + gradient.",mode:t,children:k.jsxs("div",{style:ko,children:[k.jsx(xt,{name:"brand.indigo",value:ie.brand.indigo,mode:t}),k.jsx(xt,{name:"brand.magenta",value:ie.brand.magenta,mode:t}),k.jsx(xt,{name:"brand.teal",value:ie.brand.teal,mode:t}),k.jsx(xt,{name:"brand.gradient",value:ie.brand.gradient,mode:t,large:!0})]})}),k.jsxs(Ja,{num:"02",title:"Dark surfaces",description:"Powierzchnie + tekst dla gÅównego trybu.",mode:t,children:[k.jsxs("div",{style:{...ko,marginBottom:16},children:[k.jsx(xt,{name:"dark.bg",value:ie.dark.bg,mode:t}),k.jsx(xt,{name:"dark.surface",value:ie.dark.surface,mode:t}),k.jsx(xt,{name:"dark.surface2",value:ie.dark.surface2,mode:t}),k.jsx(xt,{name:"dark.surface3",value:ie.dark.surface3,mode:t})]}),k.jsxs("div",{style:ko,children:[k.jsx(xt,{name:"dark.textPrimary",value:ie.dark.textPrimary,mode:t}),k.jsx(xt,{name:"dark.textSecondary",value:ie.dark.textSecondary,mode:t}),k.jsx(xt,{name:"dark.textTertiary",value:ie.dark.textTertiary,mode:t}),k.jsx(xt,{name:"dark.textDisabled",value:ie.dark.textDisabled,mode:t})]})]}),k.jsxs(Ja,{num:"03",title:"Light surfaces",description:'Powierzchnie dla sekcji "papierowych".',mode:t,children:[k.jsxs("div",{style:{...ko,marginBottom:16},children:[k.jsx(xt,{name:"light.bg",value:ie.light.bg,mode:t}),k.jsx(xt,{name:"light.surface",value:ie.light.surface,mode:t}),k.jsx(xt,{name:"light.surface2",value:ie.light.surface2,mode:t}),k.jsx(xt,{name:"light.surface3",value:ie.light.surface3,mode:t})]}),k.jsxs("div",{style:ko,children:[k.jsx(xt,{name:"light.textPrimary",value:ie.light.textPrimary,mode:t}),k.jsx(xt,{name:"light.textSecondary",value:ie.light.textSecondary,mode:t}),k.jsx(xt,{name:"light.textTertiary",value:ie.light.textTertiary,mode:t}),k.jsx(xt,{name:"light.textDisabled",value:ie.light.textDisabled,mode:t})]})]}),k.jsx(Ja,{num:"04",title:"Status",description:"Stany systemowe: sukces, warning, bÅÄ
d, info.",mode:t,children:k.jsxs("div",{style:ko,children:[k.jsx(xt,{name:"status.success",value:ie.status.success,mode:t}),k.jsx(xt,{name:"status.warning",value:ie.status.warning,mode:t}),k.jsx(xt,{name:"status.error",value:ie.status.error,mode:t}),k.jsx(xt,{name:"status.info",value:ie.status.info,mode:t})]})}),k.jsx(Ja,{num:"05",title:"Typography",description:"Poppins · Inter · JetBrains Mono.",mode:t,children:k.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:24},children:[["h1","h2","h3","h4","h5","h6"].map(i=>{const r=wa.scale[i],s={h1:"Strony internetowe Glasgow - branding, druk i SEO.",h2:"Studio z UK, pracujÄ
ce po polsku.",h3:"NextDoor Restaurant - strona z rezerwacjami",h4:"PeÅna identyfikacja wizualna i druk",h5:"Nazwa sekcji lub karty",h6:"MaÅy nagÅówek nawigacyjny"};return k.jsxs("div",{style:{padding:"20px 24px",background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg},children:[k.jsxs("div",{style:{display:"flex",justifyContent:"space-between",color:a.textTertiary,fontFamily:ht,fontSize:11,marginBottom:10,letterSpacing:"0.12em",textTransform:"uppercase"},children:[k.jsxs("span",{children:[i," · weight ",r.weight]}),k.jsx("span",{children:String(r.size)})]}),k.jsx("div",{style:{fontFamily:En,fontSize:r.size,lineHeight:r.leading,letterSpacing:r.tracking,fontWeight:r.weight,color:a.text},children:s[i]})]},i)}),["bodyLg","body","bodySm","caption"].map(i=>{const r=wa.scale[i],s={bodyLg:"Body L. Stosujemy w hero subline i innych miejscach, gdzie tekst musi mieÄ oddech. Linia wysokoÅci 1.7, waga 400.",body:"Body M. Standardowy rozmiar dla treÅci wewnÄtrznych: opisów kart, paragrafów pomocniczych, treÅci FAQ.",bodySm:"Body S. Tekst pomocniczy w kartach, mikrokopia w stopce, etykiety form.",caption:"Nº 01 - Sekcja · Etykiety nagÅówków"},c=i==="caption";return k.jsxs("div",{style:{padding:"20px 24px",background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg},children:[k.jsxs("div",{style:{color:a.textTertiary,fontFamily:ht,fontSize:11,marginBottom:10,letterSpacing:"0.12em",textTransform:"uppercase"},children:[i," · weight ",r.weight," · ",String(r.size)]}),k.jsx("div",{style:{fontFamily:c?ht:Qa,fontSize:r.size,lineHeight:r.leading,letterSpacing:r.tracking,fontWeight:r.weight,color:c?ie.brand.teal:a.text,textTransform:c?"uppercase":"none"},children:s[i]})]},i)})]})}),k.jsx(Ja,{num:"06",title:"Buttons",description:"Wszystkie warianty CTA używane na stronie.",mode:t,children:k.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:32},children:[k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Primary - solid (gÅówny CTA)"}),k.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:12,alignItems:"center"},children:[{px:24,py:14,fs:14,label:"WyceÅ projekt"},{px:18,py:10,fs:13,label:"Sm size"},{px:32,py:18,fs:16,label:"Lg size"}].map(i=>k.jsxs("button",{style:{background:t==="dark"?"#FFFFFF":"#1A1A2E",color:t==="dark"?"#1A1A2E":"#FFFFFF",padding:`${i.py}px ${i.px}px`,borderRadius:qe.full,border:"none",fontWeight:600,fontSize:i.fs,display:"inline-flex",alignItems:"center",gap:8,cursor:"pointer",fontFamily:Qa},children:[i.label," ",k.jsx($a,{size:i.fs+2})]},i.label))})]}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Secondary - outline"}),k.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:12},children:[k.jsxs("button",{style:{background:"transparent",color:a.text,padding:"14px 24px",borderRadius:qe.full,border:`1px solid ${a.borderStrong}`,fontWeight:600,fontSize:14,display:"inline-flex",alignItems:"center",gap:8,cursor:"pointer",fontFamily:Qa},children:["Zobacz realizacje ",k.jsx($a,{size:16})]}),k.jsx("button",{style:{background:"transparent",color:a.text,padding:"14px 24px",borderRadius:qe.full,border:`1px solid ${a.borderStrong}`,fontWeight:600,fontSize:14,cursor:"pointer",fontFamily:Qa},children:"Dowiedz siÄ wiÄcej"})]})]}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Gradient - moment kluczowy (Final CTA)"}),k.jsxs("button",{style:{background:ie.brand.gradient,color:"#FFFFFF",padding:"16px 32px",borderRadius:qe.full,border:"none",fontWeight:600,fontSize:15,boxSh
69adow:Zf.magentaGlow,display:"inline-flex",alignItems:"center",gap:10,cursor:"pointer",fontFamily:Qa},children:["Otrzymaj bezpÅatnÄ
wycenÄ ",k.jsx($a,{size:18})]})]}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"SEO pills - pod CTA hero"}),k.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:10},children:[["01","strony internetowe glasgow"],["02","sklepy woocommerce"],["03","logo i branding"]].map(([i,r])=>k.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:"8px 14px",borderRadius:qe.full,border:`1px solid ${a.border}`,background:a.surface,color:a.text,fontSize:12},children:[k.jsx("span",{style:{color:ie.brand.teal,fontFamily:ht},children:i}),k.jsx("span",{children:r})]},i))})]}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Sticky bar buttons (mniejsze, z ikonÄ
)"}),k.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:10},children:[k.jsxs("button",{style:{background:ie.brand.gradient,color:"#FFFFFF",padding:"10px 18px",borderRadius:qe.full,border:"none",fontWeight:600,fontSize:13,display:"inline-flex",alignItems:"center",gap:8,cursor:"pointer",fontFamily:Qa},children:[k.jsx(DT,{size:14})," BezpÅatna Wycena"]}),k.jsxs("button",{style:{background:"transparent",color:a.text,padding:"10px 18px",borderRadius:qe.full,border:`1px solid ${a.borderStrong}`,fontWeight:600,fontSize:13,display:"inline-flex",alignItems:"center",gap:8,cursor:"pointer",fontFamily:Qa},children:[k.jsx(Uk,{size:14})," Kontakt Mailowy"]})]})]})]})}),k.jsx(Ja,{num:"07",title:"Radius",description:"ZaokrÄ
glenia używane na stronie.",mode:t,children:k.jsx("div",{style:ko,children:Object.entries(qe).map(([i,r])=>k.jsxs("div",{style:{background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg,padding:20,display:"flex",flexDirection:"column",gap:12},children:[k.jsx("div",{style:{height:80,background:ie.brand.gradient,borderRadius:r}}),k.jsxs("div",{style:{display:"flex",justifyContent:"space-between"},children:[k.jsx("span",{style:{color:a.text,fontSize:13,fontWeight:600},children:i}),k.jsx("span",{style:{color:a.textMuted,fontFamily:ht,fontSize:12},children:r})]})]},i))})}),k.jsx(Ja,{num:"08",title:"Shadows",description:"Cienie i glow. Glow tylko dla kluczowych CTA.",mode:t,children:k.jsx("div",{style:ko,children:Object.entries(Zf).filter(([i])=>i!=="none").map(([i,r])=>k.jsxs("div",{style:{background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg,padding:24,display:"flex",flexDirection:"column",gap:16},children:[k.jsx("div",{style:{height:80,background:a.surface2,borderRadius:qe.md,boxShadow:r}}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.text,fontSize:13,fontWeight:600},children:i}),k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,marginTop:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(r).slice(0,42)})]})]},i))})}),k.jsx(Ja,{num:"09",title:"Cards",description:"Trzy warianty kart - surface, elevated, gradient border.",mode:t,children:k.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:20},children:[k.jsxs("div",{style:{background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.xl,padding:28},children:[k.jsx("div",{style:{color:ie.brand.teal,fontFamily:ht,fontSize:11,marginBottom:12},children:"01"}),k.jsx("h3",{style:{fontFamily:En,color:a.text,fontSize:20,margin:"0 0 8px"},children:"Surface card"}),k.jsx("p",{style:{color:a.textMuted,fontSize:14,lineHeight:1.6,margin:0},children:"DomyÅlna - subtelne tÅo, cienka ramka, padding 28, radius xl."})]}),k.jsxs("div",{style:{background:a.surface2,border:`1px solid ${a.borderStrong}`,borderRadius:qe.xl,padding:28,boxShadow:Zf.card},children:[k.jsx("div",{style:{color:ie.brand.teal,fontFamily:ht,fontSize:11,marginBottom:12},children:"02"}),k.jsx("h3",{style:{fontFamily:En,color:a.text,fontSize:20,margin:"0 0 8px"},children:"Elevated card"}),k.jsx("p",{style:{color:a.textMuted,fontSize:14,lineHeight:1.6,margin:0}
69,children:"Wyróżniona - silniejsza ramka, shadow, jaÅniejsze tÅo."})]}),k.jsx("div",{style:{position:"relative",borderRadius:qe.xl,padding:1.5,background:ie.brand.gradient},children:k.jsxs("div",{style:{background:a.surface,borderRadius:qe.xl,padding:28},children:[k.jsx("div",{style:{color:ie.brand.teal,fontFamily:ht,fontSize:11,marginBottom:12},children:"03"}),k.jsx("h3",{style:{fontFamily:En,color:a.text,fontSize:20,margin:"0 0 8px"},children:"Gradient border card"}),k.jsx("p",{style:{color:a.textMuted,fontSize:14,lineHeight:1.6,margin:0},children:"Featured - gradientowa ramka 1.5px. Max 1 na sekcjÄ."})]})})]})}),k.jsx(Ja,{num:"10",title:"Forms",description:"Dwa style inputów: underlined (stopka) i surface (formularz).",mode:t,children:k.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:24},children:[k.jsxs("div",{children:[k.jsx("label",{style:{display:"block",color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:8},children:"Underlined input (stopka)"}),k.jsx("input",{placeholder:"[email protected]",style:{width:"100%",background:"transparent",border:"none",borderBottom:`1px solid ${a.borderStrong}`,color:a.text,padding:"10px 0",fontSize:15,outline:"none",fontFamily:Qa}})]}),k.jsxs("div",{children:[k.jsx("label",{style:{display:"block",color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:8},children:"Surface input (formularz)"}),k.jsx("input",{placeholder:"ImiÄ i nazwisko",style:{width:"100%",background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.md,color:a.text,padding:"12px 14px",fontSize:15,outline:"none",fontFamily:Qa}})]})]})}),k.jsx(Ja,{num:"11",title:"Motion",description:"Easing, durations, spring presets, live demo.",mode:t,children:k.jsxs("div",{style:{background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg,padding:28,display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:32},children:[k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Easing"}),k.jsx(vp,{label:"out",value:Di.easing.out,mode:t}),k.jsx(vp,{label:"inOut",value:Di.easing.inOut,mode:t}),k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",margin:"20px 0 14px"},children:"Duration"}),Object.entries(Di.duration).map(([i,r])=>k.jsx(vp,{label:i,value:r,mode:t},i))]}),k.jsxs("div",{children:[k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",marginBottom:14},children:"Spring presets"}),Object.entries(Di.spring).map(([i,r])=>k.jsx(vp,{label:i,value:`stiff ${r.stiffness} · damp ${r.damping}`,mode:t},i)),k.jsx("div",{style:{color:a.textMuted,fontFamily:ht,fontSize:11,letterSpacing:"0.12em",textTransform:"uppercase",margin:"24px 0 14px"},children:"Live demo · hover"}),k.jsx(Lt.div,{whileHover:{y:-4,scale:1.02},transition:{type:"spring",...Di.spring.snappy},style:{background:ie.brand.gradient,color:"#fff",padding:"20px 24px",borderRadius:qe.lg,fontFamily:En,fontWeight:600,cursor:"pointer",display:"inline-block"},children:"Najedź myszkÄ
â"})]})]})}),k.jsx(Ja,{num:"12",title:"Patterns",description:"Wzory tÅa stosowane w sekcjach.",mode:t,children:k.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:16},children:[k.jsx("div",{style:{position:"relative",height:160,borderRadius:qe.lg,border:`1px solid ${a.border}`,background:`linear-gradient(${a.bg}, ${a.bg}), repeating-linear-gradient(0deg, ${a.borderStrong} 0 1px, transparent 1px 40px), repeating-linear-gradient(90deg, ${a.borderStrong} 0 1px, transparent 1px 40px)`,backgroundBlendMode:"multiply",overflow:"hidden"},children:k.jsx("span",{style:{position:"absolute",bottom:12,left:14,color:a.text,fontFamily:ht,fontSize:12},children:"Grid 40px"})}),k.jsx("div",{style:{position:"relative",height:160,borderRadius:qe.lg,border:`1px solid ${a.border}`,background:a.surface,backgroundImage:`url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3Cfe
69ColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.45'/%3E%3C/svg%3E")`,overflow:"hidden"},children:k.jsx("span",{style:{position:"absolute",bottom:12,left:14,color:a.text,fontFamily:ht,fontSize:12},children:"Grain (SVG noise)"})}),k.jsx("div",{style:{position:"relative",height:160,borderRadius:qe.lg,border:`1px solid ${a.border}`,background:`radial-gradient(circle at 30% 30%, ${ie.brand.teal}55, transparent 60%), radial-gradient(circle at 80% 80%, ${ie.brand.magenta}55, transparent 60%), ${a.surface}`,overflow:"hidden"},children:k.jsx("span",{style:{position:"absolute",bottom:12,left:14,color:a.text,fontFamily:ht,fontSize:12},children:"Radial glow (teal + magenta)"})})]})}),k.jsx(Ja,{num:"13",title:"Style rules",description:"Zasady, których trzymamy siÄ w każdej sekcji.",mode:t,children:k.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:16},children:[["Ikony","Lucide, stroke 2, w-4 h-4 do 5; nigdy kolorowe ilustracje. Akcent: teal albo gradient (max 1 na sekcjÄ)."],["Hover","Subtelne - y: -2px LUB scale 1.02. NIGDY hue-rotate, NIGDY glow na każdej karcie."],["Whitespace","Sekcje 80-144px padding pionowy. Hero: 96px+. Container max 1280px."],["Numeracja",'Każda sekcja ma "Nº 01 - Nazwa" jako mono caption (z myÅlnikiem em-dash).'],["Bold vs italic","Bold = tylko nagÅówki. Italic = oszczÄdnie, max 1à na sekcjÄ jako akcent."],["Gradient text","Tylko w 2 miejscach: ostatnie sÅowo w Final CTA + nazwa w paywall. NIGDY rozsiany po stronie."],["Kursywa",'Tylko w paragrafach "manifesto" stopki - nigdy w nagÅówkach.'],["Mock-upy","NIGDY w hero. PojawiajÄ
siÄ dopiero w sekcji Realizacje. Realistyczne ramki przeglÄ
darki z URL."]].map(([i,r])=>k.jsxs("div",{style:{background:a.surface,border:`1px solid ${a.border}`,borderRadius:qe.lg,padding:22},children:[k.jsx("div",{style:{color:a.text,fontSize:14,fontWeight:600,marginBottom:8},children:i}),k.jsx("div",{style:{color:a.textMuted,fontSize:13,lineHeight:1.6},children:r})]},i))})}),k.jsx("div",{style:{paddingTop:64,color:a.textTertiary,fontFamily:ht,fontSize:11,letterSpacing:"0.18em",textTransform:"uppercase"},children:"DiSpace Design System · v1.0"})]})]})}const BP="wdrozenie-sklepu-internetowego-uk-cennik",ZH=()=>W(()=>import("./wdrozenie-sklepu-internetowego-uk-cennik-eY-fZJqX.js"),__vite__mapDeps([173,61,79,32,130,74])),$P=`/${BP}`,vw=`${Me}${$P}`,YH=q()({loader:()=>{const t=ct(BP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"wdrożenie sklepu internetowego uk, cennik sklepu online uk, koszt sklepu woocommerce uk, cennik shopify uk, agencja e-commerce uk"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:vw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt($P),scripts:[rt({url:vw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Sklepy internetowe UK",url:`${re}/sklepy-internetowe-uk`},{name:e.title,url:vw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(ZH,"component")}),JH=()=>W(()=>import("./wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac-DLFcKbfu.js"),__vite__mapDeps([174,61,79,32])),IP="wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac",WP=`/${IP}`,Sw=`${Me}${WP}`,QH=q()({loader:()=>{const t=ct(IP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:Sw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}
69],links:nt(WP),scripts:[rt({url:Sw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:Sw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(JH,"component")}),Qg=Ze("woocommerce-uk"),XH=()=>W(()=>import("./woocommerce-uk-lrQcUIWc.js"),__vite__mapDeps([175,61,152,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22,74,93])),Xg=we(Qg.slug),Vx=`${Me}${Xg}`,eq=q()({loader:async()=>{let t=null;try{t=await $e({data:{path:Xg}})}catch{t=null}return{override:t}},head:({loaderData:t})=>{const e=Ie({path:Xg,override:t?.override??null,defaultTitle:Qg.title,defaultDescription:Qg.description});return{...e,scripts:[...e.scripts??[],aa({name:"WooCommerce UK â wdrożenie sklepu dla polskich firm",description:"Wdrożenie sklepu WooCommerce UK dla polskich firm w Wielkiej Brytanii: pÅatnoÅci Stripe/Klarna, integracja Royal Mail i DPD, konfiguracja VAT HMRC, SEO UK.",url:Vx,serviceType:"E-commerce development / WooCommerce",areaServed:["United Kingdom"]}),Ea(B9),Re([{name:"DiSpace",url:re},{name:"WooCommerce UK",url:Vx}])]}},component:G(XH,"component")}),GP="woocommerce-vs-shopify-uk",tq=()=>W(()=>import("./woocommerce-vs-shopify-uk-CQRvfxFM.js"),__vite__mapDeps([176,61,79,32,130,74])),VP=`/${GP}`,xw=`${Me}${VP}`,aq=q()({loader:()=>{const t=ct(GP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{name:"keywords",content:"woocommerce vs shopify uk, jaki sklep internetowy uk, shopify dla polskich firm w anglii, woocommerce uk dla polskich firm"},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:xw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(VP),scripts:[rt({url:xw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Sklepy internetowe UK",url:`${re}/sklepy-internetowe-uk`},{name:e.title,url:xw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(tq,"component")}),iq=()=>W(()=>import("./wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac-D5XwYIJu.js"),__vite__mapDeps([177,61,79,32])),FP="wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac",HP=`/${FP}`,_w=`${Me}${HP}`,nq=q()({loader:()=>{const t=ct(FP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:_w},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}],links:nt(HP),scripts:[rt({url:_w,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:_w}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(iq,"component")}),oq=()=>W(()=>import("./wyszukiwarka-kursow-na-platformie-edukacyjnej-CaXlC2FW.js"),__vite__mapDeps([178,61,79,32])),qP="wyszukiwarka-kursow-na-platformie-edukacyjnej",ZP=`/${qP}`,Tw=`${Me}${ZP}`,rq=q()({loader:()=>{const t=ct(qP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:Tw},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}
69],links:nt(ZP),scripts:[rt({url:Tw,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:Tw}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(oq,"component")}),sq=()=>W(()=>import("./wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna-pQbbaVTy.js"),__vite__mapDeps([179,61,79,32])),YP="wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna",JP=`/${YP}`,Ew=`${Me}${JP}`,lq=q()({loader:()=>{const t=ct(YP);if(!t)throw Ve();return{post:t}},head:({loaderData:t})=>{const e=t?.post;return e?{meta:[{title:`${e.title} â DiSpace UK`},{name:"description",content:e.metaDesc},{property:"og:title",content:e.title},{property:"og:description",content:e.metaDesc},{property:"og:url",content:Ew},{property:"og:type",content:"article"},{property:"article:published_time",content:e.date},{property:"article:section",content:e.category},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:e.title},{name:"twitter:description",content:e.metaDesc},{name:"robots",content:"index, follow"}],links:nt(JP),scripts:[rt({url:Ew,headline:e.title,description:e.metaDesc,datePublished:e.date,authorName:"ZespóŠDiSpace",inLanguage:"pl-PL"}),Re([{name:"DiSpace",url:re},{name:"Baza wiedzy",url:`${re}/pl/baza-wiedzy`},{name:e.title,url:Ew}])]}:{meta:[{title:"Nie znaleziono"},{name:"robots",content:"noindex"}]}},component:G(sq,"component")}),cq=()=>W(()=>import("./admin.index-DS3vsHBR.js"),__vite__mapDeps([180,181,182,183,1,35,184,5,185,186,187,46,188,189,48,190,191,192,193,16,15,8,59,194])),uq=q()({component:G(cq,"component")}),dq=()=>W(()=>import("./admin.analytics-H5Dz0_kQ.js"),__vite__mapDeps([195,181,183,1,196,35,186,185,38,40,39,42,43,41,90,56,197,19,190,191,198])),pq=q()({component:G(dq,"component")}),hq=()=>W(()=>import("./admin.automations-mMlhDkjo.js"),__vite__mapDeps([199,181,183,1,35,36,196,200,201,38,202,43,185,203,55,54,39,41,204,37,40,182,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,42,59,189,205])),yq=q()({component:G(hq,"component")}),mq=()=>W(()=>import("./admin.cta-conversions-tUcObntG.js"),__vite__mapDeps([206,181,183,1,35,196,36,186,185,190,191,207,193])),fq=q()({head:()=>({meta:[{title:"Konwersje CTA â Admin"},{name:"robots",content:"noindex"}]}),component:G(mq,"component")}),wq=()=>W(()=>import("./admin.gsc-Bjt_jSRe.js"),__vite__mapDeps([208,181,209,182,5,210,38,35,1,54,41,39,184,183,185,59,194,24,8,211,72,212,200,213,186,18,22,6,214,215,205,216,33,36,196,52,137,190,191,192,193,198,201,202,43,51,217,197,218,40,42,44,156,56,219,3,48,138,203,55,189])),gq=q()({head:()=>({meta:[{title:"Google Search Console â Admin"},{name:"robots",content:"noindex"}]}),component:G(wq,"component")}),kq=()=>W(()=>import("./admin.leads-CKK9V4Jr.js"),__vite__mapDeps([220,181,183,1,36,35,185,186,218,38,54,40,39,42,43,202,44,156,203,55,41,187,30,221,191,197,8])),zq=q()({component:G(kq,"component")}),bq=()=>W(()=>import("./admin.login-Cf_2MQFp.js"),__vite__mapDeps([222,35,1,36,196,183,203,38,55,54,39,41,59])),jq=q()({head:()=>({meta:[{title:"Admin â DiSpace"},{name:"robots",content:"noindex"}]}),validateSearch:t=>({next:typeof t.next=="string"?t.next:void 0}),component:G(bq,"component")}),vq=()=>W(()=>import("./admin.meta-ads-BjW_ieN_.js"),__vite__mapDeps([223,181,182,224,5,35,1,225,59,57,212,183,36,185,186,201,38,202,43,196,200,218,54,40,39,42,44,156,204,37,41,194,45,71,47,24,226,215,188,13,48,189,8,6,205,219,69,50,227])),Sq=q()({head:()=>({meta:[{title:"Meta Ads (AI) â DiSpace"},{name:"robots",content:"noindex"}]}),component:G(vq,"component")}),xq=()=>W(()=>import("./admin.notifications-OuP1F6gO.js"),__vite__mapDeps([228,181,183,1,35,36,196,185,201,38,202,43,186,51,59,69,219])),_q=q()({component:G(xq,"component")}),Tq=()=>W(()=>import("./admin.partner-logos-CA41pOsH.js"),__vite__mapDeps([229,181,221,191,183,1,35,36,196,185,201,38,202,43,230,41,204,37,39,40,231,189,197,232,69,8,219,59,28,233])),Eq=q()({component:G(Tq,"component")}),Aq=()=>W(()=>import("./admin.seo-9JrYXeDS.js"),__vite__mapDeps([234,181,209,183,1,35,36,196,200,185,204,37,38,39,40,41,218,54,42,43,202,44,156,186,201,203,55,210,5,212,214,50,182,59,194,16,69,17,159,226,235,233,236,164,219,6,18,216,8,24,205,28,184,237,189,21])),Pq=q()({component:G(Aq,"component")}),Cq=()=>W(()=>import("./admin.seo-dashboard-BlzlwQnR.js"),__vite__mapDeps([238,181,182,5,183,1,36,185,35,186,203,38,55,54,39,41,15,226,235,18,239,200,8,236,214,219,217,27,59,216,212,211,16,159])),Rq=q()({head:()=>({meta:[{title:"SEO Dashboard â Admin"},{name:"robots",content:"noindex"}
69]}),component:G(Cq,"component")}),Dq=()=>W(()=>import("./admin.seo-experiments-DQDJra9c.js"),__vite__mapDeps([240,181,209,182,183,1,35,185,186,218,38,54,40,39,42,43,202,44,156,5,59,6,237,137,213])),Oq=q()({head:()=>({meta:[{title:"SEO â testy CTR (GSC) · Admin"},{name:"robots",content:"noindex"}]}),component:G(Dq,"component")}),Uq=()=>W(()=>import("./admin.seo-tracking-BZrJX3K_.js"),__vite__mapDeps([241,181,209,183,1,35,36,196,201,38,202,43,186,185,230,41,53,54,40,39,42,55,56,57,239,200,8,236,214,219,217,27,59,18,204,37,6,51,213,69,49,137,190,191,207,193])),Lq=q()({head:()=>({meta:[{title:"Pozycje Semrush â Admin"},{name:"robots",content:"noindex"}]}),component:G(Uq,"component")}),Kq=()=>W(()=>import("./admin.settings-B0pjSYoV.js"),__vite__mapDeps([242,181,182,58,183,1,35,36,196,185,224,5,59,205,227,194,226])),Mq=q()({component:G(Kq,"component")}),Nq=()=>W(()=>import("./admin.users-CcB51dEG.js"),__vite__mapDeps([243,181,182,183,1,35,36,196,185,186,204,37,38,39,40,41,5,59,227,219])),Bq=q()({component:G(Nq,"component")}),$q=()=>W(()=>import("./admin.utm-builder-PH8K_XTD.js"),__vite__mapDeps([244,183,1,36,196,35,185,50])),Iq=q()({component:G($q,"component")}),Wq=()=>W(()=>import("./baza-wiedzy.index-DtqBFgK5.js"),[]),Gq=q()({beforeLoad:()=>{throw Kt({to:"/pl/baza-wiedzy",code:301,throw:!0})},component:G(Wq,"component")}),Vq=[{q:"Od czego najlepiej zaczÄ
Ä rozwój swojej marki w internecie?",a:"Najlepiej zaczÄ
Ä od dobrej strategii - ustalamy wspólnie cele, grupÄ docelowÄ
i dopasowujemy odpowiednie narzÄdzia: stronÄ, kampanie, content.",tag:"Strategia"},{q:"Czy mogÄ zleciÄ tylko jednÄ
usÅugÄ, np. copywriting lub zdjÄcia?",a:"Tak - każda usÅuga jest dostÄpna osobno. Możesz zamówiÄ tylko to, czego aktualnie potrzebujesz.",tag:"Zakres"},{q:"Czy pomagasz w tworzeniu strategii marketingowej od zera?",a:"Tak - oferujÄ doradztwo i planowanie dziaÅaÅ marketingowych dopasowanych do Twojego biznesu.",tag:"Doradztwo"},{q:"Nie znam siÄ na marketingu - czy mogÄ liczyÄ na Twoje wsparcie?",a:"Zdecydowanie - tÅumaczÄ wszystko prostym jÄzykiem i pomagam podejmowaÄ trafne decyzje, bez zbÄdnego żargonu.",tag:"WspóÅpraca"},{q:"Jakie kanaÅy marketingowe sÄ
najlepsze dla mojej branży?",a:"To zależy od rodzaju dziaÅalnoÅci - po krótkim wywiadzie rekomendujÄ najlepsze rozwiÄ
zania: social media, Google, content, e-mail marketing itp.",tag:"KanaÅy"},{q:"Ile kosztujÄ
usÅugi marketingowe lub prowadzenie kampanii?",a:"Ceny sÄ
elastyczne i dopasowane do budżetu - nie musisz mieÄ ogromnych Årodków, by zaczÄ
Ä dziaÅaÄ skutecznie.",tag:"Wycena"}],Fq=[{q:"Where should I start growing my brand online?",a:"Start with a clear strategy â together we set goals, define the audience and pick the right tools: website, campaigns, content.",tag:"Strategy"},{q:"Can I order just one service, like copywriting or photography?",a:"Yes â every service is available individually. Order only what you actually need right now.",tag:"Scope"},{q:"Do you help build a marketing strategy from scratch?",a:"Yes â we advise and plan marketing activities tailored to your business.",tag:"Advisory"},{q:"I'm not a marketing expert â can I count on your support?",a:"Absolutely â we explain everything in plain English and help you make the right calls without jargon.",tag:"Partnership"},{q:"Which marketing channels are best for my industry?",a:"It depends on your business â after a short call we recommend the best mix: social media, Google, content, email marketing, etc.",tag:"Channels"},{q:"How much do marketing services and campaigns cost?",a:"Pricing is flexible and adjusted to your budget â you don't need a huge budget to start effectively.",tag:"Pricing"}],QP="/assets/mockup-1-C4fJubiM.webp",Hq=()=>W(()=>import("./en.index-eFh2NXBB.js"),__vite__mapDeps([245,169,66,91,90,56,88,3,71,32,33])),qq=q()({component:G(Hq,"component"),head:()=>({meta:[{title:"Web Design Glasgow · Websites, E-commerce & SEO | DiSpace"},{name:"description",content:"Glasgow studio building fast WordPress sites, WooCommerce stores and SEO for UK & Ireland businesses. â 5.0 on Google · free project quote in 24 h."},{property:"og:title",content:"Web Design Glasgow · Websites, E-commerce & SEO | DiSpace"},{property:"og:description",content:"Websites, e-commerce, branding and paid ads under one roof. Working with UK & Irish businesses â see our work and get a free quote in 24 h."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en"}],links:[...zt("/en","/pl","/en"),{rel:"preload",as:"image",href:QP,fetchpriority:"high"}],scripts:[Ea(Fq),Hh("en")]})}),Zq=()=>W(()=>import("./en.3d-led-letters-bBJw346q.js"),__vite__mapDeps([246,61])),Fx="3D LED Letters & Illuminated Shop Signs UK from £450 | DiSpace",Hx="Stainless steel 3D LED letters, halo (echo) and front lit built up letters. Illuminated shop signs designed, fabricated and installed UK-wide from £450. Free quote in 24 h.",Yq=q()({head:()=>({meta:[{title:Fx},{name:"description",content:Hx},{property:"og:title",content:Fx},{property:"og:description",content:Hx},{property:"og:type",content:"website"},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/3d-led-letters"},{name:"twitter:card",content:"summary_large_image"}],links:zt("/en/3d-led-letters","/litery-3d-swietlne","/en/3d-led-letters"),scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:cP.map(t=>
69({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})},aa({name:"3D LED letters (echo/halo effect)",description:"Stainless steel 3D LED letters â front lit, halo (echo) and side lit illuminated signage designed, fabricated and installed across the UK.",url:"https://dispace.uk/en/3d-led-letters",serviceType:"Illuminated signage / 3D LED letters",areaServed:["GB","IE"]}),Re([{name:"DiSpace",url:re},{name:"Design & print",url:`${re}/en/services/design-print`},{name:"3D LED letters",url:`${re}/en/3d-led-letters`}]),{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Product",name:"3D LED letters (stainless steel, halo & front lit)",description:"Built up 3D LED letters and illuminated shop signs in stainless steel or acrylic â front lit, halo (echo) and side lit, fabricated and installed across the UK.",brand:{"@type":"Brand",name:"DiSpace"},category:"Illuminated signage",offers:{"@type":"AggregateOffer",priceCurrency:"GBP",lowPrice:"450",highPrice:"4500",offerCount:"5",availability:"https://schema.org/InStock",url:"https://dispace.uk/en/3d-led-letters"}})}]}),component:G(Zq,"component")}),XP="/assets/astronaut-hero-Dswz-PQE.webp",Jq=()=>W(()=>import("./en.contact-CDgllbkE.js"),__vite__mapDeps([247,29,56,14,248])),Qq=q()({component:G(Jq,"component"),head:()=>({meta:[{title:"Contact DiSpace â Free Project Quote | Glasgow Studio"},{name:"description",content:"Email, phone +44, WhatsApp or Messenger â pick your channel. We reply within 24 working hours in English or Polish. Studio in Glasgow, projects across the UK."},{property:"og:title",content:"Contact DiSpace â Free Project Quote | Glasgow Studio"},{property:"og:description",content:"Pick your preferred channel or send a brief â we reply within 24 working hours, no strings attached."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/contact"}],links:[...zt("/en/contact","/pl/kontakt","/en/contact"),{rel:"preload",as:"image",href:XP,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"ProfessionalService","@id":"https://dispace.uk/#localbusiness",name:"DiSpace Studio",url:"https://dispace.uk/en/contact",telephone:"+44 7476 052809",email:"[email protected]",priceRange:"££",address:{"@type":"PostalAddress",streetAddress:"14A Reidvale St",addressLocality:"Glasgow",postalCode:"G31 1SZ",addressRegion:"Scotland",addressCountry:"GB"},geo:{"@type":"GeoCoordinates",latitude:55.8612,longitude:-4.215},areaServed:["GB","IE"],openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"17:00"}]})}]})}),Xq=()=>W(()=>import("./en.cookies-BYDO0BMN.js"),__vite__mapDeps([249,250,61,32])),eZ=q()({head:()=>({meta:[{title:"Cookies Policy · DiSpace"},{name:"description",content:"Cookies Policy for the DiSpace website - information about cookies and their use."},{property:"og:title",content:"Cookies Policy · DiSpace"},{property:"og:description",content:"Information about cookies on the DiSpace website."},{property:"og:locale",content:"en_GB"}],links:zt("/en/cookies","/pl/cookies","/en/cookies")}),component:G(Xq,"component")}),tZ=()=>W(()=>import("./en.dispace-form-jXONsaDw.js"),__vite__mapDeps([251,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33])),aZ=q()({component:G(tZ,"component"),head:()=>({meta:[{title:"DISPACE ⢠Get a free quote in 2 minutes"},{name:"description",content:"Fill out a short brief and get a free project quote. We reply within 24 working hours - no obligations."},{property:"og:title",content:"DISPACE ⢠Get a free project quote"},{property:"og:description",content:"Professional websites, online stores, and visual identities. Fill out a short form and get a free quote."},{property:"og:locale",content:"en_GB"}],links:zt("/en/dispace-form","/pl/dispace-formularz","/en/dispace-form")})}),iZ={home:"home",contact:"contact",portfolio:"portfolio","offer.web":"offerWeb","offer.marketing":"offerMarketing","offer.design":"offerDesign","offer.led":"offerDesign",knowledge:"knowledge",terms:"terms",privacy:"privacy",cookies:"cookies",form:"form",faq:"faq"},nZ={pl:"pl_PL",en:"en_GB"};function eC({lang:t,routeKey:e,pathOverride:a}){const i=eu.find(f=>f.key===e),r=$B(t),s=r.meta[iZ[e]],c=a??(i?i[t]:null);if(!i||!c||!s)return{meta:[{title:r.meta.siteName}]};const d=Jd(c),p=[{title:s.title},{name:"description",content:s.description},{property:"og:title",content:s.title},{property:"og:description",content:s.description},{property:"og:url",content:d},{property:"og:locale",content:nZ[t]},{property:"og:site_name",content:r.meta.siteName}],h=[{rel:"canonical",href:d},{rel:"alternate",hreflang:"pl",href:Jd(i.pl)}];return i.en&&h.push({rel:"alternate",hreflang:"en",href:Jd(i.en)}),h.push({rel:"alternate",hreflang:"x-default",href:Jd(i.pl)}),{meta:p,links:h}}const oZ=()=>W(()=>import("./en.faq-Cnwoco1K.js"),__vite__mapDeps([252,253,56,8,137,69])),rZ=q()({head:()=>eC({lang:"en",routeKey:"faq"}),component:G(oZ,"component")}),tC="/assets/portfolio-jrr-full-D0FCpPyg.webp",sZ=()=>W(()=>import("./en.portfolio-BVDYOB_8.js"),__vite__mapDeps([254,154,155,89,69,156,255,90,56,70,71])),lZ=q()({component:G(sZ,"component"),head:()=>({meta:[{title:"Portfolio · DiSpace - websites and online stores"},{name:"description",content:"Portfolio of DiSpace studio based in Glasgow. WordPress websites, WooCommerce stores, and branding for businesses in the UK. View our live projects."},{property:"og:title",content:"Our Portfolio · DiSpace Studio â websites, e-commerce and branding in the UK"},{property:"og:description",content:"Swipe and click on any project to see it in action. Each project is not just about design, but a well-thought-out tool that generates revenue for our clients."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/portfolio"}],links:[...zt("/en/portfolio","/pl/portfolio","/en/portfolio"),{rel:"preload",as:"image",href:tC,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"CollectionPage",name:"DiSpace Portfolio â websites, e-commerce and branding in the UK",description:"WordPress websites, WooCommerce stores and branding projects delivered for businesses in the UK.",url:"https://dispace.uk/en/portfolio",inLanguage:"en-GB",isPartOf:{"@type":"WebSite",name:"DiSpace",url:"https://dispace.uk"}})}]})}),cZ=()=>W(()=>import("./en.privacy-policy-CXZJCcaR.js"),__vite__mapDeps([256,250,61,32])),uZ=q()({head:()=>({meta:[{title:"Privacy Policy · DiSpace"},{name:"description",content:"Privacy Policy of the DiSpace website - rules for processing personal data in accordance with the GDPR."},{property:"og:title",content:"Privacy Policy · DiSpace"},{property:"og:description",content:"Rules for processing personal data on the DiSpace website."},{property:"og:locale",content:"en_GB"}
69],links:zt("/en/privacy-policy","/pl/polityka-prywatnosci","/en/privacy-policy")}),component:G(cZ,"component")}),dZ=()=>W(()=>import("./en.seo-__city_-DEu5QRZg.js"),__vite__mapDeps([257,258,70,71,172])),pZ=q()({loader:({params:t})=>{const e=WA("seo",t.city);if(!e)throw Ve();return{page:e}},head:({params:t,loaderData:e})=>{const a=e?.page;if(!a)return{meta:[{title:"Not found"},{name:"robots",content:"noindex"}]};const i=`${re}/en/seo-${t.city}`;return{meta:[{title:a.title},{name:"description",content:a.description},{property:"og:title",content:a.title},{property:"og:description",content:a.description},{property:"og:url",content:i},{property:"og:locale",content:"en_GB"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:a.title},{name:"twitter:description",content:a.description},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(`/en/seo-${t.city}`),scripts:[aa({name:`SEO ${a.city}`,description:a.description,url:i,serviceType:"SEO & digital marketing",areaServed:["GB"]}),Ea(a.faq.map(r=>({q:r.q,a:r.a}))),Re([{name:"DiSpace",url:re},{name:"Services",url:`${re}/en/services/marketing-seo`},{name:`SEO ${a.city}`,url:i}])]}},component:G(dZ,"component")}),hZ=()=>W(()=>import("./en.terms-Bnw-h_3J.js"),__vite__mapDeps([259,250,61,32])),yZ=q()({head:()=>({meta:[{title:"Terms of Service · DiSpace"},{name:"description",content:"Terms of service for DiSpace - rules and conditions of service provision."},{property:"og:title",content:"Terms of Service · DiSpace"},{property:"og:description",content:"Rules of using the website and provision of services by DiSpace."},{property:"og:locale",content:"en_GB"}],links:zt("/en/terms","/pl/regulamin","/en/terms")}),component:G(hZ,"component")}),mZ=()=>W(()=>import("./en.web-design-__city_-EdCLrcwE.js"),__vite__mapDeps([260,258,70,71,172])),fZ=q()({loader:({params:t})=>{const e=WA("web-design",t.city);if(!e)throw Ve();return{page:e}},head:({params:t,loaderData:e})=>{const a=e?.page;if(!a)return{meta:[{title:"Not found"},{name:"robots",content:"noindex"}]};const i=`${re}/en/web-design-${t.city}`;return{meta:[{title:a.title},{name:"description",content:a.description},{property:"og:title",content:a.title},{property:"og:description",content:a.description},{property:"og:url",content:i},{property:"og:locale",content:"en_GB"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:title",content:a.title},{name:"twitter:description",content:a.description},{name:"robots",content:"index, follow, max-image-preview:large"}],links:nt(`/en/web-design-${t.city}`),scripts:[aa({name:`Web Design ${a.city}`,description:a.description,url:i,serviceType:"Web design & development",areaServed:["GB"]}),Ea(a.faq.map(r=>({q:r.q,a:r.a}))),Re([{name:"DiSpace",url:re},{name:"Services",url:`${re}/en/services/web-shops`},{name:`Web Design ${a.city}`,url:i}])]}},component:G(mZ,"component")});var it;(function(t){t.assertEqual=r=>{};function e(r){}t.assertIs=e;function a(r){throw new Error}t.assertNever=a,t.arrayToEnum=r=>{const s={};for(const c of r)s[c]=c;return s},t.getValidEnumValues=r=>{const s=t.objectKeys(r).filter(d=>typeof r[r[d]]!="number"),c={};for(const d of s)c[d]=r[d];return t.objectValues(c)},t.objectValues=r=>t.objectKeys(r).map(function(s){return r[s]}),t.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{const s=[];for(const c in r)Object.prototype.hasOwnProperty.call(r,c)&&s.push(c);return s},t.find=(r,s)=>{for(const c of r)if(s(c))return c},t.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function i(r,s=" | "){return r.map(c=>typeof c=="string"?`'${c}'`:c).join(s)}t.joinValues=i,t.jsonStringifyReplacer=(r,s)=>typeof s=="bigint"?s.toString():s})(it||(it={}));var qx;(function(t){t.mergeShapes=(e,a)=>({...e,...a})})(qx||(qx={}));const je=it.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),zo=t=>{switch(typeof t){case"undefined":return je.undefined;case"string":return je.string;case"number":return Number.isNaN(t)?je.nan:je.number;case"boolean":return je.boolean;case"function":return je.function;case"bigint":return je.bigint;case"symbol":return je.symbol;case"object":return Array.isArray(t)?je.array:t===null?je.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?je.promise:typeof Map<"u"&&t instanceof Map?je.map:typeof Set<"u"&&t instanceof Set?je.set:typeof Date<"u"&&t instanceof Date?je.date:je.object;default:return je.unknown}}
vendor: 49,050 bytes, line 69
69,se=it.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class Nn extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=i=>{this.issues=[...this.issues,i]},this.addIssues=(i=[])=>{this.issues=[...this.issues,...i]};const a=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,a):this.__proto__=a,this.name="ZodError",this.issues=e}format(e){const a=e||function(s){return s.message},i={_errors:[]},r=s=>{for(const c of s.issues)if(c.code==="invalid_union")c.unionErrors.map(r);else if(c.code==="invalid_return_type")r(c.returnTypeError);else if(c.code==="invalid_arguments")r(c.argumentsError);else if(c.path.length===0)i._errors.push(a(c));else{let d=i,p=0;for(;p<c.path.length;){const h=c.path[p];p===c.path.length-1?(d[h]=d[h]||{_errors:[]},d[h]._errors.push(a(c))):d[h]=d[h]||{_errors:[]},d=d[h],p++}}};return r(this),i}static assert(e){if(!(e instanceof Nn))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,it.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=a=>a.message){const a={},i=[];for(const r of this.issues)if(r.path.length>0){const s=r.path[0];a[s]=a[s]||[],a[s].push(e(r))}else i.push(e(r));return{formErrors:i,fieldErrors:a}}get formErrors(){return this.flatten()}}Nn.create=t=>new Nn(t);const ek=(t,e)=>{let a;switch(t.code){case se.invalid_type:t.received===je.undefined?a="Required":a=`Expected ${t.expected}, received ${t.received}`;break;case se.invalid_literal:a=`Invalid literal value, expected ${JSON.stringify(t.expected,it.jsonStringifyReplacer)}`;break;case se.unrecognized_keys:a=`Unrecognized key(s) in object: ${it.joinValues(t.keys,", ")}`;break;case se.invalid_union:a="Invalid input";break;case se.invalid_union_discriminator:a=`Invalid discriminator value. Expected ${it.joinValues(t.options)}`;break;case se.invalid_enum_value:a=`Invalid enum value. Expected ${it.joinValues(t.options)}, received '${t.received}'`;break;case se.invalid_arguments:a="Invalid function arguments";break;case se.invalid_return_type:a="Invalid function return type";break;case se.invalid_date:a="Invalid date";break;case se.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(a=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(a=`${a} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?a=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?a=`Invalid input: must end with "${t.validation.endsWith}"`:it.assertNever(t.validation):t.validation!=="regex"?a=`Invalid ${t.validation}`:a="Invalid";break;case se.too_small:t.type==="array"?a=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?a=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?a=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?a=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?a=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:a="Invalid input";break;case se.too_big:t.type==="array"?a=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?a=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?a=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?a=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?a=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:a="Invalid input";break;case se.custom:a="Invalid input";break;case se.invalid_intersection_types:a="Intersection results could not be merged";break;case se.not_multiple_of:a=`Number must be a multiple of ${t.multipleOf}`;break;case se.not_finite:a="Number must be finite";break;default:a=e.defaultError,it.assertNever(t)}return{message:a}};let wZ=ek;function gZ(){return wZ}const kZ=t=>{const{data:e,path:a,errorMaps:i,issueData:r}=t,s=[...a,...r.path||[]],c={...r,path:s};if(r.message!==void 0)return{...r,path:s,message:r.message};let d="";const p=i.filter(h=>!!h).slice().reverse();for(const h of p)d=h(c,{data:e,defaultError:d}).message;return{...r,path:s,message:d}};function ye(t,e){const a=gZ(),i=kZ({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,a,a===ek?void 0:ek].filter(r=>!!r)});t.common.issues.push(i)}class ti{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,a){const i=[];for(const r of a){if(r.status==="aborted")return Oe;r.status==="dirty"&&e.dirty(),i.push(r.value)}return{status:e.value,value:i}}static async mergeObjectAsync(e,a){const i=[];for(const r of a){const s=await r.key,c=await r.value;i.push({key:s,value:c})}return ti.mergeObjectSync(e,i)}static mergeObjectSync(e,a){const i={};for(const r of a){const{key:s,value:c}=r;if(s.status==="aborted"||c.status==="aborted")return Oe;s.status==="dirty"&&e.dirty(),c.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof c.value<"u"||r.alwaysSet)&&(i[s.value]=c.value)}return{status:e.value,value:i}}}const Oe=Object.freeze({status:"aborted"}),_c=t=>({status:"dirty",value:t}),ki=t=>({status:"valid",value:t}),Zx=t=>t.status==="aborted",Yx=t=>t.status==="dirty",rl=t=>t.status==="valid",zh=t=>typeof Promise<"u"&&t instanceof Promise;var Se;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(Se||(Se={}));class Uo{constructor(e,a,i,r){this._cachedPath=[],this.parent=e,this.data=a,this._path=i,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Jx=(t,e)=>{if(rl(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const a=new Nn(t.common.issues);return this._error=a,this._error}}};function Be(t){if(!t)return{};const{errorMap:e,invalid_type_error:a,required_error:i,description:r}=t;if(e&&(a||i))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(c,d)=>{const{message:p}=t;return c.code==="invalid_enum_value"?{message:p??d.defaultError}:typeof d.data>"u"?{message:p??i??d.defaultError}:c.code!=="invalid_type"?{message:d.defaultError}:{message:p??a??d.defaultError}},description:r}}class et{get description(){return this._def.description}_getType(e){return zo(e.data)}_getOrReturnCtx(e,a){return a||{common:e.parent.common,data:e.data,parsedType:zo(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new ti,ctx:{common:e.parent.common,data:e.data,parsedType:zo(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const a=this._parse(e);if(zh(a))throw new Error("Synchronous parse encountered promise.");return a}_parseAsync(e){const a=this._parse(e);return Promise.resolve(a)}parse(e,a){const i=this.safeParse(e,a);if(i.success)return i.data;throw i.error}safeParse(e,a){const i={common:{issues:[],async:a?.async??!1,contextualErrorMap:a?.errorMap},path:a?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zo(e)},r=this._parseSync({data:e,path:i.path,parent:i});return Jx(i,r)}"~validate"(e){const a={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zo(e)};if(!this["~standard"].async)try{const i=this._parseSync({data:e,path:[],parent:a});return rl(i)?{value:i.value}:{issues:a.common.issues}}catch(i){i?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),a.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:a}).then(i=>rl(i)?{value:i.value}:{issues:a.common.issues})}async parseAsync(e,a){const i=await this.safeParseAsync(e,a);if(i.success)return i.data;throw i.error}async safeParseAsync(e,a){const i={common:{issues:[],contextualErrorMap:a?.errorMap,async:!0},path:a?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zo(e)},r=this._parse({data:e,path:i.path,parent:i}),s=await(zh(r)?r:Promise.resolve(r));return Jx(i,s)}refine(e,a){const i=r=>typeof a=="string"||typeof a>"u"?{message:a}:typeof a=="function"?a(r):a;return this._refinement((r,s)=>{const c=e(r),d=()=>s.addIssue({code:se.custom,...i(r)});return typeof Promise<"u"&&c instanceof Promise?c.then(p=>p?!0:(d(),!1)):c?!0:(d(),!1)})}refinement(e,a){return this._refinement((i,r)=>e(i)?!0:(r.addIssue(typeof a=="function"?a(i,r):a),!1))}_refinement(e){return new ll({schema:this,typeName:Ue.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:a=>this["~validate"](a)}}optional(){return Ao.create(this,this._def)}nullable(){return cl.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return an.create(this)}promise(){return Sh.create(this,this._def)}or(e){return jh.create([this,e],this._def)}and(e){return vh.create(this,e,this._def)}transform(e){return new ll({...Be(this._def),schema:this,typeName:Ue.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const a=typeof e=="function"?e:()=>e;return new ak({...Be(this._def),innerType:this,defaultValue:a,typeName:Ue.ZodDefault})}brand(){return new IZ({typeName:Ue.ZodBranded,type:this,...Be(this._def)})}catch(e){const a=typeof e=="function"?e:()=>e;return new ik({...Be(this._def),innerType:this,catchValue:a,typeName:Ue.ZodCatch})}describe(e){const a=this.constructor;return new a({...this._def,description:e})}pipe(e){return zz.create(this,e)}readonly(){return nk.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const zZ=/^c[^\s-]{8,}$/i,bZ=/^[0-9a-z]+$/,jZ=/^[0-9A-HJKMNP-TV-Z]{26}$/i,vZ=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,SZ=/^[a-z0-9_-]{21}$/i,xZ=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,_Z=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,TZ=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,EZ="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Aw;const AZ=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,PZ=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,CZ=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,RZ=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,DZ=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,OZ=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,aC="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",UZ=new RegExp(`^${aC}$`);function iC(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const a=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${a}`}function LZ(t){return new RegExp(`^${iC(t)}$`)}function KZ(t){let e=`${aC}T${iC(t)}`;const a=[];return a.push(t.local?"Z?":"Z"),t.offset&&a.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${a.join("|")})`,new RegExp(`^${e}$`)}function MZ(t,e){return!!((e==="v4"||!e)&&AZ.test(t)||(e==="v6"||!e)&&CZ.test(t))}function NZ(t,e){if(!xZ.test(t))return!1;try{const[a]=t.split(".");if(!a)return!1;const i=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),r=JSON.parse(atob(i));return!(typeof r!="object"||r===null||"typ"in r&&r?.typ!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function BZ(t,e){return!!((e==="v4"||!e)&&PZ.test(t)||(e==="v6"||!e)&&RZ.test(t))}class _o extends et{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==je.string){const s=this._getOrReturnCtx(e);return ye(s,{code:se.invalid_type,expected:je.string,received:s.parsedType}),Oe}const i=new ti;let r;for(const s of this._def.checks)if(s.kind==="min")e.data.length<s.value&&(r=this._getOrReturnCtx(e,r),ye(r,{code:se.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if(s.kind==="max")e.data.length>s.value&&(r=this._getOrReturnCtx(e,r),ye(r,{code:se.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if(s.kind==="length"){const c=e.data.length>s.value,d=e.data.length<s.value;(c||d)&&(r=this._getOrReturnCtx(e,r),c?ye(r,{code:se.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):d&&ye(r,{code:se.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),i.dirty())}else if(s.kind==="email")TZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"email",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="emoji")Aw||(Aw=new RegExp(EZ,"u")),Aw.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"emoji",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="uuid")vZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"uuid",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="nanoid")SZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"nanoid",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="cuid")zZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"cuid",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="cuid2")bZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"cuid2",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="ulid")jZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"ulid",code:se.invalid_string,message:s.message}),i.dirty());else if(s.kind==="url")try{new URL(e.data)}catch{r=this._getOrReturnCtx(e,r),ye(r,{validation:"url",code:se.invalid_string,message:s.message}),i.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"regex",code:se.invalid_string,message:s.message}),i.dirty())):s.kind==="trim"?e.data=e.data.trim():s.kind==="includes"?e.data.includes(s.value,s.position)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),i.dirty()):s.kind==="toLowerCase"?e.data=e.data.toLowerCase():s.kind==="toUpperCase"?e.data=e.data.toUpperCase():s.kind==="startsWith"?e.data.startsWith(s.value)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:{startsWith:s.value},message:s.message}),i.dirty()):s.kind==="endsWith"?e.data.endsWith(s.value)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:{endsWith:s.value},message:s.message}),i.dirty()):s.kind==="datetime"?KZ(s).test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:"datetime",message:s.message}),i.dirty()):s.kind==="date"?UZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:"date",message:s.message}),i.dirty()):s.kind==="time"?LZ(s).test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{code:se.invalid_string,validation:"time",message:s.message}),i.dirty()):s.kind==="duration"?_Z.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"duration",code:se.invalid_string,message:s.message}),i.dirty()):s.kind==="ip"?MZ(e.data,s.version)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"ip",code:se.invalid_string,message:s.message}),i.dirty()):s.kind==="jwt"?NZ(e.data,s.alg)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"jwt",code:se.invalid_string,message:s.message}),i.dirty()):s.kind==="cidr"?BZ(e.data,s.version)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"cidr",code:se.invalid_string,message:s.message}),i.dirty()):s.kind==="base64"?DZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"base64",code:se.invalid_string,message:s.message}),i.dirty()):s.kind==="base64url"?OZ.test(e.data)||(r=this._getOrReturnCtx(e,r),ye(r,{validation:"base64url",code:se.invalid_string,message:s.message}),i.dirty()):it.assertNever(s);return{status:i.value,value:e.data}}_regex(e,a,i){return this.refinement(r=>e.test(r),{validation:a,code:se.invalid_string,...Se.errToObj(i)})}_addCheck(e){return new _o({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Se.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Se.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Se.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Se.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Se.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Se.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Se.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Se.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Se.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Se.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Se.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Se.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Se.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...Se.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Se.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Se.errToObj(e)})}regex(e,a){return this._addCheck({kind:"regex",regex:e,...Se.errToObj(a)})}includes(e,a){return this._addCheck({kind:"includes",value:e,position:a?.position,...Se.errToObj(a?.message)})}startsWith(e,a){return this._addCheck({kind:"startsWith",value:e,...Se.errToObj(a)})}endsWith(e,a){return this._addCheck({kind:"endsWith",value:e,...Se.errToObj(a)})}min(e,a){return this._addCheck({kind:"min",value:e,...Se.errToObj(a)})}max(e,a){return this._addCheck({kind:"max",value:e,...Se.errToObj(a)})}length(e,a){return this._addCheck({kind:"length",value:e,...Se.errToObj(a)})}nonempty(e){return this.min(1,Se.errToObj(e))}trim(){return new _o({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _o({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _o({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const a of this._def.checks)a.kind==="min"&&(e===null||a.value>e)&&(e=a.value);return e}get maxLength(){let e=null;for(const a of this._def.checks)a.kind==="max"&&(e===null||a.value<e)&&(e=a.value);return e}}_o.create=t=>new _o({checks:[],typeName:Ue.ZodString,coerce:t?.coerce??!1,...Be(t)});function $Z(t,e){const a=(t.toString().split(".")[1]||"").length,i=(e.toString().split(".")[1]||"").length,r=a>i?a:i,s=Number.parseInt(t.toFixed(r).replace(".","")),c=Number.parseInt(e.toFixed(r).replace(".",""));return s%c/10**r}class ru extends et{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==je.number){const s=this._getOrReturnCtx(e);return ye(s,{code:se.invalid_type,expected:je.number,received:s.parsedType}),Oe}let i;const r=new ti;for(const s of this._def.checks)s.kind==="int"?it.isInteger(e.data)||(i=this._getOrReturnCtx(e,i),ye(i,{code:se.invalid_type,expected:"integer",received:"float",message:s.message}),r.dirty()):s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),r.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),r.dirty()):s.kind==="multipleOf"?$Z(e.data,s.value)!==0&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.not_multiple_of,multipleOf:s.value,message:s.message}),r.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(i=this._getOrReturnCtx(e,i),ye(i,{code:se.not_finite,message:s.message}),r.dirty()):it.assertNever(s);return{status:r.value,value:e.data}}gte(e,a){return this.setLimit("min",e,!0,Se.toString(a))}gt(e,a){return this.setLimit("min",e,!1,Se.toString(a))}lte(e,a){return this.setLimit("max",e,!0,Se.toString(a))}lt(e,a){return this.setLimit("max",e,!1,Se.toString(a))}setLimit(e,a,i,r){return new ru({...this._def,checks:[...this._def.checks,{kind:e,value:a,inclusive:i,message:Se.toString(r)}]})}_addCheck(e){return new ru({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Se.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Se.toString(e)})}multipleOf(e,a){return this._addCheck({kind:"multipleOf",value:e,message:Se.toString(a)})}finite(e){return this._addCheck({kind:"finite",message:Se.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Se.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Se.toString(e)})}get minValue(){let e=null;for(const a of this._def.checks)a.kind==="min"&&(e===null||a.value>e)&&(e=a.value);return e}get maxValue(){let e=null;for(const a of this._def.checks)a.kind==="max"&&(e===null||a.value<e)&&(e=a.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&it.isInteger(e.value))}get isFinite(){let e=null,a=null;for(const i of this._def.checks){if(i.kind==="finite"||i.kind==="int"||i.kind==="multipleOf")return!0;i.kind==="min"?(a===null||i.value>a)&&(a=i.value):i.kind==="max"&&(e===null||i.value<e)&&(e=i.value)}return Number.isFinite(a)&&Number.isFinite(e)}}ru.create=t=>new ru({checks:[],typeName:Ue.ZodNumber,coerce:t?.coerce||!1,...Be(t)});class su extends et{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==je.bigint)return this._getInvalidInput(e);let i;const r=new ti;for(const s of this._def.checks)s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),r.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),r.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(i=this._getOrReturnCtx(e,i),ye(i,{code:se.not_multiple_of,multipleOf:s.value,message:s.message}),r.dirty()):it.assertNever(s);return{status:r.value,value:e.data}}_getInvalidInput(e){const a=this._getOrReturnCtx(e);return ye(a,{code:se.invalid_type,expected:je.bigint,received:a.parsedType}),Oe}gte(e,a){return this.setLimit("min",e,!0,Se.toString(a))}gt(e,a){return this.setLimit("min",e,!1,Se.toString(a))}lte(e,a){return this.setLimit("max",e,!0,Se.toString(a))}lt(e,a){return this.setLimit("max",e,!1,Se.toString(a))}setLimit(e,a,i,r){return new su({...this._def,checks:[...this._def.checks,{kind:e,value:a,inclusive:i,message:Se.toString(r)}]})}_addCheck(e){return new su({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Se.toString(e)})}multipleOf(e,a){return this._addCheck({kind:"multipleOf",value:e,message:Se.toString(a)})}get minValue(){let e=null;for(const a of this._def.checks)a.kind==="min"&&(e===null||a.value>e)&&(e=a.value);return e}get maxValue(){let e=null;for(const a of this._def.checks)a.kind==="max"&&(e===null||a.value<e)&&(e=a.value);return e}}su.create=t=>new su({checks:[],typeName:Ue.ZodBigInt,coerce:t?.coerce??!1,...Be(t)});class Qx extends et{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==je.boolean){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.boolean,received:i.parsedType}),Oe}return ki(e.data)}}Qx.create=t=>new Qx({typeName:Ue.ZodBoolean,coerce:t?.coerce||!1,...Be(t)});class bh extends et{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==je.date){const s=this._getOrReturnCtx(e);return ye(s,{code:se.invalid_type,expected:je.date,received:s.parsedType}),Oe}if(Number.isNaN(e.data.getTime())){const s=this._getOrReturnCtx(e);return ye(s,{code:se.invalid_date}),Oe}const i=new ti;let r;for(const s of this._def.checks)s.kind==="min"?e.data.getTime()<s.value&&(r=this._getOrReturnCtx(e,r),ye(r,{code:se.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),i.dirty()):s.kind==="max"?e.data.getTime()>s.value&&(r=this._getOrReturnCtx(e,r),ye(r,{code:se.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),i.dirty()):it.assertNever(s);return{status:i.value,value:new Date(e.data.getTime())}}_addCheck(e){return new bh({...this._def,checks:[...this._def.checks,e]})}min(e,a){return this._addCheck({kind:"min",value:e.getTime(),message:Se.toString(a)})}max(e,a){return this._addCheck({kind:"max",value:e.getTime(),message:Se.toString(a)})}get minDate(){let e=null;for(const a of this._def.checks)a.kind==="min"&&(e===null||a.value>e)&&(e=a.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const a of this._def.checks)a.kind==="max"&&(e===null||a.value<e)&&(e=a.value);return e!=null?new Date(e):null}}bh.create=t=>new bh({checks:[],coerce:t?.coerce||!1,typeName:Ue.ZodDate,...Be(t)});class Xx extends et{_parse(e){if(this._getType(e)!==je.symbol){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.symbol,received:i.parsedType}),Oe}return ki(e.data)}}Xx.create=t=>new Xx({typeName:Ue.ZodSymbol,...Be(t)});class e_ extends et{_parse(e){if(this._getType(e)!==je.undefined){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.undefined,received:i.parsedType}),Oe}return ki(e.data)}}e_.create=t=>new e_({typeName:Ue.ZodUndefined,...Be(t)});class t_ extends et{_parse(e){if(this._getType(e)!==je.null){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.null,received:i.parsedType}),Oe}return ki(e.data)}}t_.create=t=>new t_({typeName:Ue.ZodNull,...Be(t)});class a_ extends et{constructor(){super(...arguments),this._any=!0}_parse(e){return ki(e.data)}}a_.create=t=>new a_({typeName:Ue.ZodAny,...Be(t)});class i_ extends et{constructor(){super(...arguments),this._unknown=!0}_parse(e){return ki(e.data)}}i_.create=t=>new i_({typeName:Ue.ZodUnknown,...Be(t)});class Lo extends et{_parse(e){const a=this._getOrReturnCtx(e);return ye(a,{code:se.invalid_type,expected:je.never,received:a.parsedType}),Oe}}Lo.create=t=>new Lo({typeName:Ue.ZodNever,...Be(t)});class n_ extends et{_parse(e){if(this._getType(e)!==je.undefined){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.void,received:i.parsedType}),Oe}return ki(e.data)}}n_.create=t=>new n_({typeName:Ue.ZodVoid,...Be(t)});class an extends et{_parse(e){const{ctx:a,status:i}=this._processInputParams(e),r=this._def;if(a.parsedType!==je.array)return ye(a,{code:se.invalid_type,expected:je.array,received:a.parsedType}),Oe;if(r.exactLength!==null){const c=a.data.length>r.exactLength.value,d=a.data.length<r.exactLength.value;(c||d)&&(ye(a,{code:c?se.too_big:se.too_small,minimum:d?r.exactLength.value:void 0,maximum:c?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),i.dirty())}if(r.minLength!==null&&a.data.length<r.minLength.value&&(ye(a,{code:se.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),i.dirty()),r.maxLength!==null&&a.data.length>r.maxLength.value&&(ye(a,{code:se.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),i.dirty()),a.common.async)return Promise.all([...a.data].map((c,d)=>r.type._parseAsync(new Uo(a,c,a.path,d)))).then(c=>ti.mergeArray(i,c));const s=[...a.data].map((c,d)=>r.type._parseSync(new Uo(a,c,a.path,d)));return ti.mergeArray(i,s)}get element(){return this._def.type}min(e,a){return new an({...this._def,minLength:{value:e,message:Se.toString(a)}})}max(e,a){return new an({...this._def,maxLength:{value:e,message:Se.toString(a)}})}length(e,a){return new an({...this._def,exactLength:{value:e,message:Se.toString(a)}})}nonempty(e){return this.min(1,e)}}an.create=(t,e)=>new an({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Ue.ZodArray,...Be(e)});function Gs(t){if(t instanceof Gt){const e={};for(const a in t.shape){const i=t.shape[a];e[a]=Ao.create(Gs(i))}return new Gt({...t._def,shape:()=>e})}else return t instanceof an?new an({...t._def,type:Gs(t.element)}):t instanceof Ao?Ao.create(Gs(t.unwrap())):t instanceof cl?cl.create(Gs(t.unwrap())):t instanceof Sr?Sr.create(t.items.map(e=>Gs(e))):t}class Gt extends et{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),a=it.objectKeys(e);return this._cached={shape:e,keys:a},this._cached}_parse(e){if(this._getType(e)!==je.object){const h=this._getOrReturnCtx(e);return ye(h,{code:se.invalid_type,expected:je.object,received:h.parsedType}),Oe}const{status:i,ctx:r}=this._processInputParams(e),{shape:s,keys:c}=this._getCached(),d=[];if(!(this._def.catchall instanceof Lo&&this._def.unknownKeys==="strip"))for(const h in r.data)c.includes(h)||d.push(h);const p=[];for(const h of c){const f=s[h],m=r.data[h];p.push({key:{status:"valid",value:h},value:f._parse(new Uo(r,m,r.path,h)),alwaysSet:h in r.data})}if(this._def.catchall instanceof Lo){const h=this._def.unknownKeys;if(h==="passthrough")for(const f of d)p.push({key:{status:"valid",value:f},value:{status:"valid",value:r.data[f]}});else if(h==="strict")d.length>0&&(ye(r,{code:se.unrecognized_keys,keys:d}),i.dirty());else if(h!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const h=this._def.catchall;for(const f of d){const m=r.data[f];p.push({key:{status:"valid",value:f},value:h._parse(new Uo(r,m,r.path,f)),alwaysSet:f in r.data})}}return r.common.async?Promise.resolve().then(async()=>{const h=[];for(const f of p){const m=await f.key,g=await f.value;h.push({key:m,value:g,alwaysSet:f.alwaysSet})}return h}).then(h=>ti.mergeObjectSync(i,h)):ti.mergeObjectSync(i,p)}get shape(){return this._def.shape()}strict(e){return Se.errToObj,new Gt({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(a,i)=>{const r=this._def.errorMap?.(a,i).message??i.defaultError;return a.code==="unrecognized_keys"?{message:Se.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new Gt({...this._def,unknownKeys:"strip"})}passthrough(){return new Gt({...this._def,unknownKeys:"passthrough"})}extend(e){return new Gt({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new Gt({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ue.ZodObject})}setKey(e,a){return this.augment({[e]:a})}catchall(e){return new Gt({...this._def,catchall:e})}pick(e){const a={};for(const i of it.objectKeys(e))e[i]&&this.shape[i]&&(a[i]=this.shape[i]);return new Gt({...this._def,shape:()=>a})}omit(e){const a={};for(const i of it.objectKeys(this.shape))e[i]||(a[i]=this.shape[i]);return new Gt({...this._def,shape:()=>a})}deepPartial(){return Gs(this)}partial(e){const a={};for(const i of it.objectKeys(this.shape)){const r=this.shape[i];e&&!e[i]?a[i]=r:a[i]=r.optional()}return new Gt({...this._def,shape:()=>a})}required(e){const a={};for(const i of it.objectKeys(this.shape))if(e&&!e[i])a[i]=this.shape[i];else{let s=this.shape[i];for(;s instanceof Ao;)s=s._def.innerType;a[i]=s}return new Gt({...this._def,shape:()=>a})}keyof(){return nC(it.objectKeys(this.shape))}}Gt.create=(t,e)=>new Gt({shape:()=>t,unknownKeys:"strip",catchall:Lo.create(),typeName:Ue.ZodObject,...Be(e)});Gt.strictCreate=(t,e)=>new Gt({shape:()=>t,unknownKeys:"strict",catchall:Lo.create(),typeName:Ue.ZodObject,...Be(e)});Gt.lazycreate=(t,e)=>new Gt({shape:t,unknownKeys:"strip",catchall:Lo.create(),typeName:Ue.ZodObject,...Be(e)});class jh extends et{_parse(e){const{ctx:a}=this._processInputParams(e),i=this._def.options;function r(s){for(const d of s)if(d.result.status==="valid")return d.result;for(const d of s)if(d.result.status==="dirty")return a.common.issues.push(...d.ctx.common.issues),d.result;const c=s.map(d=>new Nn(d.ctx.common.issues));return ye(a,{code:se.invalid_union,unionErrors:c}),Oe}if(a.common.async)return Promise.all(i.map(async s=>{const c={...a,common:{...a.common,issues:[]},parent:null};return{result:await s._parseAsync({data:a.data,path:a.path,parent:c}),ctx:c}})).then(r);{let s;const c=[];for(const p of i){const h={...a,common:{...a.common,issues:[]},parent:null},f=p._parseSync({data:a.data,path:a.path,parent:h});if(f.status==="valid")return f;f.status==="dirty"&&!s&&(s={result:f,ctx:h}),h.common.issues.length&&c.push(h.common.issues)}if(s)return a.common.issues.push(...s.ctx.common.issues),s.result;const d=c.map(p=>new Nn(p));return ye(a,{code:se.invalid_union,unionErrors:d}),Oe}}get options(){return this._def.options}}jh.create=(t,e)=>new jh({options:t,typeName:Ue.ZodUnion,...Be(e)});function tk(t,e){const a=zo(t),i=zo(e);if(t===e)return{valid:!0,data:t};if(a===je.object&&i===je.object){const r=it.objectKeys(e),s=it.objectKeys(t).filter(d=>r.indexOf(d)!==-1),c={...t,...e};for(const d of s){const p=tk(t[d],e[d]);if(!p.valid)return{valid:!1};c[d]=p.data}return{valid:!0,data:c}}else if(a===je.array&&i===je.array){if(t.length!==e.length)return{valid:!1};const r=[];for(let s=0;s<t.length;s++){const c=t[s],d=e[s],p=tk(c,d);if(!p.valid)return{valid:!1};r.push(p.data)}return{valid:!0,data:r}}else return a===je.date&&i===je.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class vh extends et{_parse(e){const{status:a,ctx:i}=this._processInputParams(e),r=(s,c)=>{if(Zx(s)||Zx(c))return Oe;const d=tk(s.value,c.value);return d.valid?((Yx(s)||Yx(c))&&a.dirty(),{status:a.value,value:d.data}):(ye(i,{code:se.invalid_intersection_types}),Oe)};return i.common.async?Promise.all([this._def.left._parseAsync({data:i.data,path:i.path,parent:i}),this._def.right._parseAsync({data:i.data,path:i.path,parent:i})]).then(([s,c])=>r(s,c)):r(this._def.left._parseSync({data:i.data,path:i.path,parent:i}),this._def.right._parseSync({data:i.data,path:i.path,parent:i}))}}vh.create=(t,e,a)=>new vh({left:t,right:e,typeName:Ue.ZodIntersection,...Be(a)});class Sr extends et{_parse(e){const{status:a,ctx:i}=this._processInputParams(e);if(i.parsedType!==je.array)return ye(i,{code:se.invalid_type,expected:je.array,received:i.parsedType}),Oe;if(i.data.length<this._def.items.length)return ye(i,{code:se.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Oe;!this._def.rest&&i.data.length>this._def.items.length&&(ye(i,{code:se.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),a.dirty());const s=[...i.data].map((c,d)=>{const p=this._def.items[d]||this._def.rest;return p?p._parse(new Uo(i,c,i.path,d)):null}).filter(c=>!!c);return i.common.async?Promise.all(s).then(c=>ti.mergeArray(a,c)):ti.mergeArray(a,s)}get items(){return this._def.items}rest(e){return new Sr({...this._def,rest:e})}}Sr.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Sr({items:t,typeName:Ue.ZodTuple,rest:null,...Be(e)})};class o_ extends et{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:a,ctx:i}=this._processInputParams(e);if(i.parsedType!==je.map)return ye(i,{code:se.invalid_type,expected:je.map,received:i.parsedType}),Oe;const r=this._def.keyType,s=this._def.valueType,c=[...i.data.entries()].map(([d,p],h)=>({key:r._parse(new Uo(i,d,i.path,[h,"key"])),value:s._parse(new Uo(i,p,i.path,[h,"value"]))}));if(i.common.async){const d=new Map;return Promise.resolve().then(async()=>{for(const p of c){const h=await p.key,f=await p.value;if(h.status==="aborted"||f.status==="aborted")return Oe;(h.status==="dirty"||f.status==="dirty")&&a.dirty(),d.set(h.value,f.value)}return{status:a.value,value:d}})}else{const d=new Map;for(const p of c){const h=p.key,f=p.value;if(h.status==="aborted"||f.status==="aborted")return Oe;(h.status==="dirty"||f.status==="dirty")&&a.dirty(),d.set(h.value,f.value)}return{status:a.value,value:d}}}}o_.create=(t,e,a)=>new o_({valueType:e,keyType:t,typeName:Ue.ZodMap,...Be(a)});class lu extends et{_parse(e){const{status:a,ctx:i}=this._processInputParams(e);if(i.parsedType!==je.set)return ye(i,{code:se.invalid_type,expected:je.set,received:i.parsedType}),Oe;const r=this._def;r.minSize!==null&&i.data.size<r.minSize.value&&(ye(i,{code:se.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),a.dirty()),r.maxSize!==null&&i.data.size>r.maxSize.value&&(ye(i,{code:se.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),a.dirty());const s=this._def.valueType;function c(p){const h=new Set;for(const f of p){if(f.status==="aborted")return Oe;f.status==="dirty"&&a.dirty(),h.add(f.value)}return{status:a.value,value:h}}const d=[...i.data.values()].map((p,h)=>s._parse(new Uo(i,p,i.path,h)));return i.common.async?Promise.all(d).then(p=>c(p)):c(d)}min(e,a){return new lu({...this._def,minSize:{value:e,message:Se.toString(a)}})}max(e,a){return new lu({...this._def,maxSize:{value:e,message:Se.toString(a)}})}size(e,a){return this.min(e,a).max(e,a)}nonempty(e){return this.min(1,e)}}lu.create=(t,e)=>new lu({valueType:t,minSize:null,maxSize:null,typeName:Ue.ZodSet,...Be(e)});class r_ extends et{get schema(){return this._def.getter()}_parse(e){const{ctx:a}=this._processInputParams(e);return this._def.getter()._parse({data:a.data,path:a.path,parent:a})}}r_.create=(t,e)=>new r_({getter:t,typeName:Ue.ZodLazy,...Be(e)});class s_ extends et{_parse(e){if(e.data!==this._def.value){const a=this._getOrReturnCtx(e);return ye(a,{received:a.data,code:se.invalid_literal,expected:this._def.value}),Oe}return{status:"valid",value:e.data}}get value(){return this._def.value}}s_.create=(t,e)=>new s_({value:t,typeName:Ue.ZodLiteral,...Be(e)});function nC(t,e){return new sl({values:t,typeName:Ue.ZodEnum,...Be(e)})}class sl extends et{_parse(e){if(typeof e.data!="string"){const a=this._getOrReturnCtx(e),i=this._def.values;return ye(a,{expected:it.joinValues(i),received:a.parsedType,code:se.invalid_type}),Oe}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const a=this._getOrReturnCtx(e),i=this._def.values;return ye(a,{received:a.data,code:se.invalid_enum_value,options:i}),Oe}return ki(e.data)}get options(){return this._def.values}get enum(){const e={};for(const a of this._def.values)e[a]=a;return e}get Values(){const e={};for(const a of this._def.values)e[a]=a;return e}get Enum(){const e={};for(const a of this._def.values)e[a]=a;return e}extract(e,a=this._def){return sl.create(e,{...this._def,...a})}exclude(e,a=this._def){return sl.create(this.options.filter(i=>!e.includes(i)),{...this._def,...a})}}sl.create=nC;class l_ extends et{_parse(e){const a=it.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(e);if(i.parsedType!==je.string&&i.parsedType!==je.number){const r=it.objectValues(a);return ye(i,{expected:it.joinValues(r),received:i.parsedType,code:se.invalid_type}),Oe}if(this._cache||(this._cache=new Set(it.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const r=it.objectValues(a);return ye(i,{received:i.data,code:se.invalid_enum_value,options:r}),Oe}return ki(e.data)}get enum(){return this._def.values}}l_.create=(t,e)=>new l_({values:t,typeName:Ue.ZodNativeEnum,...Be(e)});class Sh extends et{unwrap(){return this._def.type}_parse(e){const{ctx:a}=this._processInputParams(e);if(a.parsedType!==je.promise&&a.common.async===!1)return ye(a,{code:se.invalid_type,expected:je.promise,received:a.parsedType}),Oe;const i=a.parsedType===je.promise?a.data:Promise.resolve(a.data);return ki(i.then(r=>this._def.type.parseAsync(r,{path:a.path,errorMap:a.common.contextualErrorMap})))}}Sh.create=(t,e)=>new Sh({type:t,typeName:Ue.ZodPromise,...Be(e)});class ll extends et{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ue.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:a,ctx:i}=this._processInputParams(e),r=this._def.effect||null,s={addIssue:c=>{ye(i,c),c.fatal?a.abort():a.dirty()},get path(){return i.path}};if(s.addIssue=s.addIssue.bind(s),r.type==="preprocess"){const c=r.transform(i.data,s);if(i.common.async)return Promise.resolve(c).then(async d=>{if(a.value==="aborted")return Oe;const p=await this._def.schema._parseAsync({data:d,path:i.path,parent:i});return p.status==="aborted"?Oe:p.status==="dirty"||a.value==="dirty"?_c(p.value):p});{if(a.value==="aborted")return Oe;const d=this._def.schema._parseSync({data:c,path:i.path,parent:i});return d.status==="aborted"?Oe:d.status==="dirty"||a.value==="dirty"?_c(d.value):d}}if(r.type==="refinement"){const c=d=>{const p=r.refinement(d,s);if(i.common.async)return Promise.resolve(p);if(p instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return d};if(i.common.async===!1){const d=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});return d.status==="aborted"?Oe:(d.status==="dirty"&&a.dirty(),c(d.value),{status:a.value,value:d.value})}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(d=>d.status==="aborted"?Oe:(d.status==="dirty"&&a.dirty(),c(d.value).then(()=>({status:a.value,value:d.value}))))}if(r.type==="transform")if(i.common.async===!1){const c=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});if(!rl(c))return Oe;const d=r.transform(c.value,s);if(d instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:a.value,value:d}}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(c=>rl(c)?Promise.resolve(r.transform(c.value,s)).then(d=>({status:a.value,value:d})):Oe);it.assertNever(r)}}ll.create=(t,e,a)=>new ll({schema:t,typeName:Ue.ZodEffects,effect:e,...Be(a)});ll.createWithPreprocess=(t,e,a)=>new ll({schema:e,effect:{type:"preprocess",transform:t},typeName:Ue.ZodEffects,...Be(a)});class Ao extends et{_parse(e){return this._getType(e)===je.undefined?ki(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Ao.create=(t,e)=>new Ao({innerType:t,typeName:Ue.ZodOptional,...Be(e)});class cl extends et{_parse(e){return this._getType(e)===je.null?ki(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}cl.create=(t,e)=>new cl({innerType:t,typeName:Ue.ZodNullable,...Be(e)});class ak extends et{_parse(e){const{ctx:a}=this._processInputParams(e);let i=a.data;return a.parsedType===je.undefined&&(i=this._def.defaultValue()),this._def.innerType._parse({data:i,path:a.path,parent:a})}removeDefault(){return this._def.innerType}}ak.create=(t,e)=>new ak({innerType:t,typeName:Ue.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Be(e)});class ik extends et{_parse(e){const{ctx:a}=this._processInputParams(e),i={...a,common:{...a.common,issues:[]}},r=this._def.innerType._parse({data:i.data,path:i.path,parent:{...i}});return zh(r)?r.then(s=>
69({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Nn(i.common.issues)},input:i.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new Nn(i.common.issues)},input:i.data})}}removeCatch(){return this._def.innerType}}ik.create=(t,e)=>new ik({innerType:t,typeName:Ue.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Be(e)});class c_ extends et{_parse(e){if(this._getType(e)!==je.nan){const i=this._getOrReturnCtx(e);return ye(i,{code:se.invalid_type,expected:je.nan,received:i.parsedType}),Oe}return{status:"valid",value:e.data}}}c_.create=t=>new c_({typeName:Ue.ZodNaN,...Be(t)});class IZ extends et{_parse(e){const{ctx:a}=this._processInputParams(e),i=a.data;return this._def.type._parse({data:i,path:a.path,parent:a})}unwrap(){return this._def.type}}class zz extends et{_parse(e){const{status:a,ctx:i}=this._processInputParams(e);if(i.common.async)return(async()=>{const s=await this._def.in._parseAsync({data:i.data,path:i.path,parent:i});return s.status==="aborted"?Oe:s.status==="dirty"?(a.dirty(),_c(s.value)):this._def.out._parseAsync({data:s.value,path:i.path,parent:i})})();{const r=this._def.in._parseSync({data:i.data,path:i.path,parent:i});return r.status==="aborted"?Oe:r.status==="dirty"?(a.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:i.path,parent:i})}}static create(e,a){return new zz({in:e,out:a,typeName:Ue.ZodPipeline})}}class nk extends et{_parse(e){const a=this._def.innerType._parse(e),i=r=>(rl(r)&&(r.value=Object.freeze(r.value)),r);return zh(a)?a.then(r=>i(r)):i(a)}unwrap(){return this._def.innerType}}nk.create=(t,e)=>new nk({innerType:t,typeName:Ue.ZodReadonly,...Be(e)});var Ue;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Ue||(Ue={}));const wee=_o.create;Lo.create;an.create;const oC=Gt.create;jh.create;vh.create;Sr.create;const rC=sl.create;Sh.create;Ao.create;cl.create;const WZ=()=>W(()=>import("./en.website-quote-DF-EOJOh.js"),__vite__mapDeps([261,262,164,25,19,182,16,8,233,59,29,18,32,33])),GZ=oC({pakiet:rC(["landing-page","starter","premium","indywidualny"]).default("starter")}),VZ=q()({validateSearch:GZ,component:G(WZ,"component"),head:()=>({meta:[{title:"Website quote studio | DiSpace"},{name:"description",content:"Fill in a short 5-step brief and get a free website quote. We reply within 48â72 hours."},{name:"robots",content:"noindex, follow"}]})}),FZ=()=>W(()=>import("./oferta.design-druk-DtqBFgK5.js"),[]),HZ=q()({beforeLoad:()=>{throw Kt({to:"/pl/oferta/design-druk",code:301,throw:!0})},component:G(FZ,"component")}),qZ=()=>W(()=>import("./pl.index-BaD4gJDY.js"),__vite__mapDeps([263,169,66,91,90,56,88,3,71,32,33])),ZZ=q()({component:G(qZ,"component"),head:()=>({meta:[{title:"Strony WWW, sklepy i SEO dla firm w UK · DiSpace Glasgow"},{name:"description",content:"Polskie studio z Glasgow â projektujemy strony WordPress, sklepy WooCommerce i prowadzimy SEO dla firm w UK. â 5.0 w Google · bezpÅatna wycena w 24 h."},{property:"og:title",content:"Strony WWW, sklepy i SEO dla firm w UK · DiSpace Glasgow"},{property:"og:description",content:"Projekt, wdrożenie, SEO i reklamy w jednym zespole. WspóÅpracujemy z polskimi firmami w UK i Irlandii â sprawdź realizacje i pobierz wycenÄ w 24 h."},{property:"og:url",content:"https://dispace.uk/pl"}],links:[...zt("/pl","/pl","/en"),{rel:"preload",as:"image",href:QP,fetchpriority:"high"}],scripts:[Ea(Vq),Hh("pl")]})}),YZ=()=>W(()=>import("./pl.cookies-oYThCrJK.js"),__vite__mapDeps([264,250,61,32])),JZ=q()({head:()=>({meta:[{title:"Cookies · DiSpace"},{name:"description",content:"Polityka cookies serwisu DiSpace - informacje o plikach cookies i ich wykorzystaniu."},{property:"og:title",content:"Cookies · DiSpace"},{property:"og:description",content:"Informacje o plikach cookies w serwisie DiSpace."}
69],links:zt("/pl/cookies","/pl/cookies","/en/cookies")}),component:G(YZ,"component")}),QZ=()=>W(()=>import("./pl.dispace-formularz-DpYihTDk.js"),__vite__mapDeps([265,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33])),XZ=q()({component:G(QZ,"component"),head:()=>({meta:[{title:"DISPACE ⢠Odbierz bezpÅatnie wycenÄ w 2 minuty"},{name:"description",content:"WypeÅnij krótki brief i odbierz bezpÅatnÄ
wycenÄ projektu. Odpowiadamy w 24 godziny robocze - bez zobowiÄ
zaÅ."},{property:"og:title",content:"DISPACE ⢠Odbierz bezpÅatnie wycenÄ projektu"},{property:"og:description",content:"Profesjonalne strony, sklepy i identyfikacje wizualne. WypeÅnij krótki formularz i odbierz bezpÅatnÄ
wycenÄ."}],links:zt("/pl/dispace-formularz","/pl/dispace-formularz","/en/dispace-form")})}),eY=()=>W(()=>import("./pl.faq-DvD7GJb1.js"),__vite__mapDeps([266,253,56,8,137,69])),tY=q()({head:()=>eC({lang:"pl",routeKey:"faq"}),component:G(eY,"component")}),aY=()=>W(()=>import("./pl.kontakt-Zx7oeDY9.js"),__vite__mapDeps([267,29,56,14,248])),iY=q()({component:G(aY,"component"),head:()=>({meta:[{title:"Kontakt â bezpÅatna wycena projektu w 24 h | DiSpace Glasgow"},{name:"description",content:"Napisz do studia DiSpace: e-mail, telefon +44, WhatsApp lub Messenger. Odpowiadamy w 24 h â po polsku i po angielsku. Studio w Glasgow, projekty w caÅym UK."},{property:"og:title",content:"Kontakt â bezpÅatna wycena projektu w 24 h | DiSpace Glasgow"},{property:"og:description",content:"WyÅlij brief lub zadzwoÅ. BezpÅatna wycena projektu w 24 h, bez zobowiÄ
zaÅ i sztywnych pakietów."},{property:"og:url",content:"https://dispace.uk/pl/kontakt"}],links:[...zt("/pl/kontakt","/pl/kontakt","/en/contact"),{rel:"preload",as:"image",href:XP,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"ProfessionalService","@id":"https://dispace.uk/#localbusiness",name:"DiSpace Studio",url:"https://dispace.uk/pl/kontakt",telephone:"+44 7476 052809",email:"[email protected]",priceRange:"££",address:{"@type":"PostalAddress",streetAddress:"14A Reidvale St",addressLocality:"Glasgow",postalCode:"G31 1SZ",addressRegion:"Scotland",addressCountry:"GB"},geo:{"@type":"GeoCoordinates",latitude:55.8612,longitude:-4.215},areaServed:["GB","IE"],openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"17:00"}]})}]})}),nY=()=>W(()=>import("./pl.polityka-prywatnosci-YrsaMZrB.js"),__vite__mapDeps([268,250,61,32])),oY=q()({head:()=>({meta:[{title:"Polityka prywatnoÅci · DiSpace"},{name:"description",content:"Polityka prywatnoÅci serwisu DiSpace - zasady przetwarzania danych osobowych zgodnie z RODO."},{property:"og:title",content:"Polityka prywatnoÅci · DiSpace"},{property:"og:description",content:"Zasady przetwarzania danych osobowych w serwisie DiSpace."}],links:zt("/pl/polityka-prywatnosci","/pl/polityka-prywatnosci","/en/privacy-policy")}),component:G(nY,"component")}),rY=()=>W(()=>import("./pl.portfolio-DftbyltI.js"),__vite__mapDeps([269,154,155,89,69,156,255,90,56,70,71])),sY=q()({component:G(rY,"component"),head:()=>({meta:[{title:"Portfolio | Realizacje stron i sklepów â DiSpace UK"},{name:"description",content:"Strony WordPress, sklepy WooCommerce i branding zaprojektowane dla polskich firm w UK. Zobacz realizacje na żywo i sprawdź, co potrafimy."},{property:"og:title",content:"Portfolio realizacji · DiSpace Studio â strony, sklepy i branding w UK"},{property:"og:description",content:"Każdy projekt to narzÄdzie, które zarabia. PrzeglÄ
daj realizacje i zainspiruj siÄ przed startem wÅasnej strony."},{property:"og:url",content:"https://dispace.uk/pl/portfolio"}],links:[...zt("/pl/portfolio","/pl/portfolio","/en/portfolio"),{rel:"preload",as:"image",href:tC,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"CollectionPage",name:"Portfolio realizacji DiSpace â strony, sklepy i branding w UK",description:"Realizacje stron WordPress, sklepów WooCommerce i brandingu dla polskich firm w UK.",url:"https://dispace.uk/pl/portfolio",inLanguage:"pl-PL",isPartOf:{"@type":"WebSite",name:"DiSpace",url:"https://dispace.uk"}})}]})}),lY=()=>W(()=>import("./pl.regulamin-yj-kR5_G.js"),__vite__mapDeps([270,250,61,32])),cY=q()({head:()=>({meta:[{title:"Regulamin · DiSpace"},{name:"description",content:"Regulamin korzystania z serwisu DiSpace - zasady i warunki Åwiadczenia usÅug."},{property:"og:title",content:"Regulamin · DiSpace"},{property:"og:description",content:"Zasady korzystania z serwisu i Åwiadczenia usÅug przez DiSpace."}],links:zt("/pl/regulamin","/pl/regulamin","/en/terms")}),component:G(lY,"component")}),uY=()=>W(()=>import("./pl.wycena-strony-DxuhPu2W.js"),__vite__mapDeps([271,262,164,25,19,182,16,8,233,59,29,18,32,33])),dY=oC({pakiet:rC(["landing-page","starter","premium","indywidualny"]).default("starter")}),pY=q()({validateSearch:dY,component:G(uY,"component"),head:()=>({meta:[{title:"Studio wyceny strony internetowej | DiSpace"},{name:"description",content:"WypeÅnij krótki brief w 5 krokach i odbierz bezpÅatnÄ
wycenÄ strony internetowej. Odpowiadamy w 48â72 godziny."},{name:"robots",content:"noindex, follow"}]})}),hY=()=>W(()=>import("./admin.leads._id-DjxZLW-I.js"),__vite__mapDeps([272,181,183,1,36,196,35,185,200,218,38,54,40,39,42,43,202,44,156,187,30,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,59,32,219,232,197,205,69,28])),yY=q()({component:G(hY,"component")}),mY=()=>W(()=>import("./admin.meta-ads.callback-th9PHnNT.js"),__vite__mapDeps([273,182,224,5,35,1,225,183,59,212,214,45,6,226])),fY=q()({head:()=>({meta:[{title:"ÅÄ
czenie z Facebookâ¦"},{name:"robots",content:"noindex"}
69]}),validateSearch:t=>({code:typeof t.code=="string"?t.code:void 0,state:typeof t.state=="string"?t.state:void 0,error:typeof t.error=="string"?t.error:void 0,error_reason:typeof t.error_reason=="string"?t.error_reason:void 0,error_description:typeof t.error_description=="string"?t.error_description:void 0}),component:G(mY,"component")}),wY=()=>W(()=>import("./baza-wiedzy._kategoria.index-DtqBFgK5.js"),[]),gY=q()({beforeLoad:({params:t})=>{throw Kt({to:"/pl/baza-wiedzy/$kategoria",params:{kategoria:t.kategoria},code:301,throw:!0})},component:G(wY,"component")}),kY=()=>W(()=>import("./baza-wiedzy._kategoria._slug-DtqBFgK5.js"),[]),zY=q()({beforeLoad:({params:t})=>{throw Kt({to:"/pl/baza-wiedzy/$kategoria/$slug",params:{kategoria:t.kategoria,slug:t.slug},code:301,throw:!0})},component:G(kY,"component")}),sC="/assets/jak-strona-zwieksza-zyski-uk-fH7FQHRe.webp",xh="/assets/lokalne-seo-uk-pozycjonowanie-BoMMqC_C.webp",Ot=t=>`https://images.unsplash.com/photo-${t}?auto=format&fit=crop&w=1600&q=80`,bY=Ot("1499750310107-5fef28a66643"),lC=[{slug:"strony-i-sklepy",name:"Strony i Sklepy",short:"Webdesign & E-commerce",description:"Wszystko o budowie stron sprzedażowych, sklepów WooCommerce i optymalizacji konwersji.",accent:"#1e56a8"},{slug:"marketing-i-seo",name:"Marketing i SEO",short:"Ruch & Leady",description:"Jak generowaÄ ruch organiczny, lokalne SEO w UK i social media, które realnie sprzedajÄ .",accent:"#9C328C"},{slug:"wizerunek-i-branding",name:"Wizerunek i Branding",short:"Marka premium",description:"Logo, identyfikacja wizualna i sygnaÅy, że Twoja firma dojrzaÅa do nowego brandingu.",accent:"#3DB4C9"},{slug:"strategia-i-biznes",name:"Strategia i Biznes",short:"Decyzje wÅaÅcicieli",description:"Spojrzenie ekspertów-doradców. Decyzje, które przekÅadajÄ siÄ na zyski caÅej firmy.",accent:"#E0A458"}],gu=[{slug:"pozycjonowanie-uk-2026-kompletny-przewodnik",categorySlug:"marketing-i-seo",title:"Pozycjonowanie UK w 2026 roku â kompletny przewodnik dla polskich firm w Wielkiej Brytanii",excerpt:"Pozycjonowanie stron UK w 2026: jak dziaÅa SEO UK, ile trwa, ile kosztuje i co realnie wpÅywa na wysokÄ pozycjÄ w Google.",readMinutes:9,date:"2026-05-30",author:{name:"ZespóŠDiSpace",role:"SEO"},image:xh,content:`Pozycjonowanie UK to dziÅ najtaÅszy sposób na staÅe, przewidywalne zapytania od brytyjskich i polonijnych klientów. W przeciwieÅstwie do pÅatnych reklam, raz wypracowana wysoka pozycja w Google UK pracuje 24/7 â bez przepalania budżetu na klikniÄcia. W tym przewodniku tÅumaczymy krok po kroku, jak wyglÄ da **pozycjonowanie stron UK** w 2026 roku. 70 71## Czym jest pozycjonowanie UK i czym różni siÄ od SEO w Polsce 72 73Pozycjonowanie UK to proces optymalizacji strony pod brytyjskÄ wersjÄ Google (google.co.uk). Algorytmy sÄ te same, ale konkurencja, intencje wyszukiwania i sygnaÅy lokalne â zupeÅnie inne. Google UK bardzo mocno premiuje firmy z lokalnym adresem, brytyjskim numerem telefonu, opiniami w jÄzyku angielskim i wpisami w lokalnych katalogach (Yell, Checkatrade, Trustpilot). 74 75## 5 filarów skutecznego SEO UK 76 77**1. Techniczne SEO.** SzybkoÅÄ Åadowania (Core Web Vitals), responsywnoÅÄ, poprawna struktura nagÅówków, mapa witryny, dane strukturalne Schema.org. Bez tego nawet najlepsza treÅÄ nie wybije siÄ wysoko. 78 79**2. TreÅÄ pod intencje.** Każda podstrona musi odpowiadaÄ na konkretne pytanie z Google. Nie âo nas", tylko âpolski hydraulik w Manchesterze â wycena w 24 h". Pisanie pod ludzi i pod algorytm jednoczeÅnie. 80 81**3. Lokalne SEO i Google Business Profile.** Optymalizacja wizytówki Google to fundament dla każdej firmy usÅugowej w UK. WiÄcej w naszym przewodniku: [Google Business Profile UK](/baza-wiedzy/marketing-i-seo/google-business-profile-uk-wizytowka-google). 82 83**4. Link building.** Linki z brytyjskich katalogów branżowych, lokalnych portali i artykuÅów goÅcinnych. SpójnoÅÄ NAP (Name, Address, Phone) w caÅym internecie. 84 85**5. Mierzenie i iteracja.** Google Search Console, GA4 i miesiÄczne raporty. Pozycjonowanie to maraton â pierwsze efekty po 2â3 miesiÄ cach, stabilne wyniki po 6. 86 87## Ile kosztuje pozycjonowanie UK? 88 89Ceny zaczynajÄ siÄ od £350/miesiÄ c za lokalne SEO dla maÅej firmy, a siÄgajÄ Â£2 000+ dla branż konkurencyjnych (prawo, finanse, e-commerce). DiSpace pracuje w modelu projektowym (audyt + wdrożenie) i abonamentowym (ciÄ gÅa optymalizacja). 90 91## Od czego zaczÄ Ä 92 93Zacznij od bezpÅatnego audytu SEO â pokażemy, co naprawdÄ blokuje TwojÄ widocznoÅÄ w Google UK i ile czasu zajmie wejÅcie do TOP 10. 94 95--- 96 97**Polecane usÅugi DiSpace:** 98- [Pozycjonowanie stron UK](/pozycjonowanie-uk) â kompleksowe SEO dla firm w UK 99- [Strony internetowe UK](/strony-internetowe-uk) â strona zoptymalizowana pod SEO UK od pierwszego dnia 100- [Kampanie Google Ads UK](/kampanie-google-ads) â szybki ruch w okresie wzrostu pozycji organicznych`},{slug:"strony-internetowe-uk-jak-zaprojektowac-witryne-pod-google",categorySlug:"strony-i-sklepy",title:"Strony internetowe UK â jak zaprojektowaÄ witrynÄ, która sprzedaje i pozycjonuje siÄ w Google UK",excerpt:"Co musi mieÄ dobra strona internetowa UK: szybkoÅÄ, SEO, lokalny copywriting i trust signals dla brytyjskiego klienta.",readMinutes:8,date:"2026-05-29",author:{name:"ZespóŠDiSpace",role:"Web Design"},image:sC,content:`Strony internetowe UK to nie tylko Åadny layout. To narzÄdzie sprzedaży, które musi dziaÅaÄ szybko, budowaÄ zaufanie u brytyjskiego klienta i byÄ widoczne w Google UK od pierwszego dnia. W tym artykule pokazujemy, czym różni siÄ dobra **strona internetowa UK** od âstrony zrobionej taniej znajomemu". 101 102## 1. SzybkoÅÄ Åadowania â fundament wszystkiego 103 104Google bezlitoÅnie obcina pozycje stronom, które ÅadujÄ siÄ dÅużej niż 3 sekundy. W UK, gdzie 75% wyszukiwaÅ usÅug lokalnych dzieje siÄ na smartfonie, każda sekunda to zgubiony klient. Strony, które budujemy w DiSpace, osiÄ gajÄ **Core Web Vitals w zielonych progach** â to fundament każdego skutecznego [pozycjonowania UK](/pozycjonowanie-uk). 105 106## 2. Lokalny copywriting po brytyjsku 107 108British English (colour, customise, organisation), uprzejmy ton, jasne CTA. Polski klient w UK doceni dwujÄzycznoÅÄ â Brytyjczyk natomiast natychmiast wyczuje, że tekst pisaÅ obcokrajowiec, jeÅli ton jest zbyt nachalny lub amerykaÅski. 109 110## 3. Trust signals â bez nich nie ma sprzedaży 111 112Brytyjski klient nie kupi, jeÅli nie zobaczy: 113- Company Number i numeru VAT w stopce 114- fizycznego adresu biura w UK
115- certyfikatów branżowych (Gas Safe, Checkatrade, NICEIC) 116- opinii Google i Trustpilot z prawdziwymi nazwiskami 117- polityki prywatnoÅci zgodnej z UK GDPR 118 119## 4. Struktura pod SEO UK 120 121Każda usÅuga = osobna podstrona z unikalnym title, H1 i opisem. Dedykowane landing page'y dla każdego miasta (Glasgow, Manchester, Londyn). Dane strukturalne Schema.org dla firmy lokalnej. Bez tego nawet najpiÄkniejsza strona nie pojawi siÄ wyżej niż na trzeciej stronie wyników. 122 123## 5. Mobile-first, nie mobile-friendly 124 125To sÄ dwie różne rzeczy. **Mobile-first** = projekt powstaje od razu na telefon, a dopiero potem rozszerza siÄ na desktop. Tylko taki podejÅcie gwarantuje, że strona dziaÅa idealnie na każdym ekranie â w autobusie, na placu budowy, w kolejce po kawÄ. 126 127## Ile kosztujÄ strony internetowe UK? 128 129- prosta wizytówka: od **£790** 130- strona firmowa z 5â10 podstronami: **£1 500â£3 500** 131- sklep WooCommerce: **£2 500â£6 000** 132- rozbudowane projekty na zamówienie: wycena indywidualna 133 134Każda strona od DiSpace przychodzi z gotowÄ strukturÄ pod SEO UK i zoptymalizowanÄ wydajnoÅciÄ . 135 136--- 137 138**Polecane usÅugi DiSpace:** 139- [Strony internetowe UK](/strony-internetowe-uk) â nowoczesne strony pod brytyjski rynek 140- [Sklepy internetowe UK](/sklepy-internetowe-uk) â WooCommerce gotowy pod sprzedaż w UK 141- [Pozycjonowanie stron UK](/pozycjonowanie-uk) â SEO, dziÄki któremu Twoja strona zarabia`},{slug:"google-business-profile-uk-wizytowka-google",categorySlug:"marketing-i-seo",title:"Google Business Profile UK â jak zoptymalizowaÄ wizytówkÄ Google dla polskiej firmy w Wielkiej Brytanii",excerpt:"Krok po kroku: jak zoptymalizowaÄ wizytówkÄ Google Business Profile, by trafiÄ do Local Pack w Google UK i zdobywaÄ klientów lokalnie.",readMinutes:7,date:"2026-05-28",author:{name:"ZespóŠDiSpace",role:"Lokalne SEO"},image:xh,content:`Google Business Profile (dawniej Google Moja Firma) to **najtaÅsze i najszybsze narzÄdzie pozycjonowania UK** dla każdej firmy usÅugowej. Dobrze zoptymalizowana wizytówka pojawia siÄ w pakiecie mapowym Google (Local Pack) â trzech wynikach z mapÄ , które zbierajÄ lwiÄ czÄÅÄ klikniÄÄ dla zapytaÅ typu âpolski elektryk Manchester" czy âmechanik Glasgow". 142 143## Dlaczego Local Pack to zÅoto 144 145Local Pack zajmuje 30â40% pierwszej strony wyników na zapytania lokalne i przyciÄ ga **44% wszystkich klikniÄÄ**. JeÅli Twojej firmy tam nie ma, Åcigasz siÄ o resztki uwagi z dziesiÄcioma stronami niżej. 146 147## 7 kroków optymalizacji Google Business Profile UK 148 149**1. Zweryfikuj firmÄ.** Google wyÅle pocztówkÄ z kodem na fizyczny adres w UK. Bez tego wizytówka nie zacznie siÄ pojawiaÄ w wynikach. 150 151**2. Wybierz wÅaÅciwÄ kategoriÄ gÅównÄ .** âPlumber" nie âConstruction Service". Kategoria gÅówna to jeden z najsilniejszych sygnaÅów rankingowych. 152 153**3. UzupeÅnij wszystkie dane.** Adres, telefon UK (numer +44, nie polski), godziny otwarcia, strona www (link do Twojej [strony internetowej UK](/strony-internetowe-uk)), opis firmy z frazami kluczowymi. 154 155**4. Wgraj zdjÄcia.** Logo, zespóŠprzy pracy, realizacje, wnÄtrze biura. Google premiuje wizytówki ze Åwieżymi zdjÄciami â dodawaj co najmniej 1 nowe miesiÄcznie. 156 157**5. Pozyskuj opinie.** WyÅlij proÅbÄ o opiniÄ w SMS po zakoÅczeniu zlecenia. Wizytówki z 4.5+ gwiazdkami i 30+ opiniami dominujÄ Local Pack. 158 159**6. Publikuj posty.** Co tydzieÅ krótka aktualizacja: nowa realizacja, promocja, informacja. Google traktuje to jako sygnaÅ aktywnoÅci. 160 161**7. Odpowiadaj na opinie.** Każda opinia, pozytywna i negatywna, zasÅuguje na uprzejmÄ odpowiedź po angielsku. To dla Google sygnaÅ, że firma jest âżywa". 162 163## SpójnoÅÄ NAP â niedoceniany filar 164 165Name, Address, Phone muszÄ byÄ **identyczne** wszÄdzie: na stronie www, w Google Business Profile, w Yell, Checkatrade, na Facebooku. Każda różnica (np. âLtd" vs âLimited", inny format telefonu) osÅabia ranking lokalny. 166 167## PoÅÄ cz wizytówkÄ z resztÄ SEO 168 169Google Business Profile to fundament, ale samo nie wystarczy. Potrzebujesz strony zoptymalizowanej pod lokalne frazy, treÅci odpowiadajÄ cych na pytania klientów i linków z brytyjskich katalogów. To wszystko skÅada siÄ na peÅne [pozycjonowanie UK](/pozycjonowanie-uk). 170 171--- 172 173**Polecane usÅugi DiSpace:** 174- [Pozycjonowanie stron UK](/pozycjonowanie-uk) â kompletne SEO z optymalizacjÄ wizytówki Google 175- [Strony internetowe UK](/strony-internetowe-uk) â strona, która rankuje od pierwszego dnia 176- [ObsÅuga social media UK](/obsluga-social-media-uk) â spójna komunikacja wspierajÄ ca lokalne SEO`},{slug:"jak-nowa-strona-uratowala-firme-budowlana-uk",categorySlug:"strony-i-sklepy",title:"Jak nowa strona internetowa uratowaÅa polskÄ firmÄ budowlanÄ w UK przed bankructwem?",excerpt:"Historia Pana Tomasza i transformacja martwej wizytówki w maszynÄ sprzedażowÄ .",readMinutes:7,date:"2026-05-27",author:{name:"ZespóŠDiSpace",role:"Webdesign"}
176,image:Ot("1504917595217-d4dc5ebe6122"),content:`Pan Tomasz zaÅożyÅ firmÄ budowlanÄ w Londynie w 2018 roku. Przez pierwsze lata biznes krÄciÅ siÄ Åwietnie. Zlecenia wpadaÅy z polecenia, a kalendarz byÅ zapeÅniony na póŠroku do przodu. Jednak w 2025 roku rynek siÄ zmieniÅ. Polecenia przestaÅy wystarczaÄ, a telefony nagle zamilkÅy. Konkurencja, w tym inne **polskie firmy w UK**, zaczÄÅa agresywnie przejmowaÄ rynek. 177 178Firma Pana Tomasza miaÅa stronÄ internetowÄ . ZostaÅa zrobiona âpo znajomoÅci" za kilkaset funtów. ÅadowaÅa siÄ powoli, tekst byÅ nieczytelny na telefonach, a formularz kontaktowy od miesiÄcy nie dziaÅaÅ. Klienci wchodzili na tÄ stronÄ i natychmiast jÄ opuszczali, wybierajÄ c konkurencjÄ, która wyglÄ daÅa profesjonalnie. 179 180## Anatomia strony, która odstrasza klientów 181 182Przed startem wspóÅpracy przeprowadziliÅmy dokÅadny audyt. Wyniki byÅy bezlitosne - zidentyfikowaliÅmy trzy gÅówne powody, dla których klienci uciekali: 183 1841. **Brak optymalizacji mobilnej.** Ponad 75% osób szukajÄ cych usÅug lokalnych robi to przez smartfona. Stara strona wymagaÅa powiÄkszania palcami, a przyciski byÅy nieklikalne. 1852. **Ukryte wezwania do akcji.** Numer telefonu chowaÅ siÄ w zakÅadce âKontakt" maÅym druczkiem. BrakowaÅo kontrastowych przycisków âOdbierz darmowÄ wycenÄ". 1863. **Katastrofalny czas Åadowania.** Strona ÅadowaÅa siÄ ponad 6 sekund. Powyżej 3 sekund bounce rate roÅnie o 32%. 187 188## Transformacja: od martwej wizytówki do maszyny sprzedażowej 189 190Jako doÅwiadczona **agencja reklamowa UK**, wdrożyliÅmy sprawdzony proces w trzech krokach. 191 192**Krok 1: Architektura informacji i copywriting.** Zamiast pisaÄ, że firma âdynamicznie siÄ rozwija", skupiliÅmy siÄ na problemach klientów. PowstaÅy dedykowane podstrony dla każdej usÅugi: remonty Åazienek Londyn, adaptacje poddaszy, wykoÅczenia premium. 193 194**Krok 2: Nowoczesny webdesign i UX.** Minimalizm, czytelnoÅÄ, spójna kolorystyka. Above the fold: mocny nagÅówek, zdjÄcie z realizacji i duży, kontrastowy przycisk âPoproÅ o bezpÅatnÄ wycenÄ". 195 196**Krok 3: Optymalizacja techniczna i SEO.** Szybki hosting, lekki kod, zoptymalizowane zdjÄcia w WebP, Core Web Vitals w zielonej strefie. Strona zaczÄÅa ÅadowaÄ siÄ w 1.2 sekundy. 197 198## Wyniki, które mówiÄ same za siebie 199 200W ciÄ gu pierwszych dwóch miesiÄcy zapytania ofertowe wzrosÅy o **340%**. Co najważniejsze, zmienili siÄ sami klienci - dziÄki profesjonalnemu wizerunkowi firma zaczÄÅa przyciÄ gaÄ zlecenia premium, gdzie cena przestaÅa byÄ jedynym kryterium. 201 202**Profesjonalne strony internetowe w Wielkiej Brytanii** to nie wydatek, to inwestycja. JeÅli Twoja strona nie generuje zapytaÅ, oddajesz pieniÄ dze konkurencji.`},{slug:"sklep-woocommerce-czy-shopify-uk",categorySlug:"strony-i-sklepy",title:"Sklep WooCommerce czy Shopify? Co wybraÄ dla polskiego biznesu e-commerce w UK?",excerpt:"Dlaczego abonament to puÅapka i jak peÅna wÅasnoÅÄ sklepu zwiÄksza zyski.",readMinutes:5,date:"2026-05-26",author:{name:"ZespóŠDiSpace",role:"E-commerce"},image:Ot("1556742502-ec7c0e9f34b1"),content:`Pani Kasia od lat prowadziÅa stacjonarny butik z polskimi kosmetykami w Manchesterze. W 2025 roku postanowiÅa przenieÅÄ sprzedaż do internetu. Znajomy poleciÅ jej Shopify. âTo proste i szybkie" - mówiÅ. Kasia zaÅożyÅa sklep i zaczÄÅa sprzedawaÄ. 203 204PoczÄ tkowo wszystko wyglÄ daÅo Åwietnie. Ale w miarÄ wzrostu sprzedaży koszty wymknÄÅy siÄ spod kontroli. Abonament rósÅ z każdÄ wtyczkÄ , Shopify pobieraÅo prowizjÄ od każdej transakcji, a gdy chciaÅa wdrożyÄ wÅasny system lojalnoÅciowy - okazaÅo siÄ to niemożliwe bez drogiego developera. 205 206## Dlaczego abonament to puÅapka 207 208Platformy SaaS, takie jak Shopify czy Shoper, sÄ Åwietne do testowania pomysÅów. OferujÄ niski próg wejÅcia. Ale wynajmowanie sklepu to jak wynajmowanie mieszkania - pÅacisz co miesiÄ c, a nieruchomoÅÄ nigdy nie jest Twoja. 209 210**Sklepy internetowe w UK** oparte na WooCommerce to inna filozofia. WooCommerce to darmowa wtyczka do WordPress. JesteÅ w 100% wÅaÅcicielem swojego sklepu. PÅacisz tylko za hosting i domenÄ. 211 212## 3 powody, dla których WooCommerce dominuje 213 2141. **Brak limitów i peÅna wÅasnoÅÄ.** Modyfikujesz wszystko: nietypowy kurier UK, integracja z ksiÄgowoÅciÄ , system rabatów - wszystko możliwe i skalowalne. 2152. **PotÄga SEO.** WordPress to absolutny faworyt Google. Sklepy WooCommerce indeksujÄ siÄ szybciej i wyżej. PeÅna kontrola nad URL, meta tagami i nagÅówkami. 2163. **Ogromna spoÅecznoÅÄ.** WooCommerce napÄdza ponad 30% wszystkich sklepów online na Åwiecie. Każda funkcja, której szukasz, prawdopodobnie już istnieje. 217 218## Efekt migracji Pani Kasi 219 220Migracja trwaÅa trzy tygodnie. Nowy interfejs, bramki Stripe i PayPal, integracja z Royal Mail. Koszty utrzymania spadÅy o **70%**, a zaoszczÄdzone pieniÄ dze poszÅy w reklamÄ i SEO. Zyski wzrosÅy dwukrotnie w póŠroku. 221 222JeÅli planujesz poważny e-commerce, nie buduj go na wynajÄtej ziemi.`},{slug:"dlaczego-strona-nie-sprzedaje-7-bledow-ux",categorySlug:"strony-i-sklepy",title:"Dlaczego Twoja strona www nie sprzedaje? 7 bÅÄdów UX, które kosztujÄ CiÄ klientów",excerpt:"Audyt UX, który zwiÄkszyÅ konwersjÄ o 400%. Napraw swoje dziurawe wiadro.",readMinutes:6,date:"2026-05-25",author:{name:"ZespóŠDiSpace",role:"UX / CRO"},image:Ot("1551434678-e076c223a692"),content:`Pan Marek prowadzi duÅ¼Ä firmÄ przeprowadzkowÄ w Londynie. ZainwestowaÅ w Google Ads i generowaÅ ogromny ruch. Setki osób dziennie, ale telefon milczaÅ. Konwersja: 0.5%. Klasyczne **dziurawe wiadro**. 223 224Wiele **polskich firm w UK** popeÅnia ten sam bÅÄ d: skupiajÄ siÄ na ruchu, zapominajÄ c o UX. Oto 7 najczÄstszych grzechów. 225 226## 1. Brak jasnego wezwania do akcji (CTA) 227Klient czyta o historii firmy. Co dalej? JeÅli nie powiesz mu wprost, zamknie zakÅadkÄ. CTA musi byÄ duże, kontrastowe i widoczne na każdym etapie. 228 229## 2. Zbyt skomplikowane formularze 230Pan Marek wymagaÅ imienia, nazwiska, e-maila, telefonu, adresu, daty i opisu mienia. SkróciliÅmy do dwóch pól: telefon + kod pocztowy. **Zapytania wzrosÅy o 400%**. 231 232## 3. Ignorowanie użytkowników mobilnych 233Ponad 70% ruchu pochodzi ze smartfonów. Mobile-first to dziÅ nie dodatek, to fundament. 234 235## 4. Wolne Åadowanie 236JeÅli strona Åaduje siÄ dÅużej niż 3 sekundy, poÅowa użytkowników rezygnuje. Optymalizacja grafik, lekki kod, szybki hosting. 237 238## 5. Brak social proof 239Klienci nie ufajÄ reklamom. UfajÄ innym klientom. Brak opinii z Google, zdjÄÄ z realizacji i logotypów partnerów = anonimowa, ryzykowna firma. 240 241## 6. Ukrywanie cen 242Nikt nie lubi niespodzianek finansowych. Podaj wideÅki cenowe lub jasno opisz proces wyceny. 243 244## 7. Åciana tekstu 245Ludzie nie czytajÄ - skanujÄ . Krótkie akapity, wypunktowania, nagÅówki, pogrubienia. 246 247## Efekt naprawy 248 249Po wdrożeniu poprawek na stronie Pana Marka konwersja skoczyÅa z 0.5% do **4.2%**. Przy tym samym budżecie reklamowym firma pozyskaÅa **osiem razy wiÄcej klientów**. 250 251Zanim wydasz kolejnego funta na reklamy, upewnij siÄ, że Twoja strona jest gotowa.`},{slug:"strony-internetowe-glasgow-londyn-lokalny-design",categorySlug:"strony-i-sklepy",title:"Strony internetowe Glasgow i Londyn: Jak lokalny design wpÅywa na zaufanie brytyjskich klientów?",excerpt:"Czym różni siÄ brytyjski webdesign i jak uniknÄ Ä kulturowych bÅÄdów.",readMinutes:5,date:"2026-05-24",author:{name:"ZespóŠDiSpace",role:"Brand & Web"},image:Ot("1486325212027-8081e485255e"),content:`Pan Piotr, wÅaÅciciel firmy remontowej z Glasgow, zleciÅ stworzenie strony taniemu freelancerowi z Polski. OtrzymaÅ estetycznÄ witrynÄ. Po kilku miesiÄ cach zauważyÅ jednak, że odwiedzajÄ go gÅównie inni Polacy, a rdzenni Brytyjczycy omijajÄ jego ofertÄ szerokim Åukiem. 252 253Problem nie leżaÅ w jakoÅci usÅug, ale w niuansach. Strona byÅa zaprojektowana wg wschodnioeuropejskich standardów: amerykaÅskie zdjÄcia ze stocka (żóÅte taksówki!), teksty brzmiÄ ce jak tÅumaczenie z translatora, brak lokalnego kontekstu. Brytyjski klient podÅwiadomie czuÅ, że coÅ jest nie tak. 254 255## Czym różni siÄ brytyjski webdesign? 256 257**1. Minimalizm i przestrzeÅ (whitespace).** Brytyjski design stawia na elegancjÄ. Zbyt dużo kolorów, migoczÄ cych animacji i informacji odbierane jest jako agresywne i tanie. 258 259**2. AutentycznoÅÄ ponad stockowe idealizowanie.** Zamiast idealnych uÅmiechniÄtych modeli - prawdziwy zespóÅ, realne realizacje, autentyczne opinie. Charakterystyczne kamienice Glasgow czy ulice Londynu w tle natychmiast budujÄ wiÄź. 260
261**3. TransparentnoÅÄ i trust signals.** Company Number, numer VAT, fizyczny adres biura, polityka prywatnoÅci, certyfikaty branżowe (Gas Safe, Checkatrade). Brak tych elementów to czerwona flaga. 262 263**4. Lokalny copywriting.** British English, nie amerykaÅski (colour, not color; customise, not customize). Ton uprzejmy, powÅciÄ gliwy, zorientowany na klienta. 264 265## Jak zmieniliÅmy wizerunek Pana Piotra 266 267Profesjonalna sesja zdjÄciowa zespoÅu przy pracy w kamienicach Glasgow. Sekcje z certyfikatami ubezpieczeniowymi i opiniami Trustpilot. Teksty napisane przez native speakera. 268 269W ciÄ gu trzech miesiÄcy odsetek brytyjskich klientów wzrósÅ z **15% do 65%**. Pan Piotr mógÅ podnieÅÄ stawki - jego wizerunek wreszcie odpowiadaÅ jakoÅci pracy. 270 271--- 272 273**Polecane usÅugi DiSpace:** 274- [Strony internetowe UK](/strony-internetowe-uk) â nowoczesny webdesign pod brytyjski rynek 275- [Pozycjonowanie stron UK](/pozycjonowanie-uk) â SEO, które wprowadza TwojÄ stronÄ na pierwszÄ stronÄ Google UK`},{slug:"redesign-strony-kiedy-budowac-od-zera",categorySlug:"strony-i-sklepy",title:"Redesign strony internetowej: Kiedy lifting to za maÅo i musisz zbudowaÄ stronÄ od zera?",excerpt:"4 sygnaÅy, że Twoja stara strona blokuje rozwój Twojego biznesu w UK.",readMinutes:6,date:"2026-05-23",author:{name:"ZespóŠDiSpace",role:"Webdesign"},image:Ot("1467232004584-a241de8bcf5d"),content:`Firma transportowa Pana Krzysztofa rozwijaÅa siÄ w imponujÄ cym tempie - od jednego vana do floty kilkunastu pojazdów. Jego biznes rósÅ, ale strona zatrzymaÅa siÄ w czasie. ZgÅosiÅ siÄ do nas z proÅbÄ o âdrobny lifting". Po audycie musieliÅmy przekazaÄ trudnÄ prawdÄ: lifting nie pomoże. 276 277Kiedy pudrowanie trupa przestaje mieÄ sens? Oto 4 sygnaÅy, że potrzebujesz nowej strony. 278 279## 1. Technologiczny dÅug i przestarzaÅy CMS 280Strona oparta na martwej technologii kosztuje wiÄcej w utrzymaniu niż budowa nowej. Każda modyfikacja koÅczy siÄ awariÄ . Nowoczesny, zoptymalizowany WordPress daje bezpieczeÅstwo, szybkoÅÄ i ÅatwoÅÄ rozbudowy. 281 282## 2. Brak responsywnoÅci (mobile-first) 283Lifting graficzny nie naprawi zÅej struktury. Brak responsywnoÅci = utrata 70% klientów i kara od Google. Strony nieprzyjazne mobile lecÄ na dalsze strony wyników. 284 285## 3. Zmiana grupy docelowej i modelu biznesowego 286Pan Krzysztof ewoluowaÅ z B2C (paczki do PL) na B2B (kontrakty z magazynami). Stara strona z krzykliwymi banerami odstraszaÅa poważnych partnerów. Redesign to idealny moment na repozycjonowanie marki. 287 288## 4. Fundamentalne problemy z SEO i konwersjÄ 289JeÅli strona nie pojawia siÄ w Google na kluczowe frazy, a użytkownicy nie wysyÅajÄ zapytaÅ - problem leży w fundamentach. ZÅa struktura linków, zagmatwana nawigacja, brak optymalizacji nagÅówków. Tego nie naprawi zmiana koloru przycisku. 290 291## Inwestycja, która siÄ zwraca 292 293ZbudowaliÅmy Panu Krzysztofowi nowÄ platformÄ: dedykowany system wyceny B2B, szybkie Åadowanie, profesjonalny design budujÄ cy zaufanie korporacyjne. **Koszty zwróciÅy siÄ po podpisaniu pierwszego dużego kontraktu**, który zdobyÅ wyÅÄ cznie dziÄki nowemu wizerunkowi. 294 295Nie pozwól, by przestarzaÅa technologia hamowaÅa rozwój.`},{slug:"pozycjonowanie-stron-uk-lokalny-hydraulik",categorySlug:"marketing-i-seo",title:"Pozycjonowanie stron w UK: Jak polski hydraulik z Londynu zdominowaÅ lokalne wyniki Google?",excerpt:"3 kroki do dominacji w Google Local Pack i darmowego ruchu.",readMinutes:7,date:"2026-05-22",author:{name:"ZespóŠDiSpace",role:"SEO"},image:Ot("1581094794329-c8112a89af12"),content:`Kamil prowadzi usÅugi hydrauliczne w poÅudniowym Londynie. Åwietny fachowiec, doskonaÅe opinie, konkurencyjne ceny. Ale brakowaÅo stabilnoÅci - raz miaÅ tyle zleceÅ, że odmawiaÅ, raz telefon milczaÅ przez dwa tygodnie. 296 297PróbowaÅ ratowaÄ sytuacjÄ reklamami w gazetach i ulotkami. Efekt mizerny. Kiedy pÄknie Ci rura, nie szukasz ulotki w szufladzie - wpisujesz w Google âemergency plumber near me" lub âpolski hydraulik Londyn". 298 299## Dlaczego lokalne SEO to koniecznoÅÄ 300 301Prawie **50% wszystkich wyszukiwaÅ** w Google ma intencjÄ lokalnÄ . **78%** osób szukajÄ cych lokalnych usÅug na smartfonie kontaktuje siÄ w ciÄ gu 24 godzin. JeÅli nie ma CiÄ w pierwszej trójce (Google Local Pack), praktycznie nie istniejesz. 302 303## Strategia DiSpace: 3 kroki do dominacji 304 305**Krok 1: Optymalizacja Google Business Profile.** UzupeÅniliÅmy wszystkie dane, dodaliÅmy profesjonalne zdjÄcia, zoptymalizowaliÅmy opisy pod kluczowe frazy. WdrożyliÅmy system pozyskiwania opinii - Google uwielbia firmy z wysokimi ocenami. 306 307**Krok 2: Techniczne SEO i struktura strony.** Optymalizacja pod szybkoÅÄ, dedykowane podstrony dla każdej usÅugi (naprawa bojlerów, udrażnianie rur, instalacje gazowe). Każda nasycona frazami typu âplumber South London" czy âpolski hydraulik UK". 308 309**Krok 3: Lokalny link building.** WartoÅciowe linki z lokalnych katalogów, brytyjskich portali branżowych, forów. SpójnoÅÄ NAP (Name, Address, Phone) w caÅym internecie. 310 311## Efekt kuli Ånieżnej 312 313Po 3 miesiÄ cach - wizytówka w TOP 3 dla kluczowych zapytaÅ. Po 6 miesiÄ cach - staÅy, darmowy ruch organiczny. Kamil zatrudniÅ dwóch dodatkowych pracowników i zrezygnowaÅ z pÅatnych reklam. 314 315**Pozycjonowanie stron internetowych** to inwestycja w cyfrowe nieruchomoÅci. Raz wypracowana pozycja przynosi zyski przez lata. 316 317--- 318 319**Polecane usÅugi DiSpace:** 320- [Pozycjonowanie stron UK](/pozycjonowanie-uk) â kompleksowe SEO i pozycjonowanie lokalne dla firm w UK 321- [Strony internetowe UK](/strony-internetowe-uk) â strona pod Google UK, którÄ siÄ pozycjonuje od pierwszego dnia`},{slug:"prowadzenie-social-media-uk-leady-zamiast-lajkow",categorySlug:"marketing-i-seo",title:"Prowadzenie Social Media w UK: Jak przestaÄ przepalaÄ budżet na Facebooku i zaczÄ Ä zdobywaÄ leady?",excerpt:"Dlaczego tradycyjne posty już nie dziaÅajÄ i jak wdrożyÄ strategiÄ opartÄ na ROI.",readMinutes:5,date:"2026-05-21",author:{name:"ZespóŠDiSpace",role:"Social Media"},image:Ot("1611162617213-7d7a39e9b1d7"),content:`Pani Marta prowadzi eleganckÄ polskÄ restauracjÄ w Birmingham. Gotuje wyÅmienicie. PostanowiÅa zainwestowaÄ w marketing - zatrudniÅa agencjÄ, która obiecaÅa âprofesjonalne prowadzenie social media". 322 323Przez szeÅÄ miesiÄcy publikowano trzy posty tygodniowo. âDzieÅ dobry w poniedziaÅek! Jak mija Wam poranek?" - piÄkne grafiki ze zdjÄciami kawy. Setki lajków od znajomych. Ruch w restauracji nie drgnÄ Å. 324 325## Dlaczego tradycyjne posty już nie dziaÅajÄ 326 327Algorytmy drastycznie obciÄÅy zasiÄgi organiczne. Twój darmowy post dociera do **2-5% obserwujÄ cych**. Platformy chcÄ , żebyÅ pÅaciÅ. Publikowanie generycznych treÅci bez budżetu to jak mruganie do dziewczyny w ciemnym pokoju. 328 329## 3 filary skutecznej strategii 330 331**1. Content rozwiÄ zujÄ cy problemy.** Zamiast âKup nasze usÅugi" - dostarczaj wartoÅÄ. Krótkie wideo o tym, jak odliczyÄ paliwo w UK, jak sprawdziÄ poziom oleju, jak zrobiÄ bigos. Edukacja buduje autorytet. 332 333**2. Social proof.** Pokazuj kulisy pracy (behind the scenes), case studies, zadowolonych klientów. Ludzie kupujÄ od ludzi. 334 335**3. Precyzyjne kampanie Meta Ads.** Organiczne posty budujÄ relacje - reklamy generujÄ zyski. Precyzyjny targeting na podstawie zachowaÅ i danych demograficznych. 336 337## Zmiana strategii, zmiana wyników 338 339Zamiast nudnych grafik - krótkie, dynamiczne Reels szefa kuchni przy pracy. Lokalna kampania reklamowa z CTA do rezerwacji online, skierowana do osób w promieniu 5 mil. 340 341W ciÄ gu pierwszego miesiÄ ca koszt pozyskania rezerwacji spadÅ do **3 funtów**. Restauracja zaczÄÅa pÄkaÄ w szwach. 342 343Nie pÅaÄ za lajki - zainwestuj w system, który generuje klientów.`},{slug:"seo-dla-sklepow-internetowych-5-strategii",categorySlug:"marketing-i-seo",title:"SEO dla sklepów internetowych: 5 strategii, które darmowo zwiÄkszÄ Twój ruch z Google",excerpt:"Optymalizacja opisów, architektura kategorii i znaczniki Schema w e-commerce.",readMinutes:7,date:"2026-05-20",author:{name:"ZespóŠDiSpace",role:"SEO / E-commerce"},image:Ot("1556761175-5973dc0f32e7"),content:`Pan Dawid, wÅaÅciciel dużego sklepu z polskÄ Å¼ywnoÅciÄ w UK, wydawaÅ fortunÄ na Google Ads i Meta Ads. Sprzedaż byÅa wysoka, ale marże zjadaÅ marketing. Każda redukcja budżetu = spadek ruchu do zera. Sklep byÅ caÅkowicie uzależniony od pÅatnego ruchu. 344 345RozwiÄ zanie to **pozycjonowanie stron w UK**. Dobrze zoptymalizowany sklep dziaÅa jak magnes, przyciÄ gajÄ c klientów z Google za darmo. 346 347## 1. Optymalizacja opisów produktów 348 349Kopiowanie opisów od producenta = duplicate content. Google ignoruje takie podstrony. Stwórz unikalne, wyczerpujÄ ce opisy. Zamiast âKieÅbasa krakowska 500g" - âTradycyjna polska kieÅbasa krakowska sucha, idealna na kanapki, dostawa w UK". 350 351## 2. Architektura kategorii i URL 352 353Kategorie to fundament SEO. Logiczne, odpowiadajÄ ce temu, jak ludzie szukajÄ . Przyjazne URL-e: \`twojsklep.co.uk/polskie-wedliny/kielbasa-krakowska\` zamiast \`?cat=123\`. Breadcrumbs pomagajÄ użytkownikom i Google. 354 355## 3. Blog e-commerce (Content Marketing) 356 357Klienci nie zawsze szukajÄ produktu - czÄsto rozwiÄ zania problemu. ArtykuÅ âJak zrobiÄ prawdziwy polski bigos w UK?" generowaÅ setki odwiedzin miesiÄcznie, a wewnÄ trz - linki do kapusty, grzybów i kieÅbasy w sklepie. **Darmowy ruch, który naturalnie konwertuje.** 358 359## 4. SzybkoÅÄ Åadowania i Core Web Vitals 360 361Sklepy sÄ ciÄżkie. Åadowanie ponad 3 sekundy = utrata klientów i pozycji w Google. WebP, cache, dedykowany hosting. 362 363## 5. Znaczniki Schema (Structured Data) 364 365Rich snippets - cena, zdjÄcie, gwiazdki opinii w wynikach Google. Drastycznie zwiÄksza CTR, przyciÄ gajÄ c wzrok przed wejÅciem na stronÄ. 366 367## Wynik po 8 miesiÄ cach 368 369Ruch organiczny w sklepie Pana Dawida wzrósÅ o **450%**. Przychody z darmowego ruchu przewyższyÅy te z pÅatnych kampanii. Biznes staÅ siÄ stabilny i odporny na wahania cen klikniÄÄ. 370 371Pozycjonowanie sklepów to maraton, nie sprint - ale fundament, który daje stabilnoÅÄ na lata.`},{slug:"meta-ads-vs-google-ads-uk-2026",categorySlug:"marketing-i-seo",title:"Reklamy Meta Ads vs Google Ads: Gdzie polskie firmy w UK powinny inwestowaÄ w 2026 roku?",excerpt:"Przechwytywanie gorÄ cego popytu kontra kreowanie ÅwiadomoÅci marki.",readMinutes:6,date:"2026-05-19",author:{name:"ZespóŠDiSpace",role:"Performance"},image:Ot("1611926653458-09294b3142bf"),content:`Pan MichaÅ prowadzi firmÄ sprzÄ tajÄ cÄ w Edynburgu. ChcÄ c szybko zdobyÄ klientów B2B, zainwestowaÅ 1000 funtów w Meta Ads. Åwietne grafiki przed/po, tysiÄ ce zasiÄgu, mnóstwo lajków - i **ani jednego poważnego zlecenia**. 372 373Problem? Dobra oferta, zÅe miejsce. Prezes firmy szukajÄ cy ekipy sprzÄ tajÄ cej nie przeglÄ da Facebooka - wpisuje w Google âcommercial cleaning services Edinburgh". 374
375## Google Ads: przechwytywanie gorÄ cego popytu 376 377Google Ads to reklama oparta na intencji. Użytkownik wpisuje konkretne hasÅo, bo ma problem do rozwiÄ zania **tu i teraz**. 378 379**Zalety:** 380- docierasz do klientów gotowych do zakupu (gorÄ ce leady), 381- pÅacisz tylko za klikniÄcia (PPC), 382- idealne dla usÅug awaryjnych, B2B, produktów wymagajÄ cych natychmiast. 383 384Przeniesienie budżetu Pana MichaÅa do Google Ads byÅo strzaÅem w dziesiÄ tkÄ. Kampania w wyszukiwarce zaczÄÅa natychmiast generowaÄ telefony od firm. 385 386## Meta Ads: kreowanie popytu i ÅwiadomoÅci 387 388Ludzie nie wchodzÄ na Instagram szukaÄ hydraulika - wchodzÄ po rozrywkÄ. Twoja reklama **przerywa** im tÄ czynnoÅÄ. Ale Meta daje potÄżny targeting na zainteresowania i zachowania, zanim klient sam sobie uÅwiadomi potrzebÄ. 389 390**Zalety:** 391- niższy CPM niż Google, 392- idealne do budowania marki i edukowania rynku, 393- doskonaÅe dla beauty, mody, restauracji, produktów impulsywnych, 394- potÄżny retargeting. 395 396## Synergia: jak poÅÄ czyÄ obie platformy 397 398Najlepsze wyniki osiÄ gajÄ firmy traktujÄ ce Google i Meta jako **partnerów w lejku**. 399 400PrzykÅad sklepu: Google Shopping przechwytuje osoby szukajÄ ce produktu (âpolskie kosmetyki naturalne UK"). Meta Ads robi retargeting - klient, który nie kupiÅ, widzi ten sam produkt na Facebooku z kodem rabatowym. 401 402## Gdzie inwestowaÄ? 403 404- **Ograniczony budżet i potrzeba klientów âna wczoraj"** (remonty, hydraulika, pomoc drogowa) â zacznij od **Google Ads**. 405- **Salon kosmetyczny, restauracja, unikalne produkty, budowanie marki** â zacznij od **Meta Ads**. 406 407Nie zgaduj - zaufaj danym.`},{slug:"content-marketing-ktory-sprzedaje-copywriting",categorySlug:"marketing-i-seo",title:"Content Marketing, który sprzedaje: Jak pisaÄ teksty na stronÄ, by klienci sami prosili o wycenÄ?",excerpt:"PrzestaÅ mówiÄ o sobie, zacznij rozwiÄ zywaÄ problemy klientów.",readMinutes:6,date:"2026-05-18",author:{name:"ZespóŠDiSpace",role:"Copywriting"},image:Ot("1455390582262-044cdead277a"),content:`Pan Tomasz, polski ksiÄgowy w Londynie, miaÅ ÅwietnÄ stronÄ. NowoczesnÄ , szybkÄ , technicznie bez zarzutu. Ale teksty byÅy sztywne, peÅne żargonu: âOferujemy kompleksowe usÅugi ksiÄgowe, stawiajÄ c na profesjonalizm i rzetelnoÅÄ". Klienci ziewali i wychodzili - konkurowaÅ wyÅÄ cznie cenÄ . 408 409## PrzestaÅ mówiÄ o sobie 410 411NajwiÄkszym bÅÄdem copywritingu jest tzw. **âsyndrom my"**. Firmy zapeÅniajÄ strony sÅowami: my robimy, my oferujemy, nasz zespóÅ. Klienta nie obchodzi Twoja firma - obchodzi go, jak rozwiÄ Å¼esz jego problem. 412 413ZmieniliÅmy nagÅówek na: *âZaoszczÄdź do 30% na podatkach w UK. Skup siÄ na rozwijaniu biznesu, my zajmiemy siÄ papierkowÄ robotÄ ."* Uderza w najwiÄkszy ból przedsiÄbiorcy (podatki + brak czasu) i oferuje konkretne rozwiÄ zanie. 414 415## Blog jako narzÄdzie SEO i autorytetu 416 417UruchomiliÅmy firmowego bloga z wartoÅciowymi poradnikami: âJak legalnie odliczyÄ koszty prywatnego auta w LTD?", âZmiany w podatkach dla samozatrudnionych 2026". Efekty: 418 4191. **Wzrost SEO** - artykuÅy odpowiadaÅy na pytania, które Polacy w UK wpisujÄ w Google. Ruch organiczny wzrósÅ trzykrotnie. 4202. **Zaufanie** - czytelnik, którego problem rozwiÄ zano, podÅwiadomie uznawaÅ Pana Tomasza za eksperta i dzwoniÅ do autora. 421 422## 3 zasady tekstów, które konwertujÄ 423 424**1. JÄzyk korzyÅci, nie cech.** 425*Cecha:* âBiuro otwarte do 20:00." 426*KorzyÅÄ:* âNie musisz zwalniaÄ siÄ z pracy, żeby dowieÅºÄ dokumenty." 427 428**2. Social proof w tekÅcie.** Zamiast âjesteÅmy skuteczni" - âPomogliÅmy firmie X odzyskaÄ 5000 funtów nadpÅaconego podatku". Konkretne liczby budujÄ zaufanie. 429 430**3. Jasne CTA na koÅcu każdej treÅci.** âMasz pytania o swoje podatki? Umów siÄ na darmowÄ , 15-minutowÄ konsultacjÄ." 431 432## SÅowa majÄ moc 433 434Po szeÅciu miesiÄ cach biuro Pana Tomasza przestaÅo konkurowaÄ cenÄ . Klienci z bloga byli âogrzani", przekonani o ekspertyzie, gotowi zapÅaciÄ wiÄcej za specjalistÄ, który tÅumaczy skomplikowane przepisy prostym jÄzykiem. 435
436Twoja strona to Twój najlepszy handlowiec. Upewnij siÄ, że mówi wÅaÅciwe rzeczy.`},{slug:"tanie-logo-vs-profesjonalna-identyfikacja-wizualna",categorySlug:"wizerunek-i-branding",title:"Tanie logo kosztowaÅo ich tysiÄ ce funtów. Dlaczego profesjonalna identyfikacja wizualna to inwestycja?",excerpt:"Jak amatorski design niszczy zaufanie i dlaczego warto zainwestowaÄ w premium branding.",readMinutes:5,date:"2026-05-17",author:{name:"ZespóŠDiSpace",role:"Branding"},image:Ot("1626785774573-4b799315345d"),content:`Pani Anna otworzyÅa ekskluzywny salon kosmetyczny w Manchesterze. ZainwestowaÅa ogromne pieniÄ dze w nowoczesny sprzÄt, luksusowy wystrój wnÄtrza i szkolenia dla personelu. ChciaÅa przyciÄ gaÄ klientki premium, gotowe zapÅaciÄ wyższÄ cenÄ za najwyższÄ jakoÅÄ usÅug. 437 438Kiedy przyszÅo do stworzenia wizerunku marki, budżet byÅ już napiÄty. Pani Anna postanowiÅa zaoszczÄdziÄ. ZamówiÅa projektowanie logo na popularnym portalu dla freelancerów za zaledwie 30 funtów. OtrzymaÅa plik w sÅabej rozdzielczoÅci, przedstawiajÄ cy sztampowy, różowy kwiat lotosu, jakich tysiÄ ce w internecie. 439 440UżyÅa tego logo na szyldzie, wydrukowaÅa tanie wizytówki i ulotki. Efekt? Mimo luksusowego wnÄtrza i Åwietnych usÅug, salon przyciÄ gaÅ gÅównie klientki szukajÄ ce najtaÅszych promocji. Kobiety z segmentu premium omijaÅy to miejsce szerokim Åukiem. Dlaczego? Ponieważ amatorski wizerunek zewnÄtrzny wysyÅaÅ jasny sygnaÅ podÅwiadomoÅci: "to
440jest tanie miejsce o niskiej jakoÅci". 441 442Tanie logo kosztowaÅo PaniÄ AnnÄ utratÄ najbardziej dochodowych klientów. To klasyczny bÅÄ d, który popeÅnia wiele polskich firm w UK. TraktujÄ projekty graficzne jako zbÄdny wydatek, nie rozumiejÄ c, że identyfikacja wizualna to najpotÄżniejsze narzÄdzie do pozycjonowania cenowego na rynku. 443 444## Czym wÅaÅciwie jest profesjonalna identyfikacja wizualna? 445 446Wielu przedsiÄbiorców myÅli, że branding koÅczy siÄ na Åadnym znaczku. To ogromne nieporozumienie. Profesjonalne projektowanie logo UK to zaledwie wierzchoÅek góry lodowej. 447 448Kompleksowa identyfikacja wizualna to spójny system komunikacji Twojej firmy. Obejmuje ona nie tylko samo logo w różnych wariantach (poziome, pionowe, monochromatyczne), ale również precyzyjnie dobranÄ paletÄ kolorów, firmowÄ typografiÄ (czcionki) oraz zasady ich stosowania. Wszystko to jest zebrane w dokumencie zwanym KsiÄgÄ Znaku (Brandbook). 449 450Kiedy masz spójny system, Twoje wizytówki, ulotki, strona internetowa, posty w social mediach i oklejenie samochodów firmowych wyglÄ dajÄ jak jedna, potÄżna caÅoÅÄ. To buduje natychmiastowe zaufanie. 451 452## 3 powody, dla których amatorski design niszczy Twój biznes 453 454Jako doÅwiadczona polska agencja reklamowa UK, codziennie naprawiamy bÅÄdy tanich grafików. Oto dlaczego oszczÄdzanie na wizerunku to najdroższy bÅÄ d w biznesie. 455 4561. Brak zaufania i wiarygodnoÅci 457Ludzki mózg ocenia firmÄ w uÅamku sekundy na podstawie bodźców wizualnych. JeÅli Twoje materiaÅy reklamowe wyglÄ dajÄ , jakby zostaÅy zrobione w programie Paint w 15 minut, klient podÅwiadomie zakÅada, że Twoje usÅugi również sÄ amatorskie. Nikt nie chce powierzyÄ budowy domu, ksiÄgowoÅci czy wÅasnego zdrowia firmie, która nie potrafi zadbaÄ o wÅasny wizerunek. 458 4592. Przegrana walka cenowa 460JeÅli nie wyróżniasz siÄ wizerunkiem, stajesz siÄ dla klienta towarem masowym. A w przypadku towarów masowych, jedynym kryterium wyboru staje siÄ cena. Profesjonalny branding pozwala Ci uciec z puÅapki konkurowania najniższÄ stawkÄ . Klienci sÄ gotowi zapÅaciÄ wiÄcej za usÅugi firmy, która wyglÄ da na markÄ premium, ponieważ czujÄ siÄ bezpieczniej. 461 4623. Problemy techniczne i ukryte koszty 463Tanie logo z internetu zazwyczaj jest dostarczane w formacie rastrowym (JPG lub PNG). Kiedy chcesz wydrukowaÄ duży baner reklamowy lub okleiÄ vana, obraz staje siÄ rozmazany i peÅen pikseli. Profesjonalne projekty graficzne zawsze sÄ dostarczane w formatach wektorowych, które można skalowaÄ do wielkoÅci wieżowca bez utraty jakoÅci. Poprawianie technicznych bÅÄdów amatorów kosztuje zazwyczaj wiÄcej, niż zamówienie profesjonalnego projektu od razu. 464 465## Rebranding, który zmienia zasady gry 466 467WróÄmy do historii Pani Anny. ZrozumiaÅa swój bÅÄ d i zgÅosiÅa siÄ do nas. PrzeprowadziliÅmy caÅkowity rebranding. StworzyliÅmy minimalistyczne, eleganckie logo oparte na nowoczesnej typografii. DobraliÅmy paletÄ barw kojarzÄ cÄ siÄ z luksusem i spokojem (gÅÄboki granat, zÅoto i pudrowy róż). 468 469ZaprojektowaliÅmy nowe, ekskluzywne wizytówki na grubym papierze z tÅoczeniami, eleganckie cenniki oraz spójne szablony do postów na Instagramie. ZaktualizowaliÅmy również wyglÄ d strony internetowej, aby pasowaÅa do nowej identyfikacji. 470 471Zmiana byÅa natychmiastowa. Nowy, premium wizerunek w koÅcu zaczÄ Å rezonowaÄ z wystrojem salonu i jakoÅciÄ usÅug. Salon zaczÄ Å przyciÄ gaÄ zamożniejsze klientki, a Pani Anna mogÅa podnieÅÄ ceny swoich usÅug o 30% bez żadnego sprzeciwu ze strony rynku. Inwestycja w profesjonalny branding zwróciÅa siÄ w niespeÅna dwa miesiÄ ce. 472 473## Twój wizerunek to Twój najlepszy handlowiec 474 475Nie pozwól, aby sÅaba grafika blokowaÅa rozwój Twojej firmy. Niezależnie od tego, czy potrzebujesz odÅwieżenia starego logo, czy budujesz nowÄ markÄ od zera, potrzebujesz partnera, który rozumie biznes. 476 477W DiSpace nie rysujemy tylko Åadnych obrazków. Projektujemy narzÄdzia, które pomagajÄ polskim firmom w UK rosnÄ Ä, budowaÄ zaufanie i sprzedawaÄ drożej. Od projektowania logo, przez wizytówki, ulotki, aż po zaawansowane projekty do druku. 478 479Zainwestuj w wizerunek, z którego bÄdziesz dumny. Skontaktuj siÄ z nami i dowiedz siÄ, jak profesjonalna identyfikacja wizualna może zmieniÄ przyszÅoÅÄ Twojego biznesu.`},{slug:"rebranding-polskiej-firmy-uk-jak-podniesc-stawki",categorySlug:"wizerunek-i-branding",title:"Rebranding polskiej firmy w UK: Jak przestaÄ konkurowaÄ cenÄ i staÄ siÄ markÄ premium?",excerpt:"Transformacja wizerunku, która pozwala podnieÅÄ stawki o 40%.",readMinutes:6,date:"2026-05-16",author:{name:"ZespóŠDiSpace",role:"Branding"},image:Ot("1542744173-8e7e53415bb0"),content:`Firma budowlana Pana Marcina, dzialajaca w okolicach Londynu, miala swietna renome wsrod dotychczasowych klientow. Robili kompleksowe remonty na najwyzszym poziomie, uzywajac drogich materialow i dbajac o kazdy detal. Problem polegal na tym, ze ich wizerunek zewnetrzny zupelnie tego nie odzwierciedlal. 480 481Ich logo wygladalo jak clipart sciagniety z darmowej strony w 2010 roku - domek z cegiel i mlotek. Samochody firmowe mialy naklejone krzykliwe, zolto-czerwone napisy "Tanie Remonty UK". Strona internetowa przypominala tablice ogloszen. 482 483Pan Marcin chcial zdobywac zlecenia od zamoznych klientow brytyjskich, ktorzy szukali wykonawcow do luksusowych rezydencji. Jednak kiedy tacy klienci widzieli jego vana lub wchodzili n
483a strone, natychmiast rezygnowali. Wizerunek firmy krzyczal "tanio i szybko", podczas gdy uslugi byly "premium i dokladnie". Ten dysonans poznawczy blokowal rozwoj firmy. 484 485Rozwiazaniem byl kompleksowy rebranding. Jako polska agencja reklamowa w UK, przeprowadzilismy firme Pana Marcina przez proces transformacji, ktory pozwolil mu podniesc stawki o 40% i wejsc na rynek luksusowy. 486 487## Czym jest rebranding i kiedy go potrzebujesz? 488 489Rebranding to nie tylko zmiana logo. To strategiczna zmiana calej tozsamosci wizualnej i komunikacyjnej firmy, majaca na celu zmiane sposobu, w jaki jest postrzegana przez rynek. 490 491Kiedy polskie firmy w UK powinny rozwazyc rebranding? 4921. Zmiana grupy docelowej: Chcesz przestac obslugiwac klientow szukajacych najnizszej ceny i wejsc na rynek premium (B2B lub zamozni klienci indywidualni). 4932. Rozwoj uslug: Zaczynales od drobnych napraw, a teraz budujesz domy od podstaw. Twoj stary wizerunek nie pasuje do skali Twojej dzialalnosci. 4943. Przestarzaly wyglad: Twoje materialy reklamowe wygladaja, jakby zatrzymaly sie w poprzedniej dekadzie, podczas gdy konkurencja wyglada nowoczensnie i profesjonalnie. 495 496## Proces transformacji: Od "Taniego Remontu" do "Premium Construction" 497 498Wspolprace z Panem Marcinem zaczelismy od warsztatow strategicznych. Zrozumielismy, ze jego najwieksza wartoscia jest terminowosc, czystosc pracy i dbalosc o detale architektoniczne. 499 500Krok 1: Nowa tozsamosc wizualna 501Porzucilismy stare, doslowne logo z mlotkiem. Zaprojektowalismy minimalistyczny, elegancki monogram oparty na inicjalach firmy. Zmienilismy krzykliwa kolorystyke na stonowany granat, grafit i szczotkowane zloto. Te kolory w psychologii biznesu kojarza sie ze stabilnoscia, luksusem i zaufaniem. 502 503Krok 2: Spojnosc na kazdym kroku 504Zaprojektowalismy nowe oklejenie dla calej floty samochodowej. Zamiast wielkich napisow "Tanie remonty", na vanach pojawilo sie eleganckie logo i haslo "Bespoke Construction & Refurbishment". Stworzylismy ekskluzywne wizytowki na grubym, fakturowanym papierze oraz profesjonalne teczki ofertowe, w ktorych Pan Marcin mogl wreczac wyceny klientom. 505 506Krok 3: Cyfrowa rewolucja 507Stara strona zostala usunieta. Zbudowalismy nowoczesna platforme, ktora pelnila funkcje ekskluzywnego portfolio. Duze, wysokiej jakosci zdjecia zrealizowanych projektow, minimalistyczna typografia i profesjonalny copywriting w jezyku angielskim. Wdrozyllismy rowniez pozycjonowanie stron UK, skupiajac sie na frazach takich jak "high-end refurbishment London". 508 509## Wizerunek, ktory podnosi marze 510 511Efekty rebrandingu byly spektakularne. Pan Marcin zaczal umawiac sie na spotkania w bogatych dzielnicach Londynu. Kiedy podjezdzal eleganckim vanem, wreczal profesjonalna teczke z wycena i kierowal klientow na nowoczesna strone internetowa, nikt nie kwestionowal jego stawek. 512 513Klienci premium nie szukaja najtanszego wykonawcy. Szukaja bezpieczenstwa i pewnosci, ze praca zostanie wykonana perfekcyjnie. Profesjonalny wizerunek daje im te pewnosc jeszcze przed rozpoczeciem prac. 514 515Nie pozwol, aby slaby design zanizal wartosc Twojej ciezkiej pracy. Jesli czujesz, ze Twoja firma utknela w pulapce niskich cen, czas na zmiane. Jako doswiadczona agencja reklamowa UK, pomagamy polskim przedsiebiorcom budowac marki, ktore budza szacunek i pozwalaja zarabiac wiecej. Skontaktuj sie z nami i sprawdz, jak rebranding moze odmienic Twoj biznes.`},{slug:"spojne-projekty-graficzne-i-druk-b2b",categorySlug:"wizerunek-i-branding",title:"Od wizytówki po wielki baner: Dlaczego spójne projekty graficzne i druk budujÄ zaufanie w B2B?",excerpt:"Efekt aureoli w biznesie i 3 zasady skutecznych materiaÅów drukowanych.",readMinutes:5,date:"2026-05-15",author:{name:"ZespóŠDiSpace",role:"Design & Print"},image:Ot("1531497865144-0464ef8fb9a9"),content:`Pani Karolina, wlascicielka polskiej hurtowni spozywczej w UK, przygotowywala sie do najwazniejszych targow branzowych w Londynie. To byla jej szansa na zdobycie lukratywnych kontraktow z brytyjskimi sieciami sklepow. Wykupila drogie stoisko, przygotowala probki produktow, ale zapomniala o jednym kluczowym elemencie - spojnej komunikacji wizualnej. 516 517Na tydzien przed targami w panice zlecila druk ulotek lokalnej drukarni, ktora uzyla przypadkowych czcionek. Baner zamowila u taniego freelancera w internecie, ktory uzyl zlego odcienia firmowego koloru. Wizytowki wydrukowala sama na domowej drukarce. 518 519Kiedy stanela na stoisku, wygladalo ono jak zlepek przypadkowych elementow z trzech roznych firm. Brytyjscy kupcy, przyzwyczajeni do najwyzszych standardow korporacyjnych, omijali jej stoisko. Brak spojnosci wizualnej podswiadomie krzyczal: "ta firma jest zdezorganizowana i nieprofesjonalna". Pani Karolina stracila szanse na kontrakty zycia. 520 521To bolesna lekcja, ktora pokazuje, ze w sektorze B2B (Business to Business) profesjonalne uslugi graficzne dla firm to nie fanaberia, ale fundament budowania zaufania. 522 523## Efekt aureoli w biznesie 524 525W psychologii istnieje pojecie "efektu aureoli" (Halo Effect). Oznacza ono, ze na podstawie jednej pozytywnej cechy przypisujemy obiektowi inne pozytywne wlasciwosci. Jesli Twoje materialy reklamowe - wizytowki, teczki, katalogi - sa zaprojektowane z najwyzsza starannoscia i wydrukowane na papierze premium, klient podswiadomie zaklada, ze Twoje produkty lub uslugi sa rownie wysokiej jakosci. 526 527Dziala to rowniez w druga strone. Tani, blyszczacy papier i rozmazane logo na ulotce sprawiaja, ze klient spodziew
527a sie problemow we wspolpracy. 528 529## 3 zasady skutecznych materialow drukowanych 530 531Jako polska agencja reklamowa w UK, kompleksowo obslugujemy firmy - od projektu po finalny druk. Oto zasady, ktorymi kierujemy sie, tworzac materialy budujace autorytet. 532 5331. Absolutna spojnosc (Konsystencja) 534Twoja strona internetowa, profil na LinkedIn, wizytowka i baner na targach musza wygladac jak czlonkowie tej samej rodziny. Uzywamy dokladnie tych samych odcieni kolorow (definiowanych w paletach CMYK i Pantone dla druku), tych samych fontow i spójnego stylu graficznego. Kiedy klient widzi Twoja ulotke, musi od razu wiedziec, ze to Twoja firma, jeszcze zanim przeczyta nazwe. 535 5362. Mniej znaczy wiecej (Minimalizm) 537Najczestszym bledem w projektowaniu ulotek i banerow jest proba upchniecia na nich calej historii firmy i pelnego cennika. Materialy drukowane maja przyciagnac uwage i zachecic do kontaktu, a nie byc encyklopedia. Stawiamy na mocny naglowek, wyrazne wezwanie do akcji (CTA) i czysta przestrzen, ktora nadaje projektowi elegancji. 538 5393. Jakosc fizyczna (Dotyk ma znaczenie) 540W erze cyfrowej, fizyczny przedmiot ma ogromna moc. Kiedy wreczasz kontrahentowi wizytowke, jej ciezar, faktura papieru i uszlachetnienia (np. lakier wybioczy, tloczenie) wysylaja silny sygnal o statusie Twojej firmy. Inwestycja w papier o gramaturze 350g lub 400g to groszowe sprawy, a robi kolosalna roznice w odbiorze. 541 542## Kompleksowa obsluga zdejmuje problem z Twojej glowy 543 544Najwiekszym problemem przedsiebiorcow jest koordynacja. Grafik robi projekt, drukarnia twierdzi, ze plik jest zle przygotowany, a ostateczny wydruk ma zupelnie inne kolory niz na monitorze. 545 546Wybierajac doswiadczona agencje 360, zdejmujesz ten problem z wlasnych barkow. W DiSpace bierzemy pelna odpowiedzialnosc za proces. Projektujemy materialy zgodnie z rygorystycznymi wymogami DTP (Desktop Publishing), dobieramy odpowiednie podloza i dostarczamy gotowy, perfekcyjny produkt prosto do Twojego biura w UK. 547 548Nie pozwol, aby drobne bledy wizerunkowe zamykaly Ci drzwi do wielkich kontraktow. Zadbaj o to, by Twoja firma prezentowala sie profesjonalnie w kazdym punkcie styku z klientem. Skontaktuj sie z nami i dowiedz sie, jak mozemy ujednolicic i podniesc jakosc Twoich materialow reklamowych.`},{slug:"ksiega-znaku-brandbook-co-to-jest",categorySlug:"wizerunek-i-branding",title:"KsiÄga znaku (Brandbook): Co to jest i dlaczego każda poważna firma w UK musi jÄ mieÄ?",excerpt:"Zabezpiecz swój wizerunek przed chaosem i amatorskimi modyfikacjami.",readMinutes:4,date:"2026-05-14",author:{name:"ZespóŠDiSpace",role:"Branding"},image:Ot("1559028012-481c04fa702d"),content:`Pan Andrzej zarzadza preznie rozwijajaca sie firma transportowa w UK. Zatrudnia kilkudziesieciu kierowcow i posiada duza flote pojazdow. Kiedy firma zaczynala, logo zaprojektowal znajomy student. Bylo calkiem niezle, wiec Pan Andrzej uzywal go wszedzie. 549 550Problemy zaczely sie wraz ze wzrostem firmy. Kiedy zlecil oklejenie nowych vanow lokalnej firmie w Manchesterze, logo na samochodach wyszlo jaskrawoczerwone, choc na stronie internetowej bylo bordowe. Kiedy zamowil koszulki firmowe dla pracownikow, drukarnia rozciagnela logo, znieksztalcajac je calkowicie. Z kolei agencja prowadzaca social media uzywala zupelnie innych czcionek niz te na oficjalnych dokumentach firmy. 551 552Wizerunek firmy Pana Andrzeja stal sie chaotyczny. Wygladal jak zlepek kilku roznych biznesow. Powod tego chaosu byl prosty: firma nie posiadala Ksiegi Znaku (Brandbooka). 553 554## Czym jest Ksiega Znaku? 555 556Ksiega Znaku to "biblia" Twojej marki. To oficjalny dokument, ktory precyzyjnie okresla, jak wyglada Twoje logo i jak nalezy go uzywac, aby zachowac pelna spojnosc wizerunkowa. Profesjonalne projektowanie logo w UK nigdy nie powinno konczyc sie na dostarczeniu samego pliku graficznego. Zawsze powinno byc poparte stworzeniem zasad jego uzytkowania. 557 558Wyobraz sobie, ze Ksiega Znaku to instrukcja obslugi Twojej firmy dla kazdego grafika, drukarza, tworcy stron www czy agencji marketingowej. Przekazujesz im ten dokument i masz absolutna pewnosc, ze nikt nie zepsuje Twojego wizerunku. 559 560## Co zawiera profesjonalny Brandbook? 561 562Jako polska agencja reklamowa w UK, tworzymy kompleksowe Ksiegi Znaku dla naszych klientow. Dobry Brandbook powinien zawierac kilka kluczowych elementow: 563 5641. Warianty i konstrukcje logo 565Dokument pokazuje podstawowa wersje logo, wersje pionowa, pozioma oraz sygnet (sam znaczek bez tekstu). Okresla rowniez proporcje i odleglosci miedzy elementami. 566 5672. Pole ochronne i minimalne rozmiary 568To kluczowa zasada. Pole ochronne to zdefiniowana przestrzen wokol logo, w ktorej nie moga znalezc sie zadne inne elementy graficzne ani teksty. Gwarantuje to, ze Twoje logo zawsze bedzie czytelne. Dokument okresla tez, do jakiego minimalnego rozmiaru mozna pomniejszyc logo w druku i w internecie, aby nie stalo sie rozmazana plama. 569 5703. Firmowa paleta kolorow 571To rozwiazaloby problem Pana Andrzeja z vanami. Ksiega Znaku precyzyjnie definiuje k
571olory marki za pomoca kodow. Podaje wartosci HEX i RGB (do uzytku w internecie, np. na stronach www) oraz CMYK i Pantone (do precyzyjnego druku). Dzieki temu czerwony na Twojej stronie i czerwony na Twoim samochodzie to zawsze ten sam, identyczny odcien. 572 5734. Typografia (Czcionki) 574Dokument wskazuje, jakich dokladnie krojow pism nalezy uzywac w naglowkach, a jakich w tekstach dlugich. Spojna typografia to jeden z najsilniejszych, podswiadomych sygnalow profesjonalizmu. 575 5765. Niedozwolone modyfikacje 577Ksiega pokazuje na przykladach, czego NIE wolno robic z logo. Zakazuje rozciagania, zmiany kolorow na wlasna reke, dodawania cieni czy obracania znaku. To Twoja tarcza ochronna przed kreatywnoscia amatorow. 578 579## Inwestycja w porzadek i oszczednosc czasu 580 581Wdrozenie Ksiegi Znaku w firmie Pana Andrzeja rozwiazalo wszystkie problemy wizerunkowe. Od tego momentu, kazdy nowy podwykonawca otrzymywal plik PDF z wytycznymi. Skonczyly sie pomylki w druku, a wizerunek firmy stal sie spojny i profesjonalny na kazdym kroku. 582 583Brak spójnosci wizualnej kosztuje Cie zaufanie klientow. Klienci B2B i konsumenci premium podswiadomie oceniaja organizacje firmy na podstawie jej wizerunku. Jesli nie potrafisz zapanowac nad wlasnym logo, jak zapanujesz nad skomplikowanym zleceniem? 584 585Zbuduj marke, ktora budzi respekt. Skontaktuj sie z nami. Jako eksperci od brandingu i uslug graficznych dla firm, uporzadkujemy Twoj wizerunek i stworzymy Ksiege Znaku, ktora stanie sie fundamentem Twojego profesjonalizmu.`},{slug:"psychologia-kolorow-w-biznesie-strona-www",categorySlug:"wizerunek-i-branding",title:"Psychologia kolorów w biznesie: Jak barwy Twojej strony www wpÅywajÄ na decyzje zakupowe?",excerpt:"Zbuduj wizerunek, który podÅwiadomie przyciÄ ga wÅaÅciwych klientów w Wielkiej Brytanii.",readMinutes:5,date:"2026-05-13",author:{name:"ZespóŠDiSpace",role:"Brand Design"},image:Ot("1513475382585-d06e58bcb0e0"),content:`Pani Sylwia otworzyla luksusowy salon medycyny estetycznej w Londynie. Oferowala zabiegi premium, a jej uslugi byly na najwyzszym swiatowym poziomie. Kiedy zlecila stworzenie strony internetowej, wybrala swoje ulubione kolory: jaskrawy rozowy i neonowy zolty. 586 587Strona byla nowoczesna i szybka, ale klientki z segmentu premium omijaly salon szerokim lukiem. Zamiast nich, dzwonily glownie mlode dziewczyny szukajace tanich promocji na powiekszanie ust. Pani Sylwia nie rozumiala, dlaczego przyciaga zla grupe docelowa. 588 589Problem nie lezal w ofercie, ale w psychologii. Kolory, ktore wybrala na swoja strone internetowa, krzyczaly do podswiadomosci klienta: "jestesmy tanim, mlodziezowym salonem". Luksus, spokoj i profesjonalizm, ktorych szukaly zamozne klientki, wymagaja zupelnie innej palety barw. 590 591Jako polska agencja reklamowa w UK, podczas projektowania stron internetowych i identyfikacji wizualnej, nigdy nie dobieramy kolorow na podstawie tego, co "ladnie wyglada". Opieramy sie na twardych zasadach psychologii biznesu. 592 593## Jak kolory steruja naszym mozgiem? 594 595Ludzki mozg przetwarza kolory znacznie szybciej niz tekst. Zanim klient przeczyta chociaz jedno slowo na Twojej stronie, jego podswiadomosc juz oceni Twoja firme na podstawie dominujacych barw. Oto jak Brytyjczycy (i nie tylko) reaguja na konkretne kolory w biznesie: 596 5971. Niebieski i Granatowy: Zaufanie, bezpieczenstwo, stabilnosc
598To najbezpieczniejszy i najbardziej profesjonalny kolor w biznesie. Nie bez powodu uzywaja go banki (Barclays), firmy ubezpieczeniowe i korporacje technologiczne (Facebook, LinkedIn). Jesli prowadzisz biuro rachunkowe, kancelarie prawna lub firme budowlana B2B w UK, granat powinien byc fundamentem Twojego wizerunku. 599 6002. Zielony: Spokoj, wzrost, ekologia, zdrowie 601Idealny dla firm zwiazanych z natura, zdrowym odzywianiem, ale takze finansami (wzrost). W UK zielen swietnie sprawdza sie w branzach takich jak landscaping (ogrodnictwo), odnawialne zrodla energii czy prywatne kliniki medyczne. 602 6033. Czarny, Zloty i Srebrny: Luksus, ekskluzywnosc, prestiz 604To wlasnie tych kolorow brakowalo na stronie Pani Sylwii. Ciemne, glebokie tla w polaczeniu ze zlotymi lub miedzianymi akcentami to uniwersalny kod luksusu. Marki premium (Apple, Chanel) uzywaja minimalizmu i czerni, aby zakomunikowac: "nasze produkty sa drogie i warte swojej ceny". 605 6064. Czerwony: Energia, pilnosc, pasja 607Czerwien podnosi tetno i zmusza do szybkiego dzialania. Swietnie sprawdza sie w branzach fast-food, wyprzedazach (Sale) oraz uslugach awaryjnych (np. Emergency Plumber 24/7). Nalezy go jednak uzywac z ostroznoscia, poniewaz w nadmiarze wywoluje agresje i niepokoj. 608 6095. Pomaranczowy i Zolty: Przyjaznosc, optymizm, niska cena 610To kolory marek dostepnych dla kazdego (np. EasyJet, Amazon). Komunikuja radosc i przystepnosc cenowa. Jesli Twoim atutem jest niska cena i masowy odbiorca, to swietny wybor. Jesli celujesz w rynek premium - unikaj ich jak ognia. 611 612## Kolor przycisku (CTA) ma znaczenie 613 614Psychologia kolorow to nie tylko tlo strony. To rowniez strategiczne uzycie barw kontrastowych do sterowania uwaga uzytkownika. 615 616W jednym z naszych projektow dla sklepu e-commerce (sklepy WooCommerce), zmienilismy kolor przycisku "Dodaj do koszyka" ze zlewajacego sie z tlem niebieskiego na mocno kontrastujacy, pomaranczowy. Tylko ta jedna zmiana, bez zadnych innych modyfikacji na stronie, zwiekszyla konwersje sprzedazowa o 14%. Przycisk stal sie wyraznym drogowskazem dla oka. 617 618## Zbuduj wizerunek, ktory przyciaga wlasciwych klientow 619 620Po zmianie kolorystyki na stronie Pani Sylwii na gleboki granat, butelkowa zielen i zlote akcenty, profil jej klientow zmienil sie diametralnie. Zaczela przyciagac kobiety szukajace luksusowych zabiegow, a jej kalendarz zapelnil sie lukratywnymi wizytami. 621 622Twoja strona internetowa i logo wysylaja ciagly sygnal do rynku. Upewnij sie, ze jest to wlasciwy sygnal. Nie zostawiaj doboru kolorow przypadkowi. Skontaktuj sie z nami. Jako doswiadczeni projektanci, dobierzemy palete barw, ktora podswiadomie przekona brytyjskich klientow do wyboru wlasnie Twojej firmy.`},{slug:"freelancer-czy-agencja-prawdziwe-koszty",categorySlug:"strategia-i-biznes",title:"Freelancer czy polska agencja reklamowa w UK? Prawdziwe koszty ukryte za tanimi stronami www.",excerpt:"Dlaczego kompleksowa agencja 360 to najbezpieczniejszy wybór dla Twojego biznesu.",readMinutes:6,date:"2026-05-12",author:{name:"ZespóŠDiSpace",role:"Strategia"},image:Ot("1552664730-d307ca884978"),content:`Pani Karolina postanowiÅa otworzyÄ sklep internetowy z polskimi kosmetykami w Wielkiej Brytanii. MiaÅa Åwietny biznesplan, wynegocjowane umowy z dostawcami i peÅen magazyn towaru. Do startu brakowaÅo jej tylko jednego: platformy sprzedażowej. 623 624ZaczÄÅa szukaÄ wykonawcy. Oferty od profesjonalnych agencji wydawaÅy jej siÄ zbyt drogie, wiÄc zdecydowaÅa siÄ na usÅugi freelancera znalezionego na grupie na Facebooku. ObiecaÅ stworzyÄ w peÅni funkcjonalne sklepy internetowe UK za uÅamek rynkowej ceny, w zaledwie dwa tygodnie. BrzmiaÅo jak Åwietna okazja. 625 626RzeczywistoÅÄ okazaÅa siÄ koszmarem. Projekt przeciÄ gaÅ siÄ miesiÄ cami. Freelancer przestaÅ odpisywaÄ na maile, a kiedy w koÅcu oddaÅ gotowy sklep, okazaÅo siÄ, że pÅatnoÅci nie dziaÅajÄ , strona Åaduje siÄ w nieskoÅczonoÅÄ, a na telefonach komórkowych nie da siÄ dodaÄ produktu do koszyka. Pani Karolina straciÅa czas, pieniÄ dze i nerwy, a jej towar zalegaÅ w magazynie. 627 628To nie jest odosobniony przypadek. Jako polska agencja reklamowa w UK, regularnie przejmujemy i ratujemy projekty, które zostaÅy porzucone lub zepsute przez tanich, niezweryfikowanych wykonawców. Wybór miÄdzy freelancerem a profesjonalnÄ agencjÄ to jedna z najważniejszych decyzji biznesowych. Dlaczego pozorna oszczÄdnoÅÄ na starcie czÄsto koÅczy siÄ finansowÄ katastrofÄ ? 629 630## Mit taniej strony internetowej 631 632Kiedy kupujesz stronÄ internetowÄ za 300 funtów, musisz zadaÄ sobie pytanie: na czym oszczÄdza wykonawca? Odpowiedź jest prosta: na wszystkim, co decyduje o sukcesie Twojego biznesu w sieci. 633 634Tani wykonawcy zazwyczaj korzystajÄ z gotowych, ciÄżkich szablonów, które spowalniajÄ dziaÅanie witryny. Nie przeprowadzajÄ analizy Twojej konkurencji ani grupy docelowej. Nie dbajÄ o bezpieczeÅstwo danych, optymalizacjÄ pod urzÄ dzenia mobilne (Responsive Web Design) ani o podstawowe pozycjonowanie stron UK. 635 636Otrzymujesz produkt, który może i wyglÄ da znoÅnie na pierwszy rzut oka, ale pod maskÄ jest technologicznym bublem. Taka strona nie bÄdzie generowaÄ sprzedaży, a jej naprawa czÄsto kosztuje wiÄcej niż zbudowanie nowej od podstaw. 637 638## Dlaczego kompleksowa agencja 360 to najlepszy wybór? 639 640WspóÅpraca z profesjonalnÄ agencjÄ , takÄ jak DiSpace, to zupeÅnie inny standard pracy. Nie sprzedajemy kodu ani grafiki. Sprzedajemy rozwiÄ zania biznesowe, które majÄ przynieÅÄ Ci zysk. Oto 4 powody, dla których polskie firmy w UK wybierajÄ wspóÅpracÄ z nami. 641 6421. ZespóŠekspertów pod jednym dachem 643Tworzenie skutecznych stron internetowych i sklepów WooCommerce to proces,
643który wymaga wielu kompetencji. Potrzebujesz stratega, designera UX/UI, programisty, copywritera i specjalisty SEO. Å»aden freelancer nie jest mistrzem we wszystkich tych dziedzinach. W agencji nad Twoim projektem pracuje zgrany zespóŠspecjalistów, z których każdy odpowiada za swój wycinek pracy na najwyższym poziomie. 644 6452. SpójnoÅÄ komunikacji i brak chaosu 646JeÅli zlecisz logo jednemu grafikowi, stronÄ programiÅcie z Indii, a prowadzenie social media agencji z Polski, szybko utoniesz w chaosie komunikacyjnym. BÄdziesz traciÄ godziny na przekazywanie informacji miÄdzy podwykonawcami, a efekt koÅcowy bÄdzie niespójny. WybierajÄ c agencjÄ 360, masz jednego dedykowanego opiekuna projektu. My dbamy o to, aby Twoje logo, strona WWW, wizytówki i kampanie reklamowe mówiÅy tym samym gÅosem. 647 6483. Gwarancja, bezpieczeÅstwo i wsparcie 649Co zrobisz, gdy Twój sklep internetowy padnie w Czarny PiÄ tek, a freelancer wyjedzie na urlop w Bieszczady i wyÅÄ czy telefon? Profesjonalna agencja reklamowa UK podpisuje z TobÄ legalnÄ umowÄ, wystawia faktury i gwarantuje wsparcie techniczne po wdrożeniu projektu. Nie znikamy po opÅaceniu ostatniej raty. Zależy nam na dÅugofalowej wspóÅpracy i Twoim sukcesie, ponieważ Twój rozwój to nasz rozwój. 650 6514. MyÅlenie biznesowe, a nie tylko techniczne 652Freelancer zazwyczaj pyta: "jak ma wyglÄ daÄ strona?". My pytamy: "kto jest Twoim klientem, na czym zarabiasz najwiÄcej i jaki jest Twój cel biznesowy?". Projektujemy Åcieżki użytkownika, optymalizujemy konwersjÄ i wdrażamy analitykÄ internetowÄ . Budujemy narzÄdzia, które majÄ na siebie zarabiaÄ. 653 654## Inwestycja, która siÄ zwraca 655 656Pani Karolina ostatecznie zgÅosiÅa siÄ do nas. ZbudowaliÅmy dla niej nowoczesny, szybki i w peÅni zoptymalizowany sklep WooCommerce. WdrożyliÅmy bezpieczne bramki pÅatnoÅci, zintegrowaliÅmy system z kurierami i uruchomiliÅmy skuteczne kampanie reklamowe. Sklep zaczÄ Å zarabiaÄ już w pierwszym tygodniu po starcie, a Pani Karolina mogÅa wreszcie skupiÄ siÄ na obsÅudze zamówieÅ, zamiast na walce z bÅÄdami w kodzie. 657 658Nie ryzykuj przyszÅoÅci swojego biznesu, powierzajÄ c go w rÄce amatorów. Twój wizerunek w sieci to Twoja najważniejsza witryna sklepowa. 659 660Zaufaj ekspertom. Jako sprawdzona polska agencja reklamowa w UK, oferujemy kompleksowe usÅugi: od projektowania logo, przez zaawansowane strony i sklepy internetowe, aż po pozycjonowanie i prowadzenie social media. Skontaktuj siÄ z nami, wypeÅnij krótki brief i przekonaj siÄ, jak wyglÄ da praca z profesjonalistami. Zbudujmy razem Twój sukces na brytyjskim rynku.`},{slug:"jak-zalozyc-i-skalowac-polski-biznes-w-uk-2026",categorySlug:"strategia-i-biznes",title:"Jak zaÅożyÄ i skalowaÄ polski biznes w UK w 2026 roku? Rola cyfrowego marketingu",excerpt:"Od lokalnej firmy do stabilnego przedsiÄbiorstwa dziÄki widocznoÅci w sieci.",readMinutes:7,date:"2026-05-11",author:{name:"ZespóŠDiSpace",role:"Strategia"},image:Ot("1521791136064-7986c2920216"),content:`Zalozenie firmy w Wielkiej Brytanii jest stosunkowo proste. Rejestracja spoleczki LTD zajmuje kilkanascie minut, a formalnosci sa ograniczone do minimum. Jednak to, co dzieje sie pozniej, weryfikuje prawdziwych przedsiebiorcow. Pan Michal, ktory otworzyl firme zajmujaca sie instalacjami elektrycznymi w Londynie, szybko przekonal sie, ze dobry fach w reku to dzis za malo, by przetrwac na wysoce konkurencyjnym rynku. 661 662Przez pierwszy rok Pan Michal polegal wylacznie na poczcie pantoflowej i poleceniach od znajomych. Biznes krecil sie powoli, ale nie pozwalal na zatrudnienie pracownikow ani zaplanowanie dlugoterminowego rozwoju. Firma utknela w martwym punkcie. Zmiana nastapila dopiero, gdy Pan Michal zrozumial, ze w 2026 roku skalowanie biznesu opiera sie w 90% na widocznosci w internecie. 663 664Jako polska agencja reklamowa w UK, pomagamy dziesiatkom rodakow przejsc droge od malego, lokalnego biznesu do stabilnej, rosnacej firmy. Oto 3 filary cyfrowego skalowania, ktore wdrozyllismy w firmie Pana Michala. 665 666## Filar 1: Profesjonalna baza, czyli strona internetowa 667 668Wielu poczatkujacych przedsiebiorcow uwaza, ze profil na Facebooku wystarczy. To ogromny blad. Kiedy brytyjski klient szuka powaznego wykonawcy do duzego projektu, nie szuka go
668na portalach spolecznosciowych. Szuka firmy, ktora budzi zaufanie. 669 670Zbudowalismy dla Pana Michala nowoczesna strone internetowa. Nie byla to zwykla wizytowka, ale narzedzie sprzedazowe. Wyeksponowalismy na niej certyfikaty branzowe (NICEIC), referencje od klientow oraz wyrazne wezwania do akcji (CTA). Profesjonalna strona stala sie wirtualnym biurem firmy, otwartym 24 godziny na dobe, ktore budowalo autorytet jeszcze przed pierwszym kontaktem telefonicznym. 671 672## Filar 2: Przechwytywanie popytu (Lokalne SEO i Google Ads) 673 674Kiedy baza byla gotowa, musielismy skierowac na nia ruch. Wdrozyllismy dwutorowa strategie. 675 676Z jednej strony uruchomilismy kampanie Google Ads, celujac w gorace zapytania (np. "emergency electrician London"). To dalo firmie natychmiastowy zastrzyk gotowki i nowe zlecenia juz w pierwszym tygodniu. 677 678Z drugiej strony, rozpoczeliÅmy dlugofalowe pozycjonowanie stron w UK (Lokalne SEO). Zoptymalizowalismy wizytowke Google Business Profile i stworzylismy dedykowane podstrony dla roznych dzielnic Londynu. Po kilku miesiacach strona Pana Michala zaczela pojawiac sie na pierwszych miejscach w darmowych wynikach wyszukiwania, co drastycznie obnizylo koszty pozyskiwania nowych klientow. 679 680## Filar 3: Budowanie marki i zaufania (Social Media i Branding) 681 682Aby przestac konkurowac wylacznie cena, firma musiala stac sie rozpoznawalna marka. Uporzadkowalismy identyfikacje wizualna - od profesjonalnego logo, przez spojne oklejenie vanow, az po firmowe ubrania pracownikow. 683 684Uruchomilismy rowniez strategiczne prowadzenie social media. Zamiast nudnych postow reklamowych, Pan Michal zaczal dzielic sie wiedza. Publikowalismy krotkie filmy pokazujace, jak uniknac niebezpiecznych zwarc w starych brytyjskich domach. Edukacja zbudowala pozycje eksperta. Klienci zaczeli dzwonic nie z pytaniem "ile to kosztuje?", ale z prosba "chce, zeby to Pan zrobil". 685 686## Od "zlotej raczki" do powaznego przedsiebiorstwa 687 688Dzieki wdrozeniu kompleksowej strategii cyfrowej, firma Pana Michala w ciagu dwoch lat urosla z jednoosobowej dzialalnosci do przedsiebiorstwa zatrudniajacego pieciu elektrykow. Cyfrowy marketing pozwolil mu przewidywac przychody, planowac rozwoj i wybierac tylko najbardziej lukratywne zlecenia. 689 690Skalowanie biznesu w UK nie polega na ciezszej pracy fizycznej. Polega na madrzejszym docieraniu do klientow. Jesli Twoja firma stoi w miejscu, a Ty wciaz polegasz tylko na poleceniach, czas na krok w strone profesjonalnego marketingu. 691 692Skontaktuj sie z nami. Jako doswiadczona agencja reklamowa UK, stworzymy dla Ciebie indywidualny plan rozwoju cyfrowego, ktory przeniesie Twoj biznes na wyzszy poziom. Zbudujmy razem Twoj sukces na Wyspach.`},{slug:"lejek-sprzedazowy-na-stronie-www",categorySlug:"strategia-i-biznes",title:"Lejek sprzedażowy na stronie www: Jak zamieniÄ przypadkowego odwiedzajÄ cego w lojalnego klienta?",excerpt:"Zautomatyzuj proces pozyskiwania i ogrzewania leadów na swojej stronie.",readMinutes:6,date:"2026-05-10",author:{name:"ZespóŠDiSpace",role:"CRO"},image:Ot("1460925895917-afdab827c52f"),content:`Pani Anna prowadzila klinike medycyny estetycznej w Manchesterze. Jej strona internetowa notowala calkiem spory ruch, glownie dzieki dobrze prowadzonym profilom na Instagramie. Kobiety wchodzily na strone, ogladaly cennik, czytaly o zabiegach i... wychodzily. Wspolczynnik odrzucen byl ogromny. 693 694Pani Anna myslala, ze jej ceny sa zbyt wysokie. Prawda byla jednak inna. Jej strona internetowa nie miala zaprojektowanego lejka sprzedazowego. Wymagala od klienta natychmiastowej decyzji o drogim zabiegu juz przy pierwszej wizycie. To tak, jakby na pierwszej randce oswiadczyc sie i oczekiwac natychmiastowego "tak". 695 696W cyfrowym marketingu proces decyzyjny klienta wymaga czasu i odpowiedniego poprowadzenia. Jako polska agencja reklamowa w UK, wdrozyllismy na stronie Pani Anny klasyczny lejek sprzedazowy, ktory zwiekszyl liczbe rezerwacji o ponad 200%. 697 698## Czym jest lejek sprzedazowy? 699 700Lejek sprzedazowy (Sales Funnel) to sciezka, przez ktora przeprowadzasz potencjalnego klienta - od momentu, gdy dowiaduje sie o Twojej firmie, az do momentu, gdy dokonu
700je zakupu. Dobrze zaprojektowane strony internetowe w Wielkiej Brytanii to nie sa statyczne broszury. To zautomatyzowane lejki, ktore prowadza uzytkownika za reke. 701 702Klasyczny lejek sklada sie z 4 etapow (model AIDA): 7031. Awareness (Swiadomosc) 7042. Interest (Zainteresowanie) 7053. Desire (Pozadanie) 7064. Action (Akcja) 707 708## Jak zbudowalismy lejek dla kliniki Pani Anny? 709 710Zamiast atakowac uzytkowniczki przyciskiem "Kup zabieg za 500 funtow", podzielilismy proces na mniejsze, latwiejsze do przelkniecia kroki. 711 712Krok 1: Swiadomosc i darmowa wartosc (Lead Magnet) 713Na samej gorze strony umiescilismy atrakcyjny poradnik do pobrania za darmo: "5 bledow w pielegnacji cery, ktore przyspieszaja starzenie". Aby go pobrac, klientka musiala podac swoj adres e-mail. To drastycznie obnizylo bariere wejscia. Klientka nie ryzykowala pieniedzy, a otrzymywala wartosciowa wiedze. W ten sposob zaczelismy budowac baze potencjalnych klientow. 714 715Krok 2: Zainteresowanie i Edukacja (Email Marketing) 716Osoby, ktore pobraly poradnik, wpadaly do zautomatyzowanej sekwencji mailowej. Przez kolejne dni otrzymywaly maile z poradami kosmetologicznymi, ktore delikatnie nawiazywaly do zabiegow oferowanych w klinice. Edukowalismy klientki, budujac autorytet Pani Anny jako ekspertki. 717 718Krok 3: Pozadanie (Social Proof i Oferta) 719W trzecim mailu wysylalismy historie sukcesu (Case Study) jednej z klientek, wraz ze zdjeciami przed i po zabiegu. To budzilo pozadanie i udowadnialo skutecznosc uslug. Dopiero na tym etapie prezentowalismy konkretna oferte. 720 721Krok 4: Akcja (Low-barrier CTA) 722Nawet na tym etapie nie sprzedawalismy najdrozszego zabiegu. Wezwaniem do akcji byla "Darmowa, 15-minutowa konsultacja skory z analiza komputerowa". Kiedy klientka pojawiala sie w klinice na darmowa konsultacje, byla juz wyedukowana, ufala Pani Annie i byla gotowa na zakup drogiego pakietu zabiegow. 723 724## Zautomatyzuj swoja sprzedaz 725 726Wdrozenie lejka sprzedazowego sprawilo, ze strona Pani Anny przestala byc pasywna wizytowka. Stala sie aktywnym systemem do pozyskiwania i "ogrzewania" leadow. Nawet jesli klientka nie byla gotowa na zakup podczas pierwszej wizyty na stronie, system edukowal ja tak dlugo, az podjela decyzje. 727 728Jesli Twoja strona ma duzy ruch, ale malo zapytan, brakuje Ci lejka. Nie zmuszaj klientow do oswiadczyn na pierwszej randce. Skontaktuj sie z nami. Projektujemy strony i sklepy WooCommerce oparte na psychologii sprzedazy. Zbudujemy dla Ciebie system, ktory krok po kroku zamieni Twoich odwiedzajacych w lojalnych, placacych klientow.`},{slug:"analityka-internetowa-3-wskazniki-google-analytics",categorySlug:"strategia-i-biznes",title:"Analityka internetowa dla opornych: 3 wskaźniki w Google Analytics, które musisz ÅledziÄ",excerpt:"PrzestaÅ zgadywaÄ i zacznij podejmowaÄ decyzje marketingowe na podstawie twardych danych.",readMinutes:4,date:"2026-05-09",author:{name:"ZespóŠDiSpace",role:"Analityka"},image:Ot("1551288049-bebda4e38f71"),content:`Pan Kamil prowadzil dobrze prosperujacy sklep internetowy z polskimi produktami w UK. Inwestowal w pozycjonowanie stron, reklamy na Facebooku i wspolprace z influencerami. Miesiecznie wydawal na marketing kilka tysiecy funtow. Sprzedaz rosla, wiec Pan Kamil byl zadowolony. 729 730Pewnego dnia zapytalismy go: "Panie Kamilu, ktory z tych kanalow marketingowych przynosi najwiekszy zysk, a ktory przepala budzet?". Zapadla cisza. Pan Kamil nie mial pojecia. Wiedzial tylko, ile wydaje i ile zarabia calosciowo. Dzialal calkowicie po omacku. 731 732To najczestszy grzech przedsiebiorcow. Podejmuja kluczowe decyzje finansowe na podstawie przeczuc, a nie twardych danych. Wdrozenie i zrozumienie podstaw analityki internetowej to moment, w ktorym biznes przestaje byc loteria, a staje sie przewidywalna maszyna. 733 734Jako polska agencja reklamowa w UK, zawsze zaczynamy wspolprace od konfiguracji Google Analytics 4 (GA4). Nie musisz byc analitykiem danych, aby kontrolowac swoj biznes. Oto 3 kluczowe wskazniki, ktore musisz sledzic. 735 736## 1. Zrodla pozyskiwania ruchu (Traffic Acquisition) 737 738To absolutna podstawa. Musisz wiedziec, skad ludzie przychodza na Twoja strone. W GA4 znajdziesz raport, ktory dzieli Twoj ruch na kategorie: 739* Organic Search: Darmowy ruch z wyszukiwarek (efekt Twojego SEO). 740* Paid Search: Ruch z platnych reklam Google Ads. 741* Social: Ruch z Facebooka, Instagrama, TikToka. 742* Direct: Osoby, ktore bezposrednio wpisaly Twoj adres w przegladarke (sila Twojej marki). 743 744Wiedza o tym, skad pochodzi ruch, to polowa sukcesu. Prawdziwa magia dzieje sie, gdy polaczysz te dane z konwersja. U Pana Kamila okazalo sie, ze influencerzy generowali ogromny ruch (Social), ale nikt z tych osob nie kupowal. Z kolei ruch z wyszukiwarki (Organic Search) byl mniejszy, ale generowal 80% wszystkich zyskow. Pan Kamil natychmiast przesunal budzet z influencerow na SEO, drastycznie zwiekszajac rentownosc sklepu. 745 746## 2. Wspolczynnik Konwersji (Conversion Rate) 747 748Wspolczynnik konwersji mowi Ci, jaki procent osob odwiedzajacych Twoja strone wykonuje pozadana akcje (np. kupu
748je produkt, wypelnia formularz kontaktowy, dzwoni). 749 750Jesli Twoja strona ma 1000 odwiedzin miesiecznie i generuje 10 zapytan, Twoj wspolczynnik konwersji wynosi 1%. 751 752Sledzenie tego wskaznika jest kluczowe przy wprowadzaniu zmian na stronie. Jesli zmienisz kolor przycisku, uproscisz formularz kontaktowy lub dodasz nowe opinie klientow, natychmiast zobaczysz w Google Analytics, czy te zmiany zwiekszyly, czy zmniejszyly konwersje. Optymalizacja konwersji (CRO) to najtanszy sposob na zwiekszenie zyskow, bez wydawania dodatkowych pieniedzy na reklamy. 753 754## 3. Strony wyjscia (Exit Pages) i Porzucone Koszyki 755 756Ten raport pokazuje, w ktorym dokladnie momencie klienci uciekaja z Twojej strony. To Twoje "dziurawe wiadro". 757 758W przypadku sklepow internetowych (np. sklepy WooCommerce), kluczowe jest sledzenie sciezki zakupu. Jesli widzisz, ze 100 osob dodaje produkt do koszyka, ale 80 z nich ucieka na etapie wyboru metody dostawy, masz gotowa diagnoze problemu. Byc moze koszty wysylki sa zbyt wysokie, albo formularz adresu jest zbyt skomplikowany. Naprawienie tego jednego elementu moze uratowac dziesiatki transakcji dziennie. 759 760## Dane to nowa waluta 761 762Po wdrozeniu analityki i optymalizacji kampanii na podstawie twardych danych, sklep Pana Kamila zwiekszyl zyski o 40%, jednoczesnie obnizajac koszty marketingu o 20%. Przestal zgadywac, a zaczal inwestowac tam, gdzie widzial realny zwrot (ROI). 763 764Nie prowadz biznesu w ciemno. Profesjonalne strony internetowe w Wielkiej Brytanii musza byc opomiarowane. Skontaktuj sie z nami. Wdrozymy zaawansowana analityke na Twojej stronie, skonfigurujemy cele i nauczymy Cie, jak czytac dane, ktore pozwola Ci podejmowac trafne decyzje biznesowe. Zyskaj pelna kontrole nad swoim marketingiem.`},{slug:"automatyzacja-w-malej-firmie-strona-i-sklep",categorySlug:"strategia-i-biznes",title:"Automatyzacja w maÅej firmie: Jak strona www i sklep mogÄ zastÄ piÄ pracownika na etacie?",excerpt:"Systemy rezerwacji, chatboty i automatyczna obsÅuga zamówieÅ, które oszczÄdzÄ Twój czas.",readMinutes:6,date:"2026-05-08",author:{name:"ZespóŠDiSpace",role:"Automatyzacja"},image:Ot("1518770660439-4636190af475"),content:`Pani Ewa prowadzila popularny salon fryzjerski i sklep z profesjonalnymi kosmetykami do wlosow w Leeds. Jej biznes rosl, ale ona sama byla na skraju wyczerpania. Jej telefon dzwonil bez przerwy. Klienci dzwonili, zeby umowic wizyte, przelozyc termin, zapytac o cene strzyzenia lub sprawdzic, czy dany szampon jest dostepny w sklepie. 765 766Pani Ewa spedzala minimum 3 godziny dziennie na odbieraniu telefonow i odpisywaniu na wiadomosci na Facebooku. Nie miala czasu na zarzadzanie zespolem, a po pracy padala ze zmeczenia. Rozwazala zatrudnienie recepcjonistki na pelen etat, co oznaczalo ogromne koszty stale. 767 768Zamiast tego, zglosila sie do nas. Jako polska agencja reklamowa w UK, specjalizujaca sie w rozwiazaniach cyfrowych, zaproponowalismy jej cos znacznie lepszego i tanszego niz nowy pracownik. Zaproponowalismy automatyzacje procesow za pomoca inteligentnej strony internetowej. 769 770## Twoja strona jako wirtualny asystent 24/7 771 772Wspolczesne strony internetowe w Wielkiej Brytanii to nie sa juz tylko wizytowki z numerem telefonu. To zaawansowane aplikacje, ktore moga przejac wiekszosc powtarzalnych, nudnych zadan w Twojej firmie. 773 774Oto 3 systemy automatyzacji, ktore wdrozyllismy u Pani Ewy, oszczedzajac jej 20 godzin pracy w tygodniu. 775 776## 1. Zautomatyzowany system rezerwacji wizyt 777 778Zintegrowalismy jej nowa strone z profesjonalnym systemem rezerwacji online. Klienci nie musieli juz dzwonic. Mogli wejsc na strone o 2:00 w nocy, sprawdzic dostepnosc wybranego fryzjera, wybrac usluge i zarezerwowac termin. 779 780System automatycznie pobieral zadatek (co drastycznie zmniejszylo liczbe osob, ktore nie pojawialy sie na wizytach), wysylal klientowi potwierdzenie na e-mail oraz przypomnienie SMS na 24 godziny przed wizyta. Kalendarz Pani Ewy zapelnial sie sam, bez jej udzialu. 781 782## 2. Sklep WooCommerce z automatyczna obsluga zamowien 783 784Sprzedaz kosmetykow, ktora wczesniej odbywala sie przez wiadomosci prywatne na Facebooku, zostala przeniesiona do profesjonalnego sklepu e-commerce. Wdrozyllismy sklepy WooCommerce z pelna automatyzacja. 785 786Kiedy klient kupowal szampon, system sam procesowal platnosc, generowal fakture, wysylal ja do klienta i automatycznie tworzyl etykiete kurierska do wydruku. Jedynym zadaniem Pani Ewy bylo spakowanie paczki i naklejenie gotowej etykiety. Co wiecej, system sam aktualizowal stany magazynowe, wiec nikt nie mogl kupic produktu, ktorego juz nie bylo. 787 788## 3. Inteligentne FAQ i Chatbot 789 790Przeanalizowalismy najczestsze pytania, ktore Pani Ewa otrzymywala przez telefon (np. "Gdzie mozna zaparkowac?", "Czy robicie dekoloryzacje?", "Jaki jest cennik?"). Stworzylismy na stronie rozbudowana sekcje FAQ (Czesciej Zadawane Pytania). 791 792Dodatkowo, na stronie i na firmowym Messengerze zainstalowalismy prostego Chatbota. Kiedy klient pisal wiadomosc z pytaniem o cennik, bot automatycznie wysylal mu link do odpowiedniej podstrony. Bot przejal obsluge 60% standardowych za
792pytan. 793 794## Odzyskanie czasu i skalowanie biznesu 795 796Po wdrozeniu tych rozwiazan, telefon w salonie Pani Ewy zamilkl. Ale nie dlatego, ze stracila klientow. Kalendarz byl pelny na miesiac do przodu, a sprzedaz kosmetykow wzrosla dwukrotnie. Telefon zamilkl, poniewaz wszystkie procesy dzialaly automatycznie w tle. 797 798Pani Ewa zaoszczedzila pieniadze, ktore musialaby wydac na pensje recepcjonistki. Odzyskala swoj czas, ktory mogla poswiecic na szkolenie pracownikow i rozwoj biznesu. W koncu mogla tez wrocic do domu o normalnej porze i odpoczac. 799 800Technologia jest dzis najtanszym pracownikiem, jakiego mozesz zatrudnic. Nie marnuj swojego cennego czasu przedsiebiorcy na zadania, ktore moze wykonac za Ciebie kod. Skontaktuj sie z nami. Przeanalizujemy procesy w Twojej firmie i zbudujemy strone internetowa lub sklep, ktory zdejmie z Twoich barkow ciezar codziennej obslugi. Zacznij pracowac NAD swoim biznesem, a nie W swoim biznesie.`}],jY=Object.fromEntries(gu.map(t=>[t.slug,t.image]));function cC(t){return jY[t]??bY}function uC(t){return lC.find(e=>e.slug===t)}function vY(t,e){return gu.find(a=>a.categorySlug===t&&a.slug===e)}function gee(t){return gu.filter(e=>e.categorySlug===t).sort((e,a)=>a.date.localeCompare(e.date))}function kee(t,e=3){return gu.filter(a=>a.slug!==t.slug&&a.categorySlug===t.categorySlug).slice(0,e)}function dC(t){return new Date(t).toLocaleDateString("pl-PL",{day:"numeric",month:"long",year:"numeric"})}const Ut=t=>`https://images.unsplash.com/photo-${t}?auto=format&fit=crop&w=1600&q=80`,SY=Ut("1499750310107-5fef28a66643"),pC=[{slug:"websites-and-shops",name:"Websites & Shops",short:"Webdesign & E-commerce",description:"Everything about building sales-driven websites, WooCommerce shops, and conversion optimization.",accent:"#1e56a8"},{slug:"marketing-and-seo",name:"Marketing & SEO",short:"Traffic & Leads",description:"How to generate organic traffic, local SEO in the UK, and social media that actually sell.",accent:"#9C328C"},{slug:"branding-and-image",name:"Image & Branding",short:"Premium Brand",description:"Logo, visual identity, and signs that your company has matured enough for a rebranding.",accent:"#3DB4C9"},{slug:"strategy-and-business",name:"Strategy & Business",short:"Owner Decisions",description:"Expert-advisor perspective. Decisions that translate into profits for the entire company.",accent:"#E0A458"}],fl=[{slug:"seo-uk-2026-complete-guide",categorySlug:"marketing-and-seo",title:"SEO in the UK in 2026 â a Complete Guide for Polish Businesses in Great Britain",excerpt:"How SEO UK works in 2026: how long it takes, what it costs, and what really drives high rankings in Google UK.",readMinutes:9,date:"2026-05-30",author:{name:"DiSpace Team",role:"SEO"},image:xh,content:`SEO in the UK is the cheapest way to get a steady, predictable stream of enquiries from British and Polish-speaking customers. Unlike paid ads, once you reach the top of Google UK, your page works 24/7 â without burning budget on every click. This guide walks through how **SEO in the UK** works in 2026. 801 802## What is SEO UK and how does it differ from SEO in Poland 803 804SEO UK is the process of optimising a website for the British version of Google (google.co.uk). The algorithms are the same, but the competition, search intent and local signals are completely different. Google UK strongly rewards businesses with a local address, a UK phone number, English-language reviews and listings in local directories (Yell, Checkatrade, Trustpilot). 805 806## 5 pillars of effective SEO UK 807 808**1. Technical SEO.** Page speed (Core Web Vitals), responsiveness, correct heading structure, sitemap, Schema.org structured data. Without these, even the best content won't rank well. 809 810**2. Content matching intent.** Every page must answer a specific question from Google. Not "about us", but "Polish plumber in Manchester â quote in 24 h". Written for humans and the algorithm at the same time. 811 812**3. Local SEO and Google Business Profile.** Optimising your Google listing is the foundation for any service business in the UK. 813 814**4. Link building.** Links from British industry directories, local portals and guest articles. Consistent NAP (Name, Address, Phone) across the whole web. 815 816**5. Measurement and iteration.** Google Search Console, GA4 and monthly reports. SEO is a marathon â first results after 2â3 months, stable rankings after 6. 817 818## How much does SEO UK cost? 819 820Prices start from £350/month for local SEO for a small business and go up to £2,000+ for competitive sectors (law, finance, e-commerce). DiSpace works in a project model (audit + implementation) and a retainer model (continuous optimisation). 821 822## Where to start 823 824Start with a free SEO audit â we'll show what's really blocking your visibility in Google UK and how long it will take to reach the top 10. 825 826--- 827 828**Recommended DiSpace services:** 829- [SEO UK](/en/services/marketing-seo) â complete SEO for UK businesses 830- [Web design UK](/en/services/web-shops) â websites optimised for SEO UK from day one`},{slug:"websites-uk-how-to-design-a-site-for-google",categorySlug:"websites-and-shops",title:"Websites UK â how to design a site that sells and ranks in Google UK",excerpt:"What a good UK website needs: speed, SEO, local copywriting and trust signals for the British customer.",readMinutes:8,date:"2026-05-29",author:{name:"DiSpace Team",role:"Web Design"},image:sC,content:`Websites in the UK are not just a pretty layout. They are sales tools that have to load fast, build trust with British customers and be visible in Google UK from day one. In this article we show what separates a good **UK website** from "a site built cheaply by a friend". 831 832## 1. Loading speed â the foundation of everything 833 834Google ruthlessly drops pages that load longer than 3 seconds. In the UK, where 75% of local service searches happen on
834smartphones, every second is a lost customer. The sites we build at DiSpace hit **Core Web Vitals in the green** â the foundation for any effective SEO UK. 835 836## 2. Local copywriting in British English 837 838British English (colour, customise, organisation), a polite tone, clear CTAs. The British customer immediately senses when copy was written by a non-native speaker if the tone is too pushy or too American. 839 840## 3. Trust signals â without them, no sales 841 842A British customer won't buy unless they see: 843- Company Number and VAT number in the footer 844- a physical UK office address 845- industry certifications (Gas Safe, Checkatrade, NICEIC) 846- Google and Trustpilot reviews with real names 847- a privacy policy compliant with UK GDPR 848 849## 4. Structure built for SEO UK 850 851Each service = its own page with unique title, H1 and description. Dedicated landing pages for each city (Glasgow, Manchester, London). Schema.org structured data for the local business. Without this, even the prettiest site won't show up higher than page three. 852 853## 5. Mobile-first, not mobile-friendly 854 855These are two different things. **Mobile-first** = the design is built for phone first, then expanded to desktop. Only this approach guarantees that the site works perfectly on any screen. 856 857## How much do UK websites cost? 858 859- simple business card site: from **£790** 860- company site with 5â10 pages: **£1,500â£3,500** 861- WooCommerce shop: **£2,500â£6,000** 862- custom builds: bespoke quote 863 864Every DiSpace site ships with an SEO-ready structure and optimised performance. 865 866--- 867 868**Recommended DiSpace services:** 869- [Web design UK](/en/services/web-shops) â modern sites for the British market 870- [SEO UK](/en/services/marketing-seo) â SEO that makes your site pay for itself`},{slug:"google-business-profile-uk-listing-optimisation",categorySlug:"marketing-and-seo",title:"Google Business Profile UK â how to optimise your Google listing for a Polish business in Great Britain",excerpt:"Step by step: how to optimise Google Business Profile to land in the Local Pack in Google UK and win local customers.",readMinutes:7,date:"2026-05-28",author:{name:"DiSpace Team",role:"Local SEO"},image:xh,content:`Google Business Profile (formerly Google My Business) is **the cheapest and fastest SEO tool in the UK** for any service business. A well-optimised listing appears in the Google map pack (Local Pack) â three results with a map that capture the lion's share of clicks for queries like "Polish electrician Manchester" or "mechanic Glasgow". 871 872## Why the Local Pack is gold 873 874The Local Pack takes up 30â40% of the first page of results for local queries and attracts **44% of all clicks**. If your business isn't there, you're fighting for scraps with the ten sites below. 875 876## 7 steps to optimise your Google Business Profile UK 877 878**1. Verify your business.** Google will send a postcard with a code to your physical UK address. Without it, the listing won't appear in results. 879 880**2. Pick the right primary category.** "Plumber" not "Construction Service". The primary category is one of the strongest ranking signals. 881 882**3. Fill in every field.** Address, UK phone number (+44, not Polish), opening hours, website (link to your UK site), business description with keywords. 883 884**4. Upload photos.** Logo, team at work, completed jobs, office interior. Google rewards listings with fresh photos â add at least one new photo each month. 885 886**5. Collect reviews.** Send a review request by SMS after every job. Listings with 4.5+ stars and 30+ reviews dominate the Local Pack. 887 888**6. Publish posts.** A short weekly update: new project, promo, news. Google treats this as a sign of activity. 889 890**7. Reply to reviews.** Every review, positive or negative, deserves a polite reply in English. To Google, this signals the business is alive. 891 892## NAP consistency â the underrated pillar 893 894Name, Address, Phone must be **identical** everywhere: on the website, in Google Business Profile, on Yell, Checkatrade, on Facebook. Any difference (e.g. "Ltd" vs "Limited", different phone format) weakens local ranking. 895 896## Combine the listing with the rest of your SEO 897 898Google Business Profile is the foundation, but on its own it's not enough. You need a site optimised for local phrases, content answering customer questions and links from British directories. Together it all adds up to full SEO UK. 899 900--- 901 902**Recommended DiSpace services:** 903- [SEO UK](/en/services/marketing-seo) â complete SEO with Google listing optimisation 904- [Web design UK](/en/services/web-shops) â a site that ranks from day one`},{slug:"how-new-website-saved-construction-company-uk",categorySlug:"websites-and-shops",title:"How a New Website Saved a Polish Construction Company in the UK from Bankruptcy?",excerpt:"Mr. Tomasz founded his construction company in London in 2018. For the first few years, the business was doing great. Orders came through recommendations, and his calendar was fully booked for half a year in advance. However, in 2025, the market changed. Recommendations were no longer enough, and the phones suddenly went silent. The competition, including other Polish companies in the UK, aggressively started taking over the market.",readMinutes:7,date:"2026-05-27",author:{name:"DiSpace Team",role:"Web Design"}
904,image:Ut("1504917595217-d4dc5ebe6122"),content:`Mr. Tomasz founded his construction company in London in 2018. For the first few years, the business was doing great. Orders came through recommendations, and his calendar was fully booked for half a year in advance. However, in 2025, the market changed. Recommendations were no longer enough, and the phones suddenly went silent. The competition, including other Polish companies in the UK, aggressively started taking over the market. 905 906Mr. Tomasz's company had a website. It was made "as a favor" for a few hundred pounds. It loaded slowly, the text was unreadable on mobile phones, and the contact form hadn't worked for months. Clients looking for construction services on Google would visit this site and leave immediately. They chose competitors who looked professional. 907 908This is a story that we, as a Polish advertising agency in the UK, hear almost every week. Entrepreneurs lose tens of thousands of pounds because their websites in the UK act as dead flyers instead of working as active salespeople. 909 910## Anatomy of a Website That Scares Away Customers 911 912Before we started working together, we conducted a thorough audit of Mr. Tomasz's old website. The results were ruthless. We identified three main reasons why clients were fleeing to the competition. 913 9141. Lack of Mobile Optimization (Mobile-First) 915Over 75% of people looking for local services in the UK do so using a smartphone. The old site required zooming the screen with fingers just to read the text. The buttons were too small to click on. For a modern consumer, this is a warning sign. If a company can't take care of its online business card, how will they take care of my home renovation? 916 9172. Hidden Calls to Action (Lack of CTA) 918Even if a client managed to read the offer, they didn't know what to do next. The phone number was hidden in the "Contact" tab in small print. There were no clear, contrasting buttons encouraging action, such as "Get a Free Quote" or "Call Now". 919 9203. Disastrous Loading Time 921The site took over 6 seconds to load. According to Google research, if loading time exceeds 3 seconds, the Bounce Rate increases by 32%. Customers in the UK are impatient. If your site doesn't appear immediately, they move on. 922 923## Transformation: From a Dead Business Card to a Sales Machine 924 925We proposed a complete redesign. Our goal wasn't just to create a "pretty picture", but to build a tool that would generate inquiries (leads). As an experienced UK advertising agency, we implemented a proven process. 926 927Step 1: Information Architecture and Copywriting 928Instead of writing about what a "dynamically developing company" Mr. Tomasz's business is, we focused on his clients' problems. We created dedicated subpages for each service (e.g., bathroom renovations London, loft conversions UK). The texts were written in the language of benefits, building trust and showing real projects. 929 930Step 2: Modern Web Design and UX 931We designed the website from scratch, focusing on minimalism, readability, and professionalism. We used a consistent color palette and modern typography. At the very top of the page (Above the Fold), we placed a strong headline, a photo from a project, and a large, contrasting "Request a Free Quote" button. 932 933Step 3: Technical Optimization and SEO 934We built the site on a fast and secure system. We optimized all images, implemented modern image file formats, and took care of Core Web Vitals metrics. The site started loading in 1.2 seconds. Additionally, we implemented basic UK SEO, optimizing headings and meta tags for local searches. 935 936## Results That Speak for Themselves 937 938The new website was published after 3 weeks of intensive work. The results exceeded all expectations. 939 940Within the first two months of launching the new site, Mr. Tomasz's company recorded a 340% increase in inquiries. The phone started ringing again, and the email inbox filled with quote requests. Most importantly, the clients themselves changed. Thanks to a professional image, the company started attracting premium orders, where price was no longer the only selection criterion. 941 942Clients trusted the company even before the first phone contact because the website had built the right authority. 943 944## Is Your Website Earning Its Keep? 945 946Mr. Tomasz's story is proof that professional websites in the UK are not an expense. They are an investment that pays off multiple times over. If your current site isn't generating inquiries, loads slowly, or looks outdated, you are giving your money to the competition. 947 948You don't need to know technology, coding, or marketing. That's what we are here for. As a Polish advertising agency in the UK, we will guide you through the entire process. We will build a website for you that not only looks great in a portfolio but, above all, effectively sells your services. 949 950Contact us today. We will analyze your current online situation and show you how we can increase your profits. Fill out a short brief, and we will prepare a free quote and action plan for you. Turn your website into the most effective salesperson in your company.`},{slug:"woocommerce-or-shopify-uk",categorySlug:"websites-and-shops",title:"WooCommerce or Shopify? What to Choose for a Polish E-commerce Business in the UK?",excerpt:`For years, Ms. Kasia ran a brick-and-mortar boutique with Polish cosmetics in Manchester. In 2025, she decided to move her sales online. A friend recommended the Shopify platform. "It's simple and fast," they said. Kasia set up a store, added products, and started selling.`,readMinutes:5,date:"2026-05-26",author:{name:"DiSpace Team",role:"E-commerce"},image:Ut("1556742502-ec7c0e9f34b1"),content:`For years, Ms. Kasia ran a brick-and-mortar boutique with Polish cosmetics in Manchester. In 2025, she decided to move her sales online. A friend recommended the Shopify platform. "It's simple and fast," they said. Kasia set up a store, added products, and started selling. 951 952Initially, everything looked great. However, as sales grew, costs started spiraling out of control. The monthly subscription increased with the installation of more plugins. Shopify took a commission from every transaction. When Kasia wanted to implement a specific loyalty system for her regular UK customers, it turned out to be te
952chnologically impossible without hiring an expensive developer. 953 954That's when she came to us. As a Polish advertising agency in the UK, we analyzed her business and suggested migrating to WooCommerce. It was a decision that saved her thousands of pounds a year and gave her back full control over her own store. 955 956## Why is a Subscription a Trap for Growing E-commerce? 957 958SaaS (Software as a Service) platforms like Shopify or Shoper are great for testing ideas. They offer a low barrier to entry. However, renting a store is like renting an apartment. You pay every month, but the property is never yours. 959 960Online stores in the UK based on WooCommerce have a completely different philosophy. WooCommerce is a free plugin for the WordPress system. This means you are the 100% owner of your store. You only pay for hosting and the domain. There are no hidden sales commissions imposed by the platform creators. 961 962## 3 Reasons Why WooCommerce Dominates the Market 963 9641. No Limits and Full Ownership 965In WooCommerce, you can modify absolutely everything. Do you want to integrate the store with an unusual British courier? Done. Do you need to connect inventory with an accounting program? No problem. Your store grows together with your business. 966 9672. Powerful SEO Capabilities 968SEO in the UK is the key to free traffic. WordPress was created as a blogging platform, making it the absolute favorite of Google algorithms. Stores on WooCommerce index much faster and higher than their counterparts on closed platforms. You can precisely optimize every URL, meta tag, and heading. 969 9703. Huge Community and Support 971WooCommerce powers over 30% of all online stores in the world. This means that if you need a new feature, someone has probably already created a plugin for it. Development and maintenance costs are much lower. 972 973## When to Choose a Dedicated Solution? 974 975Migrating Ms. Kasia's store to WooCommerce took three weeks. We designed a modern, fast interface that worked perfectly on smartphones. We implemented popular payment gateways in the UK (Stripe, PayPal) and integrated the system with Royal Mail. 976 977The result? The store's maintenance costs dropped by 70%. Ms. Kasia invested the saved money in professional advertising campaigns and SEO. Her profits doubled within half a year. 978 979If you are planning a serious e-commerce business, do not build it on rented land. Invest in your own platform. As an experienced UK advertising agency, we help Polish companies implement scalable online stores. Contact us, and we will advise you on the best solution for your industry.`},{slug:"why-your-website-is-not-selling-7-ux-mistakes",categorySlug:"websites-and-shops",title:"Why Is Your Website Not Selling? 7 UX Mistakes That Cost You Customers",excerpt:"Mr. Marek runs a large moving company in London. He invested in Google Ads, generating huge traffic to his website. Every day, hundreds of people visited his site, but the phone remained silent. The conversion rate was a mere 0.5%. Mr. Marek was burning hundreds of pounds a day on clicks that brought no orders.",readMinutes:6,date:"2026-05-25",author:{name:"DiSpace Team",role:"UX / CRO"},image:Ut("1551434678-e076c223a692"),content:`Mr. Marek runs a large moving company in London. He invested in Google Ads, generating huge traffic to his website. Every day, hundreds of people visited his site, but the phone remained silent. The conversion rate was a mere 0.5%. Mr. Marek was burning hundreds of pounds a day on clicks that brought no orders. 980 981Desperate, he asked us for an audit. We quickly discovered that the problem was not a lack of demand for his services, nor poor ad quality. The problem was the website itself. It was a classic "leaky bucket" through which potential customers were escaping. 982 983Many Polish companies in the UK make the same mistake. They focus on generating traffic, forgetting about User Experience (UX). Here are the 7 most common mistakes that stop your site from selling. 984 985## 1. Lack of a Clear Call to Action (CTA) 986A customer visits the site and reads about your company's history. What should they do next? If you don't tell them clearly, they will simply close the tab. Buttons like "Call for a Free Quote" or "Book an Appointment" must be large, contrasting, and visible at every stage of browsing the site. 987 988## 2. Overly Complicated Contact Forms 989Mr. Marek required customers to provide their first name, last name, e-mail address, phone number, exact moving address, date, and description of belongings. No one has time for that. We shortened the form to two fields: "Phone Number" and "Postcode". The number of inquiries increased by 400%. 990 991## 3. Ignoring Mobile Users 992Over 70% of internet traffic comes from smartphones. If your site requires zooming the text with fingers, and buttons are too small to hit, you lose the majority of customers. Professional websites in the UK must be designed with a Mobile-First approach. 993 994## 4. Slow Loading Speed 995Time is money. If a page takes longer than 3 seconds to load, half of the users leave. Image optimization, modern code, and fast hosting are the foundations without which even the best design will fail. 996 997## 5. Lack of Social Proof 998Customers don't trust ads. They trust other customers. The lack of genuine Google reviews, photos from completed projects, or logos of trusted partners makes your company seem anonymous and risky to work with. 999 1000## 6. Hiding Prices or Lack of Transparency 1001No one likes financial surprises. If you can't provide an exact price list, provide price ranges or clearly describe the quoting process. Hiding costs arouses suspicion and discourages contact. 1002 1003## 7. Text Overload (Wall of Text) 1004People don't read websites - they scan them. Long, dense blocks of text are deterring. Use short paragraphs, bullet points, clear headings, and bold text to make it easy to quickly find the most important information. 1005 1006## Fix Your Leaky Bucket 1007 1008After implementing UX improvements on Mr. Marek's website, the conversion rate jumped from 0.5% to 4.2%. With the same advertising budget, the company began acquiring eight times as many customers. 1009 1010As a Polish advertising agency in the UK, we don't just create pretty graphics. We design sales funnels that turn visitors into loyal customers. Before you spend another pound on ads, make sure your site is ready to receive traffic. Contact us and order a professional UX audit of your website.`},{slug:"websites-glasgow-london-local-design",categorySlug:"websites-and-shops",title:"Websites Glasgow and London: How Does Local Design Affect the Trust of British Customers?",excerpt:"When Mr. Piotr, the owner of a renovation company from Glasgow, commissioned a cheap freelancer from Poland to create a website, he didn't expect any problems. He received an aesthetic site, translated into English. However, after a few months, he noticed a worrying trend. He was visited mainly by other Poles, while native Britons avoided his offer.",readMinutes:5,date:"2026-05-24",author:{name:"DiSpace Team",role:"Brand & Web"},image:Ut("1486325212027-8081e485255e"),content:`When Mr. Piotr, the owner of a renovation company from Glasgow, commissioned a cheap freelancer from Poland to create a website, he didn't expect any problems. He received an aesthetic site, translated into English. However, after a few months, he noticed a worrying trend. He was visited mainly by other Poles, while native Britons avoided his offer. 1011
1012The problem did not lie in the quality of Mr. Piotr's services, but in nuances the freelancer did not understand. The site was designed according to Eastern European aesthetic standards. American stock photos were used (wooden houses, yellow taxis), and the texts sounded like a literal translation from a translator, devoid of local context. A British client subconsciously felt that something was wrong. 1013 1014As a Polish advertising agency in the UK, we perfectly understand these differences. Designing websites for the British market requires more than just knowing the language. It requires an understanding of the local culture, aesthetics, and consumer expectations. 1015 1016## How Does British Web Design Differ? 1017 1018The British e-commerce and services market is one of the most mature in the world. Customers in the UK are used to the highest digital standards. Here are the key elements that build the trust of a local audience. 1019 10201. Minimalism and Whitespace 1021British design focuses on elegance and clarity. Too many colors, flashing animations, and information overload are perceived as aggressive and "cheap". Professional websites in the UK give content room to breathe. 1022 10232. Authenticity Over Stock Idealization 1024Customers in the UK are sensitive to artificiality. Instead of perfect, purchased photos of smiling models, they prefer to see a real team, actual projects (even if the photos aren't perfect), and authentic reviews. Showing a local context - e.g., the characteristic architecture of Glasgow or London in the background of a project - immediately builds a connection. 1025 10263. Transparency and Trust Signals 1027British law and business customs demand clarity. A visible Company Number, VAT number, physical office address, privacy policy, and logos of local certificates (e.g., Gas Safe, Checkatrade) are an absolute must. The lack of these elements is a red flag for a British customer. 1028 10294. Local Copywriting 1030Using American English (e.g., "color" instead of "colour", "customize" instead of "customise") is a common mistake. Texts must be written in British English, taking into account local phrases and the tone of communication, which in the UK is usually more polite, reserved, and customer-oriented. 1031 1032## How Did We Change the Image of Mr. Piotr's Company? 1033 1034We carried out a complete redesign of Mr. Piotr's website. We replaced the artificial photos with a professional photoshoot of his team at work in the characteristic tenement houses in Glasgow. We added clear sections with insurance certificates and Trustpilot reviews. The texts were rewritten by a native speaker, highlighting the local nature of the business. 1035 1036The effect was immediate. The site began to inspire trust. Within three months, the percentage of British customers increased from 15% to 65%. Mr. Piotr was able to raise his rates because his image finally matched the quality of his work. 1037 1038## Build Trust in the British Market 1039 1040Don't let minor cultural and aesthetic mistakes block your growth in the UK. If you want to get lucrative orders from local clients, your site must speak their language - both literally and visually. 1041 1042As a Polish UK advertising agency based in Glasgow, we combine Polish hard work with excellent knowledge of the British market. We help Polish companies in the UK build an image that sells. Contact us and see how we can adapt your business to the requirements of the local customer.`},{slug:"website-redesign-when-to-rebuild-from-scratch",categorySlug:"websites-and-shops",title:"Website Redesign: When is a Facelift Not Enough and You Have to Build From Scratch?",excerpt:"Mr. Krzysztof's transport company was growing at an impressive pace. He started with one van, and five years later, he managed a fleet of over a dozen vehicles, operating routes between the UK and Poland. His business was growing, but his website stopped in time. It was created at the beginning of his business using a free builder.",readMinutes:6,date:"2026-05-23",author:{name:"DiSpace Team",role:"Web Design"},image:Ut("1467232004584-a241de8bcf5d"),content:`Mr. Krzysztof's transport company was growing at an impressive pace. He started with one van, and five years later, he managed a fleet of over a dozen vehicles, operating routes between the UK and Poland. His business was growing, but his website stopped in time. It was created at the beginning of his business using a free builder. 1043 1044Mr. Krzysztof knew he needed changes. He came to us asking for a "minor facelift" - he wanted to change colors and add new photos. After conducting a technical audit, we had to tell him the hard truth: a facelift wouldn't help. The site required a complete redesign and building from scratch. 1045 1046Many entrepreneurs are afraid of the decision to build a new website, treating it as an unnecessary expense. But when does putting lipstick on a pig stop making sense? Here are 4 situations where you must invest in completely new websites in the UK. 1047 1048## 1. Technical Debt and an Outdated CMS 1049 1050Mr. Krzysztof's site ran on an outdated system that hadn't been updated for years. The code was heavy, full of bugs, and vulnerable to hacker attacks. An attempt to add a new feature (e.g., a transport pricing calculator) ended in a crash of the entire site. 1051 1052If your site is based on dead technology, any modification costs more than creating a new feature from scratch. Modern systems, like optimized WordPress, ensure security, speed, and ease of expansion. 1053 1054## 2. Lack of Responsiveness (Mobile-First) 1055 1056A graphical facelift will not fix a bad structure. If your site does not adapt smoothly to smartphone and tablet screens, you lose over 70% of potential customers. Nowadays, responsiveness is not an add-on, it's an absolute foundation. Google openly penalizes sites that are not mobile-friendly, pushing them to distant positions in search results. 1057 1058## 3. Changing the Target Audience and Business Model 1059 1060Mr. Krzysztof's company had evolved. He stopped carrying single packages for individual clients and focused on lucrative B2B contracts with large warehouses. His old site, with flashy "Cheap parcels to PL" banners, effectively scared away serious business partners. 1061 1062When your business grows, your image must grow with it. A website redesign is the perfect time for brand repositioning. New information architecture, professional copywriting, and elegant design send a signal to the market: "We are a serious player." 1063 1064## 4. Fundamental Problems with SEO and Conversion 1065 1066If your site doesn't appear in Google for key phrases (e.g., "B2B transport UK"), and the users who do find it don't send inquiries, the problem lies in the foundations. Bad link structure, lack of heading optimization, and confusing navigation are flaws that a button color change won't fix. Effe
1066ctive SEO in the UK requires a solid technical base, which can often only be achieved by building the site from scratch. 1067 1068## An Investment in the Future 1069 1070We convinced Mr. Krzysztof to build a new platform. We created a dedicated B2B quoting system, optimized the site for loading speed, and implemented a professional design that builds corporate trust. 1071 1072The costs of building the new site paid off after signing the first major logistics contract, which Mr. Krzysztof won solely due to his professional online image. 1073 1074Don't let outdated technology hinder your company's growth. As an experienced Polish advertising agency in the UK, we help entrepreneurs move to a higher level of digital business. Contact us, and we will assess whether your site needs a facelift or a complete revolution. Let's build a tool that will work for your success for years to come.`},{slug:"seo-uk-local-plumber-london",categorySlug:"marketing-and-seo",title:"SEO in the UK: How a Polish Plumber from London Dominated Local Google Results?",excerpt:"Kamil runs plumbing services in South London. He is a great professional, has excellent customer reviews, and competitive prices. Despite this, for a long time, his main problem was a lack of stability. One month he had so many orders that he had to turn them down, the next his phone was silent for two weeks.",readMinutes:7,date:"2026-05-22",author:{name:"DiSpace Team",role:"SEO"},image:Ut("1581094794329-c8112a89af12"),content:`Kamil runs plumbing services in South London. He is a great professional, has excellent customer reviews, and competitive prices. Despite this, for a long time, his main problem was a lack of stability. One month he had so many orders that he had to turn them down, the next his phone was silent for two weeks. 1075 1076He tried to save the situation by buying expensive ads in local newspapers and handing out flyers. The effect was miserable. When your tap breaks, you don't look for a flyer in a drawer. You take out your phone and type "emergency plumber near me" or "Polish plumber London" into Google. 1077 1078Kamil did not appear in the search results. He came to us with one goal: he wanted customers to call him themselves. This is how our joint journey began, in which we proved that effective SEO in the UK is the most powerful tool for scaling a local business. 1079 1080## Why is Local SEO an Absolute Necessity? 1081 1082Many entrepreneurs believe that SEO (Search Engine Optimization) is magic reserved for large corporations and online stores. This is a huge mistake. Local website positioning is a strategy tailored perfectly for small and medium-sized Polish companies in the UK. 1083 1084The statistics are clear. Almost 50% of all Google searches have local intent. Moreover, 78% of people who search for local services on a smartphone make a purchase or contact within 24 hours. If you are not in the top three search results (the so-called Google Local Pack), you practically do not exist for new customers. 1085 1086## DiSpace Strategy: 3 Steps to Google Domination 1087 1088As an experienced Polish advertising agency in the UK, we knew that Kamil did not need nationwide traffic. He needed specific customers from his neighborhood and surrounding areas. We implemented a precise local SEO strategy. 1089 1090Step 1: Google Business Profile Optimization 1091This is the foundation of a local business. Kamil's profile existed, but it was dead. We filled in all the missing data, added professional photos of his work, and optimized service descriptions for key phrases. We also implemented a system for acquiring reviews from satisfied customers. Google algorithms love companies that have high ratings and regularly interact with users. 1092 1093Step 2: Technical SEO and Website Structure 1094Kamil's website required a thorough rebuild. We optimized it for loading speed, because Google penalizes slow sites. We created dedicated subpages for each specific service (e.g., boiler repair, pipe unblocking, gas installations). Each of these subpages was saturated with appropriate keywords, such as "plumber South London" or "Polish plumber UK". 1095 1096Step 3: Building Local Authority (Link Building) 1097Just optimizing the website is not enough. Google needs to know that your company is trusted in the local community. We started the process of acquiring valuable links from local business directories, British industry portals, and internet forums. The consistency of contact details (NAP - Name, Address, Phone) across the internet gave the algorithms a clear signal that Kamil's company is a reliable and stable business. 1098 1099## The Snowball Effect: From Zero to Hero 1100 1101SEO in the UK is a process, not a one-time action. It requires patience, but the effects are long-lasting and spectacular. 1102 1103In Kamil's case, we noticed the first clear increases after 3 months. His Google Business Profile started appearing in the TOP 3 for the most important queries in his neighborhood. After 6 months, the website was generating steady, free organic traffic. 1104 1105The business result? Kamil had to hire two additional employees to handle the influx of orders. He completely gave up paid ads in newspapers and printing flyers. He built a stable, predictable customer acquisition machine that works for him 24 hours a day, 7 days a week. 1106 1107## Stop Paying for Clicks, Start Investing in Position 1108 1109Paid ads (Google Ads, Meta Ads) are great for quick tests, but they only w
1109ork when you pay for them. When the budget runs out, you disappear. Website positioning is an investment in digital real estate. A position once achieved brings profits for many years. 1110 1111If you run a local business in the UK, regardless of whether you are a mechanic, accountant, hairdresser, or run a restaurant, local SEO is your most important sales channel. 1112 1113Don't let the competition take your customers just because they have a better-optimized website. Contact us. As a professional UK advertising agency, we will conduct a free audit of your online visibility and show you an exact plan on how to reach the top of the search results in your industry. Let's build your success in Google together.`},{slug:"social-media-management-uk-leads-not-likes",categorySlug:"marketing-and-seo",title:"Social Media Management in the UK: How to Stop Burning Budget on Facebook and Start Getting Leads?",excerpt:'Mrs. Marta runs an elegant Polish restaurant in the center of Birmingham. She cooks deliciously, and her place gathers great reviews. Wanting to attract more guests, she decided to invest in marketing. She hired an agency that promised "professional social media management".',readMinutes:5,date:"2026-05-21",author:{name:"DiSpace Team",role:"Social Media"},image:Ut("1611162617213-7d7a39e9b1d7"),content:`Mrs. Marta runs an elegant Polish restaurant in the center of Birmingham. She cooks deliciously, and her place gathers great reviews. Wanting to attract more guests, she decided to invest in marketing. She hired an agency that promised "professional social media management". 1114 1115For six months, the agency published three posts a week. They were beautiful graphics with photos of coffee and captions like: "Good morning on Monday! How is your morning going?". The Facebook page gained a few hundred likes, mostly from Mrs. Marta's friends. Unfortunately, the traffic in the restaurant didn't budge an inch. Mrs. Marta burned thousands of pounds on activities that brought no return on investment (ROI). 1116 1117This is a classic example of how not to do marketing. Many Polish companies in the UK fall into the same trap. They treat social media like a virtual bulletin board, forgetting that the goal of a business is not likes, but real sales. 1118 1119## Why Do Traditional Posts No Longer Work? 1120 1121Facebook and Instagram algorithms have drastically cut organic reach. This means that your free post reaches only 2-5% of people who follow your profile. Social platforms want you to pay for advertising. Publishing generic content without the support of an advertising budget is like winking at a girl in a dark room. You know what you are doing, but no one else sees it. 1122 1123Effective social media management in the UK requires a completely different approach. As a results-oriented Polish advertising agency in the UK, we implement strategies based on generating leads and sales. 1124 1125## 3 Pillars of an Effective Social Media Strategy 1126 11271. Content that Solves Problems (Education and Entertainment) 1128Instead of writing "Buy our services", start delivering value. If you run an accounting firm, record a short video explaining how to deduct fuel costs in the UK. If you have a car repair shop, show how to check the oil level. Education builds authority. When a customer has a serious problem, they will turn to an expert they already know from the web. 1129 11302. Social Proof 1131People buy from people. Show the backstage of your work (so-called behind the scenes). Publish success stories of your clients (Case Studies). A photo of a satisfied customer picking up the keys to a repaired car will sell more than the most beautiful stock graphic with the inscription "The best garage in town". 1132 11333. Precise Paid Campaigns (Meta Ads) 1134This is the most important piece of the puzzle. Organic posts serve to build relationships, but it is paid ads that generate profits. Thanks to Meta Ads, we can precisely reach your target audience. In the case of Mrs. Marta's restaurant, instead of publishing posts about coffee, we launched an advertising campaign aimed at people staying within a 5-mile radius of the premises, offering them a free dessert with their first order in exchange for signing up for the newsletter. 1135 1136## Change of Strategy, Change of Results 1137 1138After taking over Mrs. Marta's profiles, we gave up boring graphics. Instead, we started publishing short, dynamic videos (Reels) showing the process of preparing flagship dishes by the chef. We launched local advertising campaigns with a strong call to action (CTA) encouraging online table reservations. 1139 1140The effect? Within the first month, the cost of acquiring a table reservation dropped to £3. The restaurant started bursting at the seams on weekends, and Mrs. Marta finally saw that social media marketing can realistically increase profits. 1141 1142Don't pay for likes and empty reach. Invest in a system that generates customers. Contact us. As a professional UK advertising agency, we will create a social media strategy for you that will turn your followers into loyal, paying customers.`},{slug:"seo-for-online-stores-5-strategies",categorySlug:"marketing-and-seo",title:"SEO for Online Stores: 5 Strategies That Will Increase Your Google Traffic for Free",excerpt:"Running an e-commerce store is a constant battle for customer attention. Mr. Dawid, the owner of a large Polish food store in the UK, spent a fortune on Google Ads and Facebook Ads. Sales were high, but margins were eaten up by marketing costs. Whenever he tried to reduce the advertising budget, website traffic dropped to almost zero. The store was completely dependent on paid traffic.",readMinutes:7,date:"2026-05-20",author:{name:"DiSpace Team",role:"SEO / E-commerce"},image:Ut("1556761175-5973dc0f32e7"),content:`Running an e-commerce store is a constant battle for customer attention. Mr. Dawid, the owner of a large Polish food store in the UK, spent a fortune on Google Ads and Facebook Ads. Sales were high, but margins were eaten up by marketing costs. Whenever he tried to reduce the advertising budget, website traffic dropped to almost zero. The store was completely dependent on paid traffic. 1143 1144This is a dangerous situation for any business. The solution to this problem is SEO in the UK. A well-optimized online store acts like a magnet, attracting thousands of customers from the Google search engine completely for free. 1145 1146As a Polish advertising agency in the UK, we helped Mr. Dawid become independent of expensive ads. We implemented 5 key SEO strategies that you can apply in your store today. 1147 1148## 1. Product Description Optimization (No More Copying!) 1149 1150The biggest sin of store owners is copying product descriptions directly from the manufacturer's website. Google hates duplicate content and ignores such subpages. 1151 1152Create unique, comprehensive descriptions for your most important products. Use the language of benefits and naturally weave in the keywords your customers use. Instead of writing "Krakowska sausage 500g", write "Traditional Polish dry Krakowska sausage - perfect for sandwiches, delivery in the UK". Unique text is a signal to Google that your site offers higher value than the competition. 1153 1154## 2. Category Architecture and Navigation 1155 1156Categories in your store are the foundation of SEO. They must be logical and correspond to how people search for products. URL optimization is crucial. Instead of the address "yourstore.co.uk/cat123/prod-xyz", use friendly links: "yourstore.co.uk/polish-cold-cuts/krakowska-sausage". 1157 1158Take care of so-called Breadcrumbs, which help users and Google bots understand the structure of your store. Clear navigation keeps the customer on the site longer, which positively affects rankings. 1159 1160## 3. E-commerce Blog (Content Marketing) 1161 1162Customers do not always look for a specific product. They often look for a solution to a problem. Running a blog is the fastest way to capture traffic from the so-called Long Tail Keywords. 1163 1164In Mr. Dawid's store, we started publishing articles with recipes for traditional Polish dishes. The article "How to make real Polish bigos in the UK?" generated hundreds of visits a month. Inside the article, we placed links to products available in the store (cabbage, mushrooms, sausage). This is free traffic that naturally converts into sales. 1165 1166## 4. Loading Speed and Core Web Vitals 1167 1168Online stores are usually heavy, full of photos and scripts. If your WooCommerce store takes longer than 3 seconds to load, you lose not only customers but also positions in Google. Algorithms favor fast sites. 1169 1170Optimize the size of all product photos (use the WebP format), implement caching systems, and invest in fast, dedicated hosting. Speed is one of the most important ranking factors today. 1171 1172## 5. Schema Markup (Structured Data) 1173 1174Have you noticed that some results in Google immediately display the product price, photo, and gold stars with reviews? This is thanks to Schema.org markup. Implementing microdata in the store's code helps the search engine better understand your assortment. Rich Snippets drastically increase the click-through rate (CTR), c
1174atching the customer's eye even before entering the site. 1175 1176## Results That Build Stability 1177 1178After 8 months of working on SEO, organic traffic in Mr. Dawid's store increased by 450%. Revenue from free sales exceeded that from paid campaigns. Mr. Dawid was able to drastically reduce his advertising budget while maintaining the same level of profits. His business became stable and resistant to fluctuations in click prices in Google Ads. 1179 1180Positioning online stores is a marathon, not a sprint. It requires technical knowledge and consistency. As an experienced UK advertising agency, we help Polish e-commerce companies dominate search results. Build a machine with us that will generate free traffic for years. Contact us and order a free SEO audit of your store.`},{slug:"meta-ads-vs-google-ads-uk-2026",categorySlug:"marketing-and-seo",title:"Meta Ads vs Google Ads: Where Should Polish Companies in the UK Invest in 2026?",excerpt:"Mr. MichaÅ runs a cleaning company in Edinburgh. Wanting to quickly acquire new commercial clients (offices, warehouses), he invested £1000 in Facebook ads (Meta Ads). He prepared great graphics showing shining offices before and after cleaning. The campaign reached thousands of people, gathered a lot of likes, but... didn't bring a single serious B2B order.",readMinutes:6,date:"2026-05-19",author:{name:"DiSpace Team",role:"Performance"},image:Ut("1611926653458-09294b3142bf"),content:`Mr. MichaÅ runs a cleaning company in Edinburgh. Wanting to quickly acquire new commercial clients (offices, warehouses), he invested £1000 in Facebook ads (Meta Ads). He prepared great graphics showing shining offices before and after cleaning. The campaign reached thousands of people, gathered a lot of likes, but... didn't bring a single serious B2B order. 1181 1182Discouraged, he turned to us for help. We quickly diagnosed the problem. Mr. MichaÅ had a great offer, but he advertised it in the wrong place and at the wrong time. When a company CEO is looking for a cleaning crew for their office, they don't browse Facebook looking for inspiration. They type "commercial cleaning services Edinburgh" into the search engine. 1183 1184This is a classic dilemma faced by Polish companies in the UK: where to allocate your marketing budget? Choosing between Meta Ads (Facebook, Instagram) and Google Ads is not a matter of which platform is "better". It is a matter of understanding user intent. 1185 1186## Google Ads: Capturing Hot Demand (Intent) 1187 1188Google Ads is intent-based advertising. The user types in a specific phrase because they have a problem they want to solve right here and now. If a pipe bursts, they type "plumber near me". If they are looking for an accountant, they type "Polish accountant UK". 1189 1190Advantages of Google Ads: 1191* You reach customers who are ready to buy (hot leads). 1192* You only pay when someone clicks on your ad (PPC - Pay Per Click). 1193* Ideal for emergency services, B2B, and products with a high immediate need. 1194 1195For Mr. MichaÅ's cleaning company, moving the budget to Google Ads was a bullseye. The search engine campaign immediately started generating calls from companies looking for cleaning services. 1196 1197## Meta Ads (Facebook & Instagram): Creating Demand (Awareness) 1198 1199Meta Ads works completely differently. People don't go on Instagram to look for plumbing or accounting services. They go there to view photos of friends and look for entertainment. Your ad interrupts this activity. 1200 1201However, Meta Ads has a powerful advantage: it allows you to precisely target users based on their interests, behaviors, and demographics before they even realize they need your product. 1202 1203Advantages of Meta Ads: 1204* Lower cost to reach 1000 people (CPM) than in Google. 1205* Ideal for building brand awareness and educating the market. 1206* Perfect for impulse products, the beauty industry, fashion, restaurants, and innovative services that customers don't know about yet. 1207* Powerful retargeting capabilities (reminding people who have already visited your website). 1208 1209## Synergy: How to Combine Both Platforms? 1210 1211The best results are achieved by companies that understand that Google Ads and Meta Ads are not competitors, but partners in the sales funnel. As a professional Polish advertising agency in the UK, we often use a hybrid strategy. 1212 1213Example for an online store: 12141. We use Google Shopping campaigns to capture people who are looking for a specific product (e.g., "Polish natural cosmetics UK"). 12152. Then we use Meta Ads for retargeting. If a customer entered the site from Google but didn't make a purchase, we show them an ad for the same product on Facebook with a discount code, encouraging them to complete the transaction. 1216 1217## Where Should You Invest Your Budget? 1218 1219If your budget is tightly limited and you need customers "for yesterday" (e.g., renovation services, plumbing, roadside assistance), start with Google Ads. Capture the hot demand. 1220 1221If you run a beauty salon, restaurant, sell unique products, or want to build a strong brand and create a need in the customer, Meta Ads will be a better choice to start. 1222 1223Don't guess where your customers are. Trust data and experience. As a UK advertising agency, we help Polish entrepreneurs optimize advertising budgets so that every pound spent brings maximum return on investment. Contact us, and we will prepare a free campaign strategy tailored to your industry.`},{slug:"content-marketing-that-sells-copywriting",categorySlug:"marketing-and-seo",title:"Content Marketing That Sells: How to Write Website Copy So Customers Ask for a Quote Themselves?",excerpt:`Mr. Tomasz, a Polish accountant in London, had a great website. It was modern, fast, and technically flawless. However, the texts on it were stiff, full of legal jargon, and didn't stand out in any way from hundreds of other accounting office
1223s. "We offer comprehensive accounting services for small and medium-sized enterprises, focusing on professionalism and reliability" - read the main headline.`,readMinutes:6,date:"2026-05-18",author:{name:"DiSpace Team",role:"Copywriting"},image:Ut("1455390582262-044cdead277a"),content:`Mr. Tomasz, a Polish accountant in London, had a great website. It was modern, fast, and technically flawless. However, the texts on it were stiff, full of legal jargon, and didn't stand out in any way from hundreds of other accounting offices. "We offer comprehensive accounting services for small and medium-sized enterprises, focusing on professionalism and reliability" - read the main headline. 1224 1225Customers entered the site, yawned, and left. Mr. Tomasz competed solely on price because his communication did not build any unique value. 1226 1227We suggested a change in approach. We implemented a Content Marketing strategy that completely transformed his business. Instead of writing about how great his company is, we started writing about his customers' problems. This is the secret that distinguishes average websites in the UK from profit-generating machines. 1228 1229## Stop Talking About Yourself, Start Talking About the Customer 1230 1231The biggest mistake in copywriting is the so-called "we syndrome". Companies fill their pages with words: we do, we offer, our team, our experience. The truth is brutal: the customer doesn't care about your company. The customer only cares about how your company can solve their problem. 1232 1233We changed Mr. Tomasz's headline to: "Save up to 30% on taxes in the UK. Focus on growing your business, we'll handle the paperwork." 1234 1235See the difference? The new text directly hits the entrepreneur's biggest pain points (taxes and lack of time) and offers a specific solution. 1236 1237## A Blog as a Tool for Building Authority and SEO 1238 1239The next step was to launch a company blog. Instead of publishing dry information from the life of the office, we started creating valuable guides. 1240 1241We wrote articles such as: "How to legally deduct the costs of using a private car in a LTD company?" or "Changes in taxes for the self-employed in 2026 - what you need to know?". 1242 1243The effects were twofold: 12441. Massive SEO growth: These articles perfectly answered the questions that Poles in the UK typed into Google. SEO in the UK today relies mainly on valuable content. Organic traffic on Mr. Tomasz's website tripled. 12452. Building trust: When an entrepreneur read an article that solved their problem, they subconsciously considered Mr. Tomasz an expert. When they needed an accountant, they didn't look any further. They called the author of the article. 1246 1247## 3 Rules for Copy That Converts 1248 1249As a Polish advertising agency in the UK, we use proven copywriting frameworks when creating content for our clients: 1250 12511. Write in the language of benefits, not features 1252Feature: "Our office is open until 8:00 PM". 1253Benefit: "You don't have to leave work early to bring us documents. We are at your disposal until 8:00 PM." 1254People buy benefits and emotions, not dry facts. 1255 12562. Use Social Proof 1257Weave success stories of your clients into the texts. Instead of writing "we are effective", write "We helped company X recover £5000 of overpaid tax". Specific numbers and real examples build unshakable trust. 1258 12593. Clear Calls to Action (CTA) 1260Every text on your website must lead the user to a specific goal. If a customer read an article on the blog, don't let them just leave. At the end, add a clear button: "Have questions about your taxes? Book a free, 15-minute consultation". 1261 1262## Words Have Power 1263 1264After six months of consistently implementing the new content strategy, Mr. Tomasz's accounting office stopped competing on price. Customers who came to him from the blog were already "warmed up" and convinced of his expertise. They were ready to pay more for the services of a specialist who can explain complicated regulations in a simple way. 1265 1266Your website is your best salesperson. Make sure it says the right things. If your texts don't generate inquiries, it's time for a change. Contact us. We help Polish companies in the UK create communication that sells. Let's build content together that turns visitors into loyal customers.`},{slug:"cheap-logo-vs-professional-visual-identity",categorySlug:"branding-and-image",title:"A cheap logo cost them thousands of pounds. Why professional visual identity is an investment, not a cost?",excerpt:"Anna opened an exclusive beauty salon in Manchester. She invested huge money in modern equipment, luxury interior design, and staff training. She wanted to attract premium clients, ready to pay a higher price for the highest quality of services.",readMinutes:5,date:"2026-05-17",author:{name:"DiSpace Team",role:"Branding"},image:Ut("1626785774573-4b799315345d"),content:`Anna opened an exclusive beauty salon in Manchester. She invested huge money in modern equipment, luxury interior design, and staff training. She wanted to attract premium clients, ready to pay a higher price for the highest quality of services. 1267 1268When it came to creating the brand image, the budget was already tight. Anna decided to save money. She ordered a logo design on a popular freelancer portal for just 30 pounds. She received a low-resolution file showing a cliché pink lotus flower, like thousands of others on the internet. 1269 1270She used this logo on the signboard, printed cheap business cards and flyers. The result? Despite the luxurious interior and great services, the salon attracted mainly clients looking for the cheapest promotions. Women from the premium segment avoided this place from a distance. Why? Because the amateur external image sent a clear subconscious signal: "this is a cheap place of low quality". 1271 1272The cheap logo cost Anna the loss of the most profitable clients. This is a classic mistake made by many Polish companies in the UK. They treat graphic design as an unnecessary expense, not understanding that visual identity is the most powerful tool for price positioning on the market. 1273 1274## What exactly is professional visual identity? 1275 1276Many entrepreneurs think that branding ends with a pretty symbol. This is a huge misunderstanding. Professional logo design UK is just the tip of the iceberg. 1277
1278Comprehensive visual identity is a coherent communication system of your company. It includes not only the logo itself in various variants (horizontal, vertical, monochrome), but also a precisely selected color palette, corporate typography (fonts), and rules for their application. All this is gathered in a document called a Brandbook. 1279 1280When you have a coherent system, your business cards, flyers, website, social media posts, and company car wraps look like one powerful whole. This builds immediate trust. 1281 1282## 3 reasons why amateur design destroys your business 1283 1284As an experienced Polish advertising agency UK, we fix the mistakes of cheap graphic designers every day. Here is why saving on image is the most expensive mistake in business. 1285 12861. Lack of trust and credibility 1287The human brain evaluates a company in a fraction of a second based on visual stimuli. If your advertising materials look like they were made in Paint in 15 minutes, the client subconsciously assumes that your services are also amateurish. No one wants to entrust building a house, accounting, or their own health to a company that cannot take care of its own image. 1288 12892. A lost price war 1290If you do not stand out with your image, you become a mass commodity for the client. And in the case of mass commodities, the only selection criterion becomes the price. Professional branding allows you to escape the trap of competing with the lowest rate. Clients are willing to pay more for the services of a company that looks like a premium brand because they feel safer. 1291 12923. Technical problems and hidden costs 1293A cheap logo from the internet is usually delivered in a raster format (JPG or PNG). When you want to print a large advertising banner or wrap a van, the image becomes blurry and full of pixels. Professional graphic designs are always delivered in vector formats that can be scaled to the size of a skyscraper without losing quality. Fixing the technical mistakes of amateurs usually costs more than ordering a professional design right away. 1294 1295## Rebranding that changes the rules of the game 1296 1297Let's return to Anna's story. She understood her mistake and contacted us. We carried out a complete rebranding. We created a minimalist, elegant logo based on modern typography. We selected a color palette associated with luxury and tranquility (deep navy blue, gold, and powder pink). 1298 1299We designed new, exclusive business cards on thick paper with embossing, elegant price lists, and coherent templates for Instagram posts. We also updated the website's appearance to match the new identity. 1300 1301The change was immediate. The new, premium image finally began to resonate with the salon's decor and the quality of services. The salon began to attract wealthier clients, and Anna was able to raise the prices of her services by 30% without any objection from the market. The investment in professional branding paid off in less than two months. 1302 1303## Your image is your best salesperson 1304 1305Do not let poor graphics block the development of your company. Whether you need to refresh an old logo or build a new brand from scratch, you need a partner who understands business. 1306 1307At DiSpace, we don't just draw pretty pictures. We design tools that help Polish companies in the UK grow, build trust, and sell at higher prices. From logo design, through business cards, flyers, to advanced print designs. 1308 1309Invest in an image you will be proud of. Contact us and find out how professional visual identity can change the future of your business.`},{slug:"rebranding-polish-company-uk-premium-brand",categorySlug:"branding-and-image",title:"Rebranding of a Polish company in the UK: How to stop competing on price and become a premium brand?",excerpt:"Marcin's construction company, operating in the London area, had a great reputation among its existing clients. They did comprehensive renovations at the highest level, using expensive materials and taking care of every detail. The problem was that their external image did not reflect this at all.",readMinutes:6,date:"2026-05-16",author:{name:"DiSpace Team",role:"Branding"},image:Ut("1542744173-8e7e53415bb0"),content:`Marcin's construction company, operating in the London area, had a great reputation among its existing clients. They did comprehensive renovations at the highest level, using expensive materials and taking care of every detail. The problem was that their external image did n
1309ot reflect this at all. 1310 1311Their logo looked like clipart downloaded from a free website in 2010 - a brick house and a hammer. The company cars had flashy, yellow-red "Cheap Renovations UK" stickers. The website resembled a bulletin board. 1312 1313Marcin wanted to get contracts from wealthy British clients who were looking for contractors for luxury residences. However, when such clients saw his van or visited the website, they immediately backed out. The company's image screamed "cheap and fast", while the services were "premium and precise". This cognitive dissonance blocked the company's development. 1314 1315The solution was a comprehensive rebranding. As a Polish advertising agency in the UK, we guided Marcin's company through a transformation process that allowed him to raise his rates by 40% and enter the luxury market. 1316 1317## What is rebranding and when do you need it? 1318 1319Rebranding is not just changing a logo. It is a strategic change of the entire visual and communication identity of a company, aimed at changing the way it is perceived by the market. 1320 1321When should Polish companies in the UK consider rebranding? 13221. Change of target audience: You want to stop serving clients looking for the lowest price and enter the premium market (B2B or wealthy individual clients). 13232. Development of services: You started with minor repairs, and now you build houses from scratch. Your old image does not match the scale of your business. 13243. Outdated look: Your advertising materials look as if they stopped in the previous decade, while the competition looks modern and professional. 1325 1326## The transformation process: From "Cheap Renovation" to "Premium Construction" 1327 1328We started our cooperation with Marcin with strategic workshops. We understood that his greatest value is punctuality, cleanliness of work, and attention to architectural details. 1329 1330Step 1: New visual identity 1331We abandoned the old, literal logo with a hammer. We designed a minimalist, elegant monogram based on the company's initials. We changed the flashy colors to subdued navy blue, graphite, and brushed gold. In business psychology, these colors are associated with stability, luxury, and trust. 1332 1333Step 2: Consistency at every step 1334We designed new wraps for the entire fleet of cars. Instead of huge "Cheap renovations" signs, the vans featured an elegant logo and the slogan "Bespoke Construction & Refurbishment". We created exclusive business cards on thick, textured paper and professional offer folders in which Marcin could hand quotes to clients. 1335 1336Step 3: Digital revolution 1337The old website was removed. We built a modern platform that served as an exclusive portfolio. Large, high-quality photos of completed projects, minimalist typography, and professional copywriting in English. We also implemented UK website positioning, focusing on phrases such as "high-end refurbishment London". 1338 1339## An image that increases margins 1340 1341The effects of the rebranding were spectacular. Marcin started arranging meetings in wealthy London neighborhoods. When he pulled up in an elegant van, handed over a professional folder with a quote, and directed clients to a modern website, no one questioned his rates. 1342 1343Premium clients are not looking for the cheapest contractor. They are looking for safety and certainty that the work will be done perfectly. A professional image gives them this certainty even before the work begins. 1344 1345Do not let poor design lower the value of your hard work. If you feel that your company is stuck in the low-price trap, it's time for a change. As an experienced advertising agency UK, we help Polish entrepreneurs build brands that command respect and allow them to earn more. Contact us and see how rebranding can transform your business.`},{slug:"consistent-graphic-design-and-print-b2b",categorySlug:"branding-and-image",title:"From a business card to a huge banner: Why consistent graphic designs and print build trust in B2B?",excerpt:"Karolina, the owner of a Polish food wholesaler in the UK, was preparing for the most important industry trade fair in London. It was her chance to win lucrative contracts with British retail chains. She bought an expensive stand, prepared product samples, but forgot about one key element - consistent visual communication.",readMinutes:5,date:"2026-05-15",author:{name:"DiSpace Team",role:"Design & Print"},image:Ut("1531497865144-0464ef8fb9a9"),content:`Karolina, the owner of a Polish food wholesaler in the UK, was preparing for the most important industry trade fair in London. It was her
1345chance to win lucrative contracts with British retail chains. She bought an expensive stand, prepared product samples, but forgot about one key element - consistent visual communication. 1346 1347A week before the fair, in a panic, she ordered the printing of flyers from a local print shop, which used random fonts. She ordered a banner from a cheap freelancer on the internet, who used the wrong shade of the corporate color. She printed the business cards herself on a home printer. 1348 1349When she stood at the stand, it looked like a mishmash of random elements from three different companies. British buyers, accustomed to the highest corporate standards, bypassed her stand. The lack of visual consistency subconsciously screamed: "this company is disorganized and unprofessional". Karolina lost the chance for the contracts of a lifetime. 1350 1351This is a painful lesson that shows that in the B2B (Business to Business) sector, professional graphic services for companies are not a whim, but the foundation of building trust. 1352 1353## The halo effect in business 1354 1355In psychology, there is the concept of the "halo effect". It means that based on one positive trait, we assign other positive properties to an object. If your advertising materials - business cards, folders, catalogs - are designed with the utmost care and printed on premium paper, the client subconsciously assumes that your products or services are of equally high quality. 1356 1357This also works the other way around. Cheap, glossy paper and a blurry logo on a flyer make the client expect problems in cooperation. 1358 1359## 3 rules of effective printed materials 1360 1361As a Polish advertising agency in the UK, we provide comprehensive services for companies - from design to final print. Here are the rules we follow when creating materials that build authority. 1362 13631. Absolute consistency 1364Your website, LinkedIn profile, business card, and banner at the fair must look like members of the same family. We use exactly the same shades of colors (defined in CMYK and Pantone palettes for printing), the same fonts, and a consistent graphic style. When a client sees your flyer, they must immediately know that it is your company, even before reading the name. 1365 13662. Less is more (Minimalism) 1367The most common mistake in designing flyers and banners is trying to cram the entire history of the company and the full price list onto them. Printed materials are meant to attract attention and encourage contact, not to be an encyclopedia. We focus on a strong headline, a clear call to action (CTA), and clean space that gives the design elegance. 1368 13693. Physical quality (Touch matters) 1370In the digital era, a physical object has enormous power. When you hand a business card to a contractor, its weight, paper texture, and refinements (e.g., spot UV varnish, embossing) send a strong signal about the status of your company. Investing in 350g or 400g paper is a matter of pennies, and it makes a colossal difference in perception. 1371 1372## Comprehensive service takes the problem off your head 1373 1374The biggest problem for entrepreneurs is coordination. The graphic designer makes the design, the print shop claims the file is poorly prepared, and the final print has completely different colors than on the monitor. 1375 1376By choosing an experienced 360 agency, you take this problem off your shoulders. At DiSpace, we take full responsibility for the process. We design materials in accordance with rigorous DTP (Desktop Publishing) requirements, select the appropriate substrates, and deliver the finished, perfect product straight to your office in the UK. 1377 1378Do not let minor image mistakes close the doors to big contracts for you. Make sure your company presents itself professionally at every touchpoint with the client. Contact us and find out how we can unify and elevate the quality of your advertising materials.`},{slug:"brandbook-what-is-it",categorySlug:"branding-and-image",title:"Brandbook: What is it and why must every serious company in the UK have one?",excerpt:"Andrzej manages a dynamically developing transport company in the UK. He employs dozens of drivers and has a large fleet of vehicles. When the company was starting out, the logo was designed by a student friend. It was quite good, so Andrzej used it everywhere.",readMinutes:4,date:"2026-05-14",author:{name:"DiSpace Team",role:"Branding"},image:Ut("1559028012-481c04fa702d"),content:`Andrzej manages a dynamically developing transport company in the UK. He employs dozens of drivers and has a large fleet of vehicles. When the company was starting out, the logo was designed by a student friend. It was quite good, so Andrzej used it everywhere. 1379 1380The problems started with the growth of the company. When he ordered the wrapping of new vans from a local company in Manchester, the logo on the cars came out bright red, although it was burgundy on the website. When he ordered company t-shirts for employees, the print shop stretched the logo, distorting it completely. In turn, the agency running social media used completely different fonts than those on the company's official documents. 1381 1382The image of Andrzej's company became chaotic. It looked like a mishmash of several different businesses. The reason for this chaos was simple: the company did not have a Brandbook. 1383 1384## What is a Brandbook? 1385 1386A Brandbook is the "bible" of your brand. It is an official document that precisely defines what your logo looks like and how it should be used to maintain full visual consistency. Professional logo design in the UK should never end with delivering just the graphic file. It should always be backed by creating the rules for its use. 1387 1388Imagine that a Brandbook is an instruction manual for your company for every graphic designer, printer, web developer, or marketing agency. You hand them this document and you have absolute certainty that no one will ruin your image. 1389 1390## What does a professional Brandbook contain? 1391 1392As a Polish advertising agency in the UK, we create comprehensive Brandbooks for our clients. A good Brandbook should contain several key elements: 1393 13941. Logo variants and constructions 1395The document shows the basic version of the logo, the vertical version, the horizontal version, and the signet (the symbol itself without text). It also specifies the proportions and distances between elements. 1396 13972. Clear space and minimum sizes 1398This is a key rule. Clear space is a defined area around the logo in which no other graphic elements or texts can be placed. This guarantees that your logo will always be legible. The document also specifies to what minimum size the logo can be reduced in print and on the internet so that it does not become a blurry spot. 1399 14003. Corporate color palette 1401This would have solved Andrzej's problem with the vans. A Brandbook precisely defines the brand's colors using codes. It provides HEX and RGB values (for use on the internet, e.g., on websites) and CMYK and Pantone (for precise printing). Thanks to this, the red on your website and the red on your car is always the same, identical shade. 1402 14034. Typography (Fonts) 1404The document indicates exactly which typefaces should be used in headlines and which in long texts. Consistent typography is one of the strongest, subconscious signals of professionalism. 1405 14065. Unacceptable modifications 1407The book shows with examples what NOT to do with the logo. It forbids stretching, changing colors on your own, adding shadows, or rotating the sign. This is your protective shield against the creativity of amateurs. 1408 1409## An investment in order and time saving 1410 1411Implementing a Brandbook in Andrzej's company solved all image problems. From that moment on, every new subcontractor received a PDF file with guidelines. Printing mistakes ended, and the company's image became consistent and professional at every step. 1412 1413A lack of visual consistency costs you the trust of clients. B2B clients and premium consumers subconsciously evaluate the organization of a company based on its image. If you cannot control your own logo, how will you control a complicated order? 1414 1415Build a brand that commands respect. Contact us. As experts in branding and graphic services for companies, we will organize your image and create a Brandbook that will become the foundation of your professionalism.`},{slug:"color-psychology-in-business-website",categorySlug:"branding-and-image",title:"The psychology of colors in business: How do the colors of your website influence the purchasing decisions of the British?",excerpt:"Sylwia opened a luxury aesthetic medicine salon in London. She offered premium treatments, and her services were at the highest global level. When she commissioned the creation of a website, she chose her favorite colors: bright pink and neon yellow.",readMinutes:5,date:"2026-05-13",author:{name:"DiSpace Team",role:"Brand Design"},image:Ut("1513475382585-d06e58bcb0e0"),content:`Sylwia opened a luxury aesthetic medicine salon in London. She offered premium treatments, and her services were at the highest global level. When she commissioned the creation of a website, she chose her favorite colors: bright pink and neon yellow. 1416 1417The website was modern and fast, but clients from the premium segment avoided the salon from a distance. Instead, mainly young girls looking for cheap promotions on lip augmentation called. Sylwia did not understand why she was attracting the wrong target group. 1418
1419The problem did not lie in the offer, but in psychology. The colors she chose for her website screamed to the client's subconscious: "we are a cheap, youth salon". The luxury, tranquility, and professionalism that wealthy clients were looking for require a completely different color palette. 1420 1421As a Polish advertising agency in the UK, when designing websites and visual identities, we never choose colors based on what "looks nice". We rely on the hard rules of business psychology. 1422 1423## How do colors control our brain? 1424 1425The human brain processes colors much faster than text. Before a client reads even one word on your website, their subconscious will already evaluate your company based on the dominant colors. Here is how the British (and not only) react to specific colors in business: 1426 14271. Blue and Navy Blue: Trust, security, stability 1428This is the safest and most professional color in business. It is not without reason that banks (Barclays), insurance companies, and technology corporations (Facebook, LinkedIn) use it. If you run an accounting office, a law firm, or a B2B construction company in the UK, navy blue should be the foundation of your image. 1429 14302. Green: Tranquility, growth, ecology, health 1431Ideal for companies related to nature, healthy eating, but also finance (growth). In the UK, green works great in industries such as landscaping, renewable energy sources, or private medical clinics. 1432 14333. Black, Gold, and Silver: Luxury, exclusivity, prestige 1434These were the colors missing on Sylwia's website. Dark, deep backgrounds combined with gold or copper accents are a universal code of luxury. Premium brands (Apple, Chanel) use minimalism and black to communicate: "our products are expensive and worth their price". 1435 14364. Red: Energy, urgency, passion 1437Red raises the heart rate and forces quick action. It works great in the fast-food industry, sales, and emergency services (e.g., Emergency Plumber 24/7). However, it should be used with caution, because in excess it causes aggression and anxiety. 1438 14395. Orange and Yellow: Friendliness, optimism, low price 1440These are the colors of brands available to everyone (e.g., EasyJet, Amazon). They communicate joy and affordability. If your advantage is a low price and a mass audience, it's a great choice. If you are targeting the premium market - avoid them like the plague. 1441 1442## The color of the button (CTA) matters 1443 1444The psychology of colors is not just the background of the website. It is also the strategic use of contrasting colors to control the user's attention. 1445 1446In one of our projects for an e-commerce store (WooCommerce stores), we changed the color of the "Add to cart" button from a blue that blended with the background to a highly contrasting orange. Just this one change, without any other modifications on the page, increased sales conversion by 14%. The button became a clear signpost for the eye. 1447 1448## Build an image that attracts the right clients 1449 1450After changing the color scheme on Sylwia's website to deep navy blue, bottle green, and gold accents, her client profile changed dramatically. She began to attract women looking for luxury treatments, and her calendar filled up with lucrative visits. 1451 1452Your website and logo send a continuous signal to the market. Make sure it is the right signal. Do not leave the choice of colors to chance. Contact us. As experienced designers, we will select a color palette that will subconsciously convince British clients to choose your company.`},{slug:"freelancer-vs-agency-true-costs",categorySlug:"strategy-and-business",title:'Freelancer or Polish advertising agency in the UK? The true costs hidden behind "cheap" websites.',excerpt:"Ms. Karolina decided to open an online store with Polish cosmetics in the UK. She had a great business plan, negotiated contracts with suppliers, and a warehouse full of goods. She was missing only one thing to start: a sales platform.",readMinutes:6,date:"2026-05-12",author:{name:"DiSpace Team",role:"Strategy"},image:Ut("1552664730-d307ca884978"),content:`Ms. Karolina decided to open an online store with Polish cosmetics in the UK. She had a great business plan, negotiated contracts with suppliers, and a warehouse full of goods. She was missing only one thing to start: a sales platform. 1453 1454She started looking for a contractor. Offers from professional agencies seemed too expensive to her, so she decided on the services of a freelancer found on a Facebook group. He promised to create fully functional UK online stores for a fraction of the market price, in just two weeks. It sounded like a great deal. 1455 1456Reality turned out to be a nightmare. The project dragged on for months. The freelancer stopped replying to emails, and when he finally delivered the finished store, it turned out that payments didn't work, the website loaded endlessly, and it was impossible to add a product to the cart on mobile phones. Ms. Karolina lost time, money, and nerves, and her goods were stuck in the warehouse. 1457 1458This is not an isolated case. As a Polish advertising agency in the UK, we regularly take over and rescue projects that have been abandoned or ruined by cheap, unverified contractors. Choosing between a freelancer and a professional agency is one of the most important business decisions. Why does apparent savings at the start often end in financial disaster? 1459 1460## The myth of a cheap website 1461 1462When you buy a website for 300 pounds, you have to ask yourself: what is the contractor saving on? The answer is simple: on everything that determines the success of your business online. 1463 1464Cheap contractors usually use ready-made, heavy templates that slow down the website's performance. They do not conduct an analysis of your competition or target audience. They do not care about data security, optimization for mobile devices (Responsive Web Design), or basic UK website positioning. 1465 1466You get a product that might look passable at first glance, but under the hood, it is a technological dud. Such a website will not generate sales, and repairing it often costs more than building a new one from scratch. 1467 1468## Why is a comprehensive 360 agency the best choice? 1469 1470Working with a professional agency like DiSpace is a completely different standard of work. We don't sell code or graphics. We sell business solutions that are meant to bring you profit. Here are 4 reasons why Polish companies in the UK choose to work with us. 1471 14721. A team of experts under one roof 1473Creating effective websites and WooCommerce stores is a process that requires many competencies. You need a strategist, UX/UI designer, programmer, copywriter, and SEO specialist. No freelancer is a master in all these fields. In an agency, a coordinated team of specialists works on your project, each responsible for their piece of work at the highest level. 1474 14752. Consistency of communication and no chaos 1476If you commission a logo to one graphic designer, a website to a programmer from India, and social media management to an agency from Poland, you will quickly drown in communication chaos. You will waste hours passing information between subcontractors, and the final result will be inconsistent. By choosing a 360 agency, you have one dedicated project manager. We make sure that your logo, website, business cards, and advertising campaigns speak with the same voice. 1477 14783. Guarantee, security, and support 1479What will you do when your online store crashes on Black Friday, and the freelancer goes on vacation to the Bieszczady mountains and turns off his phone? A professional UK advertising agency signs a legal contract with you, issues invoices, and guarantees technical support after the project is implemented. We don't disappear after the last installment is paid. We care about long-term cooperation and your success, because your growth is our growth. 1480 14814. Business thinking, not just technical 1482A freelancer usually asks: "what should the website look like?". We ask: "who is your client, what do you earn the most on, and what is your business goal?". We design user paths, optimize conversion, and implement web analytics. We build tools that are supposed to pay for themselves. 1483 1484## An investment that pays off 1485 1486Ms. Karolina eventually came to us. We built a modern, fast, and fully optimized WooCommerce store for her. We implemented secure payment gateways, integrated the system with couriers, and launched effective advertising campaigns. The store started earning in the first week after launch, and Ms. Karolina could finally focus on handling orders instead of fighting code errors. 1487 1488Don't risk the future of your business by entrusting it to amateurs. Your image online is your most important storefront. 1489 1490Trust the experts. As a proven Polish advertising agency in the UK, we offer comprehensive services: from logo design, through advanced websites and online stores, to positioning and social media management. Contact us, fill out a short brief, and see for yourself what working with professionals looks like. Let's build your success on the British market together.`},{slug:"how-to-start-and-scale-business-uk-2026",categorySlug:"strategy-and-business",title:"How to start and scale a Polish business in the UK in 2026? The role of digital marketing",excerpt:"Starting a company in the UK is relatively simple. Registering an LTD company takes a dozen or so minutes, and formalities are kept to a minimum. However, what happens next verifies true entrepreneurs. Mr. Michal, who opened an electrical installation company in London, quickly found out that having a good trade in hand is not enough today to survive in a highly competitive market.",readMinutes:7,date:"2026-05-11",author:{name:"DiSpace Team",role:"Strategy"},image:Ut("1521791136064-7986c2920216"),content:`Starting a company in the UK is relatively simple. Registering an LTD company takes a dozen or so minutes, and formalities are kept to a minimum. However, what happens next verifies true entrepreneurs. Mr. Michal, who opened an electrical installation company in London, quickly found out that having a good trade in hand is not enough today to survive in a highly competitive market. 1491 1492For the first year, Mr. Michal relied solely on word of mouth and recommendations from friends. The business was spinning slowly, but it didn't allow for hiring employees or planning long-term development. The company was stuck at a dead end. The change came only when Mr. Michal understood that in 2026, scaling a business relies 90% on visibility on the internet. 1493 1494As a Polish advertising agency in the UK, we help dozens of compatriots make the journey from a small, local business to a stable, growing company. Here are the 3 pillars of digital scaling that we implemented in Mr. Michal's company. 1495 1496## Pillar 1: Professional foundation, meaning a website 1497 1498Many beginner entrepreneurs think that a Facebook profile is enough. This is a huge mistake. When a British client is looking for a serious contractor for a large project, they don't look for them on social media portals. They look for a company that inspires trust. 1499 1500We built a modern website for Mr. Michal. It wasn't an ordinary business card, but a sales tool. We highlighted industry certificates (NICEIC), references from clients, and clear calls to action (CTA). The professional website became the company's virtual office, open 24 hours a day, which built authority even before the first phone contact. 1501 1502## Pillar 2: Capturing demand (Local SEO and Google Ads) 1503
1504When the foundation was ready, we had to direct traffic to it. We implemented a two-track strategy. 1505 1506On the one hand, we launched Google Ads campaigns, targeting hot queries (e.g., "emergency electrician London"). This gave the company an immediate injection of cash and new orders in the very first week. 1507 1508On the other hand, we started long-term website positioning in the UK (Local SEO). We optimized the Google Business Profile listing and created dedicated subpages for different districts of London. After a few months, Mr. Michal's website began to appear in the top spots in free search results, which drastically lowered the costs of acquiring new clients. 1509 1510## Pillar 3: Building a brand and trust (Social Media and Branding) 1511 1512To stop competing solely on price, the company had to become a recognizable brand. We organized the visual identity - from a professional logo, through consistent van wrapping, to company clothing for employees. 1513 1514We also launched strategic social media management. Instead of boring advertising posts, Mr. Michal started sharing knowledge. We published short videos showing how to avoid dangerous short circuits in old British houses. Education built the position of an expert. Clients started calling not with the question "how much does it cost?", but with the request "I want you to do it". 1515 1516## From a "handyman" to a serious enterprise 1517 1518Thanks to the implementation of a comprehensive digital strategy, Mr. Michal's company grew from a one-person business to an enterprise employing five electricians within two years. Digital marketing allowed him to predict revenues, plan development, and choose only the most lucrative orders. 1519 1520Scaling a business in the UK is not about harder physical work. It's about smarter outreach to clients. If your company is standing still, and you still rely only on recommendations, it's time to take a step towards professional marketing. 1521 1522Contact us. As an experienced UK advertising agency, we will create an individual digital development plan for you that will take your business to the next level. Let's build your success in the Isles together.`},{slug:"sales-funnel-on-website",categorySlug:"strategy-and-business",title:"Sales funnel on a website: How to turn a random visitor into a loyal customer?",excerpt:"Ms. Anna ran an aesthetic medicine clinic in Manchester. Her website recorded quite a lot of traffic, mainly thanks to well-managed Instagram profiles. Women visited the site, looked at the price list, read about the treatments and... left. The bounce rate was huge.",readMinutes:6,date:"2026-05-10",author:{name:"DiSpace Team",role:"CRO"},image:Ut("1460925895917-afdab827c52f"),content:`Ms. Anna ran an aesthetic medicine clinic in Manchester. Her website recorded quite a lot of traffic, mainly thanks to well-managed Instagram profiles. Women visited the site, looked at the price list, read about the treatments and... left. The bounce rate was huge. 1523 1524Ms. Anna thought her prices were too high. The truth, however, was different. Her website did not have a designed sales funnel. It required the customer to make an immediate decision about an expensive treatment right at the first visit. It's like proposing on the first date and expecting an immediate "yes". 1525 1526In digital marketing, the customer's decision-making process takes time and proper guidance. As a Polish advertising agency in the UK, we implemented a classic sales funnel on Ms. Anna's website, which increased the number of bookings by over 200%. 1527 1528## What is a sales funnel? 1529 1530A sales funnel is the path through which you guide a potential customer - from the moment they learn about your company until they make a purchase. Well-designed websites in the UK are not static brochures. They are automated funnels that lead the user by the hand. 1531 1532A classic funnel consists of 4 stages (the AIDA model): 15331. Awareness 15342. Interest 15353. Desire 15364. Action 1537 1538## How did we build the funnel for Ms. Anna's clinic? 1539 1540Instead of attacking users with a "Buy a treatment for 500 pounds" button, we divided the process into smaller, easier to swallow steps. 1541 1542Step 1: Awareness and free value (Lead Magnet) 1543At the very top of the page, we placed an attractive guide to download for free: "5 skincare mistakes that accelerate aging". To download it, the client had to provide her email address. This drastically lowered the barrier to entry. The client didn't risk money, and she received valuable knowledge. In this way, we started building a database of potential clients. 1544 1545Step 2: Interest and Education (Email Marketing) 1546People who downloaded the guide fell into an automated email sequence. Over the next few days, they received emails with cosmetology advice that gently referred to the treatments offered at the clinic. We educated the clients, building Ms. Anna's authority as an expert. 1547 1548Step 3: Desire (Social Proof and Offer) 1549In the third email, we sent a success story (Case Study) of one of the clients, along with photos before and after the treatment. This aroused desire and proved the effectiveness of the services. Only at this stage did we present a specific offer. 1550 1551Step 4: Action (Low-barrier CTA) 1552Even at this stage, we weren't selling the most expensive treatment. The call to action was a "Free, 15-minute skin consultation with computer analysis". When the client appeared at the clinic for a free consultation, she was already educated, trusted Ms. Anna, and was ready to buy an expensive package of treatments. 1553 1554## Automate your sales 1555 1556The implementation of the sales funnel made Ms. Anna's website stop being a passive business card. It became an active system for acquiring and "warming up" leads. Even if the client wasn't ready to buy during the first visit to the site, the system educated her until she made a decision. 1557 1558If your website has a lot of traffic but few inquiries, you are missing a funnel. Don't force customers to propose on the first date. Contact us. We design websites and WooCommerce stores based on sales psychology. We will build a system for you that, step by step, will turn your visitors into loyal, paying customers.`},{slug:"web-analytics-3-metrics-google-analytics",categorySlug:"strategy-and-business",title:"Web analytics for dummies: 3 metrics in Google Analytics you must track",excerpt:"Mr. Kamil ran a thriving online store with Polish products in the UK. He invested in website positioning, Facebook ads, and collaborations with influencers. He spent several thousand pounds a month on marketing. Sales were growing, so Mr. Kamil was satisfied.",readMinutes:4,date:"2026-05-09",author:{name:"DiSpace Team",role:"Analytics"},image:Ut("1551288049-bebda4e38f71"),content:`Mr. Kamil ran a thriving online store with Polish products in the UK. He invested in website positioning, Facebook ads, and collaborations with influencers. He spent several thousand pounds a month on marketing. Sales were growing, so Mr. Kamil was satisfied. 1559 1560One day we asked him: "Mr. Kamil, which of these marketing channels brings the most profit, and which burns the budget?". There was silence. Mr. Kamil had no idea. He only knew how much he spent and how much he earned overall. He was operating completely in the dark. 1561 1562This is the most common sin of entrepreneurs. They make key financial decisions based on gut feelings, not hard data. Implementing and understanding the basics of web analytics is the moment when a business stops being a lottery and becomes a predictable machine. 1563 1564As a Polish advertising agency in the UK, we always start cooperation by configuring Google Analytics 4 (GA4). You don't have to be a data analyst to control your business. Here are 3 key metrics you must track. 1565 1566## 1. Traffic Acquisition sources 1567 1568This is the absolute basics. You need to know where people are coming to your site from. In GA4 you will find a report that divides your traffic into categories: 1569* Organic Search: Free traffic from search engines (the effect of your SEO). 1570* Paid Search: Traffic from paid Google Ads. 1571* Social: Traffic from Facebook, Instagram, TikTok. 1572* Direct: People who typed your address directly into the browser (the strength of your brand). 1573 1574Knowing where the traffic comes from is half the battle. The real magic happens when you combine this data with conversion. In Mr. Kamil's case, it turned out that influencers generated huge traffic (Social), but none of these people were buying. On the other hand, traffic from the search engine (Organic Search) was smaller, but it generated 80% of all profits. Mr. Kamil immediately shifted the budget from influencers to SEO, drastically increasing the store's profitability. 1575 1576## 2. Conversion Rate 1577 1578The conversion rate tells you what percentage of people visiting your site perform the desired action (e.g., buys a product, fills out a contact form, calls). 1579 1580If your website has 1000 visits a month and generates 10 inquiries, your conversion rate is 1%. 1581 1582Tracking this metric is crucial when making changes to the site. If you change the color of a button, simplify the contact form, or add new customer reviews, you will immediately see in Google Analytics whether these changes increased or decreased conversion. Conversion Rate Optimization (CRO) is the cheapest way to increase profits without spending additional money on ads. 1583 1584## 3. Exit Pages and Abandoned Carts 1585 1586This report shows exactly at which point customers flee from your site. This is your "leaky bucket". 1587 1588In the case of online stores (e.g., WooCommerce stores), it is crucial to track the purchase path. If you see that 100 people add a product to the cart, but 80 of them flee at the stage of cho
1588osing a delivery method, you have a ready diagnosis of the problem. Perhaps shipping costs are too high, or the address form is too complicated. Fixing this one element can save dozens of transactions a day. 1589 1590## Data is the new currency 1591 1592After implementing analytics and optimizing campaigns based on hard data, Mr. Kamil's store increased profits by 40%, while simultaneously reducing marketing costs by 20%. He stopped guessing and started investing where he saw a real return (ROI). 1593 1594Don't run your business blindly. Professional websites in the UK must be measured. Contact us. We will implement advanced analytics on your site, configure goals, and teach you how to read data that will allow you to make accurate business decisions. Gain full control over your marketing.`},{slug:"automation-in-small-business-website-and-shop",categorySlug:"strategy-and-business",title:"Automation in a small business: How can a website and store replace a full-time employee?",excerpt:"Ms. Ewa ran a popular hair salon and a store with professional hair cosmetics in Leeds. Her business was growing, but she herself was on the verge of exhaustion. Her phone rang non-stop. Clients called to book an appointment, reschedule, ask about the price of a haircut, or check if a given shampoo was available in the store.",readMinutes:6,date:"2026-05-08",author:{name:"DiSpace Team",role:"Automation"},image:Ut("1518770660439-4636190af475"),content:`Ms. Ewa ran a popular hair salon and a store with professional hair cosmetics in Leeds. Her business was growing, but she herself was on the verge of exhaustion. Her phone rang non-stop. Clients called to book an appointment, reschedule, ask about the price of a haircut, or check if a given shampoo was available in the store. 1595 1596Ms. Ewa spent a minimum of 3 hours a day answering phone calls and replying to messages on Facebook. She had no time to manage the team, and after work, she dropped from exhaustion. She considered hiring a full-time receptionist, which meant huge fixed costs. 1597 1598Instead, she contacted us. As a Polish advertising agency in the UK specializing in digital solutions, we offered her something much better and cheaper than a new employee. We proposed process automation using a smart website. 1599 1600## Your website as a 24/7 virtual assistant 1601 1602Modern websites in the UK are no longer just business cards with a phone number. They are advanced applications that can take over most of the repetitive, boring tasks in your company. 1603 1604Here are 3 automation systems that we implemented for Ms. Ewa, saving her 20 hours of work a week. 1605 1606## 1. Automated appointment booking system 1607 1608We integrated her new website with a professional online booking system. Clients no longer had to call. They could go to the website at 2:00 AM, check the availability of the selected hairdresser, choose a service, and book an appointment. 1609 1610The system automatically collected a deposit (which drastically reduced the number of no-shows), sent the client a confirmation email, and an SMS reminder 24 hours before the visit. Ms. Ewa's calendar filled up on its own, without her participation. 1611 1612## 2. WooCommerce store with automated order processing 1613 1614The sale of cosmetics, which previously took place via private messages on Facebook, was moved to a professional e-commerce store. We implemented WooCommerce stores with full automation. 1615 1616When a customer bought a shampoo, the system itself processed the payment, generated an invoice, sent it to the customer, and automatically created a courier label to print. Ms. Ewa's only task was to pack the parcel and stick the ready label. What's more, the system itself updated inventory levels, so no one could buy a product that was no longer there. 1617 1618## 3. Smart FAQ and Chatbot 1619 1620We analyzed the most common questions that Ms. Ewa received over the phone (e.g., "Where can I park?", "Do you do color stripping?", "What is the price list?"). We created an extensive FAQ (Frequently Asked Questions) section on the website. 1621 1622Additionally, we installed a simple Chatbot on the website and on the company Messenger. When a client wrote a message asking about the price list, the bot automatically sent them a link to the appropriate subpage. The bot took over handling 60% of standard inquiries. 1623 1624## Reclaiming time and scaling the business 1625 1626After implementing these solutions, the phone in Ms. Ewa's salon went silent. But not because she lost clients. The calendar was full for a month ahead, and cosmetics sales doubled. The phone went silent because all processes were running automatically in the background. 1627 1628Ms. Ewa saved the money she would have had to spend on a receptionist's salary. She reclaimed her time, which she could devote to training employees and developing the business. Finally, she could also return home at a normal time and rest. 1629 1630Technology is today the cheapest employee you can hire. Don't waste your valuable entrepreneur time on tasks that code can do for you. Contact us. We will analyze the processes in your company and build a website or store that will take the burden of daily service off your shoulders. Start working ON your business, not IN your business.`}];Object.fromEntries(fl.map(t=>[t.slug,t.image]));function hC(t){return fl.find(a=>a.slug===t)?.image||SY}function yC(t){return pC.find(e=>e.slug===t)}function xY(t,e){return fl.find(a=>a.categorySlug===t&&a.slug===e)}function zee(t){return fl.filter(e=>e.categorySlug===t).sort((e,a)=>a.date.localeCompare(e.date))}function bee(t,e=3){return fl.filter(a=>a.slug!==t.slug&&a.categorySlug===t.categorySlug).sort((a,i)=>i.date.localeCompare(a.date)).slice(0,e)}const _Y=()=>W(()=>import("./en.knowledge-base.index-BlcfI1fc.js"),[]),u_=wa.fonts.display,d_=wa.fonts.body,TY=[.22,1,.36,1],EY=q()({component:G(_Y,"component"),head:()=>({meta:[{title:"Knowledge Base · DiSpace - websites, SEO and marketing"},{name:"description",content:"Practical articles about websites, WooCommerce stores, SEO and branding for businesses in the UK. Knowledge that actually sells."},{property:"og:title",content:"DiSpace Knowledge Base"},{property:"og:description",content:"Articles about web design, e-commerce, SEO and branding - from a studio that builds high-converting websites."},{property:"og:locale",content:"en_GB"}
1630],links:zt("/en/knowledge-base","/pl/baza-wiedzy","/en/knowledge-base")})});function jee({slug:t,categorySlug:e,index:a=0}){const i=fl.find(c=>c.slug===t&&c.categorySlug===e),r=pC.find(c=>c.slug===i.categorySlug),s=hC(i.slug);return k.jsx(Lt.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-10%"},transition:{duration:.55,ease:TY,delay:a%6*.05},className:"h-full",children:k.jsxs(Xi,{to:"/en/knowledge-base/$kategoria/$slug",params:{kategoria:i.categorySlug,slug:i.slug},className:"group flex h-full flex-col overflow-hidden rounded-3xl border bg-white transition-all duration-500 hover:-translate-y-1.5 hover:shadow-[0_30px_70px_-20px_rgba(10,14,26,0.22)]",style:{borderColor:"rgba(10,14,26,0.08)"},children:[k.jsxs("div",{className:"relative h-[200px] overflow-hidden",children:[k.jsx("img",{src:s,alt:i.title,className:"absolute inset-0 h-full w-full object-cover transition-transform duration-[1.4s] ease-out group-hover:scale-110",loading:"lazy"}),k.jsx("div",{"aria-hidden":!0,className:"absolute inset-0",style:{background:"linear-gradient(180deg, rgba(7,12,22,0.15) 0%, rgba(7,12,22,0.7) 100%)"}}),k.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 mix-blend-overlay opacity-60",style:{background:`radial-gradient(80% 100% at 100% 100%, ${r.accent}77 0%, transparent 65%)`}}),k.jsx("div",{className:"absolute left-5 top-5",children:k.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border px-3 py-1.5 text-white",style:{borderColor:"rgba(255,255,255,0.28)",background:"rgba(10,14,26,0.55)",backdropFilter:"blur(10px)",fontFamily:u_,fontSize:10,fontWeight:600,letterSpacing:"0.22em",textTransform:"uppercase"},children:[k.jsx("span",{className:"h-1.5 w-1.5 rounded-full",style:{background:r.accent}}),r.name]})})]}),k.jsxs("div",{className:"flex flex-1 flex-col p-7",children:[k.jsx("h3",{className:"text-[#0A0E1A] transition-colors group-hover:text-[#1e56a8]",style:{fontFamily:u_,fontSize:19,fontWeight:600,letterSpacing:"-0.022em",lineHeight:1.25},children:i.title}),k.jsx("p",{className:"mt-3 mb-7 text-[#2C3142]/75",style:{fontFamily:d_,fontSize:14.5,lineHeight:1.6},children:i.excerpt}),k.jsxs("div",{className:"mt-auto flex items-center justify-between border-t pt-6 text-[#5C6478]",style:{fontFamily:d_,fontSize:12.5,borderColor:"rgba(10,14,26,0.06)"},children:[k.jsx("span",{children:dC(i.date)}),k.jsxs("span",{className:"inline-flex items-center gap-3",children:[k.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[k.jsx(ih,{size:12})," ",i.readMinutes," min"]}),k.jsx($a,{size:14,className:"text-[#0A0E1A] transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})]})]})]})})}const AY=[{q:"Do you design websites for businesses based in the UK?",a:"Yes â UK web design has been our core specialism since 2018. We build websites for British and international businesses across Glasgow, Edinburgh, Manchester, London and the rest of the UK and Ireland, and every project is delivered to UK legal standards (GDPR, cookie policy, T&Cs) and aligned with local buying habits. The result is a site that's ready to win clients in the British market from day one â not a generic template that needs patching afterwards.",tag:"UK market"},{q:"What does your website and e-commerce development process look like?",a:"We deliver web design and e-commerce development end-to-end: it starts with a short brief and a clear set of business goals, then moves into information architecture and UX, a bespoke layout in Figma, and finally a clean build in WordPress or WooCommerce â complete with payments, courier integrations and a friendly editor panel. Once you're live we stay onboard for updates, backups, monitoring and small changes, so you don't have to chase a developer every time a new service or product needs to go up.",tag:"Process"},{q:"Do you offer affordable web design in the UK?",a:"Yes â we offer affordable web design in the UK based on a proven starter framework that lets us launch a professional business website from £690, with full responsiveness, baseline SEO and fast loading on mobile. For larger builds â WooCommerce shops, multilingual sites or booking platforms â we prepare a bespoke quote, but we always show exactly what's included
1630so there are no surprises mid-project.",tag:"Pricing"},{q:"Do you also handle SEO optimisation for the site?",a:"Yes â SEO optimisation is baked into the build, not bolted on later. From day one we research target keywords, plan a clean H1âH3 structure, configure Schema, Rank Math, Google Search Console and Core Web Vitals. After launch we can run ongoing on-page SEO and local SEO for Google Maps across Glasgow, Edinburgh and other UK cities â so your site is ready to climb the first page of Google without expensive âSEO rescuesâ a year down the line.",tag:"SEO"},{q:"Why do you build on WordPress and what does that mean for me as a client?",a:"We choose WordPress deliberately: it's the most popular CMS in the world (over 40% of all websites), which means a huge ecosystem of plugins, integrations and experts â and zero lock-in with a single agency. In practice, once your site is live you can edit text, images, prices and blog posts yourself from a clear admin panel without touching code; it takes about fifteen minutes to learn. WordPress also pairs beautifully with WooCommerce and with payment providers like Stripe, PayPal and Klarna, so the platform grows with your business.",tag:"WordPress"},{q:"Will my new website work properly on phones and tablets?",a:"Yes â every site is designed mobile-first, meaning the smartphone layout is built first and then expanded to tablet and desktop. We test responsiveness on real iOS and Android devices, use large readable buttons, lightweight images and fast loading even on patchy 4G, because phones now drive most of the traffic and buying decisions in the UK. The pay-off: lower bounce rates, higher conversion, and better Google rankings â the algorithm has favoured mobile-optimised sites for years.",tag:"Mobile-first"},{q:"Can you take over a website that another agency built?",a:"Yes, we regularly take over projects from other studios and freelancers â we run a technical and SEO audit, tidy the code, swap out outdated plugins and deliver a redesign while preserving existing organic traffic and URLs. If the old site already had Google traction, we secure it with proper 301 redirects and hreflang tags so you don't lose a single ranking during migration.",tag:"Migration"},{q:"How long does it take to build a website or online shop?",a:"A standard business website of up to eight pages takes 3â5 working weeks; a WooCommerce shop with full payment, courier and inventory integration takes 6â10 weeks depending on product count and bespoke features. We work in weekly milestones with a live preview, so at every step you can see what's done and when the next iteration lands â no âagency silenceâ for a month.",tag:"Timeline"}],PY=[{q:"What does Google SEO optimisation involve and how long does it take?",a:"SEO optimisation for Google is a long-game discipline that blends technical work, content marketing and authority building through external links. First meaningful ranking gains usually appear after 2â3 months, with stable results (top 10 for competitive keywords) after 4â8 months of consistent work. Local SEO for Glasgow, Edinburgh or London can deliver the first calls from customers within a few weeks.",tag:"SEO"},{q:"Do you run Google Ads and Meta Ads campaigns for UK businesses?",a:"Yes â we run Google Ads (Search, Performance Max, remarketing) and Meta Ads (Facebook and Instagram) for British and Polish-owned businesses operating in the UK and Ireland. We set up conversion tracking, write ad copy, test static and video creatives, and every month you get a clean report covering ROAS, CPL and a concrete recommendation for the next period â without the agency jargon.",tag:"Ads"},{q:"What is local SEO and why does it matter so much for UK businesses?",a:"Local SEO is optimisation for searches that include a city or neighbourhood (âhairdresser Glasgowâ, âmechanic Edinburghâ) and for Google's map pack via your Google Business Profile. For service businesses across the UK it's one of the fastest and most cost-effective lead channels â a well-run Business Profile with strong reviews can generate dozens of calls per month without a single pound spent on paid ads.",tag:"Local SEO"},{q:"Do you need to have built the website yourselves to run our marketing?",a:"No â we work with sites built on any tech stack (WordPress, Shopify, Wix, Squarespace, custom). We audit, connect GA4, Tag Manager and Search Console, and then flag the specific technical and content fixes needed for campaigns and SEO to perform. If deeper work is required we
1630can deliver it in-house or collaborate with your existing developer.",tag:"Collaboration"},{q:"How do you report on marketing results?",a:"Every month you get a clear PDF report or Looker Studio dashboard covering the metrics that matter: organic traffic, keyword positions, ad spend, cost per lead, return on ad spend (ROAS), plus concrete insights and recommendations. Once a quarter we also run a longer strategic review to step back and see what's working â in English or Polish, whichever you prefer.",tag:"Reporting"},{q:"Can I start with just one service, like SEO, and add more later?",a:"Yes â most clients start with a single focus (SEO, Google Ads, or Instagram management) and bring in additional services after 2â3 months once they see the first results. We don't require long-term contracts or large starter budgets â you can begin with a trial package and scale as your business grows.",tag:"Flexibility"}],CY=[{q:"Does a logo and brand identity project include print-ready files?",a:"Yes â every logo is delivered as a full production pack: vector SVG, AI and EPS files, transparent PNGs, CMYK colour profiles for print and RGB for screen, plus a brand guidelines document. You can send the files straight to any printer in the UK or Poland without ever coming back to us for âextra formatsâ.",tag:"Files"},{q:"Do you also design packaging, labels and restaurant menus?",a:"Yes â from wine, beer and cosmetics labels, through e-commerce boxes and tubes, to restaurant menus, food-service flyers and à la carte cards. We work with local printers in Glasgow and London and with production partners in Poland â we can run the whole print process or hand you final files to use with your trusted printer.",tag:"Print"},{q:"Can I order design only, without printing?",a:"Of course â most clients take the design files only and arrange print themselves or with a local printer they already trust. You get all production files, a quick prep-for-print guide (bleeds, crop marks, colour profiles) and our support if the printer has any technical questions.",tag:"Files"},{q:"Will the branding stay consistent with my website and ad campaigns?",a:"Yes â it's our hallmark. When we also build your website and run social media, the visual identity automatically ties together the site layout, social templates, ad creatives and printed materials. Your brand looks coherent wherever your customer meets it â from an Instagram post, to the website, to a business card handed over in a meeting.",tag:"Consistency"},{q:"How much does a logo and brand identity cost at DiSpace?",a:"A logo alone starts at £290 and includes 2â3 concepts, one round of revisions and final production files. A full visual identity (logo + colour system + typography + brand guidelines + business cards, letterhead and social templates) starts at £990. We always quote upfront â no âextra charge for every emailâ.",tag:"Pricing"},{q:"How long does it take to create a logo or full brand identity?",a:"A logo alone takes 2â3 weeks; a full visual identity with brand guidelines and a complete template set takes 4â6 weeks. Pace depends largely on your feedback speed â we work in clearly defined stages (moodboard â concepts â direction â refinement â final files) so you always know what's coming next.",tag:"Timeline"}],mC="/assets/hero-design-druk-8vR10L1V.webp",RY=()=>W(()=>import("./en.services.design-print-CVYtApSi.js"),__vite__mapDeps([274,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20])),DY=q()({head:()=>({meta:[{title:"Logo, Branding & Print Design UK | DiSpace Glasgow"},{name:"description",content:"Logo design, brand identity, business cards, flyers, rollups and packaging. Print and delivery across the UK â free project quote within 24 h."},{property:"og:title",content:"Logo, Branding & Print Design UK | DiSpace Glasgow"},{property:"og:description",content:"Branding and printed materials designed with attention to every detail â for brands that want to stand out on the shelf and online."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/services/design-print"}],links:[...zt("/en/services/design-print","/pl/oferta/design-druk","/en/services/design-print"),{rel:"preload",as:"image",href:mC,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:CY.map(t=>
1630({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})},aa({name:"Logo, branding & print design",description:"Logo design, brand identity, business cards, flyers, rollups and packaging â full DTP and print production.",url:"https://dispace.uk/en/services/design-print",serviceType:"Graphic design & print",areaServed:["GB","IE"]})]}),component:G(RY,"component")}),OY="/assets/hero-marketing-seo-BilvCPxh.webp",UY=()=>W(()=>import("./en.services.marketing-seo-CGQbxdiJ.js"),__vite__mapDeps([275,63,64,33,32,10,23,21,65,66,67,3,68,69,70,71,8,9,47,16,72,49,22])),LY=q()({head:()=>({meta:[{title:"SEO, Google Ads & Meta Ads Agency UK | DiSpace"},{name:"description",content:"SEO, Google Ads and Meta Ads that turn traffic into paying customers. Monthly reports, real leads, no 12-month lock-in â free strategy call in 24 h."},{property:"og:title",content:"SEO, Google Ads & Meta Ads Agency UK | DiSpace"},{property:"og:description",content:"SEO, performance and social in one team. Predictable enquiries for UK & Irish businesses â turn ad spend into a measurable return every month."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/services/marketing-seo"}],links:[...zt("/en/services/marketing-seo","/pozycjonowanie-uk","/en/services/marketing-seo"),{rel:"preload",as:"image",href:OY,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:PY.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})},aa({name:"Marketing, SEO & paid campaigns",description:"SEO positioning, Google Ads and Meta Ads campaigns, social media and content marketing for businesses in the UK and Ireland.",url:"https://dispace.uk/en/services/marketing-seo",serviceType:"SEO & digital marketing",areaServed:["GB","IE"]})]}),component:G(UY,"component")}),KY="/assets/hero-strony-sklepy-QvUyv-eh.webp",MY=()=>W(()=>import("./en.services.web-shops-jKBdMaQa.js"),__vite__mapDeps([276,63,64,33,32,10,23,21,65,66,153,154,155,89,69,156,67,3,157,24,15,8,48,26,158,91,68,70,71,9,159,22])),NY=q()({head:()=>({meta:[{title:"Web Design & E-commerce Stores UK | DiSpace Glasgow"},{name:"description",content:"Fast WordPress websites and WooCommerce stores for UK & Ireland businesses. SEO-optimised, mobile-first, Core Web Vitals ready â free quote within 24 h."},{property:"og:title",content:"Web Design & E-commerce Stores UK | DiSpace Glasgow"},{property:"og:description",content:"Corporate websites, online stores, redesigns and ongoing support â one team looking after your entire online presence."},{property:"og:locale",content:"en_GB"},{property:"og:url",content:"https://dispace.uk/en/services/web-shops"}],links:[...zt("/en/services/web-shops","/strony-internetowe-uk","/en/services/web-shops"),{rel:"preload",as:"image",href:KY,fetchpriority:"high"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:AY.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})},aa({name:"Websites & e-commerce stores",description:"WordPress websites and WooCommerce stores designed for businesses in the UK and Ireland â fast, SEO-optimised and built for sales.",url:"https://dispace.uk/en/services/web-shops",serviceType:"Web design & e-commerce",areaServed:["GB","IE"]})]}),component:G(MY,"component")}),BY=()=>W(()=>import("./pl.baza-wiedzy.index-BYrPlsVu.js"),[]),p_=wa.fonts.display,h_=wa.fonts.body,$Y=[.22,1,.36,1],IY=q()({component:G(BY,"component"),head:()=>({meta:[{title:"Baza wiedzy | Blog o stronach, SEO i marketingu â DiSpace"},{name:"description",content:"Praktyczne poradniki o stronach WordPress, sklepach WooCommerce, SEO, brandingu i reklamach Meta Ads. Wiedza, która realnie zwiÄksza sprzedaż."},{property:"og:title",content:"Blog DiSpace â strony, e-commerce, SEO i marketing"},{property:"og:description",content:"ArtykuÅy o webdesignie, SEO i reklamach dla firm w UK â od zespoÅu, który projektuje i wdraża strony sprzedażowe."}
1630],links:zt("/pl/baza-wiedzy","/pl/baza-wiedzy","/en/knowledge-base")})});function vee({slug:t,categorySlug:e,index:a=0}){const i=gu.find(c=>c.slug===t&&c.categorySlug===e),r=lC.find(c=>c.slug===i.categorySlug),s=cC(i.slug);return k.jsx(Lt.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-10%"},transition:{duration:.55,ease:$Y,delay:a%6*.05},className:"h-full",children:k.jsxs(Xi,{to:"/baza-wiedzy/$kategoria/$slug",params:{kategoria:i.categorySlug,slug:i.slug},className:"group flex h-full flex-col overflow-hidden rounded-3xl border bg-white transition-all duration-500 hover:-translate-y-1.5 hover:shadow-[0_30px_70px_-20px_rgba(10,14,26,0.22)]",style:{borderColor:"rgba(10,14,26,0.08)"},children:[k.jsxs("div",{className:"relative h-[200px] overflow-hidden",children:[k.jsx("img",{src:s,alt:i.title,className:"absolute inset-0 h-full w-full object-cover transition-transform duration-[1.4s] ease-out group-hover:scale-110",loading:"lazy"}),k.jsx("div",{"aria-hidden":!0,className:"absolute inset-0",style:{background:"linear-gradient(180deg, rgba(7,12,22,0.15) 0%, rgba(7,12,22,0.7) 100%)"}}),k.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 mix-blend-overlay opacity-60",style:{background:`radial-gradient(80% 100% at 100% 100%, ${r.accent}77 0%, transparent 65%)`}}),k.jsx("div",{className:"absolute left-5 top-5",children:k.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border px-3 py-1.5 text-white",style:{borderColor:"rgba(255,255,255,0.28)",background:"rgba(10,14,26,0.55)",backdropFilter:"blur(10px)",fontFamily:p_,fontSize:10,fontWeight:600,letterSpacing:"0.22em",textTransform:"uppercase"},children:[k.jsx("span",{className:"h-1.5 w-1.5 rounded-full",style:{background:r.accent}}),r.name]})})]}),k.jsxs("div",{className:"flex flex-1 flex-col p-7",children:[k.jsx("h3",{className:"text-[#0A0E1A] transition-colors group-hover:text-[#1e56a8]",style:{fontFamily:p_,fontSize:19,fontWeight:600,letterSpacing:"-0.022em",lineHeight:1.25},children:i.title}),k.jsx("p",{className:"mt-3 mb-7 text-[#2C3142]/75",style:{fontFamily:h_,fontSize:14.5,lineHeight:1.6},children:i.excerpt}),k.jsxs("div",{className:"mt-auto flex items-center justify-between border-t pt-6 text-[#5C6478]",style:{fontFamily:h_,fontSize:12.5,borderColor:"rgba(10,14,26,0.06)"},children:[k.jsx("span",{children:dC(i.date)}),k.jsxs("span",{className:"inline-flex items-center gap-3",children:[k.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[k.jsx(ih,{size:12})," ",i.readMinutes," min"]}),k.jsx($a,{size:14,className:"text-[#0A0E1A] transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})]})]})]})})}const WY=()=>W(()=>import("./pl.oferta.design-druk-MdOjV9Da.js"),__vite__mapDeps([277,86,63,87,33,88,69,89,90,56,91,9,92,16,11,12,47,48,13,66,71,10,21,67,3,68,70,20])),GY=q()({head:()=>({meta:[{title:"Logo, branding i projekty do druku w UK | DiSpace Glasgow"},{name:"description",content:"Projektujemy logo, identyfikacjÄ wizualnÄ
, wizytówki, ulotki, rollupy i opakowania. Druk z dostawÄ
w caÅym UK â bezpÅatna wycena projektu w 24 h."},{property:"og:title",content:"Logo, branding i projekty do druku w UK | DiSpace Glasgow"},{property:"og:description",content:"Branding i materiaÅy drukowane projektowane z dbaÅoÅciÄ
o każdy detal â dla marek, które chcÄ
siÄ wyróżniÄ."},{property:"og:url",content:"https://dispace.uk/pl/oferta/design-druk"}],links:[...zt("/pl/oferta/design-druk","/pl/oferta/design-druk","/en/services/design-print"),{rel:"preload",as:"image",href:mC,fetchpriority:"high"}],scripts:[Ea(K9),aa({name:"Logo, branding i materiaÅy do druku",description:"Projektowanie logo, identyfikacji wizualnej, wizytówek, ulotek, rollupów i opakowaÅ â peÅna obsÅuga DTP i druku.",url:"https://dispace.uk/pl/oferta/design-druk",serviceType:"Graphic design & print",areaServed:["GB","IE","PL"]})]}),component:G(WY,"component")}),VY=()=>W(()=>import("./en.knowledge-base._kategoria.index-CqlGpJ9Y.js"),__vite__mapDeps([278,279,32])),FY=()=>W(()=>import("./en.knowledge-base._kategoria.index-BDM96BT7.js"),__vite__mapDeps([280,279,32])),HY=()=>W(()=>import("./en.knowledge-base._kategoria.index-BOUkGbB6.js"),__vite__mapDeps([281,279,32])),qY=q()({loader:({params:t})=>{const e=yC(t.kategoria);if(!e)throw Ve();return{category:e}},head:({loaderData:t,params:e})=>{const a=t?.category,i=a?`${a.name} · DiSpace Knowledge Base`:"DiSpace Knowledge Base";return{meta:[{title:i},{name:"description",content:a?.description??""},{property:"og:title",content:i},{property:"og:description",content:a?.description??""},{property:"og:locale",content:"en_GB"}],links:zt(`/en/knowledge-base/${e.kategoria}`,null,`/en/knowledge-base/${e.kategoria}`)}},component:G(HY,"component"),notFoundComponent:G(FY,"notFoundComponent"),errorComponent:G(VY,"errorComponent")}),ZY=()=>W(()=>import("./en.knowledge-base._kategoria._slug-ZrlSV-wq.js"),__vite__mapDeps([282,283,32])),YY=()=>W(()=>import("./en.knowledge-base._kategoria._slug-CKUNshmK.js"),__vite__mapDeps([284,283,32])),JY=()=>W(()=>import("./en.knowledge-base._kategoria._slug-BddCqKZV.js"),__vite__mapDeps([285,283,32,286,61,6,7,70,71])),QY=q()({loader:({params:t})=>{const e=yC(t.kategoria),a=e?xY(t.kategoria,t.slug):void 0;if(!e||!a)throw Ve();return{category:e,article:a}},head:({loaderData:t,params:e})=>{const a=t?.article,i=t?.category,r=a?`${a.title} · ${i?.name} · DiSpace`:"Article · DiSpace",s=a?hC(a.slug):void 0,c=`https://dispace.uk/en/knowledge-base/${e.kategoria}/${e.slug}
1630`,d=a&&i?[rt({url:c,headline:a.title,description:a.excerpt,image:s,datePublished:a.date,authorName:a.author.name,inLanguage:"en-GB"}),Re([{name:"Knowledge base",url:"https://dispace.uk/en/knowledge-base"},{name:i.name,url:`https://dispace.uk/en/knowledge-base/${e.kategoria}`},{name:a.title,url:c}])]:[];return{meta:[{title:r},{name:"description",content:a?.excerpt??""},{property:"og:title",content:a?.title??r},{property:"og:description",content:a?.excerpt??""},{property:"og:type",content:"article"},{property:"og:locale",content:"en_GB"},{property:"og:url",content:c},...s?[{property:"og:image",content:s},{name:"twitter:image",content:s}]:[]],links:[...zt(`/en/knowledge-base/${e.kategoria}/${e.slug}`,null,`/en/knowledge-base/${e.kategoria}/${e.slug}`),...s?[{rel:"preload",as:"image",href:s,fetchpriority:"high"}]:[]],scripts:d}},component:G(JY,"component"),notFoundComponent:G(YY,"notFoundComponent"),errorComponent:G(ZY,"errorComponent")}),XY=()=>W(()=>import("./pl.baza-wiedzy._kategoria.index-vevZqgL3.js"),__vite__mapDeps([287,288,32])),eJ=()=>W(()=>import("./pl.baza-wiedzy._kategoria.index-Dm35G7Bk.js"),__vite__mapDeps([289,288,32])),tJ=()=>W(()=>import("./pl.baza-wiedzy._kategoria.index-DOcaIj97.js"),__vite__mapDeps([290,288,32])),aJ=q()({loader:({params:t})=>{const e=uC(t.kategoria);if(!e)throw Ve();return{category:e}},head:({loaderData:t,params:e})=>{const a=t?.category,i=a?`${a.name} · Baza wiedzy DiSpace`:"Baza wiedzy DiSpace";return{meta:[{title:i},{name:"description",content:a?.description??""},{property:"og:title",content:i},{property:"og:description",content:a?.description??""}],links:zt(`/pl/baza-wiedzy/${e.kategoria}`,`/pl/baza-wiedzy/${e.kategoria}`,null)}},component:G(tJ,"component"),notFoundComponent:G(eJ,"notFoundComponent"),errorComponent:G(XY,"errorComponent")}),iJ=()=>W(()=>import("./pl.baza-wiedzy._kategoria._slug-_irrPUTX.js"),__vite__mapDeps([291,292,32])),nJ=()=>W(()=>import("./pl.baza-wiedzy._kategoria._slug-D6sjegYC.js"),__vite__mapDeps([293,292,32])),oJ=()=>W(()=>import("./pl.baza-wiedzy._kategoria._slug-CFwGZkSQ.js"),__vite__mapDeps([294,292,32,286,61,6,7,70,71])),rJ=q()({loader:({params:t})=>{const e=uC(t.kategoria),a=e?vY(t.kategoria,t.slug):void 0;if(!e||!a)throw Ve();return{category:e,article:a}},head:({loaderData:t,params:e})=>{const a=t?.article,i=t?.category,r=a?`${a.title} · ${i?.name} · DiSpace`:"ArtykuŠ· DiSpace",s=a?cC(a.slug):void 0,c=`https://dispace.uk/pl/baza-wiedzy/${e.kategoria}/${e.slug}
1630`,d=a&&i?[rt({url:c,headline:a.title,description:a.excerpt,image:s,datePublished:a.date,authorName:a.author.name,inLanguage:"pl-PL"}),Re([{name:"Baza wiedzy",url:"https://dispace.uk/pl/baza-wiedzy"},{name:i.name,url:`https://dispace.uk/pl/baza-wiedzy/${e.kategoria}`},{name:a.title,url:c}])]:[];return{meta:[{title:r},{name:"description",content:a?.excerpt??""},{property:"og:title",content:a?.title??r},{property:"og:description",content:a?.excerpt??""},{property:"og:type",content:"article"},{property:"og:url",content:c},...s?[{property:"og:image",content:s},{name:"twitter:image",content:s}]:[]],links:[...zt(`/pl/baza-wiedzy/${e.kategoria}/${e.slug}`,`/pl/baza-wiedzy/${e.kategoria}/${e.slug}`,null),...s?[{rel:"preload",as:"image",href:s,fetchpriority:"high"}]:[]],scripts:d}},component:G(oJ,"component"),notFoundComponent:G(nJ,"notFoundComponent"),errorComponent:G(iJ,"errorComponent")}),sJ=w9.update({id:"/",path:"/",getParentRoute:()=>le}),lJ=v9.update({id:"/$",path:"/$",getParentRoute:()=>le}),ia=x9.update({id:"/admin",path:"/admin",getParentRoute:()=>le}),cJ=H9.update({id:"/agencja-reklamowa-uk",path:"/agencja-reklamowa-uk",getParentRoute:()=>le}),uJ=a7.update({id:"/ankiety-i-formularze-w-ui-zasady-tworzenia",path:"/ankiety-i-formularze-w-ui-zasady-tworzenia",getParentRoute:()=>le}),dJ=n7.update({id:"/apple-ads-management-uk",path:"/apple-ads-management-uk",getParentRoute:()=>le}),pJ=r7.update({id:"/apple-ads-setup-uk",path:"/apple-ads-setup-uk",getParentRoute:()=>le}),hJ=l7.update({id:"/apple-ads-uk",path:"/apple-ads-uk",getParentRoute:()=>le}),yJ=u7.update({id:"/banery-reklamowe-uk",path:"/banery-reklamowe-uk",getParentRoute:()=>le}),mJ=p7.update({id:"/cookies",path:"/cookies",getParentRoute:()=>le}),fJ=y7.update({id:"/copywriting-uk",path:"/copywriting-uk",getParentRoute:()=>le}),wJ=f7.update({id:"/dispace-formularz",path:"/dispace-formularz",getParentRoute:()=>le}),Yt=g7.update({id:"/en",path:"/en",getParentRoute:()=>le}),gJ=k7.update({id:"/faq",path:"/faq",getParentRoute:()=>le}),kJ=b7.update({id:"/filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne",path:"/filtrowanie-i-sortowanie-tresci-jak-zaprojektowac-by-bylo-intuicyjne",getParentRoute:()=>le}),zJ=v7.update({id:"/gadzety-reklamowe-uk",path:"/gadzety-reklamowe-uk",getParentRoute:()=>le}),bJ=x7.update({id:"/google-ads-management-uk",path:"/google-ads-management-uk",getParentRoute:()=>le}),jJ=T7.update({id:"/google-ads-setup-uk",path:"/google-ads-setup-uk",getParentRoute:()=>le}),vJ=A7.update({id:"/google-ads-uk",path:"/google-ads-uk",getParentRoute:()=>le}),SJ=C7.update({id:"/grafiki-social-media-uk",path:"/grafiki-social-media-uk",getParentRoute:()=>le}),xJ=D7.update({id:"/identyfikacja-wizualna-uk",path:"/identyfikacja-wizualna-uk",getParentRoute:()=>le}),_J=U7.update({id:"/ile-kosztuje-pozycjonowanie-uk-cennik-2026",path:"/ile-kosztuje-pozycjonowanie-uk-cennik-2026",getParentRoute:()=>le}),TJ=K7.update({id:"/jak-uzyskac-pierwsza-strone-google-w-3-miesiace",path:"/jak-uzyskac-pierwsza-strone-google-w-3-miesiace",getParentRoute:()=>le}),EJ=N7.update({id:"/kampanie-facebook-ads",path:"/kampanie-facebook-ads",getParentRoute:()=>le}),AJ=$7.update({id:"/kampanie-google-ads",path:"/kampanie-google-ads",getParentRoute:()=>le}),PJ=W7.update({id:"/kampanie-reklamowe-facebook",path:"/kampanie-reklamowe-facebook",getParentRoute:()=>le}),CJ=V7.update({id:"/kampanie-reklamowe-google-adwords",path:"/kampanie-reklamowe-google-adwords",getParentRoute:()=>le}),RJ=H7.update({id:"/kampanie-reklamowe-szkocja",path:"/kampanie-reklamowe-szkocja",getParentRoute:()=>le}),DJ=Z7.update({id:"/kampanie-reklamowe-tiktok",path:"/kampanie-reklamowe-tiktok",getParentRoute:()=>le}),OJ=J7.update({id:"/kampanie-reklamowe-uk",path:"/kampanie-reklamowe-uk",getParentRoute:()=>le}),UJ=X7.update({id:"/kampanie-reklamowe-uk-google-ads-vs-meta-ads",path:"/kampanie-reklamowe-uk-google-ads-vs-meta-ads",getParentRoute:()=>le}),LJ=tV.update({id:"/kampanie-reklamowe-uk-ile-kosztuja-budzet-2026",path:"/kampanie-reklamowe-uk-ile-kosztuja-budzet-2026",getParentRoute:()=>le}),KJ=iV.update({id:"/kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku",path:"/kampanie-reklamowe-uk-jak-uruchomic-krok-po-kroku",getParentRoute:()=>le}),MJ=oV.update({id:"/kampanie-reklamowe-wielka-brytania",path:"/kampanie-reklamowe-wielka-brytania",getParentRoute:()=>le}),NJ=uV.update({id:"/kampanie-reklamowe-{$city}",path:"/kampanie-reklamowe-{$city}",getParentRoute:()=>le}),BJ=pV.update({id:"/kontakt",path:"/kontakt",getParentRoute:()=>le}),$J=yV.update({id:"/litery-3d-led-efekt-halo-czy-front-lit",path:"/litery-3d-led-efekt-halo-czy-front-lit",getParentRoute:()=>le}),IJ=_F.update({id:"/litery-3d-swietlne",path:"/litery-3d-swietlne",getParentRoute:()=>le}),WJ=EF.update({id:"/litery-3d-swietlne-cennik-uk",path:"/litery-3d-swietlne-cennik-uk",getParentRoute:()=>le}),GJ=PF.update({id:"/litery-przestrzenne-ze-stali-nierdzewnej-uk",path:"/litery-przestrzenne-ze-stali-nierdzewnej-uk",getParentRoute:()=>le}),VJ=RF.update({id:"/microsoft-ads-management-uk",path:"/microsoft-ads-management-uk",getParentRoute:()=>le}),FJ=OF.update({id:"/microsoft-ads-setup-uk",path:"/microsoft-ads-setup-uk",getParentRoute:()=>le}),HJ=LF.update({id:"/microsoft-ads-uk",path:"/microsoft-ads-uk",getParentRoute:()=>le}),qJ=MF.update({id:"/migracja-sklepu-do-uk",path:"/migracja-sklepu-do-uk",getParentRoute:()=>le}),ZJ=BF.update({id:"/obsluga-social-media-uk",path:"/obsluga-social-media-uk",getParentRoute:()=>le}),YJ=IF.update({id:"/paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel",path:"/paczki-do-polski-przeprowadzki-szkocja-polska-nova-parcel",getParentRoute:()=>le}),Ia=GF.update({id:"/pl",path:"/pl",getParentRoute:()=>le}),JJ=FF.update({id:"/podswietlany-szyld-uk-advertisement-consent",path:"/podswietlany-szyld-uk-advertisement-consent",getParentRoute:()=>le}),QJ=qF.update({id:"/polityka-prywatnosci",path:"/polityka-prywatnosci",getParentRoute:()=>le}),XJ=YF.update({id:"/portfolio",path:"/portfolio",getParentRoute:()=>le}),eQ=QF.update({id:"/pozycjonowanie-uk",path:"/pozycjonowanie-uk",getParentRoute:()=>le}),tQ=eH.update({id:"/pozycjonowanie-uk-audyt-seo-krok-po-kroku",path:"/pozycjonowanie-uk-audyt-seo-krok-po-kroku",getParentRoute:()=>le}),aQ=aH.update({id:"/pozycjonowanie-uk-dla-polskich-firm-w-anglii",path:"/pozycjonowanie-uk-dla-polskich-firm-w-anglii",getParentRoute:()=>le}),iQ=nH.update({id:"/pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac",path:"/pozycjonowanie-uk-frazy-kluczowe-2026-jak-wybrac",getParentRoute:()=>le}),nQ=rH.update({id:"/pozycjonowanie-uk-jak-wejsc-do-top-3-google",path:"/pozycjonowanie-uk-jak-wejsc-do-top-3-google",getParentRoute:()=>le}),oQ=lH.update({id:"/pozycjonowanie-uk-lokalne-google-business-profile",path:"/pozycjonowanie-uk-lokalne-google-business-profile",getParentRoute:()=>le}),rQ=uH.update({id:"/pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo",path:"/pozycjonowanie-uk-vs-polska-czym-sie-rozni-seo",getParentRoute:()=>le}),sQ=pH.update({id:"/pozycjonowanie-wielka-brytania",path:"/pozycjonowanie-wielka-brytania",getParentRoute:()=>le}),lQ=yH.update({id:"/projekt-logo-uk",path:"/projekt-logo-uk",getParentRoute:()=>le}
1630),cQ=fH.update({id:"/projekt-ulotki-uk",path:"/projekt-ulotki-uk",getParentRoute:()=>le}),uQ=gH.update({id:"/projekt-wizytowki-uk",path:"/projekt-wizytowki-uk",getParentRoute:()=>le}),dQ=zH.update({id:"/projekty-graficzne-uk",path:"/projekty-graficzne-uk",getParentRoute:()=>le}),pQ=jH.update({id:"/regulamin",path:"/regulamin",getParentRoute:()=>le}),hQ=SH.update({id:"/rollupy",path:"/rollupy",getParentRoute:()=>le}),yQ=_H.update({id:"/shopify-uk",path:"/shopify-uk",getParentRoute:()=>le}),mQ=EH.update({id:"/sklep-b2b-uk-panel-hurtowy",path:"/sklep-b2b-uk-panel-hurtowy",getParentRoute:()=>le}),fQ=PH.update({id:"/sklep-online-uk",path:"/sklep-online-uk",getParentRoute:()=>le}),wQ=RH.update({id:"/sklepy-internetowe-szkocja",path:"/sklepy-internetowe-szkocja",getParentRoute:()=>le}),gQ=LH.update({id:"/sklepy-internetowe-uk",path:"/sklepy-internetowe-uk",getParentRoute:()=>le}),kQ=MH.update({id:"/strony-internetowe-szkocja-edynburg-glasgow-aberdeen",path:"/strony-internetowe-szkocja-edynburg-glasgow-aberdeen",getParentRoute:()=>le}),zQ=BH.update({id:"/strony-internetowe-uk-ile-kosztuja-i-jak-wybrac",path:"/strony-internetowe-uk-ile-kosztuja-i-jak-wybrac",getParentRoute:()=>le}),bQ=IH.update({id:"/strony-internetowe-uk-wordpress-vs-nowoczesne-technologie",path:"/strony-internetowe-uk-wordpress-vs-nowoczesne-technologie",getParentRoute:()=>le}),jQ=FH.update({id:"/strony-internetowe-{$city}",path:"/strony-internetowe-{$city}",getParentRoute:()=>le}),vQ=HH.update({id:"/style-guide",path:"/style-guide",getParentRoute:()=>le}),SQ=YH.update({id:"/wdrozenie-sklepu-internetowego-uk-cennik",path:"/wdrozenie-sklepu-internetowego-uk-cennik",getParentRoute:()=>le}),xQ=QH.update({id:"/wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac",path:"/wizualizacje-3d-na-stronie-dewelopera-w-jaki-sposob-wykorzystac",getParentRoute:()=>le}),_Q=eq.update({id:"/woocommerce-uk",path:"/woocommerce-uk",getParentRoute:()=>le}),TQ=aq.update({id:"/woocommerce-vs-shopify-uk",path:"/woocommerce-vs-shopify-uk",getParentRoute:()=>le}),EQ=nq.update({id:"/wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac",path:"/wyskakujace-okienka-kiedy-stosowac-i-jak-zaprojektowac",getParentRoute:()=>le}),AQ=rq.update({id:"/wyszukiwarka-kursow-na-platformie-edukacyjnej",path:"/wyszukiwarka-kursow-na-platformie-edukacyjnej",getParentRoute:()=>le}),PQ=lq.update({id:"/wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna",path:"/wyszukiwarka-na-stronie-gdzie-i-jak-umiescic-aby-byla-uzyteczna",getParentRoute:()=>le}),CQ=uq.update({id:"/",path:"/",getParentRoute:()=>ia}),RQ=pq.update({id:"/analytics",path:"/analytics",getParentRoute:()=>ia}),DQ=yq.update({id:"/automations",path:"/automations",getParentRoute:()=>ia}),OQ=fq.update({id:"/cta-conversions",path:"/cta-conversions",getParentRoute:()=>ia}),UQ=gq.update({id:"/gsc",path:"/gsc",getParentRoute:()=>ia}),fC=zq.update({id:"/leads",path:"/leads",getParentRoute:()=>ia}),LQ=jq.update({id:"/login",path:"/login",getParentRoute:()=>ia}),wC=Sq.update({id:"/meta-ads",path:"/meta-ads",getParentRoute:()=>ia}),KQ=_q.update({id:"/notifications",path:"/notifications",getParentRoute:()=>ia}),MQ=Eq.update({id:"/partner-logos",path:"/partner-logos",getParentRoute:()=>ia}),NQ=Pq.update({id:"/seo",path:"/seo",getParentRoute:()=>ia}),BQ=Rq.update({id:"/seo-dashboard",path:"/seo-dashboard",getParentRoute:()=>ia}),$Q=Oq.update({id:"/seo-experiments",path:"/seo-experiments",getParentRoute:()=>ia}),IQ=Lq.update({id:"/seo-tracking",path:"/seo-tracking",getParentRoute:()=>ia}),WQ=Mq.update({id:"/settings",path:"/settings",getParentRoute:()=>ia}),GQ=Bq.update({id:"/users",path:"/users",getParentRoute:()=>ia}),VQ=Iq.update({id:"/utm-builder",path:"/utm-builder",getParentRoute:()=>ia}),FQ=Gq.update({id:"/baza-wiedzy/",path:"/baza-wiedzy/",getParentRoute:()=>le}),HQ=qq.update({id:"/",path:"/",getParentRoute:()=>Yt}),qQ=Yq.update({id:"/3d-led-letters",path:"/3d-led-letters",getParentRoute:()=>Yt}),ZQ=Qq.update({id:"/contact",path:"/contact",getParentRoute:()=>Yt}),YQ=eZ.update({id:"/cookies",path:"/cookies",getParentRoute:()=>Yt}),JQ=aZ.update({id:"/dispace-form",path:"/dispace-form",getParentRoute:()=>Yt}),QQ=rZ.update({id:"/faq",path:"/faq",getParentRoute:()=>Yt}),XQ=lZ.update({id:"/portfolio",path:"/portfolio",getParentRoute:()=>Yt}),eX=uZ.update({id:"/privacy-policy",path:"/privacy-policy",getParentRoute:()=>Yt}),tX=pZ.update({id:"/seo-{$city}",path:"/seo-{$city}",getParentRoute:()=>Yt}),aX=yZ.update({id:"/terms",path:"/terms",getParentRoute:()=>Yt}),iX=fZ.update({id:"/web-design-{$city}",path:"/web-design-{$city}",getParentRoute:()=>Yt}),nX=VZ.update({id:"/website-quote",path:"/website-quote",getParentRoute:()=>Yt}),oX=HZ.update({id:"/oferta/design-druk",path:"/oferta/design-druk",getParentRoute:()=>le}),rX=ZZ.update({id:"/",path:"/",getParentRoute:()=>Ia}),sX=JZ.update({id:"/cookies",path:"/cookies",getParentRoute:()=>Ia}),lX=XZ.update({id:"/dispace-formularz",path:"/dispace-formularz",getParentRoute:()=>Ia}),cX=tY.update({id:"/faq",path:"/faq",getParentRoute:()=>Ia}),uX=iY.update({id:"/kontakt",path:"/kontakt",getParentRoute:()=>Ia}),dX=oY.update({id:"/polityka-prywatnosci",path:"/polityka-prywatnosci",getParentRoute:()=>Ia}),pX=sY.update({id:"/portfolio",path:"/portfolio",getParentRoute:()=>Ia}),hX=cY.update({id:"/regulamin",path:"/regulamin",getParentRoute:()=>Ia}),yX=pY.update({id:"/wycena-strony",path:"/wycena-strony",getParentRoute:()=>Ia}),mX=yY.update({id:"/$id",path:"/$id",getParentRoute:()=>fC}),fX=fY.update({id:"/callback",path:"/callback",getParentRoute:()=>wC}),wX=gY.update({id:"/baza-wiedzy/$kategoria/",path:"/baza-wiedzy/$kategoria/",getParentRoute:()=>le}),gX=zY.update({id:"/baza-wiedzy/$kategoria/$slug",path:"/baza-wiedzy/$kategoria/$slug",getParentRoute:()=>le}),kX=EY.update({id:"/knowledge-base/",path:"/knowledge-base/",getParentRoute:()=>Yt}),zX=DY.update({id:"/services/design-print",path:"/services/design-print",getParentRoute:()=>Yt}),bX=LY.update({id:"/services/marketing-seo",path:"/services/marketing-seo",getParentRoute:()=>Yt}),jX=NY.update({id:"/services/web-shops",path:"/services/web-shops",getParentRoute:()=>Yt}),vX=IY.update({id:"/baza-wiedzy/",path:"/baza-wiedzy/",getParentRoute:()=>Ia}),SX=GY.update({id:"/oferta/design-druk",path:"/oferta/design-druk",getParentRoute:()=>Ia}),xX=qY.update({id:"/knowledge-base/$kategoria/",path:"/knowledge-base/$kategoria/",getParentRoute:()=>Yt}),_X=QY.update({id:"/knowledge-base/$kategoria/$slug",path:"/knowledge-base/$kategoria/$slug",getParentRoute:()=>Yt}),TX=aJ.update({id:"/baza-wiedzy/$kategoria/",path:"/baza-wiedzy/$kategoria/",getParentRoute:()=>Ia}),EX=rJ.update({id:"/baza-wiedzy/$kategoria/$slug",path:"/baza-wiedzy/$kategoria/$slug",getParentRoute:()=>Ia}),AX={AdminLeadsIdRoute:mX},PX=fC._addFileChildren(AX),CX={AdminMetaAdsCallbackRoute:fX},RX=wC._addFileChildren(CX),DX={AdminAnalyticsRoute:RQ,AdminAutomationsRoute:DQ,AdminCtaConversionsRoute:OQ,AdminGscRoute:UQ,AdminLeadsRoute:PX,AdminLoginRoute:LQ,AdminMetaAdsRoute:RX,AdminNotificationsRoute:KQ,AdminPartnerLogosRoute:MQ,AdminSeoRoute:NQ,AdminSeoDashboardRoute:BQ,AdminSeoExperimentsRoute:$Q,AdminSeoTrackingRoute:IQ,AdminSettingsRoute:WQ,AdminUsersRoute:GQ,AdminUtmBuilderRoute:VQ,AdminIndexRoute:CQ},OX=ia._addFileChildren(DX),UX={En3dLedLettersRoute:qQ,EnContactRoute:ZQ,EnCookiesRoute:YQ,EnDispaceFormRoute:JQ,EnFaqRoute:QQ,EnPortfolioRoute:XQ,EnPrivacyPolicyRoute:eX,EnSeoCh
1630ar123cityChar125Route:tX,EnTermsRoute:aX,EnWebDesignChar123cityChar125Route:iX,EnWebsiteQuoteRoute:nX,EnIndexRoute:HQ,EnServicesDesignPrintRoute:zX,EnServicesMarketingSeoRoute:bX,EnServicesWebShopsRoute:jX,EnKnowledgeBaseIndexRoute:kX,EnKnowledgeBaseKategoriaSlugRoute:_X,EnKnowledgeBaseKategoriaIndexRoute:xX},LX=Yt._addFileChildren(UX),KX={PlCookiesRoute:sX,PlDispaceFormularzRoute:lX,PlFaqRoute:cX,PlKontaktRoute:uX,PlPolitykaPrywatnosciRoute:dX,PlPortfolioRoute:pX,PlRegulaminRoute:hX,PlWycenaStronyRoute:yX,PlIndexRoute:rX,PlOfertaDesignDrukRoute:SX,PlBazaWiedzyIndexRoute:vX,PlBazaWiedzyKategoriaSlugRoute:EX,PlBazaWiedzyKategoriaIndexRoute:TX},MX=Ia._addFileChildren(KX),NX={IndexRoute:sJ,SplatRoute:lJ,AdminRoute:OX,AgencjaReklamowaUkRoute:cJ,AnkietyIFormularzeWUiZasadyTworzeniaRoute:uJ,AppleAdsManagementUkRoute:dJ,AppleAdsSetupUkRoute:pJ,AppleAdsUkRoute:hJ,BaneryReklamoweUkRoute:yJ,CookiesRoute:mJ,CopywritingUkRoute:fJ,DispaceFormularzRoute:wJ,EnRoute:LX,FaqRoute:gJ,FiltrowanieISortowanieTresciJakZaprojektowacByByloIntuicyjneRoute:kJ,GadzetyReklamoweUkRoute:zJ,GoogleAdsManagementUkRoute:bJ,GoogleAdsSetupUkRoute:jJ,GoogleAdsUkRoute:vJ,GrafikiSocialMediaUkRoute:SJ,IdentyfikacjaWizualnaUkRoute:xJ,IleKosztujePozycjonowanieUkCennik2026Route:_J,JakUzyskacPierwszaStroneGoogleW3MiesiaceRoute:TJ,KampanieFacebookAdsRoute:EJ,KampanieGoogleAdsRoute:AJ,KampanieReklamoweFacebookRoute:PJ,KampanieReklamoweGoogleAdwordsRoute:CJ,KampanieReklamoweSzkocjaRoute:RJ,KampanieReklamoweTiktokRoute:DJ,KampanieReklamoweUkRoute:OJ,KampanieReklamoweUkGoogleAdsVsMetaAdsRoute:UJ,KampanieReklamoweUkIleKosztujaBudzet2026Route:LJ,KampanieReklamoweUkJakUruchomicKrokPoKrokuRoute:KJ,KampanieReklamoweWielkaBrytaniaRoute:MJ,KampanieReklamoweChar123cityChar125Route:NJ,KontaktRoute:BJ,Litery3dLedEfektHaloCzyFrontLitRoute:$J,Litery3dSwietlneRoute:IJ,Litery3dSwietlneCennikUkRoute:WJ,LiteryPrzestrzenneZeStaliNierdzewnejUkRoute:GJ,MicrosoftAdsManagementUkRoute:VJ,MicrosoftAdsSetupUkRoute:FJ,MicrosoftAdsUkRoute:HJ,MigracjaSklepuDoUkRoute:qJ,ObslugaSocialMediaUkRoute:ZJ,PaczkiDoPolskiPrzeprowadzkiSzkocjaPolskaNovaParcelRoute:YJ,PlRoute:MX,PodswietlanySzyldUkAdvertisementConsentRoute:JJ,PolitykaPrywatnosciRoute:QJ,PortfolioRoute:XJ,PozycjonowanieUkRoute:eQ,PozycjonowanieUkAudytSeoKrokPoKrokuRoute:tQ,PozycjonowanieUkDlaPolskichFirmWAngliiRoute:aQ,PozycjonowanieUkFrazyKluczowe2026JakWybracRoute:iQ,PozycjonowanieUkJakWejscDoTop3GoogleRoute:nQ,PozycjonowanieUkLokalneGoogleBusinessProfileRoute:oQ,PozycjonowanieUkVsPolskaCzymSieRozniSeoRoute:rQ,PozycjonowanieWielkaBrytaniaRoute:sQ,ProjektLogoUkRoute:lQ,ProjektUlotkiUkRoute:cQ,ProjektWizytowkiUkRoute:uQ,ProjektyGraficzneUkRoute:dQ,RegulaminRoute:pQ,RollupyRoute:hQ,ShopifyUkRoute:yQ,SklepB2bUkPanelHurtowyRoute:mQ,SklepOnlineUkRoute:fQ,SklepyInternetoweSzkocjaRoute:wQ,SklepyInternetoweUkRoute:gQ,StronyInternetoweSzkocjaEdynburgGlasgowAberdeenRoute:kQ,StronyInternetoweUkIleKosztujaIJakWybracRoute:zQ,StronyInternetoweUkWordpressVsNowoczesneTechnologieRoute:bQ,StronyInternetoweChar123cityChar125Route:jQ,StyleGuideRoute:vQ,WdrozenieSklepuInternetowegoUkCennikRoute:SQ,Wizual
1630izacje3dNaStronieDeweloperaWJakiSposobWykorzystacRoute:xQ,WoocommerceUkRoute:_Q,WoocommerceVsShopifyUkRoute:TQ,WyskakujaceOkienkaKiedyStosowacIJakZaprojektowacRoute:EQ,WyszukiwarkaKursowNaPlatformieEdukacyjnejRoute:AQ,WyszukiwarkaNaStronieGdzieIJakUmiescicAbyBylaUzytecznaRoute:PQ,OfertaDesignDrukRoute:oX,BazaWiedzyIndexRoute:FQ,BazaWiedzyKategoriaSlugRoute:gX,BazaWiedzyKategoriaIndexRoute:wX},BX=le._addFileChildren(NX),$X=()=>{const t=new LN;return W3({routeTree:BX,context:{queryClient:t},scrollRestoration:!0,defaultPreloadStaleTime:0})};async function IX(){const t=await $X();let e;if($S){const a=await $S.getOptions();a.serializationAdapters=a.serializationAdapters??[],window.__TSS_START_OPTIONS__=a,e=a.serializationAdapters,t.options.defaultSsr=a.defaultSsr}else e=[],window.__TSS_START_OPTIONS__={serializationAdapters:e};return e.push(QL),t.options.serializationAdapters&&e.push(...t.options.serializationAdapters),t.update({basepath:"",serializationAdapters:e}),t.stores.ids.get().length||await IO(t),t}var WX=IX;function GX(){return WX().finally(()=>window.$_TSR?.h())}var Pw;function VX(){return Pw||(Pw=GX()),k.jsx(e3,{promise:Pw,children:t=>k.jsx(F3,{router:t})})}N.startTransition(()=>{MD.hydrateRoot(document,k.jsx(N.StrictMode,{children:k.jsx(VX,{})}))});const FX=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),HX=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),qX=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ZX=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));export{$a as $,FA as A,X7 as B,tV as C,tP as D,Rk as E,W9 as F,Je as G,see as H,OY as I,Kk as J,hB as K,Xi as L,mB as M,Uk as N,H2 as O,Bg as P,yee as Q,a7 as R,XA as S,cg as T,lB as U,DT as V,LB as W,lg as X,ie as Y,wa as Z,a1 as _,Ts as a,I9 as a$,Ak as a0,CA as a1,Lt as a2,yi as a3,zx as a4,Cn as a5,Rf as a6,rg as a7,ih as a8,mC as a9,MF as aA,yP as aB,mp as aC,IF as aD,FF as aE,gP as aF,eH as aG,aH,nH as aI,rH as aJ,lH as aK,uH as aL,fp as aM,wp as aN,gp as aO,kp as aP,zp as aQ,bp as aR,$9 as aS,Fg as aT,KY as aU,nh as aV,hee as aW,Mh as aX,JN as aY,EH as aZ,RP as a_,rB as aa,QS as ab,Lk as ac,K9 as ad,LE as ae,wI as af,Eg as ag,Lx as ah,oP as ai,Ux as aj,iV as ak,iP as al,Us as am,uV as an,mee as ao,rV as ap,yV as aq,rP as ar,fee as as,EF as at,uP as au,PF as av,pP as aw,Ls as ax,Ks as ay,Ms as az,Es as b,vee as b$,qg as b0,jp as b1,MH as b2,BH as b3,IH as b4,tC as b5,YH as b6,BP as b7,QH as b8,B9 as b9,Lg as bA,t8 as bB,o8 as bC,n8 as bD,r8 as bE,s8 as bF,pZ as bG,fZ as bH,VZ as bI,pY as bJ,fl as bK,pC as bL,hC as bM,dC as bN,CY as bO,PY as bP,AY as bQ,gu as bR,lC as bS,cC as bT,qY as bU,zee as bV,jee as bW,QY as bX,bee as bY,aJ as bZ,gee as b_,Qg as ba,aq as bb,GP as bc,nq as bd,rq as be,lq as bf,Zt as bg,rk as bh,Ac as bi,Sk as b
1630j,ue as bk,fr as bl,iee as bm,A8 as bn,wee as bo,eB as bp,nB as bq,W as br,XP as bs,e1 as bt,CT as bu,Ug as bv,l8 as bw,Ip as bx,$p as by,i8 as bz,As as c,XX as c$,rJ as c0,kee as c1,mV as c2,fV as c3,Kx as c4,_V as c5,LV as c6,JX as c7,ZB as c8,Fq as c9,Yg as cA,SN as cB,wN as cC,ig as cD,ST as cE,mN as cF,fN as cG,ag as cH,bT as cI,PN as cJ,zN as cK,y_ as cL,G8 as cM,AA as cN,V8 as cO,cu as cP,p8 as cQ,RT as cR,qe as cS,QP as cT,y3 as cU,XS as cV,RB as cW,bB as cX,iN as cY,lS as cZ,Dh as c_,Vq as ca,PE as cb,oh as cc,Kh as cd,tee as ce,Qc as cf,DN as cg,Sa as ch,Ri as ci,aee as cj,B2 as ck,fY as cl,$2 as cm,sg as cn,yY as co,ZN as cp,PT as cq,FH as cr,Rx as cs,N9 as ct,d8 as cu,jq as cv,M9 as cw,Gg as cx,vB as cy,V9 as cz,rp as d,pee as d0,Me as d1,kz as d2,Mc as d3,BA as d4,we as d5,lee as d6,dee as d7,uee as d8,T9 as d9,cee as da,YX as db,eee as dc,Sx as dd,oee as de,ree as df,G9 as e,Ig as f,b7 as g,sp as h,Ps as i,k as j,Cs as k,Rs as l,lp as m,cp as n,U7 as o,K7 as p,up as q,N as r,dp as s,RA as t,Nk as u,pp as v,hp as w,Ds as x,yp as y,Os as z};
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.