PageSourceSearch

https://dispace.uk/assets/index-CF9CrRCQ.js

js dispace.uk collected 2026-10-08 15:20:28 UTC 1,574,902 bytes, 1,630 lines download raw bytes

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.