1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BrandKitPage-K4EaBN03.js","assets/i18nInstance-q2P_HHgy.js","assets/charts-DkV6TnjL.js","assets/vendor-BTmKp5cg.js","assets/editor-D6C4M5bA.js","assets/gclid-s4-uAaOo.js","assets/Trans-CIUenQ9J.js","assets/book-open-CwXTcvGo.js","assets/briefcase-CTdW5_oW.js","assets/circle-check-BAHWEsNQ.js","assets/useAutosave-DCfRHPY9.js","assets/MediaPickerModal-D9KvbEzp.js","assets/chevron-left-CwLNGHYw.js","assets/chevron-right-BR267I96.js","assets/UploadOptimizeOptions-BLsALMNQ.js","assets/KiKosten-CRPPZ0nx.js","assets/useDemoGate-CrCIu9RX.js","assets/image-plus-DwFYuZKw.js","assets/layout-grid-BJuVtECI.js","assets/minus-C3i-ie4z.js","assets/plus-CgtUOdAG.js","assets/LoadError-DSo2gvX7.js","assets/shield-alert-B395AsxW.js","assets/type-BpG_n0gs.js","assets/undo-2-ln6NSUWw.js","assets/platforms-BEXDY0J5.js","assets/AiRegionGate-CV0n31I_.js","assets/earth-C0tvwvry.js","assets/BrandFeaturesBar-CrcEXWM8.js","assets/sliders-horizontal-BgM74jI3.js","assets/VoiceDiffPage-Cb-hjT_r.js","assets/plug-Bp1hvniF.js","assets/PlatformIcon-B3xG4_m_.js","assets/GuidePage-Cff0Rm7D.js","assets/arrow-down-DtOMhdoZ.js","assets/calendar-clock-DpJ41EQd.js","assets/LoginPage-Dn7T7375.js","assets/RegisterPage-DD6RMoTr.js","assets/CheckoutPage-Bntmd175.js","assets/PaymentDialog-DQ_z532h.js","assets/format-CjIYuhOb.js","assets/VerifyEmailPage-PhXRbvLG.js","assets/ForgotPasswordPage-DG-OalKF.js","assets/ResetPasswordPage-Bkez4gYQ.js","assets/DashboardPage-wGIm_quC.js","assets/chart-column-BmawJOF9.js","assets/circle-x-CFjv_2Q1.js","assets/circle-BtbOu5JF.js","assets/euro-CXZC7Y1i.js","assets/delta-KMWlV8OP.js","assets/arrow-up-DDDPN6CJ.js","assets/mouse-pointer-click-DGdPj5r0.js","assets/percent-CudQO0r7.js","assets/subDays-BOgwhpyY.js","assets/en-US-DVoE7lPn.js","assets/chartTheme-CnUCzQ1z.js","assets/PlatformIcon-qJWoISAS.js","assets/MetricCard-C_EfZndc.js","assets/metrics-CUIh7_bv.js","assets/ArticlesPage-CGmXpPgG.js","assets/cloud-download-BWcOpP8S.js","assets/layers-C4zvNp_O.js","assets/pen-DqoISnoK.js","assets/safeHref-DhnTM6_a.js","assets/articleRuecknahme-BmbOdEXs.js","assets/UserAvatar-Bsy30loC.js","assets/BoostPostModal-BUEby17V.js","assets/platformAvailability-DIapLw0r.js","assets/useApiMutation-B7I5Pu0i.js","assets/PageHeader-CjCj-jPk.js","assets/ArticleEditorPage-F0i4Qst3.js","assets/clipboard-check-CcRurGKw.js","assets/external-link-CJi4ucfO.js","assets/pencil-AcVFs1mZ.js","assets/purify.es--06brOip.js","assets/usePostLimit-DD-bGhwA.js","assets/StatusBadge-lwz2CqHf.js","assets/usePostActions-CeDNOedX.js","assets/postStatus-ROEfp24Y.js","assets/ConfirmDialog-BgSAgPBK.js","assets/SocialPostCard-DIumG3P2.js","assets/hash-DnZGhsT5.js","assets/ArticleDetailPage-D8YnEwiA.js","assets/tag-DIH-nCER.js","assets/MediaPage-Cdayzjs_.js","assets/link-2-D3lWNsDt.js","assets/play-Kb3mgoJY.js","assets/square-check-big-DKUOR1Df.js","assets/SocialAccountsPage-BNlwWBHr.js","assets/toggle-right-D8jnX6xX.js","assets/CalendarPage-Do7QErVo.js","assets/ban-CQfQGrg8.js","assets/AnalyticsPage-COJKun-2.js","assets/useIsMobile-Cpov95sq.js","assets/SettingsPage-C6BHdL2X.js","assets/gauge-B6kHG7hC.js","assets/SettingsPage-qKRIacez.css","assets/ReferralsPage-v1VwWUIg.js","assets/SiteDesignPage-BxkQeRZO.js","assets/rss-Cgx8Oacg.js","assets/LayoutsPage-BBrpauU4.js","assets/ComposePage-BoziIJJr.js","assets/ThumbnailDesigner-DatUajdJ.js","assets/star-J3dbzgRw.js","assets/GridActiveHinweis-CUhnszwa.js","assets/postPatterns-D2kPIdrH.js","assets/graphicsSchedule-BePhe-dY.js","assets/PostsPage-CmbduRGY.js","assets/CommercePage-DFMj7lOd.js","assets/pause-2p0YR3FJ.js","assets/shopping-cart-CCC1MtsF.js","assets/store-DgvTMHfc.js","assets/CrmsPage-CQMWnCbT.js","assets/WebsitePage-Oz8a6cEO.js","assets/ShopComposePage-D-Xz8cYF.js","assets/funnel-fej4cwxq.js","assets/message-square-quote-CaUJNF0n.js","assets/ShopHighlightsPage-DsO1iisz.js","assets/repeat-DmzuR_mh.js","assets/InterviewPage-DDcrRyxk.js","assets/CreditsPage-CefiU-AQ.js","assets/useWithdrawalConsent-4x2QEYf7.js","assets/AutopilotPage-CpfnFMIT.js","assets/pen-line-BB0BtxdP.js","assets/power-DVudWEn7.js","assets/HighlightsPage-DmzOWBJT.js","assets/rotate-ccw-clock-whMEf4yu.js","assets/TrendRadarPage-novxF90a.js","assets/list-plus-BuRg5DQl.js","assets/GeoPage-lZQp18GZ.js","assets/chart-line-C0mdl4-M.js","assets/SovereigntyPage-BLcNhnKt.js","assets/AgentPage-B0JLKNeR.js","assets/CompetitorsPage-DAz9virl.js","assets/ContentGapPage-C8rY0DSM.js","assets/OutlierPanel-0kqVoEpn.js","assets/InboxPage-CQwp-QcT.js","assets/LeadsPage-BxU68Qvg.js","assets/AssistantPage-BkR_-Nlz.js","assets/VideoStudioPage-Dyz3FfMT.js","assets/VideoComposePage-s5efPCL3.js","assets/VideoTrimPage-BL5lCo2S.js","assets/BRollPage-BieGyC-G.js","assets/InsightsPage-CH6Nq46M.js","assets/BillingPage-UkyaUqBM.js","assets/InvoiceModal-DCtvs5CS.js","assets/CampaignsPage-cXhB7GOt.js","assets/ListLimitHint-tc7mztre.js","assets/CampaignStatusBadge-OMGQycwo.js","assets/DeleteCampaignDialog-DlTDCojA.js","assets/BudgetSlider-ULjeMyEm.js","assets/AdCreativeStudioPage-BKaN0fa4.
1js","assets/CampaignDetailPage-C4-alzO5.js","assets/hinweis-xb0i4Ctl.js","assets/bidStrategies-l6JZP--q.js","assets/useAdsPrefill-D_LmBHh7.js","assets/trending-down-BEnTS1Z3.js","assets/keywordScope-B0jRb17e.js","assets/CrossPlatformBudgetWizardPage-Dxh649tg.js","assets/AdsPage-CEh3WwOT.js","assets/KeywordsPage-C6k1Y8Ar.js","assets/AudiencesPage-sAr4sUvs.js","assets/RecommendationsPage-D1HZPLjC.js","assets/ConversionActionsPage-DXnAq17d.js","assets/SharedBudgetsPage-DL1YlFVX.js","assets/AdRulesPage-CnO1bsMS.js","assets/AdExperimentsPage-BlUCm0Sa.js","assets/trophy-xBZyZWAq.js","assets/AdsCockpitPage-B7Ei_Ajh.js","assets/ProposalsPage-CI1hLgxN.js","assets/ReportingPage-LyBm9GGk.js","assets/FunnelPage-BO7k7fDC.js","assets/GuideShopwareAttributionPage-BIwyG4e5.js","assets/AdminDashboardPage-bi-fKqER.js","assets/AdminStat-DKP-mGyA.js","assets/AdminTenantsPage-C2rUo6sV.js","assets/AdminDataTable-CylmSsS-.js","assets/AdminUsersPage-QTSmzIDr.js","assets/badge-euro-BMM_8305.js","assets/AdminInvoicesPage-CN-aWme1.js","assets/AdminLegalPage-C3_0LQz6.js","assets/AdminVersionPage-Dv0NFno5.js","assets/AdminToneTagsPage-plsegqUh.js","assets/AdminSection-B8Vcu9VM.js","assets/AdminAiModelsPage-DdZQgeRp.js","assets/AdminAiStatsPage-CIelgwCq.js","assets/AdminImagePoolPage-B4jSpST5.js","assets/AdminCreditCostsPage-oWzP_DAO.js","assets/AdminErrorsPage-BNaD4KgC.js","assets/AdminSupportPage-qxfyBLKU.js","assets/AdminInboxPage-esc_7otC.js","assets/AdminCronsPage-Cv-7jLge.js","assets/AdminBrandingPage-B6Jkpes5.js","assets/AdminBillingPage-oU-vMNYj.js","assets/AdminPaymentsPage-CVvz85K1.js","assets/AdminChannelsPage-Dzwv7SOA.js","assets/AdminTrendsPage-CE1PIJ22.js","assets/AdminPostsPage-Bk0lqNGP.js","assets/AdminFollowerTrackerPage-BXoUlbya.js","assets/AdminPartnersPage-D8xrOWHg.js","assets/AdminDemoPage-CbmCQZhx.js","assets/AdminLeadsPage-C5DVOdl-.js","assets/LegalPage-EG6SW7xk.js"])))=>i.map(i=>d[i]); 2import{c as e}from"./i18nInstance-q2P_HHgy.js";import{v as t,y as n}from"./charts-DkV6TnjL.js";import{a as r,c as i,d as a,l as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./vendor-BTmKp5cg.js";import{c as m}from"./editor-D6C4M5bA.js";import{$ as h,A as g,D as _,E as v,G as y,K as b,L as x,O as S,Q as C,R as w,S as T,V as ee,X as E,Y as D,Z as te,a as ne,b as O,c as re,d as ie,f as ae,g as k,h as A,i as oe,k as se,l as ce,m as le,o as j,p as ue,q as de,r as fe,s as M,t as pe,u as N,v as me,w as he,y as ge,z as _e}from"./gclid-s4-uAaOo.js";import{a as P,c as ve,d as ye,f as be,i as F,l as I,m as xe,n as Se,o as Ce,p as we,r as L,s as Te,t as Ee,u as R}from"./en-US-DVoE7lPn.js";import{t as z}from"./startOfWeek-DFFUKbeb.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var De=class extends b{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),E(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&de(t.mutationKey)!==de(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??ee();
2this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){y.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},B=e(n(),1);function V(e,t){let n=h(t),[r]=B.useState(()=>new De(n,e));B.useEffect(()=>{r.setOptions(e)},[r,e]);let i=B.useSyncExternalStore(B.useCallback(e=>r.subscribe(y.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=B.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(D)},[r]);if(i.error&&te(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var Oe=e(l(),1),ke=`cf_chunk_reloaded`;function H(e){return(0,B.lazy)(async()=>{try{let t=await e();return window.sessionStorage?.removeItem(ke),window.sessionStorage?.removeItem(`cf_boundary_reloaded`),t}catch(e){if(!window.sessionStorage?.getItem(ke))return window.sessionStorage?.setItem(ke,`1`),window.location.reload(),new Promise(()=>{});throw e}})}var Ae=new Map,je=6e4,Me=[/_result is undefined/i,/reading ['"]default['"]/i,/(loading|import(ing)?) .*dynamically imported module/i,/failed to fetch dynamically imported module/i,/importing a module script failed/i,/unable to preload css/i];function Ne(e){let t=String(e||``);return Me.some(e=>e.test(t))}function Pe(){try{let{state:e}=JSON.parse(localStorage.getItem(`contentflow-auth`)||`{}`);return!!e?.tokens?.access}catch{return!1}}function Fe({name:e,message:t,stack:n,force:r=!1}){try{if(!t||!Pe()||!r&&Ne(t))return;let i=`${e||``}|${t}`.slice(0,200),a=Date.now();for(let[e,t]of Ae)a-t>je&&Ae.delete(e);if(Ae.has(i))return;Ae.set(i,a),k.post(`/errors/client`,{name:e?String(e).slice(0,120):void 0,message:String(t).slice(0,2e3),stack:n?String(n).slice(0,6e3):void 0,url:location.pathname}).catch(()=>{})}catch{}}function Ie(){window.addEventListener(`error`,e=>{Fe({name:e.error?.name||`Error`,message:e.message,stack:e.error?.stack})}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;Fe({name:t?.name||`UnhandledRejection`,message:t?.message||String(t),stack:t?.stack})})}function Le(e){Fe({name:`ChunkErrorBoundary`,message:e?.message||String(e),stack:e?.stack,force:!0})}var U=m(),Re=`cf_boundary_reloaded`,ze=class extends B.Component{constructor(e){super(e),this.state={failed:!1,willReload:!1}}static getDerivedStateFromError(){let e=!1;try{e=!window.sessionStorage?.getItem(Re)}catch{}return{failed:!0,willReload:e}}componentDidCatch(e){if(typeof console<`u`&&console.warn(`[ChunkErrorBoundary]`,e?.message||e),this.state.willReload){try{window.sessionStorage?.setItem(Re,`1`)}catch{}window.location.reload();return}Le(e)}render(){return this.state.failed?this.state.willReload?(0,U.jsx)(`div`,{style:{minHeight:`60vh`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`2rem`,textAlign:`center`,fontFamily:`system-ui, sans-serif`},children:(0,U.jsx)(`p`,{style:{fontSize:`.9rem`,color:`#6b7094`},children:`Seite wird neu geladen â¦`})}):(0,U.jsx)(`div`,{style:{minHeight:`60vh`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`2rem`,textAlign:`center`,fontFamily:`system-ui, sans-serif`},children:(0,U.jsxs)(`div`,{style:{maxWidth:`22rem`},children:[(0,U.jsx)(`p`,{style:{fontSize:`1rem`,fontWeight:600,color:`#22243a`,margin:`0 0 .5rem`},children:`Seite konnte nicht geladen werden`}),(0,U.jsxs)(`p`,{style:{fontSize:`.875rem`,lineHeight:1.6,color:`#6b7094`,margin:`0 0 1.25rem`},children:[`Vermutlich wurde die App gerade aktualisiert. Bitte lade die Seite neu.`,(0,U.jsx)(`br`,{}),(0,U.jsx)(`span`,{style:{opacity:.7},children:`The app was just updated. Please reload the page.`})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),style:{borderRadius:`10px`,background:`#6272f1`,color:`#fff`,border:`none`,padding:`10px 22px`,fontSize:`.9rem`,fontWeight:600,cursor:`pointer`},children:`Neu laden / Reload`})]})}):this.props.children}},Be=`/assets/fhcp-logo-BQW6qVhF.svg`,Ve=[[`/legal/imprint`,`imprint`],[`/legal/privacy`,`privacy`],[`/legal/terms`,`terms`],[`/legal/withdrawal`,`withdrawal`],[`/legal/dpa`,`dpa`],[`/legal/disclaimer`,`disclaimer`]];function He({className:e=``}){let{t}=g(`common`),{appName:n}=le();return(0,U.jsxs)(`div`,{className:`flex flex-col items-start gap-4 md:flex-row md:items-center md:justify-between md:gap-3 ${e}`,children:[(0,U.jsx)(`nav`,{"aria-label":t(`legal.aria`,{defaultValue:`Rechtliches`}),className:`grid w-full grid-cols-2 gap-x-4 gap-y-2.5 text-xs text-surface-500 md:flex md:w-auto md:flex-wrap md:items-center md:gap-x-5 md:gap-y-2`,children:Ve.map(([e,n])=>(0,U.jsx)(s,{to:e,className:`hover:text-surface-700`,children:t(`legal.${n}`)},e))}),(0,U.jsxs)(`p`,{className:`flex flex-col items-start gap-1.5 text-xs leading-none text-surface-500 md:flex-row md:flex-wrap md:items-center md:justify-end md:gap-x-1.5`,children:[(0,U.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` `,n||`Personativ`,` · `,t(`legal.productOf`,{defaultValue:`ein Produkt der`})]}),(0,U.jsx)(`a`,{href:`https://fhcp.de`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`FHC+P GmbH (fhcp.de)`,className:`inline-flex items-center opacity-80 hover:opacity-100 transition-opacity`,children:(0,U.jsx)(`img`,{src:Be,alt:`FHC+P GmbH`,className:`block h-5 w-auto`})})]})]})}var Ue={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l
2-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Ue.node;var We=N(Ue),Ge={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};Ge.node;var Ke=N(Ge),qe={name:`badge-check`,size:24,node:[[`path`,{d:`M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z`,key:`3c2336`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`verified`]};qe.node;var Je=N(qe),Ye={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};Ye.node;var Xe=N(Ye),Ze={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};Ze.node;var Qe=N(Ze),$e={name:`bug`,size:24,node:[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]};$e.node;var et=N($e),tt={name:`building-complex`,size:24,node:[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]],aliases:[`building-2`]};tt.node;var nt=N(tt),rt={name:`calendar`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}]]};rt.node;var it=N(rt),at={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};at.node;var ot=N(at),st={name:`chart-no-axes-column`,size:24,node:[[`path`,{d:`M5 21v-6`,key:`1hz6c0`}],[`path`,{d:`M12 21V3`,key:`1lcnhd`}],[`path`,{d:`M19 21V9`,key:`unv183`}]],aliases:[`bar-chart-2`]};st.node;var ct=N(st),lt={name:`check-check`,size:24,node:[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]};lt.node;var ut=N(lt),dt={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};dt.node;var ft=N(dt),pt={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};pt.node;var mt=N(pt),ht={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};ht.node;var gt=N(ht),_t={name:`circle-question-mark`,size:24,node:[[`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`}]],aliases:[`help-circle`,`circle-help`]};_t.node;var vt=N(_t),yt={name:`clapperboard`,size:24,node:[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]};yt.node;var bt=N(yt),xt={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};xt.node;var St=N(xt),Ct={name:`coins`,size:24,node:[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]};Ct.node;var wt=N(Ct),Tt={name:`columns-3`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]],aliases:[`panels-left-right`]};Tt.node;var Et=N(Tt),Dt={name:`combine`,size:24,node:[[`path`,{d:`M14 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1`,key:`1l7d7l`}],[`path`,{d:`M19 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1`,key:`9955pe`}],[`path`,{d:`m7 15 3 3`,key:`4hkfgk`}],[`path`,{d:`m7 21 3-3H5a2 2 0 0 1-2-2v-2`,key:`1xljwe`}],[`rect`,{x:`14`,y:`14`,width:`7`,height:`7`,rx:`1`,key:`1cdgtw`}],[`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`,key:`zi3rio`}]]};Dt.node;var Ot=N(Dt),kt={name:`compass`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z`,key:`9ktpf1`}]]};kt.node;var At=N(kt),jt={name:`copy`,size:24,node:[[`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`}]]};jt.node;var Mt=N(jt),Nt={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};Nt.node;var Pt=N(Nt),Ft={name:`credit-card`,size:24,node:[[`rect`,{width:`20`,he
2ight:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}],[`path`,{d:`M6 14h2`,key:`mk7k0u`}]]};Ft.node;var It=N(Ft),Lt={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};Lt.node;var Rt=N(Lt),zt={name:`eye`,size:24,node:[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};zt.node;var Bt=N(zt),Vt={name:`file-text`,size:24,node:[[`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`}]]};Vt.node;var Ht=N(Vt),Ut={name:`film`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M7 3v18`,key:`bbkbws`}],[`path`,{d:`M3 7.5h4`,key:`zfgn84`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`path`,{d:`M3 16.5h4`,key:`1230mu`}],[`path`,{d:`M17 3v18`,key:`in4fa5`}],[`path`,{d:`M17 7.5h4`,key:`myr1c1`}],[`path`,{d:`M17 16.5h4`,key:`go4c1d`}]]};Ut.node;var Wt=N(Ut),Gt={name:`fingerprint-pattern`,size:24,node:[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]],aliases:[`fingerprint`]};Gt.node;var Kt=N(Gt),qt={name:`flask-conical`,size:24,node:[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]};qt.node;var Jt=N(qt),Yt={name:`gift`,size:24,node:[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M20 11v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8`,key:`1sqzm4`}],[`path`,{d:`M7.5 7a1 1 0 0 1 0-5A4.8 8 0 0 1 12 7a4.8 8 0 0 1 4.5-5 1 1 0 0 1 0 5`,key:`kc0143`}],[`rect`,{x:`3`,y:`7`,width:`18`,height:`4`,rx:`1`,key:`1hberx`}]]};Yt.node;var Xt=N(Yt),Zt={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};Zt.node;var Qt=N(Zt),$t={name:`graduation-cap`,size:24,node:[[`path`,{d:`M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z`,key:`j76jl0`}],[`path`,{d:`M22 10v6`,key:`1lu8f3`}],[`path`,{d:`M6 12.5V16a6 3 0 0 0 12 0v-3.5`,key:`1r8lef`}]]};$t.node;var en=N($t),tn={name:`handshake`,size:24,node:[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]};tn.node;var nn=N(tn),rn={name:`image`,size:24,node:[[`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`}]]};rn.node;var an=N(rn),on={name:`images`,size:24,node:[[`path`,{d:`m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16`,key:`9kzy35`}],[`path`,{d:`M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2`,key:`1t0f0t`}],[`circle`,{cx:`13`,cy:`7`,r:`1`,fill:`currentColor`,key:`1obus6`}],[`rect`,{x:`8`,y:`2`,width:`14`,height:`14`,rx:`2`,key:`1gvhby`}]]};on.node;var sn=N(on),cn={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};cn.node;var ln=N(cn),un={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};un.node;var dn=N(un),fn={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}
2],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};fn.node;var W=N(fn),pn={name:`landmark`,size:24,node:[[`path`,{d:`M10 18v-7`,key:`wt116b`}],[`path`,{d:`M11.119 2.205a2 2 0 0 1 1.762 0l7.84 3.846A.5.5 0 0 1 20.5 7h-17a.5.5 0 0 1-.22-.949z`,key:`yxxwt6`}],[`path`,{d:`M14 18v-7`,key:`vav6t3`}],[`path`,{d:`M18 18v-7`,key:`aexdmj`}],[`path`,{d:`M3 22h18`,key:`8prr45`}],[`path`,{d:`M6 18v-7`,key:`1ivflk`}]]};pn.node;var mn=N(pn),hn={name:`languages`,size:24,node:[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]};hn.node;var gn=N(hn),_n={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};_n.node;var vn=N(_n),yn={name:`layout-template`,size:24,node:[[`rect`,{width:`18`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`f1a2em`}],[`rect`,{width:`9`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`jqznyg`}],[`rect`,{width:`5`,height:`7`,x:`16`,y:`14`,rx:`1`,key:`q5h2i8`}]]};yn.node;var bn=N(yn),xn={name:`life-buoy`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]};xn.node;var Sn=N(xn),Cn={name:`lightbulb`,size:24,node:[[`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`}]]};Cn.node;var wn=N(Cn),Tn={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};Tn.node;var En=N(Tn),Dn={name:`megaphone`,size:24,node:[[`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`}]]};Dn.node;var On=N(Dn),kn={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};kn.node;var An=N(kn),jn={name:`message-circle`,size:24,node:[[`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`}]]};jn.node;var Mn=N(jn),Nn={name:`message-square-text`,size:24,node:[[`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`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]};Nn.node;var Pn=N(Nn),Fn={name:`message-square`,size:24,node:[[`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`}]]};Fn.node;var In=N(Fn),Ln={name:`monitor-play`,size:24,node:[[`path`,{d:`M15.033 9.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56V7.648a.645.645 0 0 1 .967-.56z`,key:`vbtd3f`}],[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`,key:`x3v2xh`}]]};Ln.node;var Rn=N(Ln),zn={name:`package`,size:24,node:[[`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`}]]};zn.node;var Bn=N(zn),Vn={name:`palette`,size:24,node:[[`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`}]]};Vn.node;var Hn=N(Vn),Un={name:`quote`,size:24,node:[[`path`,{d:`M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`rib7q0`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`1ymkrd`}]]};Un.node;var Wn=N(Un),Gn={name:`radar`,size:24,node:[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]};
2Gn.node;var Kn=N(Gn),qn={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};qn.node;var Jn=N(qn),Yn={name:`receipt`,size:24,node:[[`path`,{d:`M12 17V7`,key:`pyj7ub`}],[`path`,{d:`M16 8h-6a2 2 0 0 0 0 4h4a2 2 0 0 1 0 4H8`,key:`1elt7d`}],[`path`,{d:`M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z`,key:`ycz6yz`}]]};Yn.node;var Xn=N(Yn),Zn={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};Zn.node;var Qn=N(Zn),$n={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};$n.node;var er=N($n),tr={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};tr.node;var nr=N(tr),rr={name:`save`,size:24,node:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]};rr.node;var ir=N(rr),ar={name:`scale`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]};ar.node;var or=N(ar),sr={name:`scissors`,size:24,node:[[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M8.12 8.12 12 12`,key:`1alkpv`}],[`path`,{d:`M20 4 8.12 15.88`,key:`xgtan2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M14.8 14.8 20 20`,key:`ptml3r`}]]};sr.node;var cr=N(sr),lr={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};lr.node;var ur=N(lr),dr={name:`send`,size:24,node:[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]};dr.node;var G=N(dr),fr={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};fr.node;var pr=N(fr),mr={name:`share-2`,size:24,node:[[`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`}]]};mr.node;var hr=N(mr),gr={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};gr.node;var K=N(gr),_r={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};_r.node;var vr=N(_r),yr={name:`shopping-bag`,size:24,node:[[`path`,{d:`M16 10a4 4 0 0 1-8 0`,ke
2y:`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 2H7a2 2 0 0 0-1.6.8z`,key:`o988cm`}]]};yr.node;var br=N(yr),xr={name:`sparkles`,size:24,node:[[`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`}]],aliases:[`stars`]};xr.node;var Sr=N(xr),Cr={name:`tags`,size:24,node:[[`path`,{d:`M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z`,key:`16rjxf`}],[`path`,{d:`M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193`,key:`178nd4`}],[`circle`,{cx:`10.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`12ikhr`}]]};Cr.node;var wr=N(Cr),Tr={name:`target`,size:24,node:[[`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`}]]};Tr.node;var Er=N(Tr),Dr={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};Dr.node;var q=N(Dr),Or={name:`trending-up`,size:24,node:[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]};Or.node;var kr=N(Or),Ar={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Ar.node;var jr=N(Ar),Mr={name:`user-check`,size:24,node:[[`path`,{d:`m16 11 2 2 4-4`,key:`9rsbq5`}],[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};Mr.node;var Nr=N(Mr),Pr={name:`user-plus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};Pr.node;var Fr=N(Pr),Ir={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};Ir.node;var Lr=N(Ir),Rr={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};Rr.node;var zr=N(Rr),Br={name:`wallet`,size:24,node:[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`,key:`18etb6`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`,key:`xoc0q4`}]]};Br.node;var Vr=N(Br),Hr={name:`wand-sparkles`,size:24,node:[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]],aliases:[`wand-2`]};Hr.node;var Ur=N(Hr),Wr={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};Wr.node;var Gr=N(Wr),Kr={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};Kr.node;var qr=N(Kr);function Jr(e,t){return z(e,{...t,weekStartsOn:1}
2)}function Yr(e,t){let n=I(e,t?.in),r=n.getFullYear(),i=R(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=Jr(i),o=R(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=Jr(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function Xr(e,t){let n=I(e,t?.in);return n.setHours(0,0,0,0),n}function Zr(e,t,n){let[r,i]=Ce(n?.in,e,t),a=Xr(r),o=Xr(i),s=+a-Te(a),c=+o-Te(o);return Math.round((s-c)/ye)}function Qr(e,t){let n=Yr(e,t),r=R(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Jr(r)}function $r(e,t){let n=+I(e)-I(t);return n<0?-1:n>0?1:n}function ei(e){return R(e,Date.now())}function ti(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function ni(e){return!(!ti(e)&&typeof e!=`number`||isNaN(+I(e)))}function ri(e,t,n){let[r,i]=Ce(n?.in,e,t),a=r.getFullYear()-i.getFullYear(),o=r.getMonth()-i.getMonth();return a*12+o}function ii(e,t,n){let[r,i]=Ce(n?.in,e,t),a=ai(r,i),o=Math.abs(Zr(r,i));r.setDate(r.getDate()-a*o);let s=a*(o-Number(ai(r,i)===-a));return s===0?0:s}function ai(e,t){let n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function oi(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function si(e,t){return+I(e)-I(t)}function ci(e,t){let n=I(e,t?.in);return n.setHours(23,59,59,999),n}function li(e,t){let n=I(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function ui(e,t){let n=I(e,t?.in);return+ci(n,t)==+li(n,t)}function di(e,t,n){let[r,i,a]=Ce(n?.in,e,e,t),o=$r(i,a),s=Math.abs(ri(i,a));if(s<1)return 0;i.getMonth()===1&&i.getDate()>27&&i.setDate(30),i.setMonth(i.getMonth()-o*s);let c=$r(i,a)===-o;ui(r)&&s===1&&$r(r,a)===1&&(c=!1);let l=o*(s-+c);return l===0?0:l}function fi(e,t,n){let r=si(e,t)/1e3;return oi(n?.roundingMethod)(r)}function pi(e,t){let n=I(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function mi(e,t){let n=I(e,t?.in);return Zr(n,pi(n))+1}function hi(e,t){let n=I(e,t?.in),r=+Jr(n)-Qr(n);return Math.round(r/be)+1}function gi(e,t){let n=I(e,t?.in),r=n.getFullYear(),i=ve(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=R(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=z(o,t),c=R(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=z(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function _i(e,t){let n=ve(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=gi(e,t),a=R(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),z(a,t)}function vi(e,t){let n=I(e,t?.in),r=+z(n,t)-_i(n,t);return Math.round(r/be)+1}function J(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var Y={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return J(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):J(n+1,2)},d(e,t){return J(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return J(e.getHours()%12||12,t.length)},H(e,t){return J(e.getHours(),t.length)},m(e,t){return J(e.getMinutes(),t.length)},s(e,t){return J(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return J(Math.trunc(r*10**(n-3)),t.length)}},yi={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},bi={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return Y.y(e,t)},Y:function(e,t,n,r){let i=gi(e,r),a=i>0?i:1-i;return t===`YY`?J(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):J(a,t.length)},R:function(e,t){return J(Yr(e),t.length)},u:function(e,t){return J(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return J(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return J(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return Y.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return J(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=vi(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):J(i,t.length)},I:function(e,t,n){let r=hi(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):J(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):Y.d(e,t)},D:function(e,t,n){let r=mi(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):J(r,t.length)},E:function(e,t,n){let r=e.getDay();
vendor: 6,252 bytes, line 2
2switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return J(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return J(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return J(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?yi.noon:r===0?yi.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?yi.evening:r>=12?yi.afternoon:r>=4?yi.morning:yi.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return Y.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):Y.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):J(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):J(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):Y.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):Y.s(e,t)},S:function(e,t){return Y.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return Si(r);case`XXXX`:case`XX`:return X(r);default:return X(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return Si(r);case`xxxx`:case`xx`:return X(r);default:return X(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+xi(r,`:`);default:return`GMT`+X(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+xi(r,`:`);default:return`GMT`+X(r,`:`)}},t:function(e,t,n){return J(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return J(+e,t.length)}};function xi(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+J(a,2)}function Si(e,t){return e%60==0?(e>0?`-`:`+`)+J(Math.abs(e)/60,2):X(e,t)}function X(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=J(Math.trunc(r/60),2),a=J(r%60,2);return n+i+t+a}var Ci=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},wi=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},Ti={p:wi,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return Ci(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`})}return a.replace(`{{date}}`,Ci(r,t)).replace(`{{time}}`,wi(i,t))}},Ei=/^D+$/,Di=/^Y+$/,Oi=[`D`,`DD`,`YY`,`YYYY`];function ki(e){return Ei.test(e)}function Ai(e){return Di.test(e)}function ji(e,t,n){let r=Mi(e,t,n);if(console.warn(r),Oi.includes(e))throw RangeError(r)}function Mi(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Ni=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pi=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Fi=/^'([^]*?)'?$/,Ii=/''/g,Li=/[a-zA-Z]/;function Ri(e,t,n){let r=ve(),i=n?.locale??r.locale??Ee,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=I(e,n?.in);if(!ni(s))throw RangeError(`Invalid time value`);let c=t.match(Pi).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=Ti[t];return n(e,i.formatLong)}return e}).join(``).match(Ni).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:zi(e)};if(bi[t])return{isToken:!0,value:e};
2if(t.match(Li))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&Ai(a)||!n?.useAdditionalDayOfYearTokens&&ki(a))&&ji(a,t,String(e));let o=bi[a[0]];return o(s,a,i.localize,l)}).join(``)}function zi(e){let t=e.match(Fi);return t?t[1].replace(Ii,`'`):e}function Bi(e,t,n){let r=ve(),i=n?.locale??r.locale??Ee,a=$r(e,t);if(isNaN(a))throw RangeError(`Invalid time value`);let o=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:a}),[s,c]=Ce(n?.in,...a>0?[t,e]:[e,t]),l=fi(c,s),u=(Te(c)-Te(s))/1e3,d=Math.round((l-u)/60),f;if(d<2)return n?.includeSeconds?l<5?i.formatDistance(`lessThanXSeconds`,5,o):l<10?i.formatDistance(`lessThanXSeconds`,10,o):l<20?i.formatDistance(`lessThanXSeconds`,20,o):l<40?i.formatDistance(`halfAMinute`,0,o):l<60?i.formatDistance(`lessThanXMinutes`,1,o):i.formatDistance(`xMinutes`,1,o):d===0?i.formatDistance(`lessThanXMinutes`,1,o):i.formatDistance(`xMinutes`,d,o);if(d<45)return i.formatDistance(`xMinutes`,d,o);if(d<90)return i.formatDistance(`aboutXHours`,1,o);if(d<1440){let e=Math.round(d/60);return i.formatDistance(`aboutXHours`,e,o)}if(d<2520)return i.formatDistance(`xDays`,1,o);if(d<43200){let e=Math.round(d/we);return i.formatDistance(`xDays`,e,o)}if(d<86400)return f=Math.round(d/xe),i.formatDistance(`aboutXMonths`,f,o);if(f=di(c,s),f<12){let e=Math.round(d/xe);return i.formatDistance(`xMonths`,e,o)}{let e=f%12,t=Math.trunc(f/12);return e<3?i.formatDistance(`aboutXYears`,t,o):e<9?i.formatDistance(`overXYears`,t,o):i.formatDistance(`almostXYears`,t+1,o)}}function Vi(e,t){return Bi(e,ei(e),t)}function Hi(e,t,n){let[r,i]=Ce(n?.in,e,t);return+z(r,n)==+z(i,n)}var Ui={lessThanXSeconds:{standalone:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`},withPreposition:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`}},xSeconds:{standalone:{one:`1 Sekunde`,other:`{{count}} Sekunden`},withPreposition:{one:`1 Sekunde`,other:`{{count}} Sekunden`}},halfAMinute:{standalone:`eine halbe Minute`,withPreposition:`einer halben Minute`},lessThanXMinutes:{standalone:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`},withPreposition:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`}},xMinutes:{standalone:{one:`1 Minute`,other:`{{count}} Minuten`},withPreposition:{one:`1 Minute`,other:`{{count}} Minuten`}},aboutXHours:{standalone:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`},withPreposition:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`}},xHours:{standalone:{one:`1 Stunde`,other:`{{count}} Stunden`},withPreposition:{one:`1 Stunde`,other:`{{count}} Stunden`}},xDays:{standalone:{one:`1 Tag`,other:`{{count}} Tage`},withPreposition:{one:`1 Tag`,other:`{{count}} Tagen`}},aboutXWeeks:{standalone:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`},withPreposition:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`}},xWeeks:{standalone:{one:`1 Woche`,other:`{{count}} Wochen`},withPreposition:{one:`1 Woche`,other:`{{count}} Wochen`}},aboutXMonths:{standalone:{one:`etwa 1 Monat`,other:`etwa {{count}} Monate`},withPreposition:{one:`etwa 1 Monat`,other:`etwa {{count}} Monaten`}},xMonths:{standalone:{one:`1 Monat`,other:`{{count}} Monate`},withPreposition:{one:`1 Monat`,other:`{{count}} Monaten`}},aboutXYears:{standalone:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahre`},withPreposition:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahren`}},xYears:{standalone:{one:`1 Jahr`,other:`{{count}} Jahre`},withPreposition:{one:`1 Jahr`,other:`{{count}} Jahren`}},overXYears:{standalone:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahre`},withPreposition:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahren`}},almostXYears:{standalone:{one:`fast 1 Jahr`,other:`fast {{count}} Jahre`},withPreposition:{one:`fast 1 Jahr`,other:`fast {{count}} Jahren`}}},Wi=(e,t,n)=>{let r,i=n?.addSuffix?Ui[e].withPreposition:Ui[e].standalone;return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:`vor `+r:r},Gi={date:P({formats:{full:`EEEE, do MMMM y`,long:`do MMMM y`,medium:`do MMM y`,short:`dd.MM.y`},defaultWidth:`full`}),time:P({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:P({formats:{full:`{{date}} 'um' {{time}}`,long:`{{date}} 'um' {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})},Ki={lastWeek:`'letzten' eeee 'um' p`,yesterday:`'gestern um' p`,today:`'heute um' p`,tomorrow:`'morgen um' p`,nextWeek:`eeee 'um' p`,other:`P`},qi=(e,t,n,r)=>Ki[e],Ji={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},Yi={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},Xi={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},Zi={narrow:Xi.narrow,abbreviated:[`Jan.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:Xi.wide},Qi={code:`de`,formatDistance:Wi,formatLong:Gi,formatRelative:qi,localize:{ordinalNumber:e=>Number(e)+`.`,era:F({values:Ji,defaultWidth:`wide`}),quarter:F({values:Yi,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:F({values:Xi,formattingValues:Zi,defaultWidth:`wide`}),day:F({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittw
2och`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:F({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:Se({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:L({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:`any`}),quarter:L({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:L({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(jänner|januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:L({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:L({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:`wide`,parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}},$i={lessThanXSeconds:{one:`menos de un segundo`,other:`menos de {{count}} segundos`},xSeconds:{one:`1 segundo`,other:`{{count}} segundos`},halfAMinute:`medio minuto`,lessThanXMinutes:{one:`menos de un minuto`,other:`menos de {{count}} minutos`},xMinutes:{one:`1 minuto`,other:`{{count}} minutos`},aboutXHours:{one:`alrededor de 1 hora`,other:`alrededor de {{count}} horas`},xHours:{one:`1 hora`,other:`{{count}} horas`},xDays:{one:`1 dÃa`,other:`{{count}} dÃas`},aboutXWeeks:{one:`alrededor de 1 semana`,other:`alrededor de {{count}} semanas`},xWeeks:{one:`1 semana`,other:`{{count}} semanas`},aboutXMonths:{one:`alrededor de 1 mes`,other:`alrededor de {{count}} meses`},xMonths:{one:`1 mes`,other:`{{count}} meses`},aboutXYears:{one:`alrededor de 1 año`,other:`alrededor de {{count}} años`},xYears:{one:`1 año`,other:`{{count}} años`},overXYears:{one:`más de 1 año`,other:`más de {{count}} años`},almostXYears:{one:`casi 1 año`,other:`casi {{count}} años`}},ea=(e,t,n)=>{let r,i=$i[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`en `+r:`hace `+r:r},ta={date:P({formats:{full:`EEEE, d 'de' MMMM 'de' y`,long:`d 'de' MMMM 'de' y`,medium:`d MMM y`,short:`dd/MM/y`},defaultWidth:`full`}),time:P({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:P({formats:{full:`{{date}} 'a las' {{time}}`,long:`{{date}} 'a las' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},na={lastWeek:`'el' eeee 'pasado a la' p`,yesterday:`'ayer a la' p`,today:`'hoy a la' p`,tomorrow:`'mañana a la' p`,nextWeek:`eeee 'a la' p`,other:`P`},ra={lastWeek:`'el' eeee 'pasado a las' p`,yesterday:`'ayer a las' p`,today:`'hoy a las' p`,tomorrow:`'mañana a las' p`,nextWeek:`eeee 'a las' p`,other:`P`},ia={code:`es`,formatDistance:ea,formatLong:ta,formatRelative:(e,t,n,r)=>t.getHours()===1?na[e]:ra[e],localize:{ordinalNumber:(e,t)=>Number(e)+`º`,era:F({values:{narrow:[`AC`,`DC`],abbreviated:[`AC`,`DC`],wide:[`antes de cristo`,`después de cristo`]}
vendor: 8,452 bytes, line 2
2,defaultWidth:`wide`}),quarter:F({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`T1`,`T2`,`T3`,`T4`],wide:[`1º trimestre`,`2º trimestre`,`3º trimestre`,`4º trimestre`]},defaultWidth:`wide`,argumentCallback:e=>Number(e)-1}),month:F({values:{narrow:[`e`,`f`,`m`,`a`,`m`,`j`,`j`,`a`,`s`,`o`,`n`,`d`],abbreviated:[`ene`,`feb`,`mar`,`abr`,`may`,`jun`,`jul`,`ago`,`sep`,`oct`,`nov`,`dic`],wide:[`enero`,`febrero`,`marzo`,`abril`,`mayo`,`junio`,`julio`,`agosto`,`septiembre`,`octubre`,`noviembre`,`diciembre`]},defaultWidth:`wide`}),day:F({values:{narrow:[`d`,`l`,`m`,`m`,`j`,`v`,`s`],short:[`do`,`lu`,`ma`,`mi`,`ju`,`vi`,`sá`],abbreviated:[`dom`,`lun`,`mar`,`mié`,`jue`,`vie`,`sáb`],wide:[`domingo`,`lunes`,`martes`,`miércoles`,`jueves`,`viernes`,`sábado`]},defaultWidth:`wide`}),dayPeriod:F({values:{narrow:{am:`a`,pm:`p`,midnight:`mn`,noon:`md`,morning:`mañana`,afternoon:`tarde`,evening:`tarde`,night:`noche`},abbreviated:{am:`AM`,pm:`PM`,midnight:`medianoche`,noon:`mediodia`,morning:`mañana`,afternoon:`tarde`,evening:`tarde`,night:`noche`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`medianoche`,noon:`mediodia`,morning:`mañana`,afternoon:`tarde`,evening:`tarde`,night:`noche`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mn`,noon:`md`,morning:`de la mañana`,afternoon:`de la tarde`,evening:`de la tarde`,night:`de la noche`},abbreviated:{am:`AM`,pm:`PM`,midnight:`medianoche`,noon:`mediodia`,morning:`de la mañana`,afternoon:`de la tarde`,evening:`de la tarde`,night:`de la noche`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`medianoche`,noon:`mediodia`,morning:`de la mañana`,afternoon:`de la tarde`,evening:`de la tarde`,night:`de la noche`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:Se({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:L({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},defaultParseWidth:`any`}),quarter:L({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:L({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:`any`}),day:L({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:L({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:1}},aa={lessThanXSeconds:{one:`meno di un secondo`,other:`meno di {{count}} secondi`},xSeconds:{one:`un secondo`,other:`{{count}} secondi`},halfAMinute:`alcuni secondi`,lessThanXMinutes:{one:`meno di un minuto`,other:`meno di {{count}} minuti`},xMinutes:{one:`un minuto`,other:`{{count}} minuti`},aboutXHours:{one:`circa un'ora`,other:`circa {{count}} ore`},xHours:{one:`un'ora`,other:`{{count}} ore`},xDays:{one:`un giorno`,other:`{{count}} giorni`},aboutXWeeks:{one:`circa una settimana`,other:`circa {{count}} settimane`},xWeeks:{one:`una settimana`,other:`{{count}} settimane`},aboutXMonths:{one:`circa un mese`,other:`circa {{count}} mesi`},xMonths:{one:`un mese`,other:`{{count}} mesi`},aboutXYears:{one:`circa un anno`,other:`circa {{count}} anni`},xYears:{one:`un anno`,other:`{{count}} anni`},overXYears:{one:`più di un anno`,other:`più di {{count}} anni`},almostXYears:{one:`quasi un anno`,other:`quasi {{count}} anni`}},oa=(e,t,n)=>{let r,i=aa[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`tra `+r:r+` fa`:r},sa={date:P({formats:{full:`EEEE d MMMM y`,long:`d MMMM y`,medium:`d MMM y`,short:`dd/MM/y`},defaultWidth:`full`}),time:P({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:P({formats:{full:`{{date}} {{time}}`,long:`{{date}} {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})},ca=[`domenica`,`lunedì`,`martedì`,`mercoledì`,`giovedì`,`venerdì`,`sabato`];function la(e){switch(e){case 0:return`'domenica scorsa alle' p`;default:return`'`+ca[e]+` scorso alle' p`}}function ua(e){return`'`+ca[e]+` alle' p`}function da(e){switch(e){case 0:return`'domenica prossima alle' p`;default:return`'`+ca[e]+` prossimo alle' p`}}var fa={lastWeek:(e,t,n)=>{let r=e.getDay();return Hi(e,t,n)?ua(r):la(r)},yesterday:`'ieri alle' p`,today:`'oggi alle' p`,tomorrow:`'domani alle' p`,nextWeek:(e,t,n)=>{let r=e.getDay();return Hi(e,t,n)?ua(r):da(r)},other:`P`},pa={code:`it`,formatDistance:oa,formatLong:sa,formatRelative:(e,t,n,r)=>{let i=fa[e];return typeof i==`function`?i(t,n,r):i},localize:{ordinalNumber:(e,t)=>{let n=Number(e);return String(n)},era:F({values:{narrow:[`aC`,`dC`],abbreviated:[`a.C.`,`d.C.`],wide:[`avanti Cristo`,`dopo Cristo`]},defaultWidth:`wide`}),quarter:F({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`T1`,`T2`,`T3`,`T4`],wide:[`1º trimestre`,`2º trimestre`,`3º trimestre`,`4º trimestre`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:F({values:{narrow:[`G`,`F`,`M`,`A`,`M`,`G`,`L`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`gen`,`feb`,`mar`,`apr`,`mag`,`giu`,`lug`,`ago`,`set`,`ott`,`nov`,`dic`],wide:[`gennaio`,`febbraio`,`marzo`,`aprile`,`maggio`,`giugno`,`luglio`,`agosto`,`settembre`,`ottobre`,`novembre`,`dicembre`]},defaultWidth:`wide`}),day:F({values:{narrow:[`D`,`L`,`M`,`M`,`G`,`V`,`S`],short:[`dom`,`lun`,`mar`,`mer`,`gio`,`ven`,`sab`],abbreviated:[`dom`,`lun`,`mar`,`mer`,`gio`,`ven`,`sab`],wide:[`domenica`,`lunedì`,`martedì`,`mercoledì`,`giovedì`,`venerdì`,`sabato`]},defaultWidth:`wide`}),dayPeriod:F({values:{narrow:{am:`m.`,pm:`p.`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`mattina`,afternoon:`pomeriggio`,evening:`sera`,night:`notte`},abbreviated:{am:`AM`,pm:`PM`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`mattina`,afternoon:`pomeriggio`,evening:`sera`,night:`notte`},wide:{am:`AM`,pm:`PM`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`mattina`,afternoon:`pomeriggio`,evening:`sera`,night:`notte`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`m.`,pm:`p.`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`di mattina`,afternoon:`del pomeriggio`,evening:`di sera`,night:`di notte`},abbreviated:{am:`AM`,pm:`PM`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`di mattina`,afternoon:`del pomeriggio`,evening:`di sera`,night:`di notte`},wide:{am:`AM`,pm:`PM`,midnight:`mezzanotte`,noon:`mezzogiorno`,morning:`di mattina`,afternoon:`del pomeriggio`,evening:`di sera`,night:`di notte`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:Se({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:L({matchPatterns:{narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^a/i,/^(d|e)/i]},defaultParseWidth:`any`}),quarter:L({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:L({matchPatterns:{narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|
2set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:L({matchPatterns:{narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},defaultParseWidth:`any`}),dayPeriod:L({matchPatterns:{narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}},ma={de:Qi,en:Ee,es:ia,it:pa};function ha(){return ma[(v.resolvedLanguage||`de`).slice(0,2)]||Qi}var ga=[{key:`len`,label:`mindestens 8 Zeichen`,test:e=>e.length>=8},{key:`upper`,label:`ein GroÃbuchstabe`,test:e=>/[A-Z]/.test(e)},{key:`lower`,label:`ein Kleinbuchstabe`,test:e=>/[a-z]/.test(e)},{key:`digit`,label:`eine Zahl`,test:e=>/[0-9]/.test(e)},{key:`special`,label:`ein Sonderzeichen`,test:e=>/[^A-Za-z0-9]/.test(e)}];function _a(e){let t=typeof e==`string`?e:``;return ga.every(e=>e.test(t))}function va(e){let t=ga.filter(t=>t.test(e)).length/ga.length;return t===1&&e.length<12&&(t=.85),t}function ya(e,t){return t?e>=1?`bg-green-500`:`bg-green-400`:e<.4?`bg-red-500`:e<.7?`bg-orange-500`:`bg-yellow-500`}function ba(e,t,n){let r=(e,t)=>n?n(`strength.${e}`,t):t;return t?e>=1?r(`strong`,`Stark`):r(`good`,`Gut`):e<.4?r(`tooWeak`,`Zu schwach`):e<.7?r(`weak`,`Schwach`):r(`medium`,`Mittel`)}function xa({value:e=``,t}){let n=typeof e==`string`?e:``;if(!n)return null;let r=(e,n)=>t?t(`strength.${e}`,n):n,i=va(n),a=_a(n),o=ga.filter(e=>!e.test(n));return(0,U.jsxs)(`div`,{className:`mt-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`div`,{className:`flex-1 h-1.5 rounded-full bg-surface-200 overflow-hidden`,children:(0,U.jsx)(`div`,{className:`h-full rounded-full transition-all duration-300 ${ya(i,a)}`,style:{width:`${Math.max(8,Math.round(i*100))}%`}})}),(0,U.jsx)(`span`,{className:`text-xs font-medium ${a?`text-green-600`:`text-surface-500`}`,children:ba(i,a,t)})]}),o.length>0?(0,U.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:o.map(e=>(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-red-50 text-red-600 text-[11px] px-2 py-0.5`,children:[(0,U.jsx)(oe,{size:11}),` `,r(e.key,e.label)]},e.key))}):(0,U.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1 text-[11px] text-green-600`,children:[(0,U.jsx)(re,{size:12}),` `,r(`allMet`,`Alle Anforderungen erfüllt`)]})]})}function Sa(){let{t:e}=g(`auth`),[t,n]=(0,B.useState)(``),[r,i]=(0,B.useState)(``),[a,o]=(0,B.useState)(!1),s=A(e=>e.updateUser);return(0,U.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4 overflow-y-auto`,children:(0,U.jsxs)(`div`,{className:`w-full max-w-sm my-8`,children:[(0,U.jsx)(`div`,{className:`flex items-center justify-center gap-3 mb-6`,children:(0,U.jsx)(`div`,{className:`w-10 h-10 rounded-2xl bg-brand-600 flex items-center justify-center shadow-glow`,children:(0,U.jsx)(W,{size:20,className:`text-white`})})}),(0,U.jsxs)(`div`,{className:`card`,children:[(0,U.jsx)(`h1`,{className:`text-xl font-bold text-surface-900 mb-1`,children:e(`setPassword.title`)}),(0,U.jsx)(`p`,{className:`text-surface-400 text-sm mb-6`,children:e(`setPassword.subtitle`)}),(0,U.jsxs)(`form`,{onSubmit:async n=>{if(n.preventDefault(),t.length<8)return w.error(e(`setPassword.tooShort`));if(t!==r)return w.error(e(`setPassword.mismatch`));o(!0);try{await k.post(`/auth/change-password`,{newPassword:t}),s({mustChangePassword:!1}),w.success(e(`setPassword.successToast`))}catch(t){w.error(t.response?.data?.error||e(`setPassword.error`))}finally{o(!1)}},className:`space-y-4`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1.5`,children:e(`setPassword.newPassword`)}),(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsx)(j,{size:15,className:`absolute left-3.5 to
2p-1/2 -translate-y-1/2 text-surface-500`}),(0,U.jsx)(`input`,{type:`password`,autoComplete:`new-password`,minLength:8,className:`input pl-9`,placeholder:e(`setPassword.newPasswordPlaceholder`),value:t,onChange:e=>n(e.target.value),required:!0,autoFocus:!0})]}),(0,U.jsx)(xa,{value:t,t:e})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1.5`,children:e(`setPassword.repeatPassword`)}),(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsx)(j,{size:15,className:`absolute left-3.5 top-1/2 -translate-y-1/2 text-surface-500`}),(0,U.jsx)(`input`,{type:`password`,autoComplete:`new-password`,minLength:8,className:`input pl-9`,placeholder:`â¢â¢â¢â¢â¢â¢â¢â¢`,value:r,onChange:e=>i(e.target.value),required:!0})]})]}),(0,U.jsxs)(`button`,{type:`submit`,disabled:a,className:`btn-primary w-full justify-center`,children:[a?(0,U.jsx)(M,{size:16,className:`animate-spin`}):(0,U.jsx)(W,{size:16}),e(`setPassword.submit`)]})]})]})]})})}var Ca=e(t(),1),wa={token_expiry:W,post_failed:jr,quota_exhausted:jr,evergreen:Qn,review_request:In,review_result:In,default:Sr},Ta={token_expiry:`text-amber-400`,post_failed:`text-red-400`,quota_exhausted:`text-amber-400`,evergreen:`text-emerald-400`,review_request:`text-brand-600`,review_result:`text-brand-600`,default:`text-surface-400`};function Ea(){let{t:e}=g(`notifications`),[t,n]=(0,B.useState)(!1),r=(0,B.useRef)(null),i=(0,B.useRef)(null),[o,s]=(0,B.useState)(null),c=h(),l=a(),u=(0,B.useCallback)(()=>{let e=r.current;if(!e)return;let t=e.getBoundingClientRect(),n=Math.max(12,Math.min(t.left,window.innerWidth-320-12));s({top:Math.round(t.bottom+8),left:Math.round(n)})},[]),{data:d}=_e({queryKey:[`notifications`],queryFn:()=>k.get(`/notifications`).then(e=>e.data),refetchInterval:6e4});(0,B.useEffect)(()=>{let e=e=>{let t=r.current?.contains(e.target),a=i.current?.contains(e.target);!t&&!a&&n(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,B.useEffect)(()=>{if(t)return u(),window.addEventListener(`resize`,u),window.addEventListener(`scroll`,u,!0),()=>{window.removeEventListener(`resize`,u),window.removeEventListener(`scroll`,u,!0)}},[t,u]);let f=V({mutationFn:e=>k.post(`/notifications/${e}/read`),onSuccess:()=>c.invalidateQueries({queryKey:[`notifications`]})}),p=V({mutationFn:()=>k.post(`/notifications/read-all`),onSuccess:()=>c.invalidateQueries({queryKey:[`notifications`]})}),m=V({mutationFn:()=>k.post(`/notify/veto/postpone`),onSuccess:()=>{w.success(e(`veto.postponed`)),c.invalidateQueries({queryKey:[`notifications`]})},onError:t=>w.error(t.response?.data?.error||e(`veto.error`))}),_=V({mutationFn:()=>k.post(`/notify/veto/release`),onSuccess:()=>{w.success(e(`veto.released`)),c.invalidateQueries({queryKey:[`notifications`]})},onError:t=>w.error(t.response?.data?.error||e(`veto.error`))}),v=d?.unread||0,y=d?.notifications||[],b=y.some(e=>e.type===`veto_window`&&!e.read_at),x=m.isPending||_.isPending,S=e=>{e.read_at||f.mutate(e.id),n(!1),e.link&&l(e.link)};return(0,U.jsxs)(`div`,{className:`relative`,ref:r,children:[(0,U.jsxs)(`button`,{onClick:()=>{t||u(),n(e=>!e)},className:`relative p-2 rounded-xl text-surface-400 hover:text-surface-900 hover:bg-surface-100 transition-colors`,title:e(`title`),"aria-label":v>0?e(`ariaUnread`,{count:v}):e(`title`),"aria-expanded":t,children:[(0,U.jsx)(Xe,{size:17}),v>0&&(0,U.jsx)(`span`,{className:`absolute top-0 right-0 min-w-[16px] h-4 px-1 rounded-full bg-red-500 text-white text-[10px] font-bold flex items-center justify-center`,children:v>9?`9+`:v})]}),t&&(0,Ca.createPortal)((0,U.jsxs)(`div`,{ref:i,style:o?{top:o.top,left:o.left}:{top:64,left:12},className:`fixed w-[calc(100vw-1.5rem)] max-w-sm lg:w-80 lg:max-w-none max-h-[70vh] overflow-y-auto rounded-2xl border border-surface-300 bg-white shadow-2xl z-[60]`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-surface-200 sticky top-0 bg-white`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-surface-900`,children:e(`title`)}),v>0&&(0,U.jsxs)(`button`,{onClick:()=>p.mutate(),className:`text-xs text-brand-600 hover:text-brand-700 flex items-center gap-1`,children:[(0,U.jsx)(ut,{size:13}),` `,e(`markAllRead`)]})]}),b&&(0,U.jsxs)(`div`,{className:`px-4 py-3 border-b border-surface-200 bg-brand-50/60`,children:[(0,U.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,U.jsx)(K,{size:16,className:`mt-0.5 shrink-0 text-brand-600`}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-surface-900`,children:e(`veto.title`)}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500 mt-0.5`,children:e(`veto.desc`)})]})]}),(0,U.jsxs)(`div`,{className:`flex gap-2 mt-3`,children:[(0,U.jsxs)(`button`,{onClick:()=>m.mutate(),disabled:x,className:`btn-secondary flex-1 justify-center py-1.5 text-xs`,children:[m.isPending?(0,U.jsx)(M,{size:13,className:`animate-spin`}):(0,U.jsx)(St,{size:13}),e(`veto.postpone`)]}),(0,U.jsxs)(`button`,{onClick:()=>_.mutate(),disabled:x,className:`btn-primary flex-1 justify-center py-1.5 text-xs`,children:[_.isPending?(0,U.jsx)(M,{size:13,className:`animate-spin`}):(0,U.jsx)(G,{size:13}),e(`veto.release`)]})]})]}),y.length===0?(0,U.jsx)(`p`,{className:`text-sm text-surface-500 text-center py-10`,children:e(`empty`)}):y.map(e=>{let t=wa[e.type]||wa.default;return(0,U.jsxs)(`button`,{onClick:()=>S(e),className:`w-full text-left px-4 py-3 flex gap-3 border-b border-surface-200/60 hover:bg-surface-100/60 transition-colors ${e.read_at?`opacity-60`:``}`,children:[(0,U.jsx)(t,{size:16,className:`mt-0.5 shrink-0 ${Ta[e.type]||Ta.default}`}),(0,U.jsxs)(`span`,{className:`min-w-0`,children:[(0,U.jsx)(`span`,{className:`block text-sm text-surface-900 leading-snug`,children:e.title}),e.body&&(0,U.jsx)(`span`,{className:`block text-xs text-surface-500 mt-0.5 line-clamp-2`,children:e.body}),(0,U.jsx)(`span`,{className:`block text-[11px] text-surface-600 mt-1`,children:Vi(new Date(e.created_at),{addSuffix:!0,locale:ha()})})]}),!e.read_at&&(0,U.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-brand-500 shrink-0 mt-1.5 ml-auto`})]},e.id)})]}),document.body)]})}var Da=/pass|token|secret|iban|card|cvc|cvv|routing|kontonummer|bic|webhook|api[-_ ]?key/i,Oa=`[maskiert]`,ka=/\/api\/webhooks\/|hooks\.slack|discord\.com\/api\/webhooks/i;function Aa(e){let t=String(e);return ka.test(t)||t.length>32&&!/\s/.test(t)}var ja=40,Ma=500,Na=80;function Pa(e){let t=e.getAttribute(`aria-label`);if(t)return t.trim();
2if(e.id)try{let t=document.querySelector(`label[for="${CSS.escape(e.id)}"]`);if(t&&t.textContent)return t.textContent.trim()}catch{}let n=e.closest(`label`);return n&&n.textContent?n.textContent.trim():e.name||e.getAttribute(`placeholder`)||e.type||`Feld`}function Fa(){let e=typeof document<`u`&&(document.querySelector(`main`)||document.body)||null;if(!e)return{};let t={},n=0;for(let r of e.querySelectorAll(`input, textarea, select`)){if(n>=ja)break;let e=(r.type||``).toLowerCase();if(e===`password`||e===`hidden`||e===`file`)continue;let i=`${r.name||``} ${r.getAttribute(`autocomplete`)||``} ${r.id||``} ${r.getAttribute(`aria-label`)||``} ${r.getAttribute(`placeholder`)||``} ${Pa(r)}`;if(Da.test(i)||e!==`hidden`&&r.offsetParent===null)continue;let a;if(a=e===`checkbox`||e===`radio`?r.checked?`an`:`aus`:r.value,a==null||a===``)continue;let o=Pa(r).slice(0,Na);o&&(t[o]=Aa(a)?Oa:String(a).slice(0,Ma),n++)}return t}function Ia(e){let t;try{t=void 0}catch{}return!t&&typeof window<`u`&&(t=window.__APP_VERSION__),{url:(typeof window<`u`&&window.location||{pathname:``,search:``}).pathname||``,userAgent:typeof navigator<`u`&&navigator.userAgent||``,appVersion:t||void 0,recentApi:me(),formSnapshot:Fa(),locale:e||void 0}}var La=[{id:`dashboard`,routes:[`/dashboard`],title:{de:`Dashboard`,en:`Dashboard`,es:`Panel de control`,it:`Dashboard`},body:{de:`Das Dashboard ist deine Startseite. Oben stehen vier Kennzahlen der letzten 7 Tage im Vergleich zur Vorwoche: veröffentlichte Beiträge, Reichweite (nur von Kanälen mit Reichweiten-Schnittstelle, u. a. Instagram), Interaktionen und gesparte Zeit (eine Schätzung). Darunter folgen die kumulierte Reichweite und die veröffentlichten Artikel der letzten 30 Tage, die Social Posts je Kanal (veröffentlicht und geplant), deine meistgesehenen Artikel und die letzten Aktivitäten. Die Karte âArbeitsvorratâ zeigt, was auf dich wartet (wartet auf Freigabe, fehlgeschlagen, Entwürfe ohne Datum); ein Klick öffnet die passend gefilterte Beitragsliste, und ein kleiner Zähler am Menüpunkt Beiträge weist ebenfalls darauf hin. So gehst du vor: Arbeite die Onboarding-Checkliste ab und starte über âNeuer Artikelâ direkt in den passenden Bereich.`,en:`The dashboard is your home screen. At the top are four key figures for the last 7 days compared with the previous week: published posts, reach (only from channels with a reach interface, e.g. Instagram), interactions and time saved (an estimate). Below that come cumulative reach and published articles for the last 30 days, social posts per channel (published and scheduled), your most-viewed articles and recent activity. A work queue card shows what is waiting for you (awaiting approval, failed, drafts without a date); a click opens the matching filtered post list, and a small counter on the Posts menu item points to it as well. Here is how: work through the onboarding checklist and use 'New article' to jump straight into the matching area.`,es:`El panel de control es tu pantalla de inicio. Arriba aparecen cuatro cifras clave de los últimos 7 dÃas frente a la semana anterior: publicaciones publicadas, alcance (solo de canales con interfaz de alcance, p. ej. Instagram), interacciones y tiempo ahorrado (una estimación). Debajo se muestran el alcance acumulado y los artÃculos publicados de los últimos 30 dÃas, las publicaciones sociales por canal (publicadas y programadas), tus artÃculos más vistos y la actividad reciente. Una tarjeta de tareas pendientes muestra lo que te espera (pendiente de aprobación, fallidas, borradores sin fecha); un clic abre la lista de publicaciones ya filtrada y un pequeño contador en el elemento de menú Publicaciones también lo señala. Cómo proceder: completa la lista de incorporación y usa 'Nuevo artÃculo' para ir directo a la sección correspondiente.`,it:`La dashboard è la tua schermata iniziale. In alto trovi quattro indicatori degli ultimi 7 giorni rispetto alla settimana precedente: post pubblicati, copertura (solo dai canali con interfaccia di copertura, ad es. Instagram), interazioni e tempo risp
2armiato (una stima). Sotto seguono la copertura cumulata e gli articoli pubblicati degli ultimi 30 giorni, i post social per canale (pubblicati e pianificati), i tuoi articoli più visti e le attività recenti. Una scheda del lavoro in sospeso mostra cosa ti aspetta (in attesa di approvazione, non riusciti, bozze senza data); un clic apre l'elenco dei post già filtrato e un piccolo contatore sulla voce di menu Post lo segnala a sua volta. Come procedere: completa la checklist di avvio e usa 'Nuovo articolo' per andare direttamente all'area giusta.`}},{id:`uebersicht`,routes:[`/overview`],title:{de:`Ãbersicht: Wie alles zusammenspielt`,en:`Overview: how it all fits together`,es:`Vision general: como encaja todo`,it:`Panoramica: come tutto si combina`},body:{de:`Die Ãbersicht erklärt, wie die Bausteine ineinandergreifen. Der Kreislauf führt vom Markenkit über den Composer, das Trend-Radar, den Agenten und die Freigabe zum Autopilot, zum Veröffentlichen, zum Postfach und zur Auswertung, dazu kommen Zulieferer wie die Wettbewerbsbeobachtung. So gehst du vor: Folge den nummerierten Karten der Reihe nach oder nutze die begleitete Einstiegsstrecke, jede Karte verlinkt direkt in den passenden Bereich.`,en:`The overview explains how the building blocks interlock. The loop runs from the brand kit through the composer, the trend radar, the agent and approval to the autopilot, publishing, the inbox and analytics, with feeders such as competitor monitoring. Here is how: follow the numbered cards in order or use the guided starter journey; each card links straight to the matching area.`,es:`La vision general explica como encajan las piezas. El ciclo va del kit de marca al compositor, el radar de tendencias, el agente y la aprobacion, hasta el piloto automatico, la publicacion, la bandeja de entrada y las estadisticas, con alimentadores como la observacion de la competencia. Como proceder: sigue las tarjetas numeradas en orden o usa el recorrido guiado de inicio; cada tarjeta enlaza directamente con su seccion.`,it:`La panoramica spiega come i moduli si incastrano. Il ciclo va dal kit di marca al compositore, al radar delle tendenze, all'agente e all'approvazione, fino al pilota automatico, alla pubblicazione, alla casella di posta e alle statistiche, con alimentatori come il monitoraggio dei concorrenti. Come procedere: segui in ordine le schede numerate oppure usa il percorso guidato di avvio; ogni scheda rimanda direttamente all'area giusta.`}},{id:`composer`,routes:[`/compose`],title:{de:`Composer: einmal erfassen, je Kanal erstellen`,en:`Composer: capture once, create per channel`,es:`Compositor: captura una vez, crea por canal`,it:`Compositore: cattura una volta, crea per canale`},body:{de:`Der Composer ist das Herzstück: Du erfasst einen Inhalt einmal, die KI erstellt daraus je Kanal einen eigenen Text und auf Wunsch ein Bild. So gehst du vor: Gib oben Text oder Stichpunkte ein, importiere über 'Seite auslesen' eine Adresse (URL) oder nimm per Mikrofon eine Sprachaufnahme auf, die transkribiert wird. Wähle darunter die Kanäle (nur verbundene sind wählbar) und starte den Lauf. Danach erscheint je Kanal eine Ergebniskarte, die du bearbeiten, sofort posten oder planen kannst.`,en:`The composer is the core: you capture content once, and the AI creates its own text per channel plus, if you want, an image. Here is how: type text or bullet points at the top, import an address (URL) via 'Read page', or record a voice note with the microphone that gets transcribed. Then pick the channels below (only connected ones can be selected) and start the run. Afterwards a result card appears per channel that you can edit, publish right away or schedule.`,es:`El compositor es el nucleo: capturas un contenido una vez y la IA crea un texto propio por canal y, si quieres, una imagen. Como proceder: escribe texto o puntos arriba, importa una direccion (URL) con 'Leer pagina' o graba una nota de voz con el microfono que se transcribe. Luego elige los canales abajo (solo se pueden seleccionar los conectados) e inicia la ejecucion. Despues aparece una ficha de resultado por canal que puedes editar, publicar de inmediato o programar.`,it:`Il compositore e il cuore del sistema: catturi un contenuto una volta e l'IA crea un testo proprio per ogni canale e, se vuoi, un'immagine. Come procedere: scrivi testo o punti elenco in alto, importa un indirizzo (URL) con 'Leggi pagina' oppure registra una nota vocale col microfono che viene trascritta. Poi scegli i canali sotto (si possono selezionare solo quelli collegati) e avvia l'elaborazione. Dopo compare una scheda di risultato per canale che puoi modificare, pubblicare subito o programmare.`}},{id:`composer-kanaltext`,routes:[`/compose`],title:{de:`KI-Text pro Kanal und kanal-nativer Ton`,en:`AI text per channel and channel-native tone`,es:`Texto de IA por canal y tono nativo del canal`,it:`Testo IA per canale e tono nativo del canale`},body:{de:`Ist 'KI-Text' aktiv, textet die KI je Kanal ein eigenes Ergebnis; schaltest du es aus, wird dein Text unverändert übernommen. Mit 'Kanal-nativer Ton' schreibt die KI je Kanal im plattformtypischen Stil (etwa sachlich auf LinkedIn, knapp auf X). Das erzeugt je Kanal einen eigenen Text und kostet entsprechend mehr Credits. Hast du im Markenkit Personas gepflegt, entsteht zusätzlich je ausgewählter Persona eine Variante.`,en:`When 'AI text' is on, the AI writes its own result per channel; turn it off and your text is used unchanged. With 'Channel-native tone' the AI writes in the platform-typical style per channel (for example factual on LinkedIn, terse on X). This produces a separate text per channel and costs correspondingly more credits. If you maintain personas in the brand kit, an extra variant is created per selected persona.`,es:`Con 'Texto de IA' activado, la IA redacta un resultado propio por canal; si lo desactivas, se usa tu texto sin cambios. Con 'Tono nativo del canal' la IA escribe en el estilo tipico de cada plataforma (por ejemplo formal en LinkedIn, breve en X). Esto genera un texto propio por canal y cuesta mas creditos. Si mantienes personas en el kit de marca, se crea ademas una variante por cada persona seleccionad
2a.`,it:`Con 'Testo IA' attivo, l'IA scrive un risultato proprio per canale; se lo disattivi, il tuo testo viene usato senza modifiche. Con 'Tono nativo del canale' l'IA scrive nello stile tipico di ogni piattaforma (per esempio formale su LinkedIn, conciso su X). Cosi si ottiene un testo proprio per canale e costa piu crediti. Se mantieni delle persona nel kit di marca, viene creata anche una variante per ogni persona selezionata.`}},{id:`composer-sprache-lauf`,routes:[`/compose`],title:{de:`Sprache dieses Laufs`,en:`Language for this run`,es:`Idioma de esta ejecucion`,it:`Lingua di questa elaborazione`},body:{de:`Ãber 'Sprache dieses Laufs' übersteuerst du die Sprache genau für diesen einen Durchgang (Automatisch, Deutsch, Englisch, Spanisch oder Italienisch). Die Wahl betrifft nicht nur den FlieÃtext, sondern auch Titel sowie Kachel- und Bildtexte. Lässt du sie auf 'Automatisch', gilt die Standardsprache deines Kontos oder Workspace. Für den nächsten Lauf fällt die Einstellung wieder auf den Standard zurück.`,en:`With 'Language for this run' you override the language for this single pass only (Automatic, German, English, Spanish or Italian). The choice affects not just the body text but also the title as well as tile and image texts. Left on 'Automatic', the default language of your account or workspace applies. For the next run the setting falls back to the default.`,es:`Con 'Idioma de esta ejecucion' anulas el idioma solo para esta pasada (Automatico, aleman, ingles, espanol o italiano). La eleccion afecta no solo al texto principal, sino tambien al titulo y a los textos de fichas e imagenes. Si lo dejas en 'Automatico', se aplica el idioma predeterminado de tu cuenta o espacio de trabajo. En la siguiente ejecucion el ajuste vuelve al valor predeterminado.`,it:`Con 'Lingua di questa elaborazione' forzi la lingua solo per questo singolo passaggio (Automatico, tedesco, inglese, spagnolo o italiano). La scelta riguarda non solo il corpo del testo, ma anche il titolo e i testi di riquadri e immagini. Se la lasci su 'Automatico', vale la lingua predefinita del tuo account o spazio di lavoro. Alla prossima elaborazione l'impostazione torna al valore predefinito.`}},{id:`composer-geo-check`,routes:[`/compose`],title:{de:`GEO-Check: zitierfähig optimieren`,en:`GEO check: optimize for citation`,es:`Verificacion GEO: optimizar para ser citado`,it:`Controllo GEO: ottimizzare per la citazione`},body:{de:`Der GEO-Check optimiert deinen Eingabetext vor dem Erzeugen so, dass ihn KI-Suchsysteme leichter zitieren können (zitierfähig). So gehst du vor: Lass den Haken 'GEO-Check' gesetzt, er wirkt bei Texteingabe ab etwa 20 Zeichen. Der Text wird dann zuerst optimiert und erst daraus je Kanal getextet. Der Schritt kostet zusätzlich Credits und ist in der Preisvorschau vor dem Lauf ausgewiesen.`,en:`The GEO check optimizes your input text before generation so AI search systems can cite it more easily (citation-ready). Here is how: keep the 'GEO check' box ticked; it applies to text input from about 20 characters. The text is optimized first and only then used to write per channel. The step costs extra credits and is shown in the price preview before the run.`,es:`La verificacion GEO optimiza tu texto de entrada antes de generar para que los sistemas de busqueda con IA puedan citarlo mas facilmente (apto para citas). Como proceder: manten marcada la casilla 'Verificacion GEO'; actua con entrada de texto a partir de unos 20 caracteres. Primero se optimiza el texto y solo despues se redacta por canal. El paso cuesta creditos adicionales y aparece en la vista previa de precio antes de la ejecucion.`,it:`Il controllo GEO ottimizza il testo di partenza prima della generazione, cosi i sistemi di ricerca con IA possono citarlo piu facilmente (citabile). Come procedere: lascia spuntata la casella 'Controllo GEO'; agisce con input di testo da circa 20 caratteri. Il testo viene prima ottimizzato e solo dopo usato per scrivere per ogni canale. Il passaggio costa crediti aggiuntivi ed e indicato nell'anteprima del prezzo prima dell'elaborazione.`}},{id:`fakten-check`,routes:[`/compose`,`/autopilot`,`/highlights`,`/sovereignty`],title:{de:`Fakten-Check und B2B-Modus`,en:`Fact-check and B2B mode`,es:`Comprobación de hechos y modo B2B`,it:`Verifica dei fatti e modalità B2B`},body:{de:`Der Fakten-Check lässt die KI vor dem Schreiben im Web nach belegbaren Fakten suchen und den fertigen Text danach dagegen prüfen. Der Standard (an) gilt für Autopilot, Highlights, Composer und KI-Entwürfe und wird von Owner und Admins unter Datensouveränität gesetzt; je Autopilot-Regel (Schild-Symbol: Standard, An, Aus), je Highlight und im Composer (âFakten-Checkâ, nur wenn die KI den Artikel ausformuliert) kannst du ihn für diese Regel oder diesen Lauf übersteuern. Gebucht werden Credits (âKI-Fakten-Rechercheâ) nur, wenn wirklich recherchiert wurde, beim Autopilot nur, wenn Quellen gefunden wurden; die Social-Texte desselben Laufs nutzen die Recherche ohne Aufpreis. Bei erzwungener EU-Verarbeitung gibt es keine Web-Recherche, der Text entsteht dann ohne sie und ohne Kosten. Ãhnlich funktioniert der B2B-Modus:
2Er macht einen Beitrag verkaufsorientiert (Problem- oder ROI-Einstieg, Handlungsaufruf âLink in Bioâ). Der Standard steht im Brand-Kit je Kanal; beim Autopilot übersteuerst du ihn je Regel (Koffer-Symbol), im Composer schaltest du ihn je Lauf und Kanal ein (Standard aus, nur bei KI-Text ohne kanal-nativen Ton oder bei KI-Bild).`,en:`The fact-check has the AI search the web for verifiable facts before writing and then check the finished text against them. The default (on) applies to autopilot, highlights, composer and AI drafts and is set by owners and admins under Data sovereignty; you can override it per autopilot rule (shield icon: default, on, off), per highlight and in the composer ('Fact-check', only when the AI writes out the article) for that rule or run. Credits (AI fact research) are only booked when research really happened, in the autopilot only when sources were found; the social texts of the same run reuse the research at no extra cost. With enforced EU processing there is no web research; the text is then created without it and without cost. The B2B mode works similarly: it makes a post sales-oriented (problem or ROI opening, call to action 'Link in bio'). The default is set per channel in the brand kit; in the autopilot you override it per rule (briefcase icon), in the composer you switch it on per run and channel (off by default, only for AI text without channel-native tone or with an AI image).`,es:`La comprobación de hechos hace que la IA busque en la web hechos verificables antes de escribir y compruebe después el texto terminado contra ellos. El valor predeterminado (activado) se aplica al piloto automático, los destacados, el compositor y los borradores de IA, y lo fijan propietarios y administradores en SoberanÃa de datos; puedes anularlo por regla del piloto automático (icono de escudo: predeterminado, sÃ, no), por destacado y en el compositor ('Comprobación de hechos', solo cuando la IA redacta el artÃculo) para esa regla o ejecución. Los créditos (investigación de hechos con IA) solo se cobran si de verdad se investigó, y en el piloto automático solo si se encontraron fuentes; los textos sociales de la misma ejecución reutilizan la investigación sin coste adicional. Con el procesamiento en la UE forzado no hay investigación web; el texto se crea entonces sin ella y sin coste. El modo B2B funciona de forma parecida: hace que una publicación esté orientada a la venta (arranque con problema o ROI, llamada a la acción 'Link in bio'). El valor predeterminado se define por canal en el kit de marca; en el piloto automático lo anulas por regla (icono de maletÃn
2), en el compositor lo activas por ejecución y canal (desactivado por defecto, solo con texto de IA sin tono nativo del canal o con imagen de IA).`,it:`La verifica dei fatti fa cercare all'IA sul web fatti verificabili prima di scrivere e poi controlla il testo finito rispetto a essi. Il valore predefinito (attivo) vale per autopilota, contenuti in evidenza, compositore e bozze IA e lo imposta chi è titolare o amministratore in Sovranità dei dati; puoi sostituirlo per regola dell'autopilota (icona dello scudo: predefinito, sì, no), per elemento in evidenza e nel compositore ('Verifica dei fatti', solo quando l'IA redige l'articolo) per quella regola o esecuzione. I crediti (ricerca di fatti con IA) vengono addebitati solo se la ricerca è davvero avvenuta, nell'autopilota solo se sono state trovate fonti; i testi social della stessa esecuzione riutilizzano la ricerca senza costi aggiuntivi. Con l'elaborazione UE imposta non c'è ricerca web; il testo nasce allora senza di essa e senza costi. La modalità B2B funziona in modo simile: rende un post orientato alla vendita (apertura con problema o ROI, invito all'azione 'Link in bio'). Il valore predefinito si imposta per canale nel brand kit; nell'autopilota lo sostituisci per regola (icona della valigetta), nel compositore lo attivi per esecuzione e canale (disattivato di default, solo con testo IA senza tono nativo del canale o con immagine IA).`}},{id:`composer-bildmodi`,routes:[`/compose`],title:{de:`Bildmodi: Vorlage, KI, Layout, eigenes Bild`,en:`Image modes: template, AI, layout, own image`,es:`Modos de imagen: plantilla, IA, diseno, imagen propia`,it:`Modalita immagine: modello, IA, layout, immagine propria`},body:{de:`Ãber die Bildauswahl legst du fest, ob und wie ein Bild entsteht. 'Vorlage lokal' rendert ein gebrandetes Vorlagenbild ohne KI (DSGVO-unbedenklich, kein KI-Foto), 'KI-generiert' erzeugt ein KI-Foto, 'Layout' nutzt ein von dir gespeichertes Layout, 'Eigenes Bild' wählt ein Bild aus der Mediathek und 'keine' erzeugt nur Text. Bei mehreren Kanälen mit erzeugtem Bild kannst du 'gleiches Bild auf allen Kanälen' setzen, dann wird ein Bild erzeugt und je Format skaliert (spart Credits). Bilder lassen sich auch erst nach dem Lauf über 'Bilder für alle Beiträge erzeugen' anhängen.`,en:`The image selection sets whether and how an image is created. 'Local template' renders a branded template image without AI (privacy-safe, no AI photo), 'AI-generated' creates an AI photo, 'Layout' uses a layout you saved, 'Own image' picks an image from the media library, and 'none' produces text only. With several channels and a generated image you can set 'same image on all channels'; then one image is created and scaled per format (saves credits). Images can also be attached only after the run via 'Generate images for all posts'.`,es:`La seleccion de imagen define si se crea una imagen y como. 'Plantilla local' genera una imagen de plantilla con marca sin IA (segura para privacidad, sin foto de IA), 'Generada por IA' crea una foto de IA, 'Diseno' usa un diseno que guardaste, 'Imagen propia' elige una imagen de la biblioteca y 'ninguna' produce solo texto. Con varios canales y una imagen generada puedes activar 'misma imagen en todos los canales'; entonces se crea una imagen y se escala por formato (ahorra creditos). Tambien puedes adjuntar imagenes despues de la ejecucion con 'Generar imagenes para todas las publicaciones'.`,it:`La selezione dell'immagine stabilisce se e come si crea un'immagine. 'Modello locale' genera un'immagine modello col marchio senza IA (sicura per la privacy, nessuna foto IA), 'Generata con IA' crea una foto IA, 'Layout' usa un layout che hai salvato, 'Immagine propria' sceglie un'immagine dalla libreria e 'nessuna' produce solo testo. Con piu canali e un'immagine generata puoi attivare 'stessa immagine su tutti i canali'; cosi viene creata una sola immagine e ridimensionata per formato (risparmia crediti). Le immagini si possono aggiungere anche dopo l'elaborazione con 'Genera immagini per tutti i post'.`}},{id:`composer-beitragsart`,routes:[`/compose`],title:{de:`Beitragsart: Beitrag, Story, Karussell, Reel`,en:`Post type: post, story, carousel, reel`,es:`Tipo de publicacion: publicacion, historia, carrusel, reel`,it:`Tipo di post: post, storia, carosello, reel`},body:{de:`Wähle die Beitragsart passend zum Ziel. 'Beitrag' ist der normale Feed-Post, 'Story' gilt nur für Instagram und Facebook und braucht ein Bild, 'Karussell' erzeugt mehrere Slides (Instagram oder LinkedIn) nach einem gewählten Design, und 'Reel' verlangt ein Video aus der Mediathek. Ein Reel wird vor dem Erzeugen auf Format und Länge geprüft, damit es die Plattform annimmt. Je nach Kanalauswahl sind nur die passenden Beitragsarten sichtbar.`,en:`Choose the post type to match your goal. 'Post' is the normal feed post, 'Story' applies only to Instagram and Facebook and needs an image, 'Carousel' creates several slides (Instagram or LinkedIn) following a chosen design, and 'Reel' requires a video from the media library. A reel is checked for format and length before generation so the platform accepts it. Depending on the channel selection, only the applicable post types are shown.`,es:`
2Elige el tipo de publicacion segun tu objetivo. 'Publicacion' es la del feed normal, 'Historia' solo vale para Instagram y Facebook y necesita una imagen, 'Carrusel' crea varias diapositivas (Instagram o LinkedIn) segun un diseno elegido, y 'Reel' requiere un video de la biblioteca. Un reel se comprueba en formato y duracion antes de generarlo para que la plataforma lo acepte. Segun los canales elegidos solo se muestran los tipos aplicables.`,it:`Scegli il tipo di post in base all'obiettivo. 'Post' e il normale post nel feed, 'Storia' vale solo per Instagram e Facebook e richiede un'immagine, 'Carosello' crea piu slide (Instagram o LinkedIn) secondo un design scelto, e 'Reel' richiede un video dalla libreria. Un reel viene controllato per formato e durata prima della generazione, cosi la piattaforma lo accetta. A seconda dei canali scelti sono visibili solo i tipi applicabili.`}},{id:`composer-ergebnis`,routes:[`/compose`],title:{de:`Ergebnis bearbeiten und Web-Artikel anlegen`,en:`Edit the result and create a web article`,es:`Editar el resultado y crear un artÃculo web`,it:`Modificare il risultato e creare un articolo web`},body:{de:`Nach dem Lauf erscheint je Kanal eine Karte, die als Entwurf gespeichert ist: Text und Hashtags kannst du direkt bearbeiten und speichern, bei normalen Feed-Beiträgen das Bild austauschen oder entfernen, den Text kopieren oder die Karte verwerfen. Der Zeichenzähler rechnet mit der Server-Vorabprüfung (inklusive KI-Kennzeichnung und Quellenhinweis); fällt sie aus, gilt die feste Grenze des Kanals und âohne Kennzeichnung gerechnetâ erscheint. Wer direkt veröffentlichen darf (Owner, Admin), postet sofort oder plant auf einen Zeitpunkt (nicht in der Vergangenheit), auch gesammelt für alle offenen Karten. Editoren ohne Veröffentlichungsrecht sehen stattdessen die eine Aktion âZur Freigabe einreichenâ. Für Kanäle ohne verbundenes Konto entsteht kein Entwurf, der Text lässt sich nur kopieren. Setzt du âWeb-Artikel anlegenâ, entsteht zusätzlich ein Web-Artikel, den die KI auf Wunsch ausformuliert; ohne den Haken bleibt es bei Social-Beiträgen.`,en:`After the run a card appears per channel, saved as a draft: you can edit and save text and hashtags directly, swap or remove the image on normal feed posts, copy the text or discard the card. The character counter uses the server pre-check (including AI labeling and source note); if it is unavailable, the fixed channel limit applies and 'calculated without label' is shown. Those who may publish directly (owner, admin) post right away or schedule for a time (not in the past), also in bulk for all open cards. Editors without the right to publish see the single action 'Submit for approval' instead. For channels without a connected account no draft is created, the text can only be copied. If you tick 'Create web article', a web article is created as well, which the AI fleshes out on request; without that box it stays purely social posts.`,es:`Tras la ejecución aparece una ficha por canal, guardada como borrador: puedes editar y guardar texto y hashtags directamente, cambiar o quitar la imagen en las publicaciones normales del feed, copiar el texto o descartar la ficha. El contador de caracteres usa la comprobación previa del servidor (incluidos el etiquetado de IA y la nota de fuente); si no está disponible, se aplica el lÃmite fijo del canal y aparece 'calculado sin etiqueta'. Quien puede publicar directamente (propietario, administrador) publica de inmediato o programa para una hora (no en el pasado), también en bloque para todas las fichas abiertas. Los editores sin derecho a publicar ven en su lugar la única acción 'Enviar a aprobación'. Para canales sin cuenta conectada no se crea ningún borrador, el texto solo se puede copiar. Si marcas 'Crear artÃculo web', se crea además un artÃculo web que la IA redacta si lo pides; sin esa casilla, quedan solo las publicaciones sociales.`,it:`Dopo l'elaborazione compare una scheda per canale, salvata come bozza: puoi modificare e salvare direttamente testo e hashtag, sostituire o rimuovere l'immagine nei normali post del feed, copiare il testo o scartare la scheda. Il contatore dei caratteri usa il controllo preventivo del server (compresi l'etichettatura IA e la nota sulla fonte); se non è disponibile, vale il limite fisso del canale e compare 'calcolato senza etichetta'. Chi può pubblicare direttamente (titolare, amministratore) pubblica subito o pianifica per un orario (non nel passato), anche in blocco per tutte le schede aperte. Gli editor senza diritto di pubblicazione vedono invece l'unica azione 'Invia per approvazione'. Per i canali senza account collegato non viene creata alcuna bozza, il testo si può solo copiare. Se spunti 'Crea articolo web', viene creato anche un articolo web che l'IA sviluppa su richiesta; senza quella casella restano solo i post social.`}},{id:`marktplatz-listing`,routes:[`/compose/shop`],title:{de:`Marktplatz-Listing (Amazon, Otto, eBay, Kaufland)`,en:`Marketplace listing (Amazon, Otto, eBay, Kaufland)`,es:`Ficha de marketplace (Amazon, Otto, eBay, Kaufland)`,it:`Scheda marketplace (Amazon, Otto, eBay, Kaufland)`},body:{de:`Das Marktplatz-Listing erzeugt aus einem Produkt deines Shops einen verkaufsfertigen Text für Amazon, Otto, eBay oder Kaufland. So gehst du vor: Ãffne unter Erstellen den Shop-Composer (dafür muss eine Umsatzquelle bzw. ein Shop verbunden sein), wähle ein Produkt, stelle oben den Mar
2ktplatz ein und klicke 'Listing erzeugen'. Die KI liefert Titel, Aufzählungspunkte (Bullets), eine Beschreibung und Keywords, die du direkt kopieren und im jeweiligen Marktplatz einfügen kannst. Es wird nichts gespeichert und nichts automatisch veröffentlicht; die Aktion kostet Credits (in der Testphase ein Freischuss).`,en:`The marketplace listing turns a product from your shop into a ready-to-sell text for Amazon, Otto, eBay or Kaufland. Here is how: open the shop composer under Create (this needs a revenue source or shop to be connected), pick a product, set the marketplace at the top and click 'Generate listing'. The AI returns a title, bullet points, a description and keywords that you can copy straight away and paste into the respective marketplace. Nothing is saved and nothing is published automatically; the action costs credits (one free shot during the trial).`,es:`La ficha de marketplace convierte un producto de tu tienda en un texto listo para vender en Amazon, Otto, eBay o Kaufland. Cómo proceder: abre el compositor de tienda en Crear (para ello debe haber una fuente de ingresos o tienda conectada), elige un producto, ajusta arriba el marketplace y pulsa 'Generar ficha'. La IA devuelve un tÃtulo, viñetas, una descripción y palabras clave que puedes copiar de inmediato y pegar en el marketplace correspondiente. No se guarda nada ni se publica nada automáticamente; la acción cuesta créditos (un tiro libre durante la fase de prueba).`,it:`La scheda marketplace trasforma un prodotto del tuo shop in un testo pronto per la vendita su Amazon, Otto, eBay o Kaufland. Come procedere: apri il compositore shop in Crea (serve una fonte di ricavo o uno shop collegato), scegli un prodotto, imposta in alto il marketplace e premi 'Genera scheda'. L'IA restituisce un titolo, punti elenco (bullet), una descrizione e parole chiave che puoi copiare subito e incollare nel rispettivo marketplace. Non viene salvato nulla e non viene pubblicato nulla automaticamente; l'azione costa crediti (un colpo libero durante la prova).`}},{id:`voice-diff`,routes:[`/voice-diff`],title:{de:`Markenstimme-Vergleich`,en:`Brand voice comparison`,es:`Comparacion de voz de marca`,it:`Confronto della voce del marchio`},body:{de:`Der Markenstimme-Vergleich zeigt, wie derselbe Inhalt auf verschiedenen Kanälen unterschiedlich klingt. So gehst du vor: Gib Titel und Inhalt ein, wähle mindestens zwei verbundene Kanäle und starte den Vergleich, danach stehen die kanal-nativen Texte nebeneinander. Im Leerzustand siehst du ein Beispiel (ein Input, drei Kanäle), das den Nutzen ohne Credits zeigt. Der Lauf nutzt dieselbe KI wie der Composer und kostet je Kanal Credits.`,en:`The brand voice comparison shows how the same content sounds different across channels. Here is how: enter a title and content, pick at least two connected channels and start the comparison; then the channel-native texts sit side by side. In the empty state you see an example (one input, three channels) that shows the value without spending credits. The run uses the same AI as the composer and costs credits per channel.`,es:`La comparacion de voz de marca muestra como el mismo contenido suena distinto en cada canal. Como proceder: introduce titulo y contenido, elige al menos dos canales conectados e inicia la comparacion; luego los textos nativos de cada canal aparecen uno al lado del otro. En el estado vacio ves un ejemplo (una entrada, tres canales) que muestra la utilidad sin gastar creditos. La ejecucion usa la misma IA que el compositor y cuesta creditos por canal.`,it:`Il confronto della voce del marchio mostra come lo stesso contenuto suoni diverso sui vari canali. Come procedere: inserisci titolo e contenuto, scegli almeno due canali collegati e avvia il confronto; poi i testi nativi di ogni canale compaiono affiancati. Nello stato vuoto vedi un esempio (un input, tre canali) che mostra l'utilita senza spendere crediti. L'elaborazione usa la stessa IA del compositore e costa crediti per canale.`}},{id:`video`,routes:[`/video`],title:{de:`Video: Clips für Reels schneiden`,en:`Video: cut clips for reels`,es:`Video: cortar clips para reels`,it:`Video: tagliare clip per i reel`},body:{de:`Unter Video schneidest du aus einem längeren Video automatisch kurze, hochformatige Clips (9:16) für Reels. So gehst du vor: Lade über 'Video auswählen' eine Datei hoch, die Verarbeitung läuft im Hintergrund (der Status wird angezeigt) und liefert mehrere Clips mit Bewertung und Bildunterschrift. Ãber 'Als Reel posten' springst du mit dem gewählten Clip direkt in den Composer, wo Video und Beitragsart 'Reel' schon vorbelegt sind. Frühere Läufe findest du in der Liste darunter; das Schneiden kostet Credits.`,en:`Under Video you automatically cut short, vertical clips (9:16) for reels from a longer video. Here is how: upload a file via 'Select video'; processing runs in the background (the status is shown) and returns several clips with a score and caption. Via 'Post as reel' you jump with the chosen clip straight into the composer, where the video and post type 'Reel' are already preset. Earlier runs are in the list below; cutting costs credits.`,es:`En Video cortas automaticamente clips cortos y verticales (9:16) para reels a partir de un video mas largo. Como proceder: sube un archivo con 'Seleccionar video'; el procesamiento corre en segundo plano (se muestra el estado) y devuelve varios clips con puntuacion y pie. Con 'Publicar como reel' saltas con el clip elegido directo al compositor, donde el video y el tipo 'Reel' ya estan preseleccionados. Las ejecuciones anteriores estan en la lista de abajo; cortar cuesta creditos.`,it:`In Video ritagli automaticamente clip brevi e verticali (9:16) per i reel da un video piu lungo. Come procedere: carica un file con 'Seleziona video'; l'elaborazione avviene in background (viene mostrato lo stato) e restituisce piu clip con punteggio e didascali
2a. Con 'Pubblica come reel' salti con la clip scelta direttamente nel compositore, dove video e tipo 'Reel' sono gia preimpostati. Le elaborazioni precedenti sono nell'elenco sotto; il taglio costa crediti.`}},{id:`mediathek`,routes:[`/media`],title:{de:`Mediathek`,en:`Media library`,es:`Biblioteca de medios`,it:`Libreria multimediale`},body:{de:`Die Mediathek verwaltet deine Bilder und Videos. So gehst du vor: Lade neue Dateien hoch, sieh je Datei Herkunft und Verwendung, und wähle gespeicherte Medien später im Composer als eigenes Bild oder als Reel-Video. Oben zeigt die Speicher-Kachel Verbrauch und Limit; ist der Speicher knapp, können Inhaber und Admins dort Zusatzpakete buchen oder kündigen (der Preis kommt vom Server). Die Nur-Lese-Rolle kann Medien ansehen, aber nicht ändern.`,en:`The media library manages your images and videos. Here is how: upload new files, see the origin and usage per file, and later pick saved media in the composer as your own image or as a reel video. At the top the storage tile shows usage and limit; when space runs low, owners and admins can book or cancel add-on packs there (the price comes from the server). The read-only role can view media but not change it.`,es:`La biblioteca de medios gestiona tus imagenes y videos. Como proceder: sube archivos nuevos, ve el origen y el uso de cada archivo, y luego elige medios guardados en el compositor como imagen propia o como video de reel. Arriba, la ficha de almacenamiento muestra el uso y el limite; cuando queda poco espacio, propietarios y administradores pueden contratar o cancelar paquetes adicionales alli (el precio viene del servidor). El rol de solo lectura puede ver los medios pero no modificarlos.`,it:`La libreria multimediale gestisce immagini e video. Come procedere: carica nuovi file, vedi origine e utilizzo per ogni file, e scegli poi i media salvati nel compositore come immagine propria o come video del reel. In alto la scheda dello spazio mostra utilizzo e limite; quando lo spazio scarseggia, titolari e amministratori possono attivare o disdire pacchetti aggiuntivi li (il prezzo viene dal server). Il ruolo di sola lettura puo vedere i media ma non modificarli.`}},{id:`mediathek-ki-optimierung`,routes:[`/media`],title:{de:`KI-Bildoptimierung`,en:`AI image optimization`,es:`Optimización de imágenes con IA`,it:`Ottimizzazione immagini con IA`},body:{de:`In der Mediathek kannst du Bilder per KI optimieren: markiere ein oder mehrere Bilder und klicke "KI-Optimierung", oder wähle die Optimierungen direkt beim Hochladen. Verfügbar sind unter anderem QR-Codes und störende Objekte entfernen, freistellen (Hintergrund entfernen oder ersetzen), aufhübschen, hochskalieren und schärfen, entrauschen, gerade rücken, Gesichter und Kennzeichen anonymisieren (DSGVO) sowie einen Alt-Text erzeugen. Das Ergebnis wird als NEUES Bild gespeichert und verweist auf das Original (im Eigenschaften-Dialog als Link); das Original bleibt unverändert. Die KI-Optimierung kostet Credits (je Bild und je Optimierung, in der Testphase ein Freischuss); scheitert ein Schritt, wird dafür nichts berechnet.`,en:`In the media library you can optimize images with AI: select one or more images and click "AI optimization", or choose the optimizations directly on upload. Options include removing QR codes and distracting objects, cutting out the background (remove or replace), beautifying, upscaling and sharpening, denoising, straightening, anonymizing faces and license plates (GDPR), and generating alt text. The result is saved as a NEW image and links back to the original (as a link in the properties dialog); the original stays untouched. AI optimization costs credits (per image and per optimization, one free try during the trial); if a step fails, nothing is charged for it.`,es:`En la biblioteca de medios puedes optimizar imágenes con IA: marca una o varias imágenes y pulsa "Optimización con IA", o elige las optimizaciones directamente al subir. Entre las opciones: eliminar códigos QR y objetos que molesten, recortar el fondo (quitar o sustituir), embellecer, escalar y enfocar, reducir ruido, enderezar, anonimizar caras y matrÃculas (RGPD) y generar texto alternativo. El resultado se guarda como una imagen NUEVA y enlaza al original (como enlace en el diálogo de propiedades
2); el original no se toca. La optimización con IA cuesta créditos (por imagen y por optimización, un intento gratis en la fase de prueba); si un paso falla, no se cobra por él.`,it:`Nella libreria multimediale puoi ottimizzare le immagini con l'IA: seleziona una o più immagini e premi "Ottimizzazione IA", oppure scegli le ottimizzazioni direttamente al caricamento. Tra le opzioni: rimuovere codici QR e oggetti di disturbo, scontornare lo sfondo (rimuovere o sostituire), abbellire, ingrandire e aumentare la nitidezza, ridurre il rumore, raddrizzare, anonimizzare volti e targhe (GDPR) e generare un testo alternativo. Il risultato viene salvato come NUOVA immagine e rimanda all'originale (come link nella finestra delle proprietà ); l'originale resta invariato. L'ottimizzazione IA costa crediti (per immagine e per ottimizzazione, un tentativo gratuito in fase di prova); se un passaggio fallisce, non viene addebitato nulla.`}},{id:`kalender`,routes:[`/calendar`],title:{de:`Kalender`,en:`Calendar`,es:`Calendario`,it:`Calendario`},body:{de:`Der Redaktionskalender zeigt Beiträge im Monatsraster, auf dem Handy als chronologische Agenda. So gehst du vor: Blättere mit den Pfeilen durch die Monate; die Statuspunkte unterscheiden wartet auf Freigabe, eingeplant, veröffentlicht, fehlgeschlagen und Entwurf, gestrichelte Einträge sind anstehende Läufe von Autopilot und Highlights (noch keine Beiträge). Bei vielen Einträgen an einem Tag öffnet âplus X mehrâ die vollständige Tagesliste. Ein Klick auf einen Eintrag öffnet immer eine Detailkarte mit den passenden Aktionen: Bearbeiten, Umplanen, Jetzt posten, Freigeben, Ablehnen und Klonen (je nach Status und Rolle). Geplante Beiträge ziehst du mit âZurückziehenâ zurück, statt sie zu löschen; Entwürfe ohne Datum stehen in der Liste âOhne Datumâ unter dem Kalender. Neue Beiträge entstehen im Composer, der Kalender ist Ãbersicht und Schaltstelle.`,en:`The editorial calendar shows posts in a month grid, and as a chronological agenda on mobile. Here is how: page through the months with the arrows; the status dots distinguish awaiting approval, scheduled, published, failed and draft, and dashed entries are upcoming autopilot and highlight runs (not yet posts). When a day has many entries, 'plus X more' opens the full day list. A click on an entry always opens a detail card with the matching actions: edit, reschedule, post now, approve, reject and clone (depending on status and role). You pull back scheduled posts with 'Withdraw' instead of deleting them; drafts without a date are listed below the calendar. New posts are created in the composer; the calendar is the overview and control point.`,es:`El calendario editorial muestra las publicaciones en una cuadrÃcula mensual, y como agenda cronológica en el móvil. Cómo proceder: pasa por los meses con las flechas; los puntos de estado distinguen pendiente de aprobación, programada, publicada, fallida y borrador, y las entradas con borde discontinuo son ejecuciones próximas del piloto automático y de los destacados (aún no son publicaciones). Cuando un dÃa tiene muchas entradas, 'más X' abre la lista completa del dÃa. Un clic en una entrada abre siempre una ficha de detalle con las acciones adecuadas: editar, reprogramar, publicar ahora, aprobar, rechazar y clonar (según estado y rol). Las publicaciones programadas se retiran con 'Retirar' en lugar de borrarlas; los borradores sin fecha aparecen en una lista debajo del calendario. Las publicaciones nuevas se crean en el compositor; el calendario es la vista general y el punto de control.`,it:`Il calendario editoriale mostra i post in una griglia mensile, e come agenda cronologica su mobile. Come procedere: sfoglia i mesi con le frecce; i punti di stato distinguono in attesa di approvazione, pianificato, pubblicato, non riuscito e bozza, mentre le voci tratteggiate sono le prossime esecuzioni di autopilota e contenuti in evidenza (non ancora post). Quando un giorno ha molte voci, 'più X' apre l'elenco completo della giornata. Un clic su una voce apre sempre una scheda di dettaglio con le azioni adatte: modificare, ripianificare, pubblicare ora, approvare, rifiutare e clonare (a seconda di stato e ruolo). I post pianificati si ritirano con 'Ritira' invece di eliminarli;
2 le bozze senza data compaiono in un elenco sotto il calendario. I nuovi post nascono nel compositore; il calendario è la panoramica e il punto di controllo.`}},{id:`zusammenfassung-fehlgeschlagen`,routes:[`/compose`,`/compose/shop`],title:{de:`Grafiken und Shop: Zusammenfassung mit Fehlgeschlagen`,en:`Graphics and shop: summary with Failed`,es:`Gráficos y tienda: resumen con Fallidas`,it:`Grafiche e shop: riepilogo con Non riusciti`},body:{de:`Nachdem du eigene Grafiken im Composer ausgespielt oder im Shop Beiträge aus Produkten erzeugt hast, fasst eine Meldung zusammen, was daraus wurde: Eingeplant, Zur Freigabe eingereicht (Editoren ohne Freigabe-Recht), Entwurf (der Grund steht am Beitrag, zum Beispiel ein fehlendes Pflichtbild) und Fehlgeschlagen. Fehlgeschlagen zählt Beiträge, die beim Anlegen oder Einplanen gescheitert sind; sie wurden früher fälschlich als Entwurf mitgezählt. Du findest sie unter Social Posts mit dem Filter âFehlgeschlagenâ und kannst sie dort prüfen, erneut versuchen oder löschen. Die Zahlen stammen direkt aus dem Ergebnis je Kanal, nicht aus einer Schätzung.`,en:`After you have published your own graphics in the composer or created posts from products in the shop, a message sums up what happened: Scheduled, Submitted for approval (editors without the approval right), Draft (the reason is on the post, for example a missing required image) and Failed. Failed counts posts that failed while being created or scheduled; they used to be counted wrongly as drafts. You find them under Social posts with the filter 'Failed', where you can check them, try again or delete them. The numbers come directly from the result per channel, not from an estimate.`,es:`Después de publicar tus propios gráficos en el compositor o de crear publicaciones a partir de productos en la tienda, un mensaje resume lo que pasó: Programadas, Enviadas para aprobación (editores sin permiso de aprobación), Borrador (el motivo figura en la publicación, por ejemplo una imagen obligatoria que falta) y Fallidas. Fallidas cuenta las publicaciones que fallaron al crearse o programarse; antes se contaban por error como borradores. Las encuentras en Publicaciones sociales con el filtro 'Fallido', donde puedes revisarlas, volver a intentarlo o eliminarlas. Las cifras salen directamente del resultado por canal, no de una estimación.`,it:`Dopo aver pubblicato le tue grafiche nel compositore o creato post dai prodotti nello shop, un messaggio riassume cosa è successo: Pianificati, Inviati per approvazione (redattori senza diritto di approvazione), Bozza (il motivo è indicato sul post, ad esempio un'immagine obbligatoria mancante) e Non riusciti. Non riusciti conta i post che non è stato possibile creare o pianificare; prima venivano contati per errore come bozze. Li trovi in Post social con il filtro 'Non riuscito', dove puoi controllarli, riprovare o eliminarli. I numeri provengono direttamente dal risultato per canale, non da una stima.`}}],Ra=[{id:`autopilot`,routes:[`/autopilot`],title:{de:`Autopilot`,en:`Autopilot`,es:`Piloto automático`,it:`Autopilota`},body:{de:`Der Autopilot erzeugt und plant Beiträge automatisch nach Regeln, die nur Owner und Admins anlegen. Eine Regel läuft regelmäÃig (gewählte Wochentage und Uhrzeit) oder bei jeder Veröffentlichung eines Web-Artikels, den sie dann auf die gewählten Kanäle verteilt. Je Regel wählst du Kanäle (bei LinkedIn nur Firmenseiten), den Bildmodus (Vorlage, KI, Layout oder keine; Instagram und Pinterest brauchen ein Bild) und optional Karussell, Story oder einen zusätzlichen Web-Artikel je Lauf (Standard aus). Der Themen-Pool speist die Läufe; Themen ergänzt du von Hand oder per KI. Der Preis zeigt vor dem Anlegen, was ein Lauf kostet. Ein Lauf wird übersprungen, wenn Guthaben oder Freischuss, die KI-Einwilligung oder der Plan fehlen (bei fehlendem Guthaben mit Hinweis); ist der Themen-Pool leer, läuft er trotzdem, textet aber allgemein und weist darauf hin. Die Beiträge werden eingeplant; Veto-Fenster, Streuung und Vorab-Freigabe stehen in eigenen Hilfethemen.`,en:`The autopilot creates and schedules posts automatically from rules that only owners and admins can set up. A rule runs regularly (chosen weekdays and time) or on every publication of a web article, which it then distributes to the chosen channels. For each rule you choose channels (on LinkedIn only company pages), the image mode (template, AI, layout or none; Instagram and Pinterest need an image) and optionally a carousel, a story or an extra web article per run (off by default). The topic pool feeds the runs; you add topics by hand or via AI. The price shows before you save what a run costs. A run is skipped when credits or the free shot, the AI consent or the plan are missing (with a notice when credits are missing); if the topic pool is empty it still runs, writes generically and tells you so. The posts are scheduled; veto window, time spread and advance approval have their own help topics.`,es:`
2El piloto automático crea y programa publicaciones automáticamente según reglas que solo pueden crear propietarios y administradores. Una regla se ejecuta con regularidad (dÃas de la semana y hora elegidos) o con cada publicación de un artÃculo web, que entonces distribuye en los canales elegidos. En cada regla eliges canales (en LinkedIn solo páginas de empresa), el modo de imagen (plantilla, IA, diseño o ninguna; Instagram y Pinterest necesitan una imagen) y, opcionalmente, un carrusel, una historia o un artÃculo web adicional por ejecución (desactivado por defecto). El grupo de temas alimenta las ejecuciones; los temas se añaden a mano o con IA. El precio muestra antes de guardar lo que cuesta una ejecución. Una ejecución se omite si faltan créditos o el tiro libre, el consentimiento de IA o el plan (con aviso si faltan créditos); si el grupo de temas está vacÃo, se ejecuta igualmente, redacta de forma general y te avisa. Las publicaciones quedan programadas; la ventana de veto, la dispersión horaria y la aprobación anticipada tienen sus propios temas de ayuda.`,it:`L'autopilota crea e pianifica i post automaticamente secondo regole che possono creare solo titolari e amministratori. Una regola viene eseguita con regolarità (giorni della settimana e orario scelti) oppure a ogni pubblicazione di un articolo web, che poi distribuisce sui canali scelti. Per ogni regola scegli i canali (su LinkedIn solo le pagine aziendali), la modalità immagine (modello, IA, layout o nessuna; Instagram e Pinterest richiedono un'immagine) e, facoltativamente, un carosello, una storia o un articolo web aggiuntivo per esecuzione (disattivato di default). Il pool di temi alimenta le esecuzioni; i temi si aggiungono a mano o con l'IA. Il prezzo mostra prima del salvataggio quanto costa un'esecuzione. Un'esecuzione viene saltata se mancano crediti o il colpo libero, il consenso IA o il piano (con avviso se mancano i crediti); se il pool di temi è vuoto, viene eseguita comunque, scrive in modo generico e te lo segnala. I post vengono pianificati; finestra di veto, dispersione degli orari e approvazione anticipata hanno argomenti di aiuto propri.`}},{id:`agent`,routes:[`/agent`],title:{de:`Content-Agent (Ziele)`,en:`Content agent (goals)`,es:`Agente de contenido (objetivos)`,it:`Agente di contenuti (obiettivi)`},body:{de:`Der Content-Agent verfolgt ein Marketing-Ziel, das du formulierst (Ziele legen nur Owner und Admins an), und schlägt dazu kanal-native Beiträge aus Trends und Themen-Pool vor. Guardrails begrenzen jeden Lauf: Vorschläge pro Lauf (Standard 5) und pro Tag (6), Credit-Tagesbudget (50, 0 = unbegrenzt), Mindest-Trend-Fit (60), höchstes Risiko, Kanäle und Bildmodus. Vorschläge landen mit Fit-Wert in der Freigabe-Queue: âFreigeben & einplanenâ plant zur gelernten besten Sendezeit ein, âSofort postenâ so bald wie möglich, âVerwerfenâ löscht den Vorschlag. Mit der Vollautomatik plant der Agent selbst ein (nur mit Zeitplan, ohne Prüfung durch dich); im Modus âVorbereitenâ entstehen Beiträge für bis zu 7 Tage zur Freigabe. Der Agent lernt aus deinen Freigaben und Ablehnungen.`,en:`The content agent pursues a marketing goal that you write (only owners and admins create goals) and proposes channel-native posts from trends and the topic pool. Guardrails cap every run: proposals per run (default 5) and per day (6), a daily credit budget (50, 0 = unlimited), minimum trend fit (60), highest risk, channels and image mode. Proposals land in the approval queue with a fit score: 'Approve & schedule' schedules at the learned best send time, 'Post now' as soon as possible, 'Discard' deletes the proposal. With full automation the agent schedules by itself (only with a schedule, without a check by you); in 'Prepare' mode it creates posts for up to 7 days for approval. The agent learns from your approvals and rejections.`,es:`El agente de contenido persigue un objetivo de marketing que tú formulas (solo propietarios y administradores crean objetivos) y propone publicaciones nativas de cada canal a partir de tendencias y del grupo de temas. Las barreras de seguridad limitan cada ejecución: propuestas por ejecución (predeterminado 5) y por dÃa (6), un presupuesto diario de créditos (50, 0 = ilimitado), afinidad mÃnima con la tendencia (60), riesgo máximo, canales y modo de imagen. Las propuestas llegan a la cola de aprobación con una puntuación de afinidad: 'Aprobar y programar' programa en el mejor horario de envÃo aprendido, 'Publicar ahora' lo antes posible, 'Descartar' elimina la propuesta. Con la automatización total el agente programa por sà mismo (solo con un calendario y sin tu revisión); en el modo 'Preparar' crea publicaciones de hasta 7 dÃas para su aprobación. El agente aprende de tus aprobaciones y rechazos.`,it:`L'agente di contenuti persegue un obiettivo di marketing che formuli tu (solo titolari e amministratori creano obiettivi) e propone post nativi per ogni canale a partire da tendenze e pool di temi. Le protezioni limitano ogni esecuzione: proposte per esecuzione (predefinito 5) e al giorno (6), un budget giornaliero di crediti (50, 0 = illimitato), affinità minima con il trend (60), rischio massimo, canali e modalità immagine. Le proposte arrivano nella coda di approvazione con un punteggio di affinità : 'Approva e pianifica' pianifica nel miglior orario di invio appreso, 'Pubblica ora' il prima possibile, 'Scarta' elimina la proposta. Con l'automazione completa l'agente pianifica da solo (solo con una pianificazione, senza il tuo controllo); nella modalità 'Preparazione' crea post per un massimo di 7 giorni in attesa di approvazione. L'agente impara dalle tue approvazioni e dai tuoi rifiuti.`}},{id:`highlights`,routes:[`/highlights`,`/shop-highlights`],title:{de:`Highlights`,en:`Highlights`,es:`Destacados`,it:`In evidenza`},body:{de:`Highlights bewerben ein Angebot oder Produkt automatisch und wiederkehrend; Anlegen und Ãndern dürfen nur Owner und Admins. Gib Titel, Beschreibung und optional eine Ziel-URL an (das System hängt die URL an jeden Beitrag an; âSeite auslesenâ füllt Titel und Beschreibung vor), wähle Kanäle, einen Rhythmus in Tagen und die Uhrzeit. Die Textquelle ist wählbar: Die KI schreibt je Kanal einen Text und wechselt den Blickwinkel, oder du hinterlegst eigene Aussagen (kein KI-Aufruf, 0 Credits). Bildmodus, Karussell, Story, kanal-nativer Ton, Fakten-Check und ein befristeter Zeitraum (Kampagne) sind pro Highlight einstellbar. Verlauf und Vorschau (kostet Credits) findest du an der Karte. Unter Shop-Highlights lässt sich dasselbe für Produkte aus deinem Shop-Katalog aufsetzen.`,en:`Highlights promote an offer or product automatically and repeatedly; only owners and admins can create and change them. Enter a title, a description and optionally a target URL (the system appends the URL to every post; 'Read page' pre-fills title and description), then choose channels, an interval in days and a time. The text source is selectable: the AI writes a text per channel and varies the angle, or you store your own statements (no AI call, 0 credits). Image mode, carousel, story, channel-native tone, fact-check and a limited period (campaign) can be set per highlight. History and preview (costs credits) are on the card. Under Shop Highlights you can set up the same for products from your shop catalog.`,es:`Los destacados promocionan una oferta o un producto de forma automática y periódica; solo propietarios y administradores pueden crearlos y modificarlos. Introduce un tÃtulo, una descripción y, opcionalmente, una URL de destino (el sistema añade la URL a cada publicación; 'Leer página' rellena de antemano tÃtulo y descripción), y elige canales, un intervalo en dÃas y una hora. La fuente del texto es seleccionable: la IA redacta un texto por canal y varÃa el enfoque, o guardas tus propias frases (sin llamada a la IA, 0 créditos). El modo de imagen, el carrusel, la historia, el tono nativo del canal, la comprobación de hechos y un periodo limitado (campaña) se ajustan por cada destacado. El historial y la vista previa (cuesta créditos) están en la tarjeta. En Destacados de tienda puedes configurar lo mismo para productos de tu catálogo.`,it:`Gli elementi in evidenza promuovono un'offerta o un prodotto in modo automatico e ricorrente; solo titolari e amministratori possono crearli e modificarli. Inserisci un titolo, una descrizione e, facoltativamente, un URL di destinazione (il sistema aggiunge l'URL a ogni post; 'Leggi pagina' precompila titolo e descrizione), poi scegli canali, un intervallo in giorni e un orario. L'origine del testo è selezionabile: l'IA scrive un testo per
2canale e varia l'angolazione, oppure inserisci le tue frasi (nessuna chiamata IA, 0 crediti). Modalità immagine, carosello, storia, tono nativo del canale, verifica dei fatti e un periodo limitato (campagna) sono impostabili per ogni elemento. Cronologia e anteprima (costa crediti) si trovano sulla scheda. In Evidenza shop puoi impostare lo stesso per i prodotti del tuo catalogo.`}},{id:`vorab-freigabe`,routes:[`/autopilot`,`/highlights`,`/agent`,`/posts`,`/calendar`],title:{de:`Vorab-Freigabe: Zeitraum vorbereiten`,en:`Advance approval: prepare a period`,es:`Aprobación anticipada: preparar un periodo`,it:`Approvazione anticipata: preparare un periodo`},body:{de:`Mit der Vorab-Freigabe erzeugt die Automatik die Beiträge der kommenden Woche im Voraus, statt sie direkt einzuplanen. So gehst du vor: Schalte bei einer Autopilot-Regel oder einem Highlight âVorab für die Woche generieren (Freigabe nötig)â ein, oder wähle beim Content-Agent den Zeitplan âwöchentl. vorbereitenâ; der Knopf âJetzt vorbereitenâ (beim Agent âJetzt füllenâ) startet sofort, bis zu 7 Tage im Voraus. Die Beiträge tragen ihre geplante Zeit, stehen aber auf âWartet auf Freigabeâ und gehen nie von selbst raus. Freigeber (Owner, Admin, Editor mit Freigeber-Recht) werden benachrichtigt und geben unter Beiträge oder im Kalender einzeln oder für die ganze Periode frei; bis dahin lassen sich Text und Zeit noch ändern. Beim Freigeben werden Kanal und Pflichtangaben geprüft, ein Beitrag mit Problem bleibt wartend, und liegt seine Zeit schon in der Vergangenheit, geht er sofort raus. Das Erzeugen kostet Credits wie ein normaler Lauf; freigegebene Beiträge gelten als geprüft (kein KI-Label, kein zweites Veto-Fenster). Starte eine Vorbereitung für denselben Zeitraum nur einmal, sonst entstehen doppelte Beiträge.`,en:`With advance approval the automation creates next week's posts ahead of time instead of scheduling them directly. Here is how: switch on 'Generate ahead for the week (approval needed)' on an autopilot rule or a highlight, or choose the schedule 'weekly prepare' on the content agent; the 'Prepare now' button (on the agent 'Fill now') starts immediately, up to 7 days ahead. The posts carry their planned time but stay at 'Awaiting approval' and never go out by themselves. Approvers (owner, admin, editor with the approver right) are notified and approve one by one or for the whole period under Posts or in the calendar; until then text and time can still be changed. On approval the channel and required fields are checked, a post with a problem stays waiting, and if its time has already passed it goes out immediately. Creating costs credits like a normal run; approved posts count as reviewed (no AI label, no second veto window). Start a preparation for the same period only once, otherwise duplicate posts are created.`,es:`Con la aprobación anticipada la automatización crea de antemano las publicaciones de la próxima semana en lugar de programarlas directamente. Cómo proceder: activa 'Generar con antelación para la semana (requiere aprobación)' en una regla del piloto automático o en un destacado, o elige en el agente de contenido el calendario 'preparar semanal'; el botón 'Preparar ahora' (en el agente 'Llenar ahora') empieza de inmediato, hasta 7 dÃas por adelantado. Las publicaciones llevan su hora prevista pero quedan en 'Pendiente de aprobación' y nunca salen por sà solas. Los aprobadores (propietario, administrador, editor con permiso de aprobación) reciben un aviso y aprueban una por una o todo el periodo en Publicaciones o en el calendario; hasta entonces aún se pueden cambiar texto y hora. Al aprobar se comprueban el canal y los datos obligatorios, una publicación con problemas sigue en espera y, si su hora ya pasó, sale de inmediato. Crearlas cuesta créditos como una ejecución normal; las publicaciones aprobadas cuentan como revisadas (sin etiqueta de IA y sin segunda ventana de veto). Inicia una preparación para el mismo periodo solo una vez, de lo contrario se crean publicaciones duplicadas.`,it:`Con l'approvazione anticipata l'automazione crea in anticipo i post della settimana successiva invece di pianificarli direttamente. Come procedere: attiva 'Genera in anticipo per la settimana (richiede approvazione)' su una regola dell'autopilota o su un elemento in evidenza, oppure scegli per l'agente di contenuti la pianificazione 'preparazione settim.'; il pulsante 'Prepara ora' (nell'agente 'Riempi ora') parte subito, fino a 7 giorni in anticipo. I post portano l'orario previsto ma restano 'In attesa di approvazione' e non escono mai da soli. Gli approvatori (titolare, amministratore, redattore con diritto di approvazione) ricevono una notifica e approvano uno per uno o l'intero periodo in Post o nel calendario; fino ad allora testo e orario si possono ancora modificare. All'approvazione si controllano canale e dati obbligatori, un post con problemi resta in attesa e, se l'orario è già passato, esce subito. La creazione costa crediti come un'esecuzione normale; i post approvati valgono come verificati (nessuna etichetta IA, nessuna seconda finestra di veto). Avvia una preparazione per lo stesso periodo una sola volta, altrimenti si creano post doppi.`}},{id:`veto-fenster`,routes:[`/settings`,`/autopilot`,`/highlights`,`/agent`,`/calendar`],title:{de:`Veto-Fenster: Warnung vor automatischer Veröffentlichung`,en:`Veto window: warning before auto-publishing`,es:`Ventana de veto: aviso antes de la publicación automática`,it:`Finestra di veto: avviso prima della pubblicazione automatica`},body:{de:`Das Veto-Fenster warnt dich, bevor ein automatischer Be
2itrag (Autopilot, Highlights, Agent, Evergreen, Shop-Regeln) rausgeht, und gibt dir Zeit zum Eingreifen. Es ist standardmäÃig aus: Schalte es unter Einstellungen bei âFreigabe-Fenster vor Auto-Veröffentlichungâ ein (nur Owner und Admins) und stelle den Vorlauf ein (Standard 10 Minuten, 1 bis 1.440). Ist es aktiv, hält das System jeden automatisch eingeplanten Beitrag so lange zurück und benachrichtigt dich per Telegram, sonst per E-Mail, dazu in der App (Glocke). Reagierst du nicht, geht der Beitrag nach Ablauf raus; âSTOPâ in Telegram, der E-Mail-Link oder âVerschiebenâ in der App setzt die angekündigten Beiträge um 1 Tag nach hinten, âJetzt freigebenâ schickt sie sofort raus. Beiträge, die erst kurz vor ihrer Sendezeit entstehen, warten das ganze Fenster ab. Manuell geplante und sofort gepostete Beiträge sind nie betroffen. Optional bewertet ein Zielgruppen-Pretest die Beiträge im Fenster, ein Mindest-Score hält schwache Beiträge zur Freigabe zurück. Ohne aktives Fenster gehen automatische Beiträge ohne Vorwarnung raus.`,en:`The veto window warns you before an automatic post (autopilot, highlights, agent, evergreen, shop rules) goes out and gives you time to step in. It is off by default: switch it on under Settings at 'Approval window before auto-publishing' (owners and admins only) and set the lead time (default 10 minutes, 1 to 1,440). When it is active, the system holds every automatically scheduled post for that time and notifies you by Telegram, otherwise by email, plus in the app (bell). If you do not react, the post goes out when the time is up; 'STOP' in Telegram, the email link or 'Postpone' in the app moves the announced posts back by 1 day, 'Publish now' sends them out immediately. Posts that are only created shortly before their send time wait for the whole window. Manually scheduled and instantly posted posts are never affected. Optionally an audience pretest rates the posts in the window, and a minimum score holds weak posts back for approval. Without an active window, automatic posts go out without warning.`,es:`La ventana de veto te avisa antes de que salga una publicación automática (piloto automático, destacados, agente, evergreen, reglas de tienda) y te da tiempo para intervenir. Está desactivada por defecto: actÃvala en Ajustes, en 'Ventana de aprobación antes de la publicación automática' (solo propietarios y administradores), y define la antelación (predeterminado 10 minutos, de 1 a 1.440). Si está activa, el sistema retiene durante ese tiempo cada publicación programada automáticamente y te avisa por Telegram o, si no, por correo, además de en la app (campana). Si no reaccionas, la publicación sale al terminar el plazo; 'STOP' en Telegram, el enlace del correo o 'Posponer' en la app aplazan las publicaciones anunciadas 1 dÃa, y 'Publicar ahora' las envÃa de inmediato. Las publicaciones que se crean justo antes de su hora de envÃo esperan toda la ventana. Las publicaciones programadas manualmente y las publicadas al instante nunca se ven afectadas. Opcionalmente una preprueba de audiencia evalúa las publicaciones en la ventana, y una puntuación mÃnima retiene las débiles para su aprobación. Sin una ventana activa, las publicaciones automáticas salen sin previo aviso.`,it:`La finestra di veto ti avvisa prima che esca un post automatico (autopilota, contenuti in evidenza, agente, evergreen, regole shop) e ti lascia il tempo di intervenire. à disattivata di default: attivala in Impostazioni, alla voce 'Finestra di approvazione prima della pubblicazione automatica' (solo titolari e amministratori), e imposta l'anticipo (predefinito 10 minuti, da 1 a 1.440). Quando è attiva, il sistema trattiene per quel tempo ogni post pianificato automaticamente e ti avvisa tramite Telegram o, altrimenti, via email, oltre che nell'app (campanella). Se non reagisci, il post esce allo scadere del tempo; 'STOP' su Telegram, il link nell'email o 'Rinvia' nell'app spostano i post annunciati di 1 giorno, 'Pubblica ora' li invia subito. I post creati solo poco prima dell'orario di invio attendono l'intera finestra. I post pianificati a mano e quelli pubblicati subito non sono mai interessati. Facoltativamente un pretest del pubblico valuta i post nella finestra, e un punteggio minimo trattiene quelli deboli in attesa di approvazione. Senza una finestra attiva, i post automatici escono senza preavviso.`}},{id:`evergreen`,routes:[`/settings`],title:{de:`Evergreen: Artikel-Recycling`,en:`
2Evergreen: article recycling`,es:`Evergreen: reciclaje de artÃculos`,it:`Evergreen: riciclo degli articoli`},body:{de:`Evergreen teilt deine besten älteren Artikel automatisch erneut. So gehst du vor: Schalte unter Einstellungen bei âEvergreen-Recyclingâ den Haken âAktiviertâ ein (nur Owner und Admins, Standard aus) und wähle den Abstand in Wochen (1 bis 52, Standard 8). Pro Abstand wählt das System höchstens einen Artikel, der veröffentlicht, für die Website freigegeben und älter als 30 Tage ist und nicht innerhalb des doppelten Abstands recycelt wurde; bevorzugt werden Artikel, die noch nie oder am längsten nicht recycelt wurden, bei Gleichstand die mit den meisten Aufrufen. Etwa 10 Minuten später plant es einen Link-Beitrag mit neuem Einstieg auf allen aktiven Kanälen ein (bei LinkedIn nur Firmenseiten, Instagram und Pinterest nur mit Titelbild), benachrichtigt dich und lässt dich im Kalender eingreifen; ein aktives Veto-Fenster gilt auch hier. Evergreen ist bewusst nur dieses eine Artikel-Recycling: Das frühere Markieren einzelner Beiträge zur 1:1-Wiederholung gibt es seit dem 8. Oktober 2026 nicht mehr, bereits markierte Beiträge werden nicht mehr erneut ausgespielt.`,en:`Evergreen automatically shares your best older articles again. Here is how: under Settings, tick 'Enabled' at 'Evergreen recycling' (owners and admins only, off by default) and set the interval in weeks (1 to 52, default 8). Per interval the system picks at most one article that is published, released for the website, older than 30 days and not recycled within twice the interval; it prefers articles never or longest ago recycled and, on a tie, the most viewed. About 10 minutes later it schedules a link post with a fresh intro on all active channels (on LinkedIn company pages only, Instagram and Pinterest only with a cover image), notifies you and lets you step in from the calendar; an active veto window applies here too. Evergreen is deliberately this one article recycling only: the former marking of single posts for 1:1 repetition was removed on 8 October 2026, posts marked before are no longer reposted.`,es:`Evergreen vuelve a compartir automáticamente tus mejores artÃculos antiguos. Cómo proceder: en Ajustes, marca 'Activado' en 'Reciclaje evergreen' (solo propietarios y administradores, desactivado por defecto) y define el intervalo en semanas (1 a 52, predeterminado 8). Por intervalo el sistema elige como máximo un artÃculo publicado, habilitado para el sitio web, de más de 30 dÃas y no reciclado dentro del doble del intervalo; prefiere los nunca o más tiempo atrás reciclados y, en caso de empate, el más visto. Unos 10 minutos después programa una publicación con enlace y una introducción nueva en todos los canales activos (en LinkedIn solo páginas de empresa, Instagram y Pinterest solo con imagen de portada), te avisa y te deja intervenir desde el calendario; una ventana de veto activa también se aplica aquÃ. Evergreen es a propósito solo este reciclaje de artÃculos: la antigua marca de publicaciones sueltas para repetirlas 1:1 se eliminó el 8 de octubre de 2026, las publicaciones marcadas antes ya no se vuelven a publicar.`,it:`Evergreen ricondivide automaticamente i tuoi migliori articoli più vecchi. Come procedere: in Impostazioni, spunta 'Attivato' in 'Riciclo evergreen' (solo titolari e amministratori, disattivato di default) e imposta l'intervallo in settimane (da 1 a 52, predefinito 8). Per intervallo il sistema sceglie al massimo un articolo pubblicato, abilitato per il sito web, più vecchio di 30 giorni e non riciclato entro il doppio dell'intervallo; preferisce quelli mai riciclati o riciclati da più tempo e, a parità , il più visto. Circa 10 minuti dopo pianifica un post con link e una nuova introduzione su tutti i canali attivi (su LinkedIn solo pagine aziendali, Instagram e Pinterest solo con immagine di copertina), ti avvisa e ti lascia intervenire dal calendario; una finestra di veto attiva vale anche qui. Evergreen è volutamente solo questo riciclo degli articoli: la vecchia marcatura di singoli post per ripeterli 1:1 è stata rimossa l'8 ottobre 2026, i post marcati in precedenza non vengono più ripubblicati.`}},{id:`streuung`,routes:[`/settings`,`/autopilot`,`/highlights`,`/agent`],title:{de:`Streuung: natürlicheres Timing`,en:`Time spread: more natural timing`,es:`Dis
2persión horaria: horario más natural`,it:`Dispersione oraria: tempistica più naturale`},body:{de:`Damit automatische Posts nicht wie ein Uhrwerk wirken, verschiebt das System ihre Sendezeit zufällig. Unter Einstellungen, âNatürlicheres Timingâ (nur Owner und Admins), ist das standardmäÃig an, mit einer Feinstreuung von 0 bis 30 Minuten (Standard 8). Die Feinstreuung ist nur ein Teil: Dazu kommt ein fester Versatz von bis zu 60 Minuten, die tatsächliche Abweichung beträgt also bis zu 60 Minuten plus Feinstreuung, beim Standardwert bis zu 68 Minuten. Beim Autopilot geht es nur nach hinten (von der eingestellten Zeit bis etwa 68 Minuten später); bei Highlights, Shop-Regeln und Agent kann es auch früher werden, aber nie in die Vergangenheit, und der Agent streut auch vorbereitete Zeiträume. Manuell geplante Beiträge, âJetzt postenâ, Evergreen und der Autopilot bei Veröffentlichung bleiben unberührt. Schaltest du das Timing aus, gelten die exakten Zeiten.`,en:`So that automatic posts do not look like clockwork, the system shifts their send time at random. Under Settings, 'More natural timing' (owners and admins only), this is on by default, with a fine spread of 0 to 30 minutes (default 8). The fine spread is only part of it: a fixed offset of up to 60 minutes is added, so the actual deviation is up to 60 minutes plus the fine spread, up to 68 minutes at the default. In the autopilot it only goes later (from the set time up to about 68 minutes after it); for highlights, shop rules and the agent it can also be earlier, but never in the past, and the agent also spreads prepared periods. Manually scheduled posts, 'Post now', evergreen and the autopilot on publish stay untouched. If you switch the timing off, the exact times apply.`,es:`Para que las publicaciones automáticas no parezcan un reloj, el sistema desplaza su hora de envÃo al azar. En Ajustes, 'Horario más natural' (solo propietarios y administradores), está activado por defecto, con una dispersión fina de 0 a 30 minutos (predeterminado 8). La dispersión fina es solo una parte: se suma un desfase fijo de hasta 60 minutos, asà que la desviación real es de hasta 60 minutos más la dispersión fina, hasta 68 minutos con el valor predeterminado. En el piloto automático solo se retrasa (desde la hora fijada hasta unos 68 minutos más tarde); en los destacados, las reglas de tienda y el agente también puede adelantarse, pero nunca al pasado, y el agente también dispersa los periodos preparados. Las publicaciones programadas a mano, 'Publicar ahora', evergreen y el piloto automático al publicar no se tocan. Si desactivas el horario natural, se aplican las horas exactas.`,it:`Perché i post automatici non sembrino un orologio, il sistema sposta a caso il loro orario di invio. In Impostazioni, 'Tempistica più naturale' (solo titolari e amministratori), è attiva di default, con una dispersione fine da 0 a 30 minuti (predefinito 8). La dispersione fine è solo una parte: si aggiunge uno scarto fisso fino a 60 minuti, quindi lo scostamento reale è fino a 60 minuti più la dispersione fine, fino a 68 minuti con il valore predefinito. Nell'autopilota si può solo ritardare (dall'orario impostato fino a circa 68 minuti dopo); per contenuti in evidenza, regole shop e agente può anche anticipare, ma mai nel passato, e l'agente disperde anche i periodi preparati. I post pianificati a mano, 'Pubblica ora', evergreen e l'autopilota alla pubblicazione non vengono toccati. Se disattivi la tempistica, valgono gli orari esatti.`}},{id:`trend-radar`,routes:[`/trend-radar`],title:{de:`Trend-Radar`,en:`Trend radar`,es:`Radar de tendencias`,it:`Radar delle tendenze`},body:{de:`Der Trend-Radar findet heiÃe Themen aus vielen Quellen und bewertet sie für deine Marke. Neben globalen Quellen (z. B. Google Trends, Hacker News, Reddit) kannst du eigene RSS-Feeds und Custom-Quellen hinzufügen; die KI clustert die gesammelten Signale zu Themen und bewertet jedes nach Kategorie-Relevanz (Fit-Score) und Momentum. Ein Scan kostet Credits, in der Testphase je Aktion einen Freischuss; ist beides erschöpft, pausiert der Scan mit einem Hinweis. Themen mit hohem Fit und geringem Risiko wandern automatisch in de
2n Themen-Pool für Autopilot und Agent.`,en:`The trend radar finds hot topics from many sources and rates them for your brand. Besides global sources (e.g. Google Trends, Hacker News, Reddit) you can add your own RSS feeds and custom sources; the AI clusters the collected signals into topics and scores each by category relevance (fit score) and momentum. A scan costs credits, or one free shot per action during the trial; once both are exhausted, the scan pauses with a note. Topics with a high fit and low risk move automatically into the topic pool for the autopilot and the agent.`,es:`El radar de tendencias encuentra temas candentes de muchas fuentes y los evalúa para tu marca. Además de fuentes globales (p. ej. Google Trends, Hacker News, Reddit) puedes añadir tus propios feeds RSS y fuentes personalizadas; la IA agrupa las señales recogidas en temas y puntúa cada uno según la relevancia de categorÃa (puntuación de afinidad) y el impulso. Un escaneo cuesta créditos, o un pase gratuito por acción durante la fase de prueba; cuando ambos se agotan, el escaneo se pausa con un aviso. Los temas con alta afinidad y bajo riesgo pasan automáticamente al grupo de temas para el piloto automático y el agente.`,it:`Il radar delle tendenze individua i temi caldi da molte fonti e li valuta per il tuo brand. Oltre alle fonti globali (ad es. Google Trends, Hacker News, Reddit) puoi aggiungere i tuoi feed RSS e fonti personalizzate; l'IA raggruppa i segnali raccolti in temi e valuta ciascuno in base alla pertinenza di categoria (punteggio di affinità ) e allo slancio. Una scansione costa crediti, oppure un tentativo gratuito per azione durante la prova; quando entrambi si esauriscono, la scansione si mette in pausa con un avviso. I temi con alta affinità e basso rischio passano automaticamente al pool di temi per l'autopilota e l'agente.`}},{id:`competitors`,routes:[`/competitors`],title:{de:`Wettbewerb`,en:`Competitors`,es:`Competencia`,it:`Concorrenza`},body:{de:`Beobachte Wettbewerber über RSS-Feeds oder Mastodon-Handles und sieh ihre neuesten Beiträge gebündelt. Die KI-gestützte Content-Gap-Analyse vergleicht deine Inhalte mit denen der Wettbewerber und zeigt Lücken, Empfehlungen, wo sie stärker sind und wo deine eigenen Stärken liegen. Einzelne Empfehlungen lassen sich mit einem Klick als Thema übernehmen. Das Aktualisieren holt neue Beiträge, die Analyse kostet Credits.`,en:`Watch competitors via RSS feeds or Mastodon handles and see their latest posts in one place. The AI-powered content-gap analysis compares your content with the competitors' and shows gaps, recommendations, where they are stronger and where your own strengths lie. Individual recommendations can be adopted as a topic with one click. Refreshing fetches new posts; the analysis costs credits.`,es:`Observa a la competencia mediante feeds RSS o cuentas de Mastodon y ve sus publicaciones más recientes reunidas. El análisis de brechas de contenido con IA compara tu contenido con el de la competencia y muestra brechas, recomendaciones, dónde son más fuertes y dónde están tus propias fortalezas. Cada recomendación puede adoptarse como tema con un clic. Actualizar recupera publicaciones nuevas; el análisis cuesta créditos.`,it:`Monitora i concorrenti tramite feed RSS o handle Mastodon e vedi i loro post più recenti raccolti insieme. L'analisi dei divari di contenuto basata su IA confronta i tuoi contenuti con quelli dei concorrenti e mostra i divari, i consigli, dove sono più forti e dove stanno i tuoi punti di forza. Ogni consiglio può essere adottato come tema con un clic. L'aggiornamento recupera i nuovi post; l'analisi costa crediti.`}},{id:`geo`,routes:[`/zitat`],title:{de:`Zitierfähigkeit (GEO)`,en:`Citability (GEO)`,es:`Citabilidad (GEO)`,it:`Citabilità (GEO)`},body:{de:`Optimiere Texte so, dass KI-Suchen sie als Quelle zitieren (Generative Engine Optimization). Die GEO-Analyse bewertet einen Text mit einem Score und liefert konkrete Findings, FAQ-Vorschläge und einen Umschreib-Hinweis; die Ergebnisse landen in der Historie und lassen sich im Editor öffnen. Zusätzlich kannst du Suchanfragen hinterlegen und messen lassen, ob und an welcher Position dich eine KI-Suche zitiert (dafür muss ein Anbieter konfiguriert sein).`,en:`Optimize texts s
2o that AI searches cite them as a source (Generative Engine Optimization). The GEO analysis rates a text with a score and delivers concrete findings, FAQ suggestions and a rewrite hint; the results go into the history and can be opened in the editor. You can also store search queries and have it measured whether and at which position an AI search cites you (this requires a provider to be configured).`,es:`Optimiza los textos para que las búsquedas de IA los citen como fuente (Generative Engine Optimization). El análisis GEO evalúa un texto con una puntuación y entrega hallazgos concretos, sugerencias de preguntas frecuentes y una indicación de reescritura; los resultados van al historial y pueden abrirse en el editor. Además puedes guardar consultas de búsqueda y medir si una búsqueda de IA te cita y en qué posición (para ello debe haber un proveedor configurado).`,it:`Ottimizza i testi affinché le ricerche IA li citino come fonte (Generative Engine Optimization). L'analisi GEO valuta un testo con un punteggio e fornisce risultati concreti, suggerimenti di FAQ e un'indicazione di riscrittura; i risultati finiscono nello storico e possono essere aperti nell'editor. Inoltre puoi salvare query di ricerca e far misurare se e in quale posizione una ricerca IA ti cita (a questo scopo deve essere configurato un provider).`}},{id:`interview`,routes:[`/interview`],title:{de:`Experten-Interview`,en:`Expert interview`,es:`Entrevista de experto`,it:`Intervista all'esperto`},body:{de:`Das Experten-Interview erfasst dein Fachwissen im Dialog, damit die Inhalte authentisch statt generisch werden. Die KI stellt der Reihe nach Fragen, die du beantwortest oder überspringst; am Ende verdichtet sie die Antworten zu wiederverwendbarem Wissen. Nur dieser letzte Verdichtungs-Schritt kostet Credits (in der Testphase einmalig frei). Das gewonnene Wissen flieÃt in künftig erzeugte Beiträge ein.`,en:`The expert interview captures your expertise in a dialog so that the content becomes authentic instead of generic. The AI asks questions one after another that you answer or skip; at the end it condenses the answers into reusable knowledge. Only this final condensing step costs credits (free once during the trial). The gained knowledge flows into posts generated later.`,es:`La entrevista de experto captura tu conocimiento especializado en un diálogo para que el contenido sea auténtico en lugar de genérico. La IA hace preguntas una tras otra que respondes u omites; al final condensa las respuestas en conocimiento reutilizable. Solo este último paso de condensación cuesta créditos (gratis una vez durante la fase de prueba). El conocimiento obtenido se incorpora a las publicaciones que se generen más adelante.`,it:`L'intervista all'esperto raccoglie le tue competenze in un dialogo affinché i contenuti risultino autentici anziché generici. L'IA pone le domande una dopo l'altra, a cui rispondi o che salti; alla fine condensa le risposte in conoscenza riutilizzabile. Solo quest'ultimo passaggio di condensazione costa crediti (gratuito una volta durante la prova). La conoscenza ottenuta confluisce nei post generati in seguito.`}},{id:`zielgruppen-pretest`,routes:[`/articles`],title:{de:`Zielgruppen-Pretest`,en:`Audience pretest`,es:`Pretest de audiencia`,it:`Pretest del pubblico`},body:{de:`Der Zielgruppen-Pretest lässt einen fertigen Social-Beitrag von KI-Personas bewerten, bevor du ihn veröffentlichst. So gehst du vor: Ãffne einen Artikel und in der Seitenleiste eines Social-Beitrags den Pretest; er vergibt einen Gesamt-Score als Ampel samt Teilwerten (Verständlichkeit, Relevanz, Scroll-Stopp) und je Persona ein Urteil mit stärkstem Einwand und konkreten Verbesserungsvorschlägen. Die Personas stammen aus deinem Markenkit. Mit 'Feedback übernehmen' schreibt die KI den Text passend um, ohne deine Markenstimme zu verletzen; du kannst alle Personas berücksichtigen oder gezielt einzelne auswählen. Bewerten (pretest.run) und Ãbernehmen (pretest.apply) kosten je Credits (in der Testphase je ein Freischuss).`,en:`The audience pretest lets AI personas rate a finished social post before you publish it. Here is how: open an article and, in the sidebar of a social post, the pretest; it gives an overall score as a traffic light plus sub-scores (clarity, relevance, scroll stop) and, per persona, a verdict with the strongest objection and concrete improvement suggestions. The personas come from your brand kit. With 'Apply feedback' the AI rewrites the text accordingly without breaking your brand voice; you can include all personas or pick specific ones. Rating (pretest.run) and applying (pretest.apply) each cost credits (one free shot each during the trial).`,es:`
2El pretest de audiencia deja que personas de IA evalúen una publicación social terminada antes de publicarla. Cómo proceder: abre un artÃculo y, en la barra lateral de una publicación social, el pretest; da una puntuación global tipo semáforo más subpuntuaciones (claridad, relevancia, freno al desplazamiento) y, por cada persona, un veredicto con la objeción más fuerte y sugerencias concretas de mejora. Las personas provienen de tu kit de marca. Con 'Aplicar comentarios' la IA reescribe el texto en consecuencia sin romper la voz de tu marca; puedes incluir a todas las personas o elegir algunas concretas. Evaluar (pretest.run) y aplicar (pretest.apply) cuestan créditos cada uno (un tiro libre cada uno durante la fase de prueba).`,it:`Il pretest del pubblico fa valutare un post social finito da persona IA prima che tu lo pubblichi. Come procedere: apri un articolo e, nella barra laterale di un post social, il pretest; assegna un punteggio complessivo a semaforo più punteggi parziali (comprensibilità , rilevanza, blocco dello scorrimento) e, per ogni persona, un giudizio con l'obiezione più forte e suggerimenti concreti di miglioramento. Le persona provengono dal tuo kit di marca. Con 'Applica il feedback' l'IA riscrive il testo di conseguenza senza violare la voce del tuo marchio; puoi includere tutte le persona o sceglierne alcune specifiche. Valutare (pretest.run) e applicare (pretest.apply) costano crediti ciascuno (un colpo libero ciascuno durante la prova).`}},{id:`analytics`,routes:[`/analytics`],title:{de:`Analytics`,en:`Analytics`,es:`AnalÃtica`,it:`Analisi`},body:{de:`Analytics zeigt die tatsächliche Leistung deiner veröffentlichten Beiträge je Kanal. Im Dashboard siehst du Impressionen, Likes, Kommentare und Shares als Kanal-Vergleich und als Tages-Zeitreihe (Metrik umschaltbar) über die letzten 30 Tage. So erkennst du, welche Kanäle und Formate wirklich wirken.`,en:`Analytics shows the actual performance of your published posts per channel. In the dashboard you see impressions, likes, comments and shares as a channel comparison and as a daily time series (switchable metric) over the last 30 days. This lets you see which channels and formats really work.`,es:`La analÃtica muestra el rendimiento real de tus publicaciones por canal. En el panel ves impresiones, me gusta, comentarios y compartidos como comparación entre canales y como serie temporal diaria (métrica intercambiable) de los últimos 30 dÃas. Asà reconoces qué canales y formatos funcionan de verdad.`,it:`L'analisi mostra le prestazioni reali dei tuoi post pubblicati per canale. Nella dashboard vedi impression, like, commenti e condivisioni come confronto tra canali e come serie temporale giornaliera (metrica selezionabile) degli ultimi 30 giorni. Così capisci quali canali e formati funzionano davvero.`}},{id:`insights`,routes:[`/insights`],title:{de:`Insights`,en:`Insights`,es:`Perspectivas`,it:`Insight`},body:{de:`Insights verdichtet deine Beitragsdaten zu konkreten Handlungsempfehlungen. Du siehst die besten Zeiten je Kanal, welche Kanäle und Themen am besten performen und einen ehrlichen Lern-Nachweis mit Stichprobe, ob das Lernen wirklich wirkt. Die nächsten Schritte verlinken direkt in die passende Aktion, etwa den nächsten empfohlenen Beitrag.`,en:`Insights condenses your post data into concrete recommendations for action. You see the best times per channel, which channels and topics perform best, and an honest learning proof with a sample of whether the learning really works. The next steps link straight into the matching action, such as the next recommended post.`,es:`Las perspectivas condensan los datos de tus publicaciones en recomendaciones concretas de acción. Ves las mejores horas por canal, qué canales y temas rinden mejor y una prueba honesta del aprendizaje con muestra sobre si el aprendizaje funciona de verdad. Los siguientes pasos enlazan directamente con la acción adecuada, como la próxima publicación recomendada.`,it:`Gli insight condensano i dati dei tuoi post in raccomandazioni concrete di azione. Vedi gli orari migliori per canale, quali canali e temi rendono di più e una prova onesta dell'apprendimento con campione su se l'apprendimento funziona davvero. I passaggi successivi rimandano direttamente all'azione adatta, ad esempio il prossimo post consigliato.`}},{id:`agent-freigabe-rollen`,routes:[`/agent`],title:{de:`Content-Agent: Freigeber planen direkt, Editoren reichen ein`,en:`Content agent: approvers schedule directly, editors submit`,es:`Agente de contenido: los aprobadores programan directamente, los editores envÃan`,it:`Agente di contenuti: gli approvatori pianificano direttamente, i redattori inviano`},body:{de:`In der Freigabe-Queue des Content-Agenten hängt die Aktion an deiner Rolle. Freigeber (Owner, Admin und Editoren mit Freigabe-Recht) sehen âFreigeben & einplanenâ: Der Vorschlag wird direkt zur gelernten besten Sendezeit eingeplant, ein aktives Veto-Fenster gilt weiter. âSofort postenâ bleibt Owner und Admins vorbehalten. Editoren ohne Freigabe-Recht sehen stattdessen âZur Freigabe einreichenâ: Der Beitrag wird nicht eingeplant, sondern wartet unter Social Posts im Status âWartet auf Freigabeâ, bis ein Freigeber ihn freigibt, ablehnt oder zurück in den Entwurf schickt. Der Hinweis unter dem Knopf sagt jeweils, was passiert. âVerwerfenâ löscht einen Vorschlag für alle Rollen.`,en:`In the content agent's approval queue the action depends on your role. Approvers (owner, admin and editors with the approval right) see 'Approve & schedule': the proposal is scheduled directly at the learned best send time, and an active veto window still applies. 'Post now' stays reserved for owners and admins. Editors without the approval right see 'Submit for approval' instead: the post is not scheduled but waits under Social posts with the status 'Awaiting approval' until an approver approves it, rejects it or sends it back to draft. The note below the button always says what will happen. 'Discard' deletes a proposal for every role.`,es:`En la cola de aprobación del agente de contenido, la acción depende de tu rol. Los a
2probadores (propietario, administrador y editores con permiso de aprobación) ven 'Aprobar y programar': la propuesta se programa directamente en el mejor horario de envÃo aprendido, y una ventana de veto activa sigue aplicándose. 'Publicar ahora' queda reservado a propietarios y administradores. Los editores sin permiso de aprobación ven en su lugar 'Enviar a aprobación': la publicación no se programa, sino que espera en Publicaciones sociales con el estado 'Pendiente de aprobación' hasta que un aprobador la apruebe, la rechace o la devuelva a borrador. La nota bajo el botón indica siempre qué ocurrirá. 'Descartar' elimina una propuesta para todos los roles.`,it:`Nella coda di approvazione dell'agente di contenuti l'azione dipende dal tuo ruolo. Gli approvatori (titolare, amministratore e redattori con diritto di approvazione) vedono 'Approva e pianifica': la proposta viene pianificata direttamente nel miglior orario di invio appreso, e una finestra di veto attiva continua a valere. 'Pubblica ora' resta riservato a titolari e amministratori. I redattori senza diritto di approvazione vedono invece 'Invia per approvazione': il post non viene pianificato ma attende in Post social con lo stato 'In attesa di approvazione' finché un approvatore lo approva, lo rifiuta o lo rimanda in bozza. La nota sotto il pulsante dice sempre cosa succederà . 'Scarta' elimina una proposta per tutti i ruoli.`}},{id:`mindestabstand`,routes:[`/posts`,`/calendar`,`/compose`,`/autopilot`,`/highlights`,`/agent`],title:{de:`Mindestabstand zwischen Beiträgen`,en:`Minimum gap between posts`,es:`Separación mÃnima entre publicaciones`,it:`Distanza minima tra i post`},body:{de:`Damit Beiträge nicht in derselben Minute erscheinen und das Instagram-Raster seine Reihenfolge behält, hält Personativ einen Mindestabstand ein, standardmäÃig 30 Minuten je Konto. Stories zählen nicht. Automatiken (Autopilot, Highlights, Agent, Shop, Grafiken) verschieben einen Instagram-Feed-Beitrag bei Bedarf nach hinten, nie nach vorn. Beim Freigeben gilt dasselbe: Eine Einzelfreigabe hält den Abstand zu bereits geplanten Instagram-Feed-Beiträgen, und die Sammelfreigabe einer Charge staffelt Beiträge desselben Kontos um den Mindestabstand, auch auf anderen Kanälen. So landet eine verspätete Sammelfreigabe, deren Zeiten schon vorbei sind, nicht mehr komplett auf derselben Minute. Wenn du selbst eine Zeit wählst (Beitrag einplanen oder umplanen unter Social Posts, im Kalender oder im Composer), bleibt deine Zeit; liegt sie zu nah an einem anderen geplanten Instagram-Feed-Beitrag, zeigt die App einen Hinweis mit der nächsten freien Zeit. Der Mindestabstand ist etwas anderes als die Streuung (natürlicheres Timing), die Sendezeiten zufällig verschiebt.`,en:`So that posts do not appear in the same minute and the Instagram grid keeps its order, Personativ keeps a minimum gap, 30 minutes per account by default. Stories do not count. Automations (autopilot, highlights, agent, shop, graphics) move an Instagram feed post later when needed, never earlier. The same applies when approv
2ing: a single approval keeps the gap to Instagram feed posts that are already scheduled, and the bulk approval of a batch staggers posts of the same account by the minimum gap, on other channels too. That way a late bulk approval whose times have already passed no longer lands entirely on the same minute. If you choose a time yourself (scheduling or rescheduling a post under Social posts, in the calendar or in the composer), your time stays; if it is too close to another scheduled Instagram feed post, the app shows a note with the next free time. The minimum gap is different from the time spread (more natural timing), which shifts send times at random.`,es:`Para que las publicaciones no aparezcan en el mismo minuto y la cuadrÃcula de Instagram mantenga su orden, Personativ respeta una separación mÃnima, de 30 minutos por cuenta de forma predeterminada. Las historias no cuentan. Las automatizaciones (piloto automático, destacados, agente, tienda, gráficos) retrasan una publicación del feed de Instagram cuando hace falta, nunca la adelantan. Lo mismo vale al aprobar: una aprobación individual mantiene la separación con las publicaciones del feed de Instagram ya programadas, y la aprobación conjunta de un lote escalona las publicaciones de la misma cuenta según la separación mÃnima, también en otros canales. AsÃ, una aprobación conjunta tardÃa cuyas horas ya pasaron deja de caer entera en el mismo minuto. Si eliges tú la hora (programar o reprogramar una publicación en Publicaciones sociales, en el calendario o en el compositor), tu hora se mantiene; si está demasiado cerca de otra publicación del feed de Instagram programada, la app muestra un aviso con la siguiente hora libre. La separación mÃnima es distinta de la dispersión horaria (horario más natural), que desplaza las horas de envÃo al azar.`,it:`Perché i post non compaiano nello stesso minuto e la griglia di Instagram mantenga il suo ordine, Personativ rispetta una distanza minima, di default 30 minuti per account. Le storie non contano. Le automazioni (autopilota, contenuti in evidenza, agente, shop, grafiche) spostano un post del feed Instagram più tardi quando serve, mai prima. Lo stesso vale in approvazione: un'approvazione singola mantiene la distanza dai post del feed Instagram già pianificati, e l'approvazione in blocco di un lotto scagliona i post dello stesso account della distanza minima, anche su altri canali. Così un'approvazione in blocco tardiva, i cui orari sono già passati, non finisce più tutta nello stesso minuto. Se scegli tu un orario (pianificare o ripianificare un post in Post social, nel calendario o nel compositore), il tuo orario resta; se è troppo vicino a un altro post del feed Instagram pianificato, l'app mostra un avviso con il prossimo orario libero. La distanza minima è diversa dalla dispersione oraria (tempistica più naturale), che sposta gli orari di invio a caso.`}}],za=[{id:`articles`,routes:[`/articles`,`/articles/new`],title:{de:`Beiträge und Blog`,en:`Articles and blog`,es:`Articulos y blog`,it:`Articoli e blog`},body:{de:`Unter Beiträge schreibst und verwaltest du deine Artikel und lässt sie optional als Web-Beitrag ausspielen; über Import holst du bestehende Inhalte aus WordPress, Wix oder einem RSS-Feed. Jeder Beitrag durchläuft einen Freigabe-Workflow mit den Status Entwurf, Review und Veröffentlicht: du reichst einen Entwurf mit "Zur Freigabe einreichen" ein, danach kann nur ein Freigeber (Inhaber, Administrator oder ein Redakteur mit Freigaberecht) ihn freigeben und veröffentlichen oder mit einem Kommentar zurückgeben. Filtere die Liste nach Status, Herkunft und Suchbegriff, um schnell den richtigen Beitrag zu finden.`,en:`Under Articles you write and manage your posts and can optionally publish them as a web article; use Import to pull existing content from WordPress, Wix or an RSS feed. Every article runs through an approval workflow with the states Draft, Review and Published: you submit a draft with "Submit for review", after which only an approver (owner, admin or an editor with the approval right) can approve and publish it or return it with a comment. Filter the list by status, origin and search term to find the right article quickly.`,es:`En Articulos escribes y gestionas tus publicaciones y puedes publicarlas de forma opcional como articulo web; con Importar traes contenido existente de WordPress, Wix o un feed RSS. Cada articulo pasa por un flujo de aprobacion con los estados Borrador, Revision y Publicado: envias un borrador con "Enviar a revision" y solo un aprobador (propietario, administrador o un editor con permiso de aprobacion) puede aprobarlo y publicarlo o devolverlo con un comentario. Filtra la lista por estado, origen y termino de busqueda para encontrar el articulo rapidamente.`,it:`In Articoli scrivi e gestisci i tuoi contenuti e puoi pubblicarli facoltativamente come articolo web; con Importa recuperi contenuti esistenti da WordPress, Wix o un feed RSS. Ogni articolo segue un flusso di approvazione con gli stati Bozza, Revisione e Pubblicato: invii una bozza con "Invia in revisione" e solo un approvatore (titolare, amministratore o un redattore con diritto di approvazione) puo approvarlo e pubblicarlo oppure restituirlo con un commento. Filtra l'elenco per stato, origine e termine di ricerca per trovare rapidamente l'articolo giusto.`}},{id:`posts`,routes:[`/posts`],title:{de:`Social Posts`,en:`Social posts`,es:`Publicaciones sociales`,it:`Post social`},body:{de:`Social Posts sammelt alle Kanal-Beiträge an einem Ort, auch Direkt-Posts aus dem Composer. Filtere nach Status (Wartet auf Freigabe, Entwurf, Geplant,
2Veröffentlicht, Fehlgeschlagen, Abgebrochen), Kanal und Charge; die Filter stehen in der Adresse, Links aus Benachrichtigungen und vom Dashboard öffnen also direkt die passende Liste. Bearbeiten kannst du, was noch nicht drauÃen ist: Text, Hashtags und Bilder anpassen, Entwürfe ohne Datum einplanen, geplante umplanen, zurückziehen (und wiederherstellen) oder löschen. Beiträge, die auf Freigabe warten, geben Freigeber (Owner, Admin, Editor mit Freigeber-Recht) frei, lehnen sie ab oder schicken sie zurück an den Entwurf; ein Banner zeigt vorbereitete Chargen mit bereiten Beiträgen, Entwürfen und fehlgeschlagenen Slots samt Gründen. Chips an den Karten nennen Probleme wie ein fehlendes Pflichtbild oder âBild fehlgeschlagenâ. Editoren ohne Veröffentlichungsrecht sehen statt Planen und Sofort posten die eine Aktion âZur Freigabe einreichenâ. Veröffentlichte Beiträge sind nicht mehr änderbar, dafür erzeugt âKlonenâ einen neuen im Composer; âBewerbenâ macht aus einem Beitrag einen Kampagnen-Entwurf und setzt das Ads-Modul voraus, sonst wirst du zum Upgrade geleitet.`,en:`Social posts gathers all channel posts in one place, including direct posts from the composer. Filter by status (Awaiting approval, Draft, Scheduled, Published, Failed, Cancelled), channel and batch; the filters are part of the address, so links from notifications and the dashboard open the matching list directly. You can edit what has not gone out yet: adjust text, hashtags and images, schedule drafts without a date, reschedule scheduled posts, withdraw them (and restore them if needed) or delete them. Posts awaiting approval are approved, rejected or sent back to draft by approvers (owner, admin, editor with the approver right); a banner shows prepared batches with ready posts, drafts and failed slots including the reasons. Chips on the cards name problems such as a missing required image or 'Image failed'. Editors without the right to publish see the single action 'Submit for approval' instead of Schedule and Post now. Published posts can no longer be changed, so 'Clone' creates a new one in the composer; 'Boost' turns a post into an ad campaign draft, which requires the Ads module, otherwise you are guided to an upgrade.`,es:`Publicaciones sociales reúne todas las publicaciones de canal en un solo lugar, incluidas las publicaciones directas del compositor. Filtra por estado (Pendiente de aprobación, Borrador, Programado, Publicado, Fallido, Cancelado), canal y lote; los filtros forman parte de la dirección, asà que los enlaces de las notificaciones y del panel abren directamente la lista correspondiente. Puedes editar lo que aún no ha salido: ajustar texto, hashtags e imágenes, programar borradores sin fecha, reprogramar las programadas, retirarlas (y restaurarlas si hace falta) o eliminarlas. Las publicaciones pendientes de aprobación las aprueban, rechazan o devuelven a borrador los aprobadores (propietario, administrador, editor con permiso de aprobación); un aviso muestra los lotes preparados con publicaciones listas, borradores y franjas fallidas con sus motivos. Etiquetas en las fichas indican problemas como una imagen obligatoria que falta o 'Imagen fallida'. Los editores sin derecho a publicar ven, en lugar de Programar y Publicar ahora, la única acción 'Enviar a aprobación'. Las publicaciones ya publicadas no se pueden modificar, por eso 'Clonar' crea una nueva en el compositor; 'Impulsar' convierte una publicación en un borrador de campaña publicitaria, lo que requiere el módulo Ads, de lo contrario se te dirige a una mejora de plan.`,it:`Post social raccoglie tutti i post dei canali in un unico posto, compresi i post diretti del compositore. Filtra per stato (In attesa di approvazione, Bozza, Pianificato, Pubblicato, Non riuscito, Annullato), canale e lotto; i filtri fanno parte dell'indirizzo, quindi i link dalle notifiche e dalla dashboard aprono direttamente l'elenco giusto. Puoi modificare ciò che non è ancora uscito: adeguare testo, hashtag e immagini, pianificare le bozze senza data, ripianificare quelli pianificati, ritirarli (e ripristinarli se serve) o eliminarli. I post in attesa di approvazione vengono approvati, rifiutati o rimandati in bozza dagli approvatori (titolare, amministratore, redattore con diritto di approvazione); un avviso mostra i lotti preparati con post pronti, bozze e slot non riusciti con i relativi motivi. Etichette sulle schede indicano problemi come un'immagine obbligatoria mancante o 'Immagine non riuscita'. I redattori senza diritto di pubblicazione vedono, al posto di Pianifica e Pubblica ora, la sola azione 'Invia per approvazione'. I post pubblicati non si possono più modificare, quindi 'Clona' crea un nuovo post nel compositore; 'Potenzia' trasforma un post in una bozza di campagna pubblicitaria, il che richiede il modulo Ads, altrimenti vieni indirizzato a un upgrade.`}},{id:`layouts`,routes:[`/layouts`],title:{de:`Layouts`,en:`Layouts`,es:`Disenos`,it:`Layout`},body:{de:`Im Layout-Designer gestaltest du eigene Bild-Vorlagen: Auf einer quadratischen Fläche legst du Zonen für Titel, Text, Bild, Logo und Icon an und positionierst sie frei; alle Werte sind relativ, damit dieselbe Vorlage in jedem Format sitzt. Farben für Text, Hintergrund und Icon stellst du pro Zone ein, ein Layout lässt sich per Klonen als Grundlage für eine Variante kopieren. Für Karussells bündelst du mehrere Layouts zu einer Gruppe und vergibst pro K
2arte eine Rolle (Titel, Erste, Content, Ende), damit die Reihenfolge im fertigen Karussell stimmt.`,en:`In the layout designer you build your own image templates: on a square canvas you add zones for title, text, image, logo and icon and position them freely; all values are relative so the same template fits every format. You set text, background and icon colors per zone, and you can clone a layout as the basis for a variant. For carousels you bundle several layouts into a group and give each card a role (title, first, content, end) so the order in the finished carousel is correct.`,es:`En el disenador de disenos creas tus propias plantillas de imagen: sobre un lienzo cuadrado anades zonas para titulo, texto, imagen, logotipo e icono y las colocas libremente; todos los valores son relativos para que la misma plantilla encaje en cualquier formato. Ajustas los colores de texto, fondo e icono por zona y puedes clonar un diseno como base para una variante. Para los carruseles agrupas varios disenos y asignas a cada tarjeta un rol (titulo, primera, contenido, fin) para que el orden del carrusel final sea correcto.`,it:`Nel designer dei layout crei i tuoi modelli di immagine: su un'area quadrata aggiungi zone per titolo, testo, immagine, logo e icona e le posizioni liberamente; tutti i valori sono relativi cosi lo stesso modello va bene in ogni formato. Imposti i colori di testo, sfondo e icona per ogni zona e puoi clonare un layout come base per una variante. Per i caroselli riunisci piu layout in un gruppo e assegni a ogni scheda un ruolo (titolo, prima, contenuto, fine) affinche l'ordine nel carosello finito sia corretto.`}},{id:`inbox`,routes:[`/inbox`],title:{de:`Inbox`,en:`Inbox`,es:`Bandeja de entrada`,it:`Inbox`},body:{de:`Die Inbox sammelt Kommentare und Erwähnungen aus deinen verbundenen Kanälen an einem Ort; mit "Sammeln" holst du neue Einträge ab. Zu jedem Eintrag erzeugt dir die KI auf Wunsch einen Antwortvorschlag in deiner Markenstimme, den du vor dem Senden anpassen kannst; antworten kannst du direkt bei Mastodon, X, Facebook und Instagram, bei Kanälen ohne Antwort-Weg (etwa LinkedIn) verlinkt die Inbox zum Original. Optional aktivierst du in den Einstellungen die Auto-Antwort: Personativ kündigt die vorgeschlagene Antwort an und sendet sie erst nach Ablauf des Veto-Fensters (Vorlaufminuten), sodass du sie vorher noch stoppen kannst. Unter dem Filter "Beantwortet" siehst du die tatsächlich gesendete Antwort, Erledigtes legst du per Archivieren beiseite.`,en:`The Inbox gathers comments and mentions from your connected channels in one place; use "Collect" to fetch new entries. For each entry the AI can draft a reply in your brand voice that you can adjust before sending; you can reply directly on Mastodon, X, Facebook and Instagram, while for channels without a reply path (such as LinkedIn) the Inbox links out to the original. Optionally enable auto-reply in the settings: Personativ announces the suggested reply and only sends it after the veto window (lead-time minutes) expires, so you can still stop it beforehand. Under the "Replied" filter you see the reply that was actually sent, and you set finished items aside by archiving them.`,es:`La bandeja de entrada reune comentarios y menciones de tus canales conectados en un solo lugar; con "Recopilar" obtienes las entradas nuevas. Para cada entrada la IA puede redactar una respuesta con la voz de tu marca que puedes ajustar antes de enviar; puedes responder directamente en Mastodon, X, Facebook e Instagram, y en los canales sin via de respuesta (como LinkedIn) la bandeja enlaza al original. De forma opcional activas la respuesta automatica en los ajustes: Personativ anuncia la respuesta propuesta y solo la envia al vencer la ventana de veto (minutos de antelacion), de modo que aun puedes detenerla antes. En el filtro "Respondido" ves la respuesta realmente enviada y apartas lo terminado archivandolo.`,it:`L'Inbox raccoglie commenti e menzioni dai tuoi canali collegati in un unico posto; con "Raccogli" recuperi le nuove voci. Per ogni voce l'IA puo proporre una risposta con la voce del tuo marchio, che puoi adeguare prima di inviare; puoi rispondere direttamente su Mastodon, X, Facebook e Instagram, mentre per i canali senza via di risposta (come LinkedIn) l'Inbox rimanda all'originale. Facoltativamente attivi la risposta automatica nelle impostazioni: Personativ annuncia la risposta proposta e la invia solo allo scadere della finestra di veto (minuti di anticipo), cosi puoi ancora fermarla prima. Con il filtro "Risposto" vedi la risposta effettivamente inviata e metti da parte cio che e concluso archiviandolo.`}},{id:`connectors`,routes:[`/social`,`/shops`,`/website`],title:{de:`Konnektoren und Kanäle`,en:`Connectors and channels`,es:`Conectores y canales`,it:`Connettori e canali`},body:{de:`Unter Konnektoren verbindest du deine Kanäle und Ziele. Unter Plattformen koppelst du Social-Konten per OAuth (für einige Kanäle per App-Passwort, Webhook oder Token), inklusive LinkedIn-Firmenseiten und Sonderfällen wie Telegram, und siehst Warnungen, wenn eine Verbindung abläuft; Kanäle verbinden, ändern und trennen dürfen nur Owner und Admins. Wird ein Kanal getrennt oder deaktiviert, werden seine noch geplanten Beiträge gestoppt (Status âFehlgeschlagenâ), veröffentlichte bleiben erhalten. Unter Shops bindest du deine Verkaufsquellen an, unter Website legst du fest, wohin ein veröffentlichter Artikel geht (Content-API, WordPress, Wix oder die öffentliche Seite); die Website-Auslieferung können nur Owner und Admins einrichten. Nur wirklich verbundene Kanäle stehen danach in Composer, Autopilot und Inbox zur Verfügung.`,en:`Under Connectors you connect your channels and destinations. Under Platforms you link social accounts via OAuth (for some channels via app password, webhook or token), including LinkedIn company pages and special cases such as Telegram, and you see warnings when a connection is about to expire; only owners and admins can connect, change and disconnect channels. When a channel is disconnected or deactivated, its still-scheduled posts are stopped (status Failed), published ones stay. Under Shops you connect your sales sources, and under Website you decide where a published article goes (Content API, WordPress, Wix or the public page); only owners and admins can set up website delivery. Only truly connected channels are then available in the composer, autopilot and inbox.`,es:`En Conectores conectas tus canales y destinos. En Plataformas vinculas cuentas sociales mediante OAuth (para algunos canales con contraseña de aplicación, webhook o token), incluidas las páginas de empresa de LinkedIn y casos especiales como Telegram, y ves avisos cuando una conexión está a punto de caducar; solo propietarios y administradores pueden conectar, modificar y desconectar canales. Si se desconecta o desactiva un canal, sus publicaciones aún programadas se detienen (estado Fallido); las ya publicadas se conservan. En Tiendas conectas tus fuentes de venta y en Sitio web decides adónde va un artÃculo publicado (API de contenido, WordPress, Wix o la página pública); solo propietarios y administradores pueden configurar la entrega al sitio web. Después, solo los canales realmente conectados están disponibles en el compositor, el piloto automático y la bandeja de entrada.`,it:`In Connettori colleghi i tuoi canali e destinazioni. In Piattaforme colleghi gli account social tramite OAuth (per alcuni canali con password per app, webhook o token), incluse le pagine aziendali LinkedIn e casi speciali come Telegram, e vedi gli avvisi quando una connessione sta per scadere; solo titolari e amministratori possono collegare, modificare e scollegare i canali. Quando un canale viene scollegato o disattivato, i suoi post ancora pianificati vengono fermati (stato Non riuscito); quelli pubblicati restano. In Negozi colleghi le tue fonti di vendita e in Sito web decidi dove va un articolo pubblicato (API dei contenuti, WordPress, Wix o la pagina pubblica); solo titolari e amministratori possono configurare la consegna al sito web. Successivamente solo i canali realmente collegati sono disponibili nel compositore, nell'autopilota e nell'inbox.`}},{id:`brandkit`,routes:[`/brand-kit`,`/site-design`],title:{de:`Brand Kit`,en:`Brand kit`,es:`Kit de marca`,it:`Brand kit`},body:{de:`Im Brand Kit pflegst du deine Marke: Markenstimme und Ton, Zielgruppe, Do und Dont, Farben (Primär, Akzent, Hintergrund, Vordergrund), Logo (hell und dunkel samt Overlay) und Schriften;
2 über "Markenstimme lernen" leitet die KI Stimme und Ton aus einem Beispieltext ab. Den Footer legst du pro Kanal fest: der hinterlegte Text wird nur an KI-generierte Social-Texte des jeweiligen Kanals angehängt, manuell geschriebene Texte bleiben unberührt. Ãber die Channel-Designs bestimmst du je Kanal das Aussehen der Bilder, und mit dem Instagram-Feed-Raster legst du das Muster fest, nach dem sich der Look deiner Instagram-Kacheln wiederholt (3, 6, 9 oder 12 Kacheln). Das Website-Design pflegst du unter Site-Design.`,en:`In the brand kit you maintain your brand: brand voice and tone, audience, dos and don'ts, colors (primary, accent, background, foreground), logo (light and dark, plus overlay) and fonts; with "Learn brand voice" the AI derives voice and tone from a sample text. You set the footer per channel: the stored text is only appended to AI-generated social texts of that channel, while manually written texts stay untouched. Via the channel designs you decide the look of the images per channel, and with the Instagram feed grid you define the pattern by which your Instagram tiles' look repeats (3, 6, 9 or 12 tiles). You maintain the website design under Site design.`,es:`En el kit de marca mantienes tu marca: voz y tono de marca, audiencia, lo que se debe y no se debe hacer, colores (primario, de acento, fondo, primer plano), logotipo (claro y oscuro, mas superposicion) y tipografias; con "Aprender voz de marca" la IA deduce la voz y el tono a partir de un texto de ejemplo. El pie de pagina se define por canal: el texto guardado solo se anade a los textos sociales generados por IA de ese canal, mientras que los textos escritos a mano quedan intactos. Con los disenos de canal decides el aspecto de las imagenes por canal, y con la cuadricula del feed de Instagram defines el patron con el que se repite el aspecto de tus mosaicos de Instagram (3, 6, 9 o 12 mosaicos). El diseno del sitio web lo mantienes en Diseno del sitio.`,it:`Nel brand kit gestisci il tuo marchio: voce e tono del marchio, pubblico, cosa fare e cosa non fare, colori (primario, accento, sfondo, primo piano), logo (chiaro e scuro, piu overlay) e caratteri; con "Impara la voce del marchio" l'IA deduce voce e tono da un testo di esempio. Il footer si imposta per canale: il testo salvato viene aggiunto solo ai testi social generati dall'IA di quel canale, mentre i testi scritti a mano restano intatti. Con i design dei canali decidi l'aspetto delle immagini per ogni canale e con la griglia del feed Instagram definisci il motivo con cui si ripete l'aspetto dei tuoi riquadri Instagram (3, 6, 9 o 12 riquadri). Il design del sito web lo gestisci in Design del sito.`}},{id:`instagram-raster`,routes:[`/brand-kit`,`/compose`,`/posts`,`/calendar`],title:{de:`Instagram-Raster: Reihenfolge und Konflikte`,en:`Instagram grid: order and conflicts`,es:`CuadrÃcula de Instagram: orden y conflictos`,it:`Griglia di Instagram: ordine e conflitti`},body:{de:`Das Instagram-Raster (Brand-Kit, Channel-Designs, âKachelrasterâ) legt ein Muster fest, das sich alle 3, 6, 9 oder 12 Beiträge wiederholt: je Platz eine Design-Kachel, ein KI-Foto oder ein Karussell. Das Raster ist maÃgeblich. Welche Kachelart als Nächstes dran ist (âNächsterâ), ergibt sich aus der Zahl der veröffentlichten und eingeplanten Instagram-Feed-Beiträge je Konto; Stories, Entwürfe, Fehlgeschlagene und Abgebrochene zählen nicht, eigene Fotos und manuell eingeplante Beiträge dagegen schon. Bei den Bildmodi Vorlage und KI bestimmt das Raster die Kachel, Design-Kacheln werden beim Veröffentlichen kostenlos passend neu gerendert. Passt ein Beitrag nicht zur erwarteten Reihenfolge (zum Beispiel ein Foto, wo eine Design-Kachel dran ist), fragt die App nach, statt still zu ersetzen: nächster passender Platz, als Ausnahme einplanen oder die passende Kachel erzeugen (ein KI-Foto kostet Credits). Mit âMuster ab jetzt neu startenâ beginnt die Zählung neu. Fachlich heiÃt der Konflikt GRID_CONFLICT: Beim manuellen Einplanen antwortet die App mit genau dieser Auswahl. Automatiken (Autopilot, Highlights, V
2orab-Freigabe) entscheiden selbst: Sie legen den Beitrag auf den nächsten passenden Platz und verschieben dafür die Sendezeit (Hinweis GRID_NEXT_FIT am Beitrag); gibt es keinen passenden Platz, bleibt der Beitrag als Entwurf mit dem Problem GRID_CONFLICT stehen, statt das Raster still zu brechen. Bei Highlights mit eigenen Medien oder Layout ergibt sich der Platz erst beim Einplanen aus der tatsächlichen Reihenfolge. Was auÃerhalb von Personativ auf Instagram passiert, gleicht der tägliche Ist-Abgleich aus (eigenes Hilfethema).`,en:`The Instagram grid (brand kit, channel designs, 'Tile grid') defines a pattern that repeats every 3, 6, 9 or 12 posts: per position a design tile, an AI photo or a carousel. The grid is authoritative. Which tile type is next ('Next up') follows from the number of published and scheduled Instagram feed posts per account; stories, drafts, failed and cancelled posts do not count, but your own photos and manually scheduled posts do. With the image modes template and AI the grid decides the tile, and design tiles are re-rendered to fit at publishing, at no cost. If a post does not fit the expected order (for example a photo where a design tile is due), the app asks instead of silently replacing it: next fitting position, schedule it as an exception, or create the matching tile (an AI photo costs credits). 'Restart pattern from now' restarts the count. Technically the conflict is called GRID_CONFLICT: when you schedule manually, the app responds with exactly this choice. Automations (autopilot, highlights, advance approval) decide on their own: they put the post on the next matching slot and move its publishing time for that (note GRID_NEXT_FIT on the post); if there is no matching slot, the post stays a draft with the problem GRID_CONFLICT instead of silently breaking the grid. For highlights with your own media or a layout, the slot is determined at scheduling time from the actual order. What happens on Instagram outside Personativ is corrected by the daily sync with the real feed (separate help topic).`,es:`La cuadrÃcula de Instagram (kit de marca, diseños de canal, 'CuadrÃcula de mosaicos') define un patrón que se repite cada 3, 6, 9 o 12 publicaciones: en cada posición un mosaico de diseño, una foto de IA o un carrusel. La cuadrÃcula es la que manda. Qué tipo de mosaico toca ('Siguiente') se deduce del número de publicaciones del feed de Instagram publicadas y programadas por cuenta; las historias, los borradores, las fallidas y las canceladas no cuentan, pero sà tus fotos propias y las publicaciones programadas a mano. Con los modos de imagen plantilla e IA la cuadrÃcula decide el mosaico, y los mosaicos de diseño se vuelven a renderizar al publicar, sin coste. Si una publicación no encaja con el orden esperado (por ejemplo una foto donde toca un mosaico de diseño), la app pregunta en lugar de sustituir en silencio: siguiente posición adecuada, programar como excepción o crear el mosaico correspondiente (una foto de IA cuesta créditos). 'Reiniciar el patrón desde ahora' reinicia el recuento. Técnicamente el conflicto se llama GRID_CONFLICT: al programar manualmente, la app responde exactamente con esta elección. Las automatizaciones (piloto automático, destacados, aprobación previa) deciden solas: colocan la publicación en la siguiente posición adecuada y desplazan para ello la hora de publicación (aviso GRID_NEXT_FIT en la publicación); si no hay posición adecuada, la publicación queda como borrador con el problema GRID_CONFLICT en lugar de romper la cuadrÃcula en silencio. En los destacados con medios propios o diseño, la posición se determina al programar a partir del orden real. Lo que ocurre en Instagram fuera de Personativ lo corrige la sincronización diaria con el feed real (tema de ayuda propio).`,it:`La griglia di Instagram (brand kit, design dei canali, 'Griglia a riquadri') definisce uno schema che si ripete ogni 3, 6, 9 o 12 post: per ogni posizione un riquadro di design, una foto IA o un carosello. La griglia è vincolante. Quale tipo di riquadro tocca ('Prossimo') dipende dal numero di post del feed Instagram pubblicati e pianificati per account; storie, bozze, post non riusciti e annullati non contano, mentre le tue foto e i post pianificati a mano sì. Con le modalità immagine modello e IA la griglia decide il riquadro, e i riquadri di design vengono rigenerati alla pubblicazione, senza costi. Se un post non si adatta all'ordine previsto (ad esempio una foto dove tocca un riquadro di design), l'app chiede invece di sostituire in silenzio: prossima posizione adatta, pianificare come eccezione o creare il riquadro corrispondente (una foto IA costa crediti). 'Riavvia lo schema da ora' riavvia il conteggio. Tecnicamente il conflitto si chiama GRID_CONFLICT: quando pianifichi manualmente, l'app risponde proprio con questa scelta. Le automazioni (pilota automatico, highlight, approvazione anticipata) decidono da sole: mettono il post nella prossima posizione adatta e spostano per questo l'orario di pubblicazione (avviso GRID_NEXT_FIT sul post); se non c'è una posizione adatta, il post resta una bozza con il problema GRID_CONFLICT invece di rompere la griglia in silenzio. Per gli highlight con media propri o layout la posizione si determina al momento della pianificazione dall'ordine reale. Ciò che accade su Instagram fuori da Personativ viene corretto dall'allineamento giornaliero con il feed reale (tema di aiuto a parte).`}},{id:`privat-linkedin`,routes:[`/social`,`/compose`,`/autopilot`,`/highlights`],title:{de:`LinkedIn: Profil oder Firmenseite`,en:`LinkedIn: profile or company page`,es:`LinkedIn: perfil o página de empresa`,it:`LinkedIn: profilo o pagina aziendale`},body:{de:`LinkedIn lässt sich auf zwei Wegen verbinden: als dein persönliches Profil (âLinkedInâ) oder als Firmenseite (âLinkedIn Firmenseiteâ, nur Seiten, für die du Administrator bist); beide stehen unter Plattformen. Manuelles Posten funktioniert auf beiden: Im Composer sind bei mehreren verbundenen LinkedIn-Konten standardmäÃig alle angehakt, die Firmenseite trägt die Markierung âFirmenseiteâ, und du hakst ab, was nicht gepostet werden soll. Automatiken (Autopilot, Highlights, Agent, Evergreen) bespielen dagegen nie ein Privatprofil, nur Firmenseiten; ist nur ein Profil verbunden, zeigt die Regel âNicht bespielbar: LinkedInâ, und dieser Kanal bekommt keine Beiträge. Das schützt davor, dass ein automatischer Be
2itrag unbeabsichtigt auf deinem privaten Profil landet. Für automatisches Posten auf LinkedIn verbindest du also die Firmenseite.`,en:`LinkedIn can be connected in two ways: as your personal profile ('LinkedIn') or as a company page ('LinkedIn company page', only pages you administer); both are under Platforms. Manual posting works on both: in the composer, when several LinkedIn accounts are connected, all of them are ticked by default, the company page carries the 'Company page' marker, and you untick what should not be posted to. Automations (autopilot, highlights, agent, evergreen), however, never post to a personal profile, only to company pages; if only a profile is connected, the rule shows 'Not postable: LinkedIn' and this channel receives no posts. This protects you from an automatic post landing on your private profile unintentionally. For automatic posting on LinkedIn, connect the company page.`,es:`LinkedIn se puede conectar de dos maneras: como tu perfil personal ('LinkedIn') o como página de empresa ('Página de empresa de LinkedIn', solo páginas que administras); ambas están en Plataformas. La publicación manual funciona en las dos: en el compositor, si hay varias cuentas de LinkedIn conectadas, todas aparecen marcadas por defecto, la página de empresa lleva la marca 'Página de empresa' y desmarcas lo que no debe recibir la publicación. Las automatizaciones (piloto automático, destacados, agente, evergreen), en cambio, nunca publican en un perfil personal, solo en páginas de empresa; si solo hay un perfil conectado, la regla muestra 'No publicable: LinkedIn' y ese canal no recibe publicaciones. Esto evita que una publicación automática acabe sin querer en tu perfil privado. Para publicar automáticamente en LinkedIn, conecta la página de empresa.`,it:`LinkedIn si può collegare in due modi: come profilo personale ('LinkedIn') o come pagina aziendale ('Pagina aziendale LinkedIn', solo pagine che amministri); entrambi sono in Piattaforme. La pubblicazione manuale funziona su entrambi: nel compositore, se sono collegati più account LinkedIn, tutti sono spuntati di default, la pagina aziendale porta il contrassegno 'Pagina aziendale' e deselezioni ciò che non deve ricevere il post. Le automazioni (autopilota, contenuti in evidenza, agente, evergreen), invece, non pubblicano mai su un profilo personale, solo su pagine aziendali; se è collegato solo un profilo, la regola mostra 'Non pubblicabile: LinkedIn' e quel canale non riceve post. Questo evita che un post automatico finisca per errore sul tuo profilo privato. Per pubblicare automaticamente su LinkedIn, collega la pagina aziendale.`}},{id:`instagram-ist-abgleich`,routes:[`/brand-kit`,`/social`,`/calendar`],title:{de:`Instagram-Raster: Abgleich mit dem echten Feed`,en:`Instagram grid: sync with the real feed`,es:`CuadrÃcula de Instagram: sincronización con el feed real`,it:`Griglia di Instagram: allineamento con il feed reale`},body:{de:`Das Raster zählt die Plätze aus den Beiträgen, die Personativ kennt. Postest du direkt in der Instagram-App oder löschst bzw. archivierst dort einen Beitrag, verschiebt sich dein echter Feed, und ohne Abgleich lägen alle folgenden Design-Kacheln auf dem Nachbarplatz. Deshalb liest Personativ einmal täglich (nachts) die letzten 50 Medien jedes verbundenen Instagram-Kontos mit aktivem Raster, nur lesend, und vergleicht sie mit den eigenen Beiträgen. Weicht der Feed ab, wird der Zählbeginn des Kontos um genau diese Verschiebung angepasst und die geplanten Beiträge werden neu nummeriert; passt danach eine Kachel nicht mehr, siehst du den Konflikt am Beitrag. Kein Beitrag wird still umgeschrieben. Das Ergebnis steht im Brand Kit unter den Kanal-Designs bei Instagram als Hinweiszeile je Konto, mit Datum der letzten Prüfung: Ausgangslage erfasst (erster Lauf), Raster und Feed stimmen überein, oder was extern gepostet, gelöscht oder wiederhergestellt wurde. Ist die Verbindung abgelaufen, wird das Konto zum Neu-Verbinden markiert.`,en:`The grid counts slots from the posts Personativ knows about. If you post directly in the Instagram app or delete or archive a post there, your real feed shifts, and without a sync all following design tiles would land on the neighbouring slot. That is
2why Personativ reads the last 50 media of every connected Instagram account with an active grid once a day (at night), read only, and compares them with its own posts. If the feed differs, the account's counting start is adjusted by exactly that shift and the planned posts are renumbered; if a tile no longer fits afterwards, you see the conflict on the post. No post is silently rewritten. The result is shown in the brand kit under the channel designs for Instagram as a note per account, with the date of the last check: initial state recorded (first run), grid and feed match, or what was posted, deleted or restored outside Personativ. If the connection has expired, the account is marked for reconnecting.`,es:`La cuadrÃcula cuenta las posiciones a partir de las publicaciones que Personativ conoce. Si publicas directamente en la app de Instagram o eliminas o archivas allà una publicación, tu feed real se desplaza y, sin sincronización, todos los diseños siguientes caerÃan en la posición vecina. Por eso Personativ lee una vez al dÃa (por la noche) los últimos 50 medios de cada cuenta de Instagram conectada con cuadrÃcula activa, solo en modo lectura, y los compara con sus propias publicaciones. Si el feed difiere, el inicio del recuento de la cuenta se ajusta exactamente en ese desplazamiento y las publicaciones planificadas se renumeran; si después un diseño ya no encaja, verás el conflicto en la publicación. Ninguna publicación se reescribe en silencio. El resultado aparece en el brand kit, en los diseños de canal de Instagram, como una lÃnea de aviso por cuenta con la fecha de la última comprobación: estado inicial registrado (primera ejecución), cuadrÃcula y feed coinciden, o lo que se publicó, eliminó o restauró fuera de Personativ. Si la conexión ha caducado, la cuenta se marca para volver a conectarla.`,it:`La griglia conta le posizioni dai post che Personativ conosce. Se pubblichi direttamente nell'app di Instagram o vi elimini o archivi un post, il tuo feed reale si sposta e, senza allineamento, tutti i riquadri di design successivi finirebbero nella posizione accanto. Per questo Personativ legge una volta al giorno (di notte) gli ultimi 50 media di ogni account Instagram collegato con griglia attiva, in sola lettura, e li confronta con i propri post. Se il feed è diverso, l'inizio del conteggio dell'account viene adattato esattamente di quello spostamento e i post pianificati vengono rinumerati; se poi un riquadro non è più adatto, vedi il conflitto sul post. Nessun post viene riscritto in silenzio. Il risultato compare nel brand kit, nei design dei canali di Instagram, come riga di avviso per ogni account con la data dell'ultimo controllo: stato iniziale registrato (prima esecuzione), griglia e feed coincidono, oppure cosa è stato pubblicato, eliminato o ripristinato fuori da Personativ. Se la connessione è scaduta, l'account viene segnato per essere ricollegato.`}},{id:`artikel-zurueckziehen`,routes:[`/articles`],title:{de:`Artikel zurückziehen oder löschen: WordPress und Wix`,en:`Withdrawing or deleting articles: WordPress and Wix`,es:`Retirar o eliminar artÃculos: WordPress y Wix`,it:`Ritirare o eliminare articoli: WordPress e Wix`},body:{de:`Ziehst du einen veröffentlichten Artikel zurück (Status weg von Veröffentlicht) oder löschst ihn, nimmt Personativ auch die Kopien auf deiner Website zurück: WordPress setzt den Beitrag wieder auf Entwurf, bei Wix wird der Blogbeitrag aus der Veröffentlichung genommen und bleibt als Entwurf in Wix erhalten. Geplante Social-Beiträge zum Artikel werden storniert, bereits veröffentlichte bleiben. Das Ergebnis siehst du sofort nach dem Speichern bzw. Löschen als Hinweis je Ziel: zurückgenommen, dort schon gelöscht, keine Verbindung mehr hinterlegt (dann bitte von Hand zurücknehmen) oder fehlgeschlagen (Details zusätzlich in den Be
2nachrichtigungen). Antwortet ein Anbieter nicht innerhalb weniger Sekunden, läuft die Rücknahme im Hintergrund weiter und du wirst nur bei einem Fehler benachrichtigt. Demo-Arbeitsbereiche ändern nichts auf externen Websites.`,en:`If you withdraw a published article (status away from published) or delete it, Personativ also withdraws the copies on your website: WordPress sets the post back to draft, and on Wix the blog post is unpublished and kept as a draft in Wix. Scheduled social posts for the article are cancelled, already published ones remain. You see the result right after saving or deleting as a note per target: withdrawn, already deleted there, no connection stored anymore (then please withdraw it manually) or failed (details also in the notifications). If a provider does not answer within a few seconds, the withdrawal continues in the background and you are only notified in case of an error. Demo workspaces do not change anything on external websites.`,es:`Si retiras un artÃculo publicado (el estado deja de ser publicado) o lo eliminas, Personativ retira también las copias de tu sitio web: WordPress vuelve a poner la entrada como borrador y en Wix la entrada del blog deja de estar publicada y se conserva como borrador en Wix. Las publicaciones sociales programadas del artÃculo se cancelan, las ya publicadas se mantienen. Ves el resultado justo después de guardar o eliminar como aviso por destino: retirado, ya eliminado allÃ, ya no hay conexión guardada (entonces retÃralo manualmente) o fallido (detalles también en las notificaciones). Si un proveedor no responde en pocos segundos, la retirada continúa en segundo plano y solo recibes una notificación en caso de error. Los espacios de demostración no cambian nada en sitios web externos.`,it:`Se ritiri un articolo pubblicato (lo stato non è più pubblicato) o lo elimini, Personativ ritira anche le copie sul tuo sito: WordPress rimette il post in bozza e su Wix l'articolo del blog viene tolto dalla pubblicazione e resta come bozza in Wix. I post social pianificati per l'articolo vengono annullati, quelli già pubblicati restano. Vedi il risultato subito dopo il salvataggio o l'eliminazione come avviso per ogni destinazione: ritirato, già eliminato lì, nessuna connessione più presente (allora ritiralo a mano) oppure non riuscito (dettagli anche nelle notifiche). Se un fornitore non risponde entro pochi secondi, il ritiro continua in background e ricevi una notifica solo in caso di errore. I workspace demo non modificano nulla sui siti esterni.`}},{id:`konto-trennen-widerruf`,routes:[`/social`,`/settings`],title:{de:`Konto trennen und Workspace löschen: Freigabe beim Anbieter`,en:`Disconnecting accounts and deleting the workspace: authorization at the provider`,es:`Desconectar cuentas y eliminar el espacio de trabajo: autorización en el proveedor`,it:`Scollegare account ed eliminare il workspace: autorizzazione presso il fornitore`},body:{de:`Wenn du einen Kanal oder ein Werbekonto trennst, widerruft Personativ vorher die Freigabe beim Anbieter (âPersonativ darf in deinem Namen postenâ), soweit dessen Schnittstelle das erlaubt, und löscht erst danach die gespeicherten Zugangsdaten. Das Ergebnis siehst du direkt nach dem Trennen als Hinweis: widerrufen; bleibt bestehen, weil ein anderes verbundenes Konto dieselbe Freigabe nutzt (zum Beispiel eine zweite Facebook-Seite derselben Person); oder nicht per Schnittstelle möglich (etwa Pinterest, Mastodon, Microsoft Ads, X Ads, Amazon), dann entfernst du die App bitte zusätzlich in den Einstellungen des Anbieters. Bei Wix verwirft Personativ den Zugang, die App deinstallierst du in Wix. Ein Fehler beim Anbieter hält das Trennen nie auf. Beim endgültigen Löschen des Workspaces werden alle Freigaben auf dieselbe Weise widerrufen. Bewusst erhalten bleiben technische Protokolle (Fehlerprotokoll, Support-Nachrichten) im Rahmen der gesetzlichen und betrieblichen Aufbewahrung. Demo-Arbeitsbereiche widerrufen nichts.`,en:`When you disconnect a channel or an ad account, Personativ first revokes the authorization at the provider ('Personativ may post on your behalf') as far as its API allows, and only then deletes the stored credentials. You see the result as a note right after disconnecting: revoked; remains because another connected account uses the same authorization (for example a second Facebook page of the same person); or not possible via API (such as Pinterest, Mastodon, Microsoft Ads, X Ads, Amazon), in which case please also remove the app in the provider's settings. For Wix, Personativ discards the access and you uninstall the app in Wix. An error at the provider never stops the disconnect. When the workspace is finally deleted, all authorizations are revoked the same way. Technical logs (error log, support messages) are deliberately kept within statutory and operational retention. Demo workspaces revoke nothing.`,es:`Cuando desconectas un canal o una cuenta publicitaria, Personativ revoca primero la autorización en el proveedor ('Personativ puede publicar en tu nombre') en la medida en que su interfaz lo permita y solo de
2spués elimina las credenciales guardadas. Ves el resultado como aviso justo después de desconectar: revocada; se mantiene porque otra cuenta conectada usa la misma autorización (por ejemplo una segunda página de Facebook de la misma persona); o no es posible por interfaz (como Pinterest, Mastodon, Microsoft Ads, X Ads, Amazon), en cuyo caso elimina también la app en la configuración del proveedor. En Wix, Personativ descarta el acceso y tú desinstalas la app en Wix. Un error en el proveedor nunca detiene la desconexión. Al eliminar definitivamente el espacio de trabajo, todas las autorizaciones se revocan de la misma manera. Los registros técnicos (registro de errores, mensajes de soporte) se conservan deliberadamente dentro de la conservación legal y operativa. Los espacios de demostración no revocan nada.`,it:`Quando scolleghi un canale o un account pubblicitario, Personativ revoca prima l'autorizzazione presso il fornitore ('Personativ può pubblicare a tuo nome') nella misura consentita dalla sua interfaccia e solo dopo elimina le credenziali salvate. Vedi il risultato come avviso subito dopo lo scollegamento: revocata; resta attiva perché un altro account collegato usa la stessa autorizzazione (per esempio una seconda pagina Facebook della stessa persona); oppure non possibile tramite interfaccia (come Pinterest, Mastodon, Microsoft Ads, X Ads, Amazon), nel qual caso rimuovi anche l'app nelle impostazioni del fornitore. Per Wix, Personativ elimina l'accesso e tu disinstalli l'app in Wix. Un errore presso il fornitore non blocca mai lo scollegamento. Con l'eliminazione definitiva del workspace tutte le autorizzazioni vengono revocate allo stesso modo. I log tecnici (registro errori, messaggi di supporto) vengono conservati di proposito nei limiti della conservazione legale e operativa. I workspace demo non revocano nulla.`}},{id:`titelbild-rasterkonflikt`,routes:[`/video-studio`,`/compose`,`/posts`],title:{de:`Titelbild tauschen: Rasterkonflikt`,en:`Changing a cover: grid conflict`,es:`Cambiar la portada: conflicto de cuadrÃcula`,it:`Cambiare la copertina: conflitto di griglia`},body:{de:`Tauschst du im Thumbnail-Designer das Titelbild eines bereits eingeplanten Instagram-Feed-Beitrags, prüft Personativ das Instagram-Raster wie beim Einplanen. Passt das neue Bild nicht zur Kachel, die an diesem Platz dran ist, antwortet die App mit dem Rasterkonflikt GRID_CONFLICT: Am Beitrag ändert sich nichts und es werden keine Credits gebucht. Der Designer zeigt dann zwei Wege: âAls Ausnahme übernehmenâ erzeugt das Titelbild erneut und setzt es bewusst als Ausnahme an diesen Platz (technisch gridException), die Credits werden erst bei Erfolg gebucht; âAltes Titelbild behaltenâ lässt alles, wie es war. Beiträge auf anderen Kanälen (zum Beispiel YouTube) und Beiträge ohne aktives Raster sind nicht betroffen.`,en:`If you change the cover of an Instagram feed post that is already scheduled in the thumbnail designer, Personativ checks the Instagram grid just like when scheduling. If the new image does not match the tile due at this position, the app responds with the grid conflict GRID_CONFLICT: nothing changes on the post and no credits are charged. The designer then offers two ways: 'Apply as an exception' creates the cover again and deliberately places it at this position as an exception (technically gridException), with credits charged only on success; 'Keep the old cover' leaves everything as it was. Posts on other channels (for example YouTube) and posts without an active grid are not affected.`,es:`Si en el diseñador de miniaturas cambias la portada de una publicación del feed de Instagram ya programada, Personativ comprueba la cuadrÃcula de Instagram igual que al programar. Si la nueva imagen no encaja con el mosaico que toca en esa posición, la app responde con el conflicto de cuadrÃcula GRID_CONFLICT: la publicación no cambia y no se cobran créditos. El diseñador ofrece entonces dos caminos: 'Aplicar como excepción' vuelve a crear la portada y la coloca a propósito como excepción en esa posición (técnicamente gridException), y los créditos se cobran solo si sale bien; 'Mantener la portada anterior' deja todo como estaba. Las publicaciones de otros canales (por ejemplo YouTube) y las que no tienen una cuadrÃcula activa no se ven afectadas.`,it:`Se nel designer di miniature cambi la copertina di un post del feed Instagram già pianificato, Personativ controlla la griglia di Instagram come in fase di pianificazione. Se la nuova immagine non corrisponde al riquadro previsto in quella posizione, l'app risponde con il conflitto di griglia GRID_CONFLICT: il post non cambia e non vengono addebitati crediti. Il designer offre allora due strade: 'Applica come eccezione' crea di nuovo la copertina e la colloca di proposito come eccezione in quella posizione (tecnicamente gridException), con i crediti addebitati solo in caso di successo; 'Mantieni la copertina precedente' lascia tutto com'era. I post su altri canali (ad esempio YouTube) e quelli senza una griglia attiva non sono interessati.`}}],Ba=[{id:`ads-kampagnen`,requiresAds:!0,routes:[`/ads/campaigns`,`/ads/wizard`],title:{de:`Werbekampagnen (Ads)`,en:`Ad campaigns (Ads)`,es:`Campañas publicitarias (Ads)`,it:`Campagne pubblicitarie (Ads)`}
2,body:{de:`Unter Kampagnen legst du KI-gestützte Werbekampagnen an und verwaltest sie; der Budget-Wizard verteilt dein Budget über die verbundenen Plattformen. Diese Funktionen sind nur mit Ads- oder Suite-Freischaltung sichtbar; ohne passendes Paket wirst du zur Paketauswahl geleitet. Einzelne Beiträge kannst du zusätzlich direkt über "Beitrag bewerben" (Boost) in einen Kampagnen-Entwurf überführen, ohne die Ads-Oberfläche komplett zu durchlaufen.`,en:`Under Campaigns you create and manage AI-assisted ad campaigns; the budget wizard spreads your budget across the connected platforms. These features are only visible with an Ads or Suite subscription; without a matching plan you are sent to plan selection. Individual posts can also be turned into a campaign draft directly via "Boost post", without going through the full Ads interface.`,es:`En Campañas creas y gestionas campañas publicitarias asistidas por IA; el asistente de presupuesto reparte tu presupuesto entre las plataformas conectadas. Estas funciones solo son visibles con una suscripción Ads o Suite; sin un plan adecuado se te lleva a la selección de plan. Cada publicación puede convertirse además en un borrador de campaña directamente con "Promocionar publicación" (Boost), sin recorrer toda la interfaz de Ads.`,it:`In Campagne crei e gestisci campagne pubblicitarie assistite dall'IA; la procedura guidata di budget distribuisce il tuo budget sulle piattaforme collegate. Queste funzioni sono visibili solo con un abbonamento Ads o Suite; senza un piano adatto vieni indirizzato alla scelta del piano. I singoli contenuti possono inoltre diventare una bozza di campagna direttamente con "Promuovi contenuto" (Boost), senza percorrere tutta l'interfaccia Ads.`}},{id:`ads-empfehlungen`,requiresAds:!0,routes:[`/ads/recommendations`,`/ads/proposals`],title:{de:`Empfehlungen (Ads)`,en:`Recommendations (Ads)`,es:`Recomendaciones (Ads)`,it:`Raccomandazioni (Ads)`},body:{de:`Empfehlungen bündelt konkrete Budget- und Gebotsvorschläge für deine Kampagnen. Jede Empfehlung kannst du sofort anwenden oder ablehnen (Veto); optional aktivierst du den Autopilot mit einem Veto-Fenster, sodass Empfehlungen nach Ablauf automatisch greifen, wenn du nicht widersprichst. Ãber 'Vorschläge' laufen zusätzlich die von der KI erzeugten Kampagnen-Entwürfe ein, die du übernehmen oder verwerfen kannst. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`Recommendations bundles concrete budget and bid suggestions for your campaigns. You can apply or reject each recommendation right away (veto); optionally you turn on the autopilot with a veto window, so recommendations take effect automatically after it elapses unless you object. Under 'Proposals' the AI-generated campaign drafts also arrive, which you can accept or discard. Visible only with an Ads or Suite subscription.`,es:`Recomendaciones reúne sugerencias concretas de presupuesto y puja para tus campañas. Puedes aplicar o rechazar cada recomendación al instante (veto); opcionalmente activas el piloto automático con una ventana de veto, de modo que las recomendaciones surten efecto automáticamente al expirar si no te opones. En 'Propuestas' llegan además los borradores de campaña generados por la IA, que puedes aceptar o descartar. Visible solo con una suscripción Ads o Suite.`,it:`Raccomandazioni raccoglie proposte concrete di budget e offerta per le tue campagne. Puoi applicare o rifiutare ogni raccomandazione subito (veto); facoltativamente attivi il pilota automatico con una finestra di veto, così le raccomandazioni entrano in vigore automaticamente allo scadere se non ti opponi. In 'Proposte' arrivano inoltre le bozze di campagna generate dall'IA, che puoi accettare o scartare. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-anzeigen`,requiresAds:!0,routes:[`/ads/ads`],title:{de:`Anzeigen (Ads)`,en:`Ads (ad level)`,es:`Anuncios (Ads)`,it:`Annunci (Ads)`},body:{de:`Die Anzeigen-Seite listet deine einzelnen Anzeigen (Ad-Ebene) plattformübergreifend mit ihrem Prüfstatus (in Prüfung, freigegeben, abgelehnt). Du filterst nach Status, um abgelehnte Anzeigen schnell zu finden und zu korrigieren. So behältst du den Ãberblick, welche Creatives tatsächlich ausspielbar sind. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The ads page lists your individual ads (ad level) across platforms with their review status (in review, approved, disapproved). You filter by status to quickly find and fix disapproved ads. This keeps you on top of which creatives can actually run. Visible only with an Ads or Suite subscription.`,es:`La página de anuncios enumera tus anuncios individuales (nivel de anuncio) entre plataformas con su estado de revisión (en revisión, aprobado, rechazado). Filtras por estado para encontrar y corregir rápidamente los anuncios rechazados. Asà controlas qué creatividades pueden emitirse realmente. Visible solo con una suscripción Ads o Suite.`,it:`La pagina annunci elenca i tuoi singoli annunci (livello annuncio) su tutte le piattaforme con il loro stato di revisione (in revisione, approvato, rifiutato). Filtri per stato per trovare e correggere rapidamente gli annunci rifiutati. Così sai sempre quali creatività possono effettivamente andare in onda. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-keywords`,requiresAds:!0,routes:[`/ads/keywords`],title:{de:`Keywords und Negativlisten (Ads)`,en:`Keywords and negative lists (Ads)`,es:`Palabras clave y listas negativas (Ads)`,it:`Parole chiave e liste negative (Ads)`},body:{de:`Unter Keywords verwaltest du die Suchbegriffe deiner Google- und Microsoft-Kampagnen samt Match-Typ (weitgehend, Wortgruppe, exakt) sowie die Negativ-Keywords, mit denen du unpassende Suchanfragen ausschlieÃt. Keywords gibt es nur bei den suchbasierten Plattformen (Google, Microsoft). So steuerst du, für welche Suchen deine Anzeigen erscheinen und für welche nicht. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`Under Keywords you manage the search terms of your Google and Microsoft campaigns including the match type (broad, phrase, exact) as well as the negative keywords with which you exclude unsuitable searches. Keywords exist only on the search-based platforms (Google, Microsoft). This lets you control which searches your ads appear for and which not. Visible only with an Ads or Suite subscription.`,es:`
2En Palabras clave gestionas los términos de búsqueda de tus campañas de Google y Microsoft, incluido el tipo de concordancia (amplia, de frase, exacta), asà como las palabras clave negativas con las que excluyes búsquedas inadecuadas. Las palabras clave solo existen en las plataformas de búsqueda (Google, Microsoft). Asà controlas para qué búsquedas aparecen tus anuncios y para cuáles no. Visible solo con una suscripción Ads o Suite.`,it:`In Parole chiave gestisci i termini di ricerca delle tue campagne Google e Microsoft, compreso il tipo di corrispondenza (generica, a frase, esatta), oltre alle parole chiave a corrispondenza inversa con cui escludi ricerche non pertinenti. Le parole chiave esistono solo sulle piattaforme di ricerca (Google, Microsoft). Così controlli per quali ricerche compaiono i tuoi annunci e per quali no. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-regeln`,requiresAds:!0,routes:[`/ads/rules`],title:{de:`Regel-Engine: wenn-dann (Ads)`,en:`Rule engine: if-then (Ads)`,es:`Motor de reglas: si-entonces (Ads)`,it:`Motore di regole: se-allora (Ads)`},body:{de:`Die Regel-Engine automatisiert Reaktionen nach dem Wenn-dann-Prinzip über deine Ad-Metriken: Trifft eine Bedingung zu (etwa ROAS unter Schwelle, CPA über Schwelle, CTR, CPC, Ausgaben oder Conversions), löst die Regel eine Aktion auf Kampagnen-, Anzeigengruppen- oder Anzeigenebene aus. Ãber den Test-Lauf (Dry-Run) siehst du vorab, welche Elemente eine Regel treffen würde, bevor sie scharf geschaltet wird. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The rule engine automates reactions on an if-then basis over your ad metrics: when a condition holds (for example ROAS below a threshold, CPA above a threshold, CTR, CPC, spend or conversions), the rule triggers an action at campaign, ad-group or ad level. Via the test run (dry run) you see in advance which elements a rule would hit before it goes live. Visible only with an Ads or Suite subscription.`,es:`El motor de reglas automatiza reacciones según el principio si-entonces sobre tus métricas de anuncios: cuando se cumple una condición (por ejemplo ROAS por debajo de un umbral, CPA por encima de un umbral, CTR, CPC, gasto o conversiones), la regla dispara una acción a nivel de campaña, grupo de anuncios o anuncio. Con la ejecución de prueba (dry run) ves de antemano a qué elementos afectarÃa una regla antes de activarla. Visible solo con una suscripción Ads o Suite.`,it:`Il motore di regole automatizza le reazioni secondo il principio se-allora sulle tue metriche annunci: quando una condizione è soddisfatta (ad esempio ROAS sotto soglia, CPA sopra soglia, CTR, CPC, spesa o conversioni), la regola attiva un'azione a livello di campagna, gruppo di annunci o annuncio. Con l'esecuzione di prova (dry run) vedi in anticipo quali elementi una regola colpirebbe prima di attivarla. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-experimente`,requiresAds:!0,routes:[`/ads/experiments`],title:{de:`A/B-Tests (Ads)`,en:`A/B tests (Ads)`,es:`Pruebas A/B (Ads)`,it:`Test A/B (Ads)`},body:{de:`A/B-Tests vergleichen zwei Anzeigen-Varianten unter gleichen Bedingungen und werten den Unterschied statistisch auf Signifikanz aus, damit du nicht auf Zufallsausschläge reagierst. Du startest einen Test, verfolgst den Status (läuft, beendet, gestoppt) und übernimmst am Ende die belegte Gewinner-Variante. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`A/B tests compare two ad variants under equal conditions and evaluate the difference statistically for significance, so you do not react to random swings. You start a test, follow the status (running, done, stopped) and in the end adopt the proven winning variant. Visible only with an Ads or Suite subscription.`,es:`Las pruebas A/B comparan dos variantes de anuncio en igualdad de condiciones y evalúan la diferencia estadÃsticamente para ver su significación, de modo que no reacciones a fluctuaciones aleatorias. Inicias una prueba, sigues el estado (en curso, finalizada, detenida) y al final adoptas la variante ganadora demostrada. Visible solo con una suscripción Ads o Suite.`,it:`I test A/B confrontano due varianti di annuncio a parità di condizioni e valutano la differenza statisticamente per significatività , così non reagisci a oscillazioni casuali. Avvii un test, segui lo stato (in corso, concluso, fermato) e alla fine adotti la variante vincente dimostrata. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-cockpit`,requiresAds:!0,routes:[`/ads/cockpit`],title:{de:`KI-Cockpit:
2Steuerstand (Ads)`,en:`AI cockpit: control center (Ads)`,es:`Cabina de IA: centro de control (Ads)`,it:`Cockpit IA: centro di controllo (Ads)`},body:{de:`Das KI-Cockpit ist der Steuerstand des Ads-Moduls und bündelt drei KI-Werkzeuge an einem Ort: 'Frag dein Konto' (Analyse-Chat über deine echten Ads-Zahlen), die Wettbewerbs-Intelligenz (Anzeigen der Konkurrenz aus der Meta Ad Library) und den Richtlinien-Check vor der Schaltung. Details zu den einzelnen Werkzeugen findest du in den zugehörigen Hilfe-Themen. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The AI cockpit is the control center of the Ads module and bundles three AI tools in one place: 'Ask your account' (analysis chat over your real ad figures), the competitor intelligence (competitors' ads from the Meta Ad Library) and the policy check before going live. Details on the individual tools are in the corresponding help topics. Visible only with an Ads or Suite subscription.`,es:`La cabina de IA es el centro de control del módulo Ads y reúne tres herramientas de IA en un solo lugar: 'Pregunta a tu cuenta' (chat de análisis sobre tus cifras reales de anuncios), la inteligencia de competencia (anuncios de la competencia de la Meta Ad Library) y la verificación de polÃticas antes de publicar. Los detalles de cada herramienta están en los temas de ayuda correspondientes. Visible solo con una suscripción Ads o Suite.`,it:`Il cockpit IA è il centro di controllo del modulo Ads e raccoglie tre strumenti IA in un unico posto: 'Chiedi al tuo account' (chat di analisi sui tuoi dati reali degli annunci), l'intelligence sui concorrenti (annunci della concorrenza dalla Meta Ad Library) e il controllo delle policy prima della pubblicazione. I dettagli dei singoli strumenti sono nei temi di aiuto corrispondenti. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-frag-dein-konto`,requiresAds:!0,routes:[`/ads/cockpit`],title:{de:`Frag dein Konto: Insights-Chat (Ads)`,en:`Ask your account: insights chat (Ads)`,es:`Pregunta a tu cuenta: chat de perspectivas (Ads)`,it:`Chiedi al tuo account: chat di insight (Ads)`},body:{de:`'Frag dein Konto' beantwortet Fragen zu deiner Werbeleistung in normaler Sprache: Du stellst eine Frage (etwa welche Kampagne den besten ROAS hat), die KI wertet deine echten Ads-Metriken aus und liefert eine knappe Analyse mit ein bis drei konkreten Handlungsvorschlägen. Der Chat ist bewusst leichtgewichtig und ohne Verlauf; jede Frage kostet Credits. Zu finden im KI-Cockpit. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`'Ask your account' answers questions about your ad performance in plain language: you ask a question (for example which campaign has the best ROAS), the AI evaluates your real ad metrics and returns a brief analysis with one to three concrete recommended actions. The chat is deliberately lightweight and without history; each question costs credits. Found in the AI cockpit. Visible only with an Ads or Suite subscription.`,es:`'Pregunta a tu cuenta' responde en lenguaje normal a preguntas sobre el rendimiento de tus anuncios: haces una pregunta (por ejemplo, qué campaña tiene el mejor ROAS), la IA evalúa tus métricas reales de anuncios y devuelve un análisis breve con una a tres acciones concretas recomendadas. El chat es deliberadamente ligero y sin historial; cada pregunta cuesta créditos. Se encuentra en la cabina de IA. Visible solo con una suscripción Ads o Suite.`,it:`'Chiedi al tuo account' risponde in linguaggio normale a domande sul rendimento dei tuoi annunci: poni una domanda (ad esempio quale campagna ha il ROAS migliore), l'IA valuta le tue metriche reali degli annunci e restituisce un'analisi sintetica con una a tre azioni concrete consigliate. La chat è volutamente leggera e senza cronologia; ogni domanda costa crediti. Si trova nel cockpit IA. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-wettbewerbs-analyse`,requiresAds:!0,routes:[`/ads/cockpit`],title:{de:`KI-Wettbewerbs-Analyse: Meta Ad Library (Ads)`,en:`AI competitor analysis: Meta Ad Library (Ads)`,es:`Análisis de competencia con IA: Meta Ad Library (Ads)`,it:`Analisi della concorrenza con IA: Meta Ad Library (Ads)`},body:{de:`Die KI-Wettbewerbs-Analyse zeigt, womit deine Konkurrenz gerade wirbt. Gib eine Marke oder einen Suchbegriff und ein Land ein; das Werkzeug ruft die laufenden Anzeigen aus der Meta Ad Library ab und lässt die KI Angles, Hooks, CTAs und Muster herausarbeiten sowie konkrete Gegen-Vorschläge ableiten. Ein Scan kostet Credits. Zu finden im KI-Cockpit. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The AI competitor analysis shows what your competition is currently advertising with. Enter a brand or search term and a country; the tool fetches the running ads from the Meta Ad Library and has the AI work out angles, hooks, CTAs and patterns as well as derive concrete counter-suggestions. A scan costs credits. Found in the AI cockpit. Visible only with an Ads or Suite subscription.`,es:`
2El análisis de competencia con IA muestra con qué se anuncia ahora mismo tu competencia. Introduce una marca o un término de búsqueda y un paÃs; la herramienta obtiene los anuncios en curso de la Meta Ad Library y hace que la IA extraiga ángulos, ganchos, CTA y patrones y derive contrapropuestas concretas. Un escaneo cuesta créditos. Se encuentra en la cabina de IA. Visible solo con una suscripción Ads o Suite.`,it:`L'analisi della concorrenza con IA mostra con cosa si sta pubblicizzando la tua concorrenza in questo momento. Inserisci un marchio o un termine di ricerca e un paese; lo strumento recupera gli annunci attivi dalla Meta Ad Library e fa sì che l'IA individui angoli, hook, CTA e schemi e ricavi contro-proposte concrete. Una scansione costa crediti. Si trova nel cockpit IA. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-policy-preflight`,requiresAds:!0,routes:[`/ads/cockpit`],title:{de:`KI-Richtlinien-Check (Policy-Preflight, Ads)`,en:`AI policy check (policy preflight, Ads)`,es:`Verificación de polÃticas con IA (policy preflight, Ads)`,it:`Controllo policy con IA (policy preflight, Ads)`},body:{de:`Der KI-Richtlinien-Check (Policy-Preflight) prüft eine Anzeige vor der Schaltung gegen die typischen Werberichtlinien der Plattform (Google, Meta, Microsoft, LinkedIn, TikTok, X). Du gibst Plattform, Ãberschriften und Anzeigentext ein und erhältst ein Urteil (bestanden, Warnung oder Ablehnung) samt einzelner Funde mit Verbesserungsvorschlag, damit du Ablehnungen vermeidest, bevor die Anzeige eingereicht wird. Zu finden im KI-Cockpit. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The AI policy check (policy preflight) checks an ad before going live against the platform's typical advertising policies (Google, Meta, Microsoft, LinkedIn, TikTok, X). You enter the platform, headlines and ad text and get a verdict (pass, warning or fail) along with individual findings with an improvement suggestion, so you avoid disapprovals before the ad is submitted. Found in the AI cockpit. Visible only with an Ads or Suite subscription.`,es:`La verificación de polÃticas con IA (policy preflight) comprueba un anuncio antes de publicarlo frente a las polÃticas publicitarias tÃpicas de la plataforma (Google, Meta, Microsoft, LinkedIn, TikTok, X). Introduces la plataforma, los titulares y el texto del anuncio y obtienes un veredicto (aprobado, advertencia o rechazo) junto con hallazgos concretos con sugerencia de mejora, para evitar rechazos antes de enviar el anuncio. Se encuentra en la cabina de IA. Visible solo con una suscripción Ads o Suite.`,it:`Il controllo policy con IA (policy preflight) verifica un annuncio prima della pubblicazione rispetto alle policy pubblicitarie tipiche della piattaforma (Google, Meta, Microsoft, LinkedIn, TikTok, X). Inserisci piattaforma, titoli e testo dell'annuncio e ottieni un verdetto (superato, avviso o rifiuto) insieme a singoli rilievi con suggerimento di miglioramento, così eviti i rifiuti prima di inviare l'annuncio. Si trova nel cockpit IA. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-anomalie-alerts`,requiresAds:!0,routes:[`/ads/recommendations`],title:{de:`Anomalie-Alerts (Ads)`,en:`Anomaly alerts (Ads)`,es:`Alertas de anomalÃas (Ads)`,it:`Avvisi di anomalia (Ads)`},body:{de:`Die Anomalie-Alerts erkennen proaktiv AusreiÃer in deinen Kampagnen (etwa plötzlich steigende Kosten oder einbrechende Leistung) und zeigen sie nach Schweregrad. Je Alert kannst du 'Quittieren' (zur Kenntnis genommen) oder 'Erledigt' setzen. So fällt dir ein Problem auf, ohne dass du ständig alle Zahlen im Blick behalten musst. Zu finden auf der Empfehlungen-Seite. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The anomaly alerts proactively detect outliers in your campaigns (such as suddenly rising costs or collapsing performance) and show them by severity. Per alert you can 'Acknowledge' (noted) or set 'Resolved'. This way a problem catches your eye without you having to keep an eye on all the numbers all the time. Found on the Recommendations page. Visible only with an Ads or Suite subscription.`,es:`Las alertas de anomalÃas detectan de forma proactiva valores atÃpicos en tus campañas (como costes que suben de repente o rendimiento que se desploma) y las muestran por gravedad. Por cada alerta puedes 'Confirmar' (visto) o marcar 'Resuelto'. Asà un problema te llama la atención sin tener que vigilar todas las cifras constantemente. Se encuentra en la página de Recomendaciones. Visible solo con una suscripción Ads o Suite.`,it:`Gli avvisi di anomalia rilevano in modo proattivo i valori anomali nelle tue campagne (come costi in improvviso aumento o prestazioni in crollo) e li mostrano per gravità . Per ogni avviso puoi 'Confermare' (preso atto) o impostare 'Risolto'. Così un problema ti salta all'occhio senza dover tenere sempre d'occhio tutti i numeri. Si trova nella pagina Raccomandazioni. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-creative-refresh`,requiresAds:!0,routes:[`/ads/recommendations`],title:{de:`Creative-Refresh (Ads)`,en:`Creative refresh (Ads)`,es:`Re
2novación de creatividades (Ads)`,it:`Rinnovo delle creatività (Ads)`},body:{de:`Der Creative-Refresh meldet ermüdete Anzeigen, deren Wirkung nachlässt, und schlägt per KI frische Varianten vor: bisherige Ãberschriften und Beschreibungen stehen den neu erzeugten gegenüber. Je Vorschlag kannst du 'Ãbernehmen' oder 'Verwerfen'; das Ãbernehmen liefert dir die neuen Texte, das Eintragen in die Anzeige machst du selbst (es wird nicht auf die Plattform geschrieben). Zu finden auf der Empfehlungen-Seite. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`The creative refresh flags fatigued ads whose impact is fading and suggests fresh variants via AI: previous headlines and descriptions are shown against the newly generated ones. Per suggestion you can 'Apply' or 'Dismiss'; applying gives you the new texts, entering them into the ad is up to you (nothing is written to the platform). Found on the Recommendations page. Visible only with an Ads or Suite subscription.`,es:`La renovación de creatividades señala anuncios fatigados cuyo efecto se desvanece y sugiere variantes frescas con IA: los titulares y descripciones anteriores se muestran frente a los recién generados. Por cada sugerencia puedes 'Aplicar' o 'Descartar'; aplicar te entrega los nuevos textos, introducirlos en el anuncio depende de ti (no se escribe nada en la plataforma). Se encuentra en la página de Recomendaciones. Visible solo con una suscripción Ads o Suite.`,it:`Il rinnovo delle creatività segnala gli annunci affaticati la cui efficacia sta calando e propone varianti fresche con l'IA: i titoli e le descrizioni precedenti sono messi a confronto con quelli appena generati. Per ogni proposta puoi 'Applicare' o 'Scartare'; applicando ottieni i nuovi testi, inserirli nell'annuncio spetta a te (non viene scritto nulla sulla piattaforma). Si trova nella pagina Raccomandazioni. Visibile solo con un abbonamento Ads o Suite.`}},{id:`ads-reporting-funnel`,requiresAds:!0,routes:[`/ads/reporting`,`/ads/funnel`],title:{de:`Reporting und Funnel-Analyse (Ads)`,en:`Reporting and funnel analysis (Ads)`,es:`Informes y análisis de embudo (Ads)`,it:`Reportistica e analisi del funnel (Ads)`},body:{de:`Reporting und Funnel-Analyse zeigen die Ergebnisse deiner Werbung. Das Reporting bündelt Kennzahlen wie Ausgaben, Impressionen, Klicks, ROAS und Conversions plattformübergreifend mit Zeitverlauf und lässt sich exportieren. Die Funnel-Analyse bildet den Weg von den Klicks bis zum Abschluss über mehrere Stufen ab, sodass du erkennst, wo Interessenten abspringen. Sichtbar nur mit Ads- oder Suite-Freischaltung.`,en:`Reporting and funnel analysis show the results of your advertising. Reporting bundles metrics such as spend, impressions, clicks, ROAS and conversions across platforms with a time series and can be exported. The funnel analysis maps the path from clicks to conversion across several stages, so you see where prospects drop off. Visible only with an Ads or Suite subscription.`,es:`Los informes y el análisis de embudo muestran los resultados de tu publicidad. Los informes reúnen métricas como gasto, impresiones, clics, ROAS y conversiones entre plataformas con evolución temporal y pueden exportarse. El análisis de embudo traza el recorrido desde los clics hasta la conversión a través de varias etapas, de modo que ves dónde abandonan los interesados. Visible solo con una suscripción Ads o Suite.`,it:`La reportistica e l'analisi del funnel mostrano i risultati della tua pubblicità . La reportistica raccoglie metriche come spesa, impression, clic, ROAS e conversioni su tutte le piattaforme con andamento temporale ed è esportabile. L'analisi del funnel traccia il percorso dai clic alla conversione attraverso più fasi, così vedi dove gli interessati abbandonano. Visibile solo con un abbonamento Ads o Suite.`}},{id:`credits-testphase`,routes:[`/credits`],title:{de:`Credits und Testphase`,en:`Credits and trial phase`,es:`Créditos y fase de prueba`,it:`Crediti e fase di prova`},body:{de:`In der Testphase kostet dich keine Aktion Credits: Jede KI-Funktion darf einmal gratis getestet werden (ein Freischuss je Funktion). Ist er verbraucht, geht es erst mit einem Plan weiter;
2 Credits kannst du ebenfalls erst nach der Planwahl nachkaufen. Ein bezahlter Plan enthält ein monatliches Kontingent (je nach Plan z. B. 200, 500, 800 oder 3.000 Credits); gekaufte Credits verfallen nicht und werden erst nach dem Monatskontingent verbraucht. Sind beide leer, stoppen KI-Funktionen mit einem Hinweis. Auf der Credits-Seite siehst du Monatskontingent und Kaufguthaben, kaufst Pakete (einmalig) oder startest ein Credit-Abo (monatlich, pausierbar und kündbar), findest unter âWas kostet was?â die Preise je Funktion und unter âLetzte Bewegungenâ jede Buchung.`,en:`During the trial phase no action costs credits: every AI feature may be tried once for free (one free shot per feature). Once it is used up, you can only continue with a plan; you can also only buy extra credits after choosing a plan. A paid plan includes a monthly allowance (depending on the plan e.g. 200, 500, 800 or 3,000 credits); credits you buy do not expire and are only used after the monthly allowance. When both are empty, AI features stop with a notice. On the Credits page you see the monthly allowance and purchased balance, buy packs (one-off) or start a credit subscription (monthly, pausable and cancellable), find the price per feature under 'What costs what?' and every booking under 'Recent activity'.`,es:`Durante la fase de prueba ninguna acción cuesta créditos: cada función de IA puede probarse una vez gratis (un tiro libre por función). Cuando se agota, solo se puede seguir con un plan; tampoco se pueden comprar créditos adicionales hasta elegir un plan. Un plan de pago incluye un cupo mensual (según el plan, p. ej. 200, 500, 800 o 3.000 créditos); los créditos comprados no caducan y se usan solo después del cupo mensual. Cuando ambos están vacÃos, las funciones de IA se detienen con un aviso. En la página de Créditos ves el cupo mensual y el saldo comprado, compras paquetes (pago único) o inicias una suscripción de créditos (mensual, pausable y cancelable), y encuentras los precios por función en '¿Qué cuesta qué?' y cada movimiento en 'Movimientos recientes'.`,it:`Durante la fase di prova nessuna azione costa crediti: ogni funzione IA può essere provata una volta gratis (un colpo libero per funzione). Una volta esaurito, si può proseguire solo con un piano; anche l'acquisto di crediti aggiuntivi è possibile solo dopo aver scelto un piano. Un piano a pagamento include un contingente mensile (a seconda del piano, ad es. 200, 500, 800 o 3.000 crediti); i crediti acquistati non scadono e vengono usati solo dopo il contingente mensile. Quando entrambi sono esauriti, le funzioni IA si fermano con un avviso. Nella pagina Crediti vedi contingente mensile e saldo acquistato, acquisti pacchetti (una tantum) o avvii un abbonamento crediti (mensile, sospendibile e disdicibile), trovi i prezzi per funzione in 'Quanto costa cosa?' e ogni movimento in 'Movimenti recenti'.`}},{id:`abo-plan`,routes:[`/billing`],title:{de:`Abo und Tarif`,en:`Subscription and plan`,es:`Suscripción y plan`,it:`Abbonamento e piano`},body:{de:`Hier wählst du deinen Tarif und siehst die Mindestlaufzeit (monatlich kündbar, 6 oder 12 Monate); abgerechnet wird immer monatlich zum Monatspreis. Buchbare Add-ons sind der Support (wiederkehrend pro Monat) und die Einrichtungspauschale (Einmalbetrag, nur bei 6 oder 12 Monaten Mindestlaufzeit, gestreckt über die Laufzeit). Kündigen kannst du zum Ende der Mindestlaufzeit; danach läuft der Vertrag je nach Kundentyp monatlich weiter. Jede Rechnung erhältst du als ZUGFeRD-E-Rechnung (PDF mit eingebettetem Datensatz).`,en:`Here you choose your plan and see the minimum term (monthly, 6 or 12 months); billing is always monthly at the monthly price. Bookable add-ons are Support (recurring per month) and the setup fee (one-off amount, only for a 6 or 12 month minimum term, spread across the term). You can cancel at the end of the minimum term; after that the contract continues monthly depending on customer type. Each invoice is issued as a ZUGFeRD e-invoice (PDF with an embedded data set).`,es:`Aquà eliges tu plan y ves la permanencia mÃnima (mensual, 6 o 12 meses); la facturación es siempre mensual al precio mensual. Los complementos contratables son el Soporte (recurrente al mes) y la tarifa de instalación (importe
2único, solo con permanencia de 6 o 12 meses, repartida a lo largo del plazo). Puedes cancelar al final de la permanencia mÃnima; después el contrato continúa mensualmente según el tipo de cliente. Cada factura se emite como factura electrónica ZUGFeRD (PDF con un conjunto de datos incrustado).`,it:`Qui scegli il tuo piano e vedi la durata minima (mensile, 6 o 12 mesi); la fatturazione è sempre mensile al prezzo mensile. I componenti aggiuntivi acquistabili sono il Supporto (ricorrente al mese) e la quota di attivazione (importo una tantum, solo con durata minima di 6 o 12 mesi, distribuita sulla durata). Puoi disdire alla fine della durata minima; dopodiché il contratto prosegue mensilmente a seconda del tipo di cliente. Ogni fattura viene emessa come fattura elettronica ZUGFeRD (PDF con un set di dati incorporato).`}},{id:`empfehlungen`,routes:[`/referrals`],title:{de:`Empfehlungen`,en:`Referrals`,es:`Recomendaciones`,it:`Referral`},body:{de:`Teile deinen persönlichen Empfehlungscode oder Empfehlungslink mit anderen; den Code kannst du auf einen eigenen Wunschtext anpassen. Registriert sich jemand über deinen Link und schlieÃt ein Abo ab, erhaltet ihr beide einen Freimonat (als Guthaben verrechnet). Kopiere Code oder Link direkt auf dieser Seite und gib ihn weiter.`,en:`Share your personal referral code or link with others; you can change the code to a wording of your choice. If someone signs up via your link and takes out a subscription, both of you receive a free month (credited to your accounts). Copy the code or link right on this page and pass it on.`,es:`Comparte tu código o enlace de recomendación personal con otros; puedes cambiar el código por el texto que prefieras. Si alguien se registra con tu enlace y contrata una suscripción, ambos recibÃs un mes gratis (abonado como saldo). Copia el código o el enlace en esta misma página y compártelo.`,it:`Condividi con altri il tuo codice o link di referral personale; puoi modificare il codice con un testo a tua scelta. Se qualcuno si registra tramite il tuo link e sottoscrive un abbonamento, entrambi ricevete un mese gratuito (accreditato come saldo). Copia il codice o il link direttamente in questa pagina e condividilo.`}},{id:`einstellungen-team`,routes:[`/settings`],title:{de:`Einstellungen und Team`,en:`Settings and team`,es:`Ajustes y equipo`,it:`Impostazioni e team`},body:{de:`Die Einstellungen sind nur für Owner und Admins sichtbar. Hier legst du Workspace-Optionen fest: Sprache der KI-Inhalte, Evergreen-Recycling, den Hinweis âErstellt mit personativ.deâ, Benachrichtigungen mit Freigabe-Fenster, Zeitraum des Wochenreports, automatische Freigabe von Artikeln, natürlicheres Timing, Rechnungsanschrift und das Team. Im Team lädst du Mitglieder per E-Mail ein (Link 7 Tage gültig, das Passwort legen sie selbst fest) und vergibst die Rolle Admin, Editor oder Betrachter; du kannst Rollen ändern, Mitglieder deaktivieren oder entfernen. Unabhängig von der Rolle kannst du Editoren das Freigeber-Flag geben, damit sie eingereichte Beiträge freigeben dürfen (Owner und Admin dürfen das ohnehin, ein Betrachter nie). Zusätzliche Plätze über das Kontingent des Plans hinaus werden berechnet. Die App-Sprache stellst du im Konto-Dialog ein (Kreis unten in der Seitenleiste).`,en:`Settings are only visible to owners and admins. Here you set workspace options: language of AI content, evergreen recycling, the 'Created with personativ.de' note, notifications with the approval window, period of the weekly report, automatic approval of articles, more natural timing, billing address and the team. In the team you invite members by email (link valid for 7 days, they set their own password) and assign the role Admin, Editor or Viewer; you can change roles, deactivate or remove members. Regardless of role you can give editors the approver flag so they may approve submitted posts (owners and admins may do so anyway, a viewer never). Additional seats beyond the plan's allowance are charged. You set the app language in the account dialog (circle at the bottom of the sidebar).`,es:`Los ajustes solo son visibles para propietarios y administradores. Aquà defines opciones del espacio de trabajo: idioma del contenido de IA, reciclaje evergreen, la nota 'Creado con personativ.de', notificaciones con ventana de aprobación, periodo del informe semanal, aprobación automática de artÃculos, horario más natural, dirección de facturación y el equipo. En el equipo invitas a miembros por correo (enlace válido 7 dÃas, ellos eligen su propia contraseña) y asignas el rol Administrador, Editor u Observador;
2 puedes cambiar roles, desactivar o eliminar miembros. Con independencia del rol, puedes dar a los editores el indicador de aprobador para que puedan aprobar publicaciones enviadas (propietarios y administradores pueden hacerlo de todos modos, un observador nunca). Los puestos adicionales por encima del cupo del plan se cobran. El idioma de la app se ajusta en el diálogo de la cuenta (cÃrculo al final de la barra lateral).`,it:`Le impostazioni sono visibili solo a titolari e amministratori. Qui definisci le opzioni dello spazio di lavoro: lingua dei contenuti IA, riciclo evergreen, la nota 'Creato con personativ.de', notifiche con finestra di approvazione, periodo del report settimanale, approvazione automatica degli articoli, tempistica più naturale, indirizzo di fatturazione e il team. Nel team inviti i membri via email (link valido 7 giorni, la password la scelgono loro) e assegni il ruolo Admin, Editor o Visualizzatore; puoi cambiare i ruoli, disattivare o rimuovere i membri. Indipendentemente dal ruolo puoi assegnare agli editor il flag di approvatore, così possono approvare i contenuti inviati (titolari e amministratori possono farlo comunque, un visualizzatore mai). I posti aggiuntivi oltre il contingente del piano vengono fatturati. La lingua dell'app si imposta nella finestra dell'account (cerchio in basso nella barra laterale).`}},{id:`eu-datensouveraenitaet`,routes:[`/sovereignty`],title:{de:`EU-Datensouveränität`,en:`EU data sovereignty`,es:`SoberanÃa de datos de la UE`,it:`Sovranità dei dati UE`},body:{de:`Diese Seite (nur für Owner und Admins) zeigt, welcher KI-Anbieter deine Inhalte verarbeitet und in welcher Region. StandardmäÃig läuft die KI über OpenRouter (Region je nach Modell); âEU-Verarbeitung erzwingenâ schaltet auf Mistral in der EU um, dann gibt es keine Web-Recherche für den Fakten-Check, und Funktionen ohne EU-Modell melden das. Unter âKI-Verarbeitung: Region & Einwilligungâ wählst du EU oder global mit Einwilligung; ohne diese Wahl bleiben KI-Aktionen blockiert, und Autopilot und Highlights überspringen ihre Läufe. AuÃerdem stellst du hier den Standard für den Fakten-Check und die KI-Kennzeichnung ein, siehst das Freigabe-Protokoll und die Liste der Sub-Prozessoren mit Region und Vertrag.`,en:`This page (owners and admins only) shows which AI provider processes your content and in which region. By default the AI runs via OpenRouter (region depends on the model); 'Enforce EU processing' switches to Mistral in the EU, after which there is no web research for the fact-check and functions without an EU model report that. Under 'AI processing: region & consent' you choose EU or global with consent; without this choice AI actions stay blocked, and the autopilot and highlights skip their runs. You also set the default for the fact-check and the AI labeling here, see the approval log and the list of sub-processors with region and contract.`,es:`Esta página (solo para propietarios y administradores) muestra qué proveedor de IA procesa tu contenido y en qué región. De forma predeterminada la IA funciona a través de OpenRouter (la región depende del modelo); 'Forzar procesamiento en la UE' cambia a Mistral en la UE, y entonces no hay investigación web para la comprobación de hechos y las funciones sin modelo de la UE lo indican. En 'Procesamiento de IA: región y consentimiento' eliges UE o global con consentimiento; sin esta elección las acciones de IA siguen bloqueadas y el piloto automático y los destacados omiten sus ejecuciones. Aquà también ajustas el valor predeterminado de la comprobación de hechos y del etiquetado de IA, ves el registro de aprobaciones y la lista de subencargados con región y contrato.`,it:`Questa pagina (solo per titolari e amministratori) mostra quale fornitore di IA elabora i tuoi contenuti e in quale regione. Per impostazione predefinita l'IA funziona tramite OpenRouter (la regione dipende dal modello); 'Imponi l'elaborazione nell'UE' passa a Mistral nell'UE, e allora non c'è ricerca web per la verifica dei fatti e le funzioni senza modello UE lo segnalano. In 'Elaborazione IA: regione e consenso' scegli UE oppure globale con consenso; senza questa scelta le azioni IA restano bloccate e l'autopilota e i contenuti in evidenza saltano le loro esecuzioni. Qu
2i imposti anche il valore predefinito della verifica dei fatti e dell'etichettatura IA, vedi il registro delle approvazioni e l'elenco dei sub-responsabili con regione e contratto.`}},{id:`ki-kennzeichnung`,routes:[`/sovereignty`,`/compose`,`/posts`],title:{de:`KI-Kennzeichnung (Art. 50)`,en:`AI labeling (Art. 50)`,es:`Etiquetado de IA (art. 50)`,it:`Etichettatura IA (art. 50)`},body:{de:`Seit dem 2. August 2026 sind KI-generierte Inhalte kennzeichnungspflichtig; Personativ hängt dafür ein Label an den Beitragstext. Das Label (Standard â[KI-generiert]â in der Sprache des Beitrags, eigener Text bis 80 Zeichen) kommt nur an Beiträge, die die KI erzeugt hat und die kein Mensch ausdrücklich freigegeben hat, zum Beispiel Autopilot ohne Vorab-Freigabe, Agent mit Vollautomatik oder ein Veto-Fenster ohne Reaktion. Ãber âFreigebenâ freigegebene Beiträge und Texte ohne KI tragen kein Label; ob ein Beitrag es bekommt, zeigt ein Chip an der Beitragskarte. Die Kennzeichnung zählt zur Zeichengrenze des Kanals (wie der Hinweis âErstellt mit personativ.deâ): Gekürzt wird zuerst der Text, nie das Label, und Zähler und Sperre an der Karte rechnen sie über die Server-Vorabprüfung mit. Owner und Admins ändern oder deaktivieren das Label unter Datensouveränität (jede Ãnderung wird protokolliert, die Verantwortung liegt dann bei dir); Auto-Antworten in der Inbox haben ein eigenes Label.`,en:`Since 2 August 2026 AI-generated content must be labeled; Personativ appends a label to the post text for this. The label (default '[AI-generated]' in the language of the post, custom text up to 80 characters) is only added to posts that the AI created and that no human has expressly approved, for example autopilot without advance approval, the agent with full automation or a veto window without a reaction. Posts approved via 'Approve' and texts without AI carry no label; a chip on the post card shows whether a post gets it. The label counts toward the channel's character limit (like the 'Created with personativ.de' note): the text is shortened first, never the label, and the counter and block on the card include it via the server pre-check. Owners and admins change or switch off the label under Data sovereignty (every change is logged, responsibility then lies with you); auto replies in the inbox have their own label.`,es:`Desde el 2 de agosto de 2026 el contenido generado por IA debe etiquetarse; Personativ añade para ello una etiqueta al texto de la publicación. La etiqueta (predeterminada '[Generado por IA]' en el idioma de la publicación, texto propio de hasta 80 caracteres) solo se añade a las publicaciones que ha creado la IA y que ninguna persona ha aprobado expresamente, por ejemplo el piloto automático sin aprobación anticipada, el agente con automatización total o una ventana de veto sin reacción. Las publicaciones aprobadas con 'Aprobar' y los textos sin IA no llevan etiqueta; un distintivo en la ficha indica si una publicación la recibe. La etiqueta cuenta para el lÃmite de caracteres del canal (igual que la nota 'Creado con personativ.de'): primero se acorta el texto, nunca la etiqueta, y el contador y el bloqueo de la ficha la incluyen mediante la comprobación previa del servidor. Propietarios y administradores cambian o desactivan la etiqueta en SoberanÃa de datos (cada cambio se registra y la responsabilidad pasa a ti); las respuestas automáticas de la bandeja de entrada tienen su propia etiqueta.`,it:`Dal 2 agosto 2026 i contenuti generati dall'IA devono essere etichettati; Personativ aggiunge a tal fine un'etichetta al testo del post. L'etichetta (predefinita '[Generato dall'IA]' nella lingua del post, testo personalizzato fino a 80 caratteri) viene aggiunta solo ai post creati dall'IA che nessuna persona ha approvato espressamente, ad esempio l'autopilota senza approvazione anticipata, l'agente con automazione completa o una finestra di veto senza reazione. I post approvati con 'Approva' e i testi senza IA non portano etichetta; un indicatore sulla scheda mostra se un post la riceve. L'etichetta conta nel limite di caratteri del canale (come la nota 'Creato con personativ.de'): si accorcia prima il testo, mai l'etichetta, e il contatore e il blocco sulla scheda la includono tramite il controllo preventivo del server. Titolari e amministratori modificano o disattivano l'etichetta in Sovranità dei dati (ogni modifica viene registrata e la responsabilità passa a te); le risposte automatiche dell'inbox hanno una propria etichetta.`}},{id:`erste-schritte`,routes:[],title:{de:`Erste Schritte`,en:`Getting started`,es:`Primeros pasos`,it:`Primi passi`},body:{de:`Richte zuerst deine Marke ein (Name, Tonfall, Logo und Farben), damit alle Inhalte zu dir passen. Verbinde danach deine Kanäle, also die Social-Media-Konten und Veröffentlichungsziele, die du bespielen willst. Erfasse dann einen ersten Inhalt und erzeuge daraus deinen ersten Beitrag; die KI passt ihn kanal-nativ an. In dieser Reihenfolge (Marke, Kanäle verbinden, erster Beitrag) bist du am schnellsten startklar.`,en:`First set up your brand (name, tone of voice, logo and colours) so all content fits you. Then connect your channels, that is the social media accounts and publishing targets you want to serve. Next capture a first piece of content and turn it into your first post; the AI adapts it channel-natively. In this order (brand, connect channels, first post) you are ready fastest.`,es:`Primero configura tu marca (nombre, tono, logotipo y colores) para que todo el contenido encaje contigo. Después conecta tus canales, es decir, las cuentas de redes sociales y destinos de publicación que quieras usar. Luego captura un primer contenido y conviértelo en tu primera publicación; la IA lo adapta de forma nativa a cada canal. En este orden (marca, conectar canales, primera publicación) estarás listo más rápido.`,it:`Per prima cosa configura il tuo marchio (nome, tono di voce, logo e colori) così che tutti i contenuti ti rappresentino. Poi collega i tuoi canali, cioè gli account social e le destinazioni di pubblicazione che vuoi usare. Quindi acquisisci un primo contenuto e trasformalo nel tuo primo post; l'IA lo adatta in modo nativo a ciascun canale. In quest'ordine (marchio, collega i canali, primo post) sei pronto più in fretta.`}}
2,{id:`rollen-uebersicht`,routes:[],title:{de:`Rollen-Ãbersicht`,en:`Roles overview`,es:`Resumen de roles`,it:`Panoramica dei ruoli`},body:{de:`Owner ist der Konto-Inhaber: Er darf alles, auch den Workspace löschen sowie andere Owner ändern oder entfernen. Admin verwaltet Team, Einstellungen, Kanäle, Abo und Credits sowie Automatiken (Autopilot, Agent, Highlights) und darf Beiträge direkt planen, posten und freigeben. Editoren erstellen und bearbeiten Inhalte, dürfen aber nicht direkt planen oder posten: Sie reichen Beiträge zur Freigabe ein, die Owner, Admin oder Freigeber freigeben oder ablehnen. Betrachter haben ausschlieÃlich Lesezugriff. Freigeber ist keine eigene Rolle, sondern ein Zusatzflag: Ein Nutzer mit Freigeber-Flag (typisch ein Editor) darf eingereichte Beiträge freigeben.`,en:`Owner is the account holder: they may do everything, including deleting the workspace and changing or removing other owners. Admin manages team, settings, channels, subscription and credits as well as automations (autopilot, agent, highlights) and may schedule, post and approve directly. Editors create and edit content but may not schedule or post directly: they submit posts for approval, which an owner, admin or approver approves or rejects. Viewers have read-only access. Approver is not a separate role but an extra flag: a user with the approver flag (typically an editor) may approve submitted posts.`,es:`Propietario (owner) es el titular de la cuenta: puede hacerlo todo, incluso eliminar el espacio de trabajo y cambiar o eliminar a otros propietarios. El administrador gestiona equipo, ajustes, canales, suscripción y créditos, asà como las automatizaciones (piloto automático, agente, destacados), y puede programar, publicar y aprobar directamente. Los editores crean y editan contenido pero no pueden programar ni publicar directamente: envÃan las publicaciones a aprobación y un propietario, administrador o aprobador las aprueba o rechaza. Los observadores solo tienen acceso de lectura. Aprobador no es un rol aparte, sino un indicador adicional: un usuario con el indicador de aprobador (normalmente un editor) puede aprobar publicaciones enviadas.`,it:`Il titolare (owner) è il proprietario dell'account: può fare tutto, compreso eliminare lo spazio di lavoro e modificare o rimuovere altri titolari. L'amministratore gestisce team, impostazioni, canali, abbonamento e crediti nonché le automazioni (autopilota, agente, contenuti in evidenza) e può pianificare, pubblicare e approvare direttamente. Gli editor creano e modificano contenuti ma non possono pianificare né pubblicare direttamente: inviano i post per approvazione, che un titolare, un amministratore o un approvatore approva o rifiuta. I visualizzatori hanno accesso in sola lettura. L'approvatore non è un ruolo a sé ma un flag aggiuntivo: un utente con il flag di approvatore (di solito un editor) può approvare i contenuti inviati.`}},{id:`sprachen`,routes:[],title:{de:`Sprachen`,en:`Languages`,es:`Idiomas`,it:`Lingue`},body:{de:`Die App, die E-Mails und die von der KI erzeugten Inhalte gibt es in Deutsch, Englisch, Spanisch und Italienisch. Die Kontosprache legt fest, in welcher Sprache Oberfläche und E-Mails erscheinen; sie kann je Nutzer und je Workspace gesetzt werden. Für einen einzelnen KI-Lauf kannst du die Sprache dieses Laufs abweichend wählen, ohne deine Kontosprache zu ändern.`,en:`The app, the emails and the AI-generated content are available in German, English, Spanish and Italian. The account language decides in which language the interface and emails appear; it can be set per user and per workspace. For a single AI run you can pick a different language for that run without changing your account language.`,es:`La app, los correos y el contenido generado por la IA están disponibles en alemán, inglés, español e italiano. El idioma de la cuenta determina en qué idioma aparecen la interfaz y los correos; puede fijarse por usuario y por espacio de trabajo. Para una ejecución de IA concreta puedes elegir un idioma distinto para esa ejecución sin cambiar el idioma de tu cuenta.`,it:`L'app, le email e i contenuti generati dall'IA sono disponibili in tedesco, inglese, spagnolo e italiano. La lingua dell'account decide in quale lingua appaiono l'interfaccia e le email; può essere impostata per utente e per spazio di lavoro. Per una singola esecuzione IA puoi scegliere una lingua diversa per quell'esecuzione senza cambiare la lingua del tuo account.`}},{id:`datenschutz-ki`,routes:[],title:{de:`Datenschutz und KI`,en:`Privacy and AI`,es:`Privacidad e IA`,it:`Privacy e IA`},body:{de:`Sobald du eine KI-Funktion nutzt, werden die dafür nötigen Inhalte an den KI-Anbieter übermittelt und dort verarbeitet, je nach Anbieter auch auÃerhalb der EU. Wenn dir die Region wichtig ist, kannst du unter EU-Datensouveränität die Verarbeitung auf Anbieter innerhalb der EU beschränken. Lokale Funktionen (etwa Vorlagen-Bilder oder reine Textextraktion) laufen ohne externen KI-Aufruf. Ãbermittle nichts, das nicht verarbeitet werden soll.`,en:`As soon as you use an AI feature, the content required for it is sent to the AI provider and processed there, depending on the provider possibly outside the EU. If the region matters to you, you can restrict processing to providers inside the EU under EU data sovereignty. Local features (such as template images or plain text extraction) run without an external AI call. Do not submit anything that should not be processed.`,es:`
2En cuanto usas una función de IA, el contenido necesario se envÃa al proveedor de IA y se procesa allÃ, según el proveedor posiblemente fuera de la UE. Si la región te importa, puedes limitar el procesamiento a proveedores dentro de la UE en SoberanÃa de datos de la UE. Las funciones locales (como imágenes de plantilla o la mera extracción de texto) se ejecutan sin llamada externa a la IA. No envÃes nada que no deba procesarse.`,it:`Non appena usi una funzione IA, i contenuti necessari vengono inviati al fornitore di IA ed elaborati lì, a seconda del fornitore anche fuori dall'UE. Se la regione è importante per te, puoi limitare l'elaborazione ai fornitori all'interno dell'UE in Sovranità dei dati UE. Le funzioni locali (come le immagini da modello o la semplice estrazione di testo) funzionano senza chiamata esterna all'IA. Non inviare nulla che non debba essere elaborato.`}}],Va=[{id:`ads-campaigns`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Kampagnen-Ãbersicht (Ads)`,en:`Campaign overview (Ads)`,es:`Vision general de campanas (Ads)`,it:`Panoramica campagne (Ads)`},body:{de:`Die Kampagnen-Ãbersicht listet alle Werbekampagnen plattformübergreifend (Google, Microsoft, Amazon, Meta) mit Typ, Status, Sync-Zustand, Tagesbudget und Metriken in einer Tabelle. So gehst du vor: Filtere nach Plattform oder Status, markiere mehrere Kampagnen zum gemeinsamen Löschen, oder importiere bestehende Kampagnen über 'Kampagnen importieren' bzw. 'Aus Google importieren' (Microsofts nativer Google-Import). Mit 'Von Plattform abgleichen' holst du Kampagnen, Anzeigengruppen, Anzeigen und Keywords read-only zurück, ohne Credits zu verbrauchen. Ãber 'Neue Kampagne' öffnest du den KI-Budget-Assistenten.`,en:`The campaign overview lists all ad campaigns across platforms (Google, Microsoft, Amazon, Meta) with type, status, sync state, daily budget and metrics in a table. Here is how: filter by platform or status, select several campaigns to delete them together, or import existing campaigns via 'Import campaigns' or 'Import from Google' (Microsoft's native Google import). With 'Sync from platform' you pull campaigns, ad groups, ads and keywords back read-only, without spending credits. Via 'New campaign' you open the AI budget wizard.`,es:`La vision general de campanas lista todas las campanas publicitarias entre plataformas (Google, Microsoft, Amazon, Meta) con tipo, estado, estado de sincronizacion, presupuesto diario y metricas en una tabla. Como proceder: filtra por plataforma o estado, marca varias campanas para borrarlas juntas, o importa campanas existentes con 'Importar campanas' o 'Importar desde Google' (la importacion nativa de Google de Microsoft). Con 'Sincronizar desde la plataforma' recuperas campanas, grupos de anuncios, anuncios y palabras clave solo lectura, sin gastar creditos. Con 'Nueva campana' abres el asistente de presupuesto con IA.`,it:`La panoramica campagne elenca tutte le campagne pubblicitarie su tutte le piattaforme (Google, Microsoft, Amazon, Meta) con tipo, stato, stato di sincronizzazione, budget giornaliero e metriche in una tabella. Come procedere: filtra per piattaforma o stato, seleziona piu campagne per eliminarle insieme, oppure importa campagne esistenti con 'Importa campagne' o 'Importa da Google' (l'importazione nativa da Google di Microsoft). Con 'Sincronizza dalla piattaforma' recuperi campagne, gruppi di annunci, annunci e parole chiave in sola lettura, senza consumare crediti. Con 'Nuova campagna' apri l'assistente di budget con IA.`}},{id:`ads-campaign-detail`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Kampagnen-Detail: Tabs und Ãbertragung`,en:`Campaign detail: tabs and push`,es:`Detalle de campana: pestanas y envio`,it:`Dettaglio campagna: schede e invio`},body:{de:`Die Detailseite einer Kampagne gliedert sich in Tabs: Ãbersicht (Impressionen, Klicks, Kosten, Conversions), Ausrichtung, Erweiterungen, Anzeigengruppen, Anzeigen, Keywords, Suchanfragen, Ideen und Verlauf. Oben kannst du die Kampagne pausieren, löschen oder über 'Auf Plattform übertragen' lokale Ãnderungen an die Plattform schicken. Das Badge 'Ãbertragung offen' zeigt an, dass es noch nicht übertragene lokale Ãnderungen g
2ibt. So gehst du vor: Bearbeite Inhalte in den Tabs, prüfe das Badge und übertrage regelmäÃig, damit deine Kampagne auf der Plattform aktuell bleibt.`,en:`The campaign detail page is organized into tabs: Overview (impressions, clicks, cost, conversions), Targeting, Extensions, Ad groups, Ads, Keywords, Search terms, Ideas and History. At the top you can pause or delete the campaign, or send local changes to the platform via 'Push to platform'. The 'Push pending' badge shows that local changes have not yet been pushed. Here is how: edit content in the tabs, check the badge and push regularly so your campaign stays current on the platform.`,es:`La pagina de detalle de una campana se organiza en pestanas: Vision general (impresiones, clics, coste, conversiones), Segmentacion, Extensiones, Grupos de anuncios, Anuncios, Palabras clave, Terminos de busqueda, Ideas e Historial. Arriba puedes pausar o borrar la campana, o enviar cambios locales a la plataforma con 'Enviar a la plataforma'. La etiqueta 'Envio pendiente' indica que aun hay cambios locales sin enviar. Como proceder: edita el contenido en las pestanas, revisa la etiqueta y envia con regularidad para que tu campana este al dia en la plataforma.`,it:`La pagina di dettaglio di una campagna e organizzata in schede: Panoramica (impression, clic, costo, conversioni), Targeting, Estensioni, Gruppi di annunci, Annunci, Parole chiave, Termini di ricerca, Idee e Cronologia. In alto puoi mettere in pausa o eliminare la campagna, oppure inviare le modifiche locali alla piattaforma con 'Invia alla piattaforma'. Il badge 'Invio in sospeso' indica che ci sono ancora modifiche locali non inviate. Come procedere: modifica i contenuti nelle schede, controlla il badge e invia regolarmente cosi la campagna resta aggiornata sulla piattaforma.`}},{id:`ads-adgroups`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Anzeigengruppen: Container für Keywords und Anzeigen`,en:`Ad groups: containers for keywords and ads`,es:`Grupos de anuncios: contenedores de palabras clave y anuncios`,it:`Gruppi di annunci: contenitori di parole chiave e annunci`},body:{de:`Anzeigengruppen bündeln die Keywords und Anzeigen einer Kampagne; das Gebot der Gruppe gilt als Standardgebot für ihre Keywords, sofern kein eigenes Keyword-Gebot gesetzt ist. Je Gruppe zeigt ein Zähler die Anzahl Keywords, Ausschlüsse und Anzeigen; ein Klick darauf springt direkt in den Keywords-Tab. So gehst du vor: Lege über 'Neu' eine Anzeigengruppe an, passe Name und Gebot über 'Bearbeiten' an, und lösche nicht mehr benötigte Gruppen über die entsprechende Aktion.`,en:`Ad groups bundle the keywords and ads of a campaign; the group's bid acts as the default bid for its keywords unless a keyword has its own bid. Per group a counter shows the number of keywords, negatives and ads; clicking it jumps straight into the keywords tab. Here is how: create an ad group via 'New', adjust name and bid via 'Edit', and remove groups you no longer need via the corresponding action.`,es:`Los grupos de anuncios agrupan las palabras clave y los anuncios de una campana; la puja del grupo actua como puja predeterminada de sus palabras clave, salvo que una palabra clave tenga puja propia. Por cada grupo un contador muestra el numero de palabras clave, exclusiones y anuncios; al hacer clic saltas directo a la pestana de palabras clave. Como proceder: crea un grupo de anuncios con 'Nuevo', ajusta nombre y puja con 'Editar', y elimina los grupos que ya no necesites con la accion correspondiente.`,it:`I gruppi di annunci raggruppano le parole chiave e gli annunci di una campagna; l'offerta del gruppo funge da offerta predefinita per le sue parole chiave, salvo che una parola chiave abbia un'offerta propria. Per ogni gruppo un contatore mostra il numero di parole chiave, esclusioni e annunci; cliccandolo si salta direttamente alla scheda parole chiave. Come procedere: crea un gruppo di annunci con 'Nuovo', modifica nome e offerta con 'Modifica', ed elimina i gruppi non piu necessari con l'azione corrispondente.`}},{id:`ads-keywords-list`,requiresAds:!0,routes:[`/ads/keywords`,`/ads/campaigns`],title:{de:`Keywords und Ãbereinstimmungstypen`,en:`Keywords and match types`,es:`Palabras clave y tipos de concordancia`,it:`Parole chiave e tipi di corrispondenza`},body:{de:`Keywords lösen deine Anzeigen bei passenden Suchanfragen aus; es gibt sie nur bei Google und Microsoft, den suchbasierten Plattformen. Der Ãbereinstimmungstyp bestimmt, wie genau eine Suche zum Keyword passen muss: weitgehend (broad), Wortgruppe (phrase) oder genau (exact). Optional setzt du je Keyword ein eigenes Gebot; ohne eigenes Gebot gilt das Standardgebot der Anzeigengruppe. So gehst du vor: Lege Keywords in der passenden Anzeigengruppe an, wähle den Ãbereinstimmungstyp und setze bei Bedarf ein eigenes Gebot.`,en:`Keywords trigger your ads on matching searches; they exist only on Google and Microsoft, the search-based platforms. The match type determines how closely a search must match the keyword: broad, phrase or exact. Optionally you set a bid per keyword; without one, the ad group's default bid applies. Here is how: add keywords in the matching ad group, choose the match type and set a keyword bid if needed.`,es:`Las palabras clave activan tus anuncios ante busquedas coincidentes; solo existen en Google y Microsoft, las plataformas basadas en busqueda. El tipo de concordancia determina cuanto debe coincidir una busqueda con la palabra clave: amplia, de frase o exacta. Opcionalmente fijas una puja por palabra clave; sin puja propia rige la puja predeterminada del grupo de anuncios. Como proceder: agrega palabras clave en el grupo de anuncios correspondiente, elige el tipo de concordancia y fija una puja propia si hace falta.`,it:`Le parole chiave attivano i tuoi annunci in caso di ricerche corrispondenti;
2 esistono solo su Google e Microsoft, le piattaforme basate sulla ricerca. Il tipo di corrispondenza stabilisce quanto una ricerca deve corrispondere alla parola chiave: generica, a frase o esatta. Facoltativamente imposti un'offerta per parola chiave; senza offerta propria vale l'offerta predefinita del gruppo di annunci. Come procedere: aggiungi parole chiave nel gruppo di annunci corretto, scegli il tipo di corrispondenza e imposta un'offerta propria se serve.`}},{id:`ads-negatives`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Ausschlüsse: Negativ-Keywords und Kampagnen-Ausschlüsse`,en:`Exclusions: negative keywords and campaign exclusions`,es:`Exclusiones: palabras clave negativas y exclusiones de campana`,it:`Esclusioni: parole chiave negative ed esclusioni di campagna`},body:{de:`Ausschlüsse verhindern, dass Anzeigen bei unpassenden Suchbegriffen erscheinen (etwa 'jobs' oder 'gehalt'). Es gibt zwei Ebenen: Negativ-Keywords je Anzeigengruppe und Kampagnen-Ausschlüsse, die für die gesamte Kampagne in einer eigenen Liste gelten und nur die Ãbereinstimmungstypen genau oder Wortgruppe erlauben. So gehst du vor: Trage unpassende Begriffe direkt bei der Anzeigengruppe ein, oder lege einen Kampagnen-Ausschluss an, wenn der Begriff für die ganze Kampagne gelten soll. Prüfe die Suchanfragen regelmäÃig auf neue Kandidaten.`,en:`Exclusions prevent ads from showing for unsuitable search terms (for example 'jobs' or 'salary'). There are two levels: negative keywords per ad group and campaign exclusions, which apply to the whole campaign in their own list and only allow the exact or phrase match types. Here is how: add unsuitable terms directly at the ad group, or create a campaign exclusion when the term should apply to the entire campaign. Check search terms regularly for new candidates.`,es:`Las exclusiones evitan que los anuncios aparezcan ante terminos de busqueda inadecuados (por ejemplo 'empleo' o 'sueldo'). Hay dos niveles: palabras clave negativas por grupo de anuncios y exclusiones de campana, que rigen para toda la campana en una lista propia y solo permiten los tipos de concordancia exacta o de frase. Como proceder: agrega terminos inadecuados directamente en el grupo de anuncios, o crea una exclusion de campana cuando el termino deba aplicar a toda la campana. Revisa los terminos de busqueda con regularidad para detectar nuevos candidatos.`,it:`Le esclusioni impediscono che gli annunci compaiano per termini di ricerca non pertinenti (ad esempio 'lavoro' o 'stipendio'). Ci sono due livelli: parole chiave negative per gruppo di annunci ed esclusioni di campagna, valide per l'intera campagna in un elenco proprio e che ammettono solo i tipi di corrispondenza esatta o a frase. Come procedere: aggiungi termini non pertinenti direttamente nel gruppo di annunci, oppure crea un'esclusione di campagna quando il termine deve valere per l'intera campagna. Controlla regolarmente i termini di ricerca per individuare nuovi candidati.`}},{id:`ads-search-terms`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Suchanfragen: echte Suchbegriffe finden`,en:`Search terms: find real searches`,es:`Terminos de busqueda: encontrar busquedas reales`,it:`Termini di ricerca: trovare ricerche reali`},body:{de:`Suchanfragen zeigen die tatsächlichen Suchbegriffe, die deine Anzeigen ausgelöst haben, und sind eine gute Quelle für neue Keywords oder Ausschlüsse. Wichtig: Die Plattformen geben Suchbegriffe erst ab einer gewissen Aktivität heraus (Datenschutz-Schwelle); bei wenig Impressionen oder null Klicks bleibt die Liste leer, obwohl es Impressionen gab. So gehst du vor: Sichte die Liste regelmäÃig, übernimm passende Begriffe als Keyword und unpassende als Ausschluss.`,en:`Search terms show the actual queries that triggered your ads and are a good source for new keywords or exclusions. Important: platforms only release search terms once a certain activity threshold is reached (privacy threshold); with few impressions or zero clicks the list stays empty even though there were impressions. Here is how: review the list regularly, turn suitable terms into a keyword and unsuitable ones into an exclusion.`,es:`Los terminos de busqueda muestran las consultas reales que activaron tus anuncios y son una buena fuente de nuevas palabras clave o exclusiones. Importante: las plataformas solo revelan los terminos de busqueda a partir de cierta actividad (umbral de privacidad); con pocas impresiones o cero clics la lista queda vacia aunque haya habido impresiones. Como proceder: revisa la lista con regularid
2ad, convierte los terminos adecuados en palabra clave y los inadecuados en exclusion.`,it:`I termini di ricerca mostrano le query reali che hanno attivato i tuoi annunci e sono un'ottima fonte per nuove parole chiave o esclusioni. Importante: le piattaforme rilasciano i termini di ricerca solo a partire da una certa soglia di attivita (soglia di privacy); con poche impression o zero clic l'elenco resta vuoto anche se ci sono state impression. Come procedere: controlla l'elenco regolarmente, trasforma i termini adatti in parola chiave e quelli non adatti in esclusione.`}},{id:`ads-creatives`,requiresAds:!0,routes:[`/ads/ads`],title:{de:`Anzeigen-Bibliothek: Creatives und Status`,en:`Ad library: creatives and status`,es:`Biblioteca de anuncios: creatividades y estado`,it:`Libreria annunci: creativita e stato`},body:{de:`Die Anzeigen-/Creative-Bibliothek listet alle Anzeigen über alle Kampagnen. Eine responsive Suchanzeige besteht aus 3 bis 15 Anzeigentiteln und 2 bis 4 Beschreibungen, aus denen die Plattform automatisch Kombinationen ausspielt. Wichtig: Es gibt drei getrennte Status. Freigabe/Review ist ein interner Team-Workflow (kein Status, in Prüfung, freigegeben, abgelehnt), Sync zeigt den Abgleich mit der Plattform, und Auslieferung (aktiv/pausiert) kommt von der Plattform selbst. 'Kein Status' bedeutet nur, dass die Anzeige den internen Freigabe-Workflow noch nicht durchlaufen hat; sie läuft trotzdem.`,en:`The ad/creative library lists all ads across every campaign. A responsive search ad consists of 3 to 15 headlines and 2 to 4 descriptions, which the platform automatically combines when serving. Important: there are three separate statuses. Approval/review is an internal team workflow (no status, in review, approved, rejected), sync shows the match with the platform, and delivery (active/paused) comes from the platform itself. 'No status' only means the ad has not yet gone through the internal approval workflow; it still runs.`,es:`La biblioteca de anuncios/creatividades lista todos los anuncios de todas las campanas. Un anuncio de busqueda responsivo consta de 3 a 15 titulos y 2 a 4 descripciones, que la plataforma combina automaticamente al mostrarlo. Importante: hay tres estados separados. Aprobacion/revision es un flujo de trabajo interno del equipo (sin estado, en revision, aprobado, rechazado), sincronizacion muestra el ajuste con la plataforma, y entrega (activo/pausado) viene de la propia plataforma. 'Sin estado' solo significa que el anuncio aun no paso por el flujo interno de aprobacion; igual sigue en marcha.`,it:`La libreria annunci/creativita elenca tutti gli annunci di tutte le campagne. Un annuncio di ricerca responsive e composto da 3 a 15 titoli e 2 a 4 descrizioni, che la piattaforma combina automaticamente in fase di erogazione. Importante: ci sono tre stati distinti. Approvazione/revisione e un flusso di lavoro interno del team (nessuno stato, in revisione, approvato, rifiutato), sincronizzazione mostra l'allineamento con la piattaforma, ed erogazione (attivo/in pausa) proviene dalla piattaforma stessa. 'Nessuno stato' significa solo che l'annuncio non e ancora passato per il flusso interno di approvazione; continua comunque a essere erogato.`}},{id:`ads-extensions`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Erweiterungen (Assets): mehr Sichtbarkeit ohne Mehrkosten`,en:`Extensions (assets): more visibility at no extra cost`,es:`Extensiones (activos): mas visibilidad sin coste extra`,it:`Estensioni (asset): piu visibilita senza costi extra`},body:{de:`Erweiterungen (Anzeigen-Assets) hängen Zusatzinhalte unter deine Anzeige und bringen ohne Extrakosten mehr Sichtbarkeit sowie einen besseren Anzeigenrang. Je nach Plattform gibt es Sitelinks (Zusatzlinks mit je zwei Beschreibungen, Microsoft verlangt beide oder keine), Zusatzinformationen/Callouts, Snippet-Erweiterungen, Anruf, Standort, Bild und Preis. So gehst du vor: Lege die passenden Erweiterungen je Kampagne an, prüfe sie in der Vorschau und übertrage sie mit 'Alle senden' an die Plattform, damit sie unter deinen Anzeigen erscheinen.`,en:`
2Extensions (ad assets) attach extra content below your ad and boost visibility and ad rank at no extra cost. Depending on the platform there are sitelinks (extra links with two descriptions each; Microsoft requires both or none), callouts/structured snippets, snippet extensions, call, location, image and price. Here is how: set up the fitting extensions per campaign, check them in the preview and push them to the platform via 'Send all' so they appear under your ads.`,es:`Las extensiones (activos de anuncio) anaden contenido adicional bajo tu anuncio y mejoran la visibilidad y el rango del anuncio sin coste extra. Segun la plataforma hay enlaces de sitio (enlaces adicionales con dos descripciones cada uno; Microsoft exige ambas o ninguna), textos destacados/frases destacadas, extensiones de fragmento, llamada, ubicacion, imagen y precio. Como proceder: crea las extensiones adecuadas por campana, revisalas en la vista previa y envialas a la plataforma con 'Enviar todo' para que aparezcan bajo tus anuncios.`,it:`Le estensioni (asset dell'annuncio) aggiungono contenuti extra sotto il tuo annuncio e migliorano visibilita e ranking dell'annuncio senza costi aggiuntivi. A seconda della piattaforma sono disponibili sitelink (link aggiuntivi con due descrizioni ciascuno; Microsoft richiede entrambe o nessuna), callout/frammenti strutturati, estensioni snippet, chiamata, posizione, immagine e prezzo. Come procedere: crea le estensioni adatte per campagna, controllale nell'anteprima e inviale alla piattaforma con 'Invia tutto' cosi compaiono sotto i tuoi annunci.`}},{id:`ads-audiences`,requiresAds:!0,routes:[`/ads/audiences`],title:{de:`Audiences: Werbe-Zielgruppen (nicht Marken-Personas)`,en:`Audiences: ad targeting lists (not brand personas)`,es:`Audiencias: listas de segmentacion publicitaria (no personas de marca)`,it:`Audience: liste di targeting pubblicitario (non persona del brand)`},body:{de:`Audiences sind Werbe-Zielgruppenlisten fürs Targeting bei Google und Microsoft, mit denen sich Kampagnen synchronisieren. Verwechsle sie nicht mit den Personas im Marken-Kit: Das sind Content-Per
2sonas fürs Texten, keine Werbe-Zielgruppen. Es gibt vier Typen: Kundenliste (Customer Match, gehashte E-Mails oder Telefonnummern), Lookalike, Remarketing (Website-Besucher) und Ausschluss. DSGVO-Hinweis: Kontaktdaten werden nur gehasht übertragen, du brauchst dafür eine Rechtsgrundlage. So gehst du vor: Lege den passenden Audience-Typ an und ordne ihn deinen Kampagnen zu.`,en:`Audiences are ad targeting lists for Google and Microsoft that sync with your campaigns. Do not confuse them with the personas in the brand kit: those are content personas for writing, not ad targeting lists. There are four types: customer list (customer match, hashed emails or phone numbers), lookalike, remarketing (website visitors) and exclusion. GDPR note: contact data is transferred only hashed, and you need a legal basis for it. Here is how: create the fitting audience type and assign it to your campaigns.`,es:`Las audiencias son listas de segmentacion publicitaria para Google y Microsoft que se sincronizan con tus campanas. No las confundas con las personas del kit de marca: esas son personas de contenido para redactar, no listas de segmentacion publicitaria. Hay cuatro tipos: lista de clientes (customer match, correos o telefonos con hash), similares (lookalike), remarketing (visitantes del sitio web) y exclusion. Aviso RGPD: los datos de contacto se transfieren solo con hash, y necesitas una base legal para ello. Como proceder: crea el tipo de audiencia adecuado y asignalo a tus campanas.`,it:`Le audience sono liste di targeting pubblicitario per Google e Microsoft che si sincronizzano con le tue campagne. Non confonderle con le persona del kit di marca: quelle sono persona di contenuto per scrivere, non liste di targeting pubblicitario. Ci sono quattro tipi: lista clienti (customer match, email o numeri di telefono con hash), lookalike, remarketing (visitatori del sito) ed esclusione. Nota GDPR: i dati di contatto vengono trasferiti solo con hash e serve una base giuridica. Come procedere: crea il tipo di audience adatto e assegnalo alle tue campagne.`}},{id:`ads-conversions`,requiresAds:!0,routes:[`/ads/conversion-actions`],title:{de:`Conversion-Actions: Erfolg auf Kontoebene definieren`,en:`Conversion actions: define success at account level`,es:`Acciones de conversion: definir el exito a nivel de cuenta`,it:`Azioni di conversione: definire il successo a livello di account`},body:{de:`Conversion-Actions legen fest, was als Erfolg zählt, etwa Registrierung, Kauf oder Lead. Sie liegen auf Kontoebene, nicht pro K
2ampagne; einzelne Kampagnen wählen daraus ihre Ziele aus. Die Registrierung wird bereits automatisch getrackt: Die Klick-ID beim Anmelden wird an Google und Microsoft zurückgespielt, ohne dass du etwas einrichten musst. So gehst du vor: Lege weitere Conversion-Actions an, bearbeite oder lösche bestehende, und wähle sie dann in deinen Kampagnen als Ziel.`,en:`Conversion actions define what counts as success, such as registration, purchase or lead. They live at the account level, not per campaign; individual campaigns pick their goals from this list. Registration is already tracked automatically: the click ID captured at sign-up is played back to Google and Microsoft without any setup on your side. Here is how: create additional conversion actions, edit or delete existing ones, and then select them as a goal in your campaigns.`,es:`Las acciones de conversion definen que cuenta como exito, por ejemplo registro, compra o lead. Estan a nivel de cuenta, no por campana; cada campana elige sus objetivos de esta lista. El registro ya se rastrea automaticamente: el ID de clic capturado al registrarse se reenvia a Google y Microsoft sin que tengas que configurar nada. Como proceder: crea acciones de conversion adicionales, edita o elimina las existentes, y luego selecciona esas acciones como objetivo en tus campanas.`,it:`Le azioni di conversione definiscono cosa conta come successo, ad esempio registrazione, acquisto o lead. Sono a livello di account, non per campagna; le singole campagne scelgono i propri obiettivi da questo elenco. La registrazione viene gia tracciata automaticamente: il click ID acquisito in fase di iscrizione viene rimandato a Google e Microsoft senza bisogno di configurazione da parte tua. Come procedere: crea ulteriori azioni di conversione, modifica o elimina quelle esistenti, e poi selezionale come obiettivo nelle tue campagne.`}},{id:`ads-recommendations`,requiresAds:!0,routes:[`/ads/recommendations`,`/ads/proposals`],title:{de:`Optimierungs-Feed: Empfehlungen und Vorschläge`,en:`Optimization feed: recommendations and proposals`,es:`Feed de optimizacion: recomendaciones y propuestas`,it:`Feed di ottimizzazione: raccomandazioni e proposte`},body:{de:`Der Optimierungs-Feed bündelt konkrete Empfehlungen zu Budget, Keywords und Geboten aus Google und Microsoft sowie eigene Vorschläge der Plattform. Ãber Filter (Alle, Budget-Engine, von Google, von Microsoft, Vorschläge) grenzt du die Liste ein. So gehst du vor: Prüfe je Eintrag die Begründung und wende die Empfehlung an oder lehne sie ab; angewendete Empfehlungen wirken sich direkt auf die betroffene Kampagne aus.`,en:`The optimization feed bundles concrete recommendations on budget, keywords and bids from Google and Microsoft, plus the platform's own proposals. Filters (all, budget engine, from Google, from Microsoft, proposals) let you narrow the list. Here is how: check the reasoning for each entry and apply or reject the recommendation; applied recommendations take effect directly on the affected campaign.`,es:`El feed de optimizacion reune recomendaciones concretas sobre presupuesto, palabras clave y pujas de Google y Microsoft, ademas de propuestas propias de la plataforma. Los filtros (todas, motor de presupuesto, de Google, de Microsoft, propuestas) permiten acotar la lista. Como proceder: revisa el motivo de cada entrada y aplica o rechaza la recomendacion; las recomendaciones aplicadas afectan directamente a la campana correspondiente.`,it:`Il feed di ottimizzazione raccoglie raccomandazioni concrete su budget, parole chiave e offerte da Google e Microsoft, oltre a proposte proprie della piattaforma. I filtri (tutte, motore di budget, da Google, da Microsoft, proposte) permettono di restringere l'elenco. Come procedere: controlla la motivazione di ogni voce e applica o rifiuta la raccomandazione; le raccomandazioni applicate agiscono direttamente sulla campagna interessata.`}},{id:`ads-rules`,requiresAds:!0,routes:[`/ads/rules`],title:{de:`Regeln: Wenn-Dann-Automatisierung`,en:`Rules: if-then automation`,es:`Reglas: automatizacion si-entonces`,it:`Regole: automazione se-allora`},body:{de:`Regeln automatisieren Anpassungen nach dem Wenn-Dann-Prinzip, zum Beispiel das Gebot senken, wenn der CPC eine Schwelle übersteigt, oder pausieren, wenn zu hohe Kosten ohne C
2onversion anfallen. So gehst du vor: Definiere Bedingung und Aktion, wähle die Ebene (Kampagne, Anzeigengruppe oder Anzeige), prüfe die Auswirkung optional per Test-Lauf und aktiviere die Regel anschlieÃend. Aktive Regeln laufen automatisch im Hintergrund und greifen, sobald die Bedingung zutrifft, ohne dass du manuell eingreifen musst.`,en:`Rules automate adjustments on an if-then basis, for example lowering the bid when the CPC exceeds a threshold, or pausing when costs run too high without a conversion. Here is how: define the condition and the action, pick the level (campaign, ad group or ad), optionally check the impact with a test run, and then activate the rule. Active rules run automatically in the background and kick in as soon as the condition is met, without manual work from you.`,es:`Las reglas automatizan ajustes segun el principio si-entonces, por ejemplo bajar la puja cuando el CPC supera un umbral, o pausar cuando los costes son demasiado altos sin conversion. Como proceder: define la condicion y la accion, elige el nivel (campana, grupo de anuncios o anuncio), comprueba opcionalmente el efecto con una ejecucion de prueba y luego activa la regla. Las reglas activas se ejecutan automaticamente en segundo plano y actuan en cuanto se cumple la condicion, sin que tengas que intervenir manualmente.`,it:`Le regole automatizzano gli adeguamenti secondo il principio se-allora, ad esempio abbassare l'offerta quando il CPC supera una soglia, o mettere in pausa quando i costi sono troppo alti senza conversione. Come procedere: definisci condizione e azione, scegli il livello (campagna, gruppo di annunci o annuncio), controlla facoltativamente l'effetto con un'esecuzione di prova e poi attiva la regola. Le regole attive vengono eseguite automaticamente in background e scattano non appena la condizione e soddisfatta, senza bisogno del tuo intervento manuale.`}},{id:`ads-abtests`,requiresAds:!0,routes:[`/ads/experiments`],title:{de:`A/B-Tests: Varianten vergleichen`,en:`A/B tests: compare variants`,es:`Pruebas A/B: comparar variantes`,it:`Test A/B: confrontare varianti`},body:{de:`A/B-Tests (Experimente) vergleichen zwei Varianten einer Kampagne gegeneinander, um zu sehen, was besser konvertiert; genutzt werden die nativen Experimente von Google und Microsoft. So gehst du vor: Lege ein Experiment an, definiere die Variante und den Traffic-Anteil, lass den Test die geplante Laufzeit über laufen und übernimm am Ende die Gewinner-Variante. Nutze A/B-Tests, statt Ãnderungen ungetestet direkt an der Live-Kampagne vorzunehmen.`,en:`A/B tests (experiments) compare two variants of a campaign against each other to see which converts better; they use the native experiments of Google and Microsoft. Here is how: create an experiment, set the variant and the traffic share, let the test run for the planned duration and adopt the winning variant at the end. Use A/B tests instead of making untested changes directly on the live campaign.`,es:`Las pruebas A/B (experimentos) comparan dos variantes de una campana entre si para ver cual convierte mejor; se usan los experimentos nativos de Google y Microsoft. Como proceder: crea un experimento, define la variante y el porcentaje de trafico, deja que la prueba corra durante el tiempo previsto y adopta al final la variante ganadora. Usa pruebas A/B en lugar de hacer cambios sin probar directamente en la campana en vivo.`,it:`I test A/B (esperimenti) confrontano due varianti di una campagna per vedere quale converte meglio; si usano gli esperimenti nativi di Google e Microsoft. Come procedere: crea un esperimento, definisci la variante e la quota di traffico, lascia che il test giri per la durata prevista e adotta alla fine la variante vincente. Usa i test A/B invece di apportare modifiche non testate direttamente sulla campagna live.`}},{id:`ads-ai-campaign`,requiresAds:!0,routes:[`/ads/wizard/budget`],title:{de:`KI-Kampagne: der Budget-Assistent`,en:`AI campaign: the budget wizard`,es:`Campana con IA: el asistente de presupuesto`,it:`Campagna IA: l'assistente di budget`},body:{de:`Die KI-Kampagne (Budget-Assistent) erstellt aus deinem Marken-Kontext (Zielgruppe, Personas, Angebot) und einem Budget plattformübergreifend eine startfertige Kampagne inklusive Vorschlägen für Anzeigengruppen, Keywords und Anzeigen. So gehst du vor: Wähle Budget und Ziel, prüfe die generierten Vorschläge und passe sie bei Bedarf an, und übernimm sie anschlieÃend als neue Kampagne. Der Lauf kostet Credits und ersetzt das manuelle Anlegen der einzelnen Bausteine.`,en:`The AI campaign (budget wizard) uses your brand context (audience, personas, offer) and a budget to build a ready-to-launch campaign across platforms, including suggestions for ad groups, keywords and ads. Here is how: choose budget and goal, review the generated suggestions and adjust them if needed, then adopt them as a new campaign. The run costs credits and replaces manually creating the individual building blocks.`,es:`La campana con IA (asistente de presupuesto) usa tu contexto de marca (publico, personas, oferta) y un presupuesto para crear una campana lista para lanzar en varias plataformas, con sugerencias de grupos de anuncios, palabras clave y anuncios. Como proceder: elige presupuesto y objetivo, revisa las sugerencias generadas y ajustalas si hace falta, y luego adoptalas como nueva campana. La ejecucion cuesta creditos y sustituye la creacion manual de cada elemento.`,it:`La campagna IA (assistente di budget) usa il tuo contesto di marca (pubblico, persona, offerta) e un budget per creare una campagna pronta al lancio su piu piattaforme, con suggerimenti per gruppi di annunci, parole chiave e annunci. Come procedere: scegli budget e obiettivo, controlla i suggerimenti generati e modificali se serve, poi adottali come nuova campagna. L'elaborazione costa crediti e sostituisce la creazione manuale dei singoli elementi.`}},{id:`ads-keyword-cockpit`,requiresAds:!0,routes:[`/ads/cockpit`],title:{de:`KI-Cockpit: Keyword-Planung und
2-Performance`,en:`AI cockpit: keyword planning and performance`,es:`Cabina IA: planificacion y rendimiento de palabras clave`,it:`Cockpit IA: pianificazione e rendimento delle parole chiave`},body:{de:`Das KI-Cockpit (Keyword-Cockpit) zeigt Planung und Performance je Keyword auf einen Blick: Suchvolumen, Gebotsvorschlag, Break-even und aktuelles Gebot, dazu eine Wettbewerbs-Analyse und die Richtlinien-Prüfung deiner Anzeigen. So gehst du vor: Wechsle mit dem Umschalter zwischen Planung und Performance, vergleiche Vorschlag und aktuelles Gebot je Keyword, und nutze die Erkenntnisse, um Gebote gezielt anzupassen, bevor du sie auf der Plattform überträgst.`,en:`The AI cockpit (keyword cockpit) shows planning and performance per keyword at a glance: search volume, bid suggestion, break-even and current bid, plus a competitor analysis and the policy check of your ads. Here is how: use the toggle to switch between planning and performance, compare the suggestion with the current bid per keyword, and use the insights to adjust bids in a targeted way before you push them to the platform.`,es:`La cabina IA (cabina de palabras clave) muestra planificacion y rendimiento por palabra clave de un vistazo: volumen de busqueda, sugerencia de puja, punto de equilibrio y puja actual, ademas de un analisis de competencia y la verificacion de politicas de tus anuncios. Como proceder: usa el conmutador para alternar entre planificacion y rendimiento, compara la sugerencia con la puja actual por palabra clave, y usa los hallazgos para ajustar pujas de forma dirigida antes de enviarlas a la plataforma.`,it:`Il cockpit IA (cockpit delle parole chiave) mostra pianificazione e rendimento per parola chiave a colpo d'occhio: volume di ricerca, offerta suggerita, break-even e offerta attuale, oltre a un'analisi della concorrenza e il controllo delle policy dei tuoi annunci. Come procedere: usa l'interruttore per passare tra pianificazione e rendimento, confronta il suggerimento con l'offerta attuale per parola chiave, e usa le informazioni per adeguare le offerte in modo mirato prima di inviarle alla piattaforma.`}},{id:`ads-targeting`,requiresAds:!0,routes:[`/ads/campaigns`],title:{de:`Ausrichtung: wer deine Anzeigen sieht`,en:`Targeting: who sees your ads`,es:`Segmentacion: quien ve tus anuncios`,it:`Targeting: chi vede i tuoi annunci`},body:{de:`Die Ausrichtung steuert, wer deine Anzeigen sieht: Regionen, Geräte (mit Gebots-Anpassungen), Sprachen, Interessen und Audiences. Bei Kampagnentypen ohne Keywords, etwa Meta oder Performance Max, läuft die Steuerung ausschlieÃlich über die Ausrichtung. Dein Marken-Kontext (Zielgruppe, Personas) flieÃt in die Vorschläge ein. So gehst du vor: Ãffne den Ausrichtung-Tab einer Kampagne, wähle Regionen, Geräte, Sprachen und Interessen, und ordne bestehende Audiences zu.`,en:`Targeting controls who sees your ads: regions, devices (with bid adjustments), languages, interests and audiences. For campaign types without keywords, such as Meta or Performance Max, control runs exclusively through targeting. Your brand context (audience, personas) feeds into the suggestions. Here is how: open the targeting tab of a campaign, choose regions, devices, languages and interests, and assign existing audiences.`,es:`La segmentacion controla quien ve tus anuncios: regiones, dispositivos (con ajustes de puja), idiomas, intereses y audiencias. En tipos de campana sin palabras clave, como Meta o Performance Max, el control se realiza exclusivamente a traves de la segmentacion. Tu contexto de marca (publico, personas) alimenta las sugerencias. Como proceder: abre la pestana de segmentacion de una campana, elige regiones, dispositivos, idiomas e intereses, y asigna audiencias existentes.`,it:`Il targeting controlla chi vede i tuoi annunci: regioni, dispositivi (con adeguamenti dell'offerta), lingue, interessi e audience. Nei tipi di campagna senza parole chiave, come Meta o Performance Max, il controllo avviene esclusivamente tramite il targeting. Il tuo contesto di marca (pubblico, persona) alimenta i suggerimenti. Come procedere: apri la scheda targeting di una campagna, scegli regioni, dispositivi, lingue e interessi, e assegna le audience esistenti.`}},{id:`ads-etat`,requiresAds:!0,routes:[`/ads/campaigns`,`/ads/recommendations`],title:{de:`Monats-Etat: Pause, Hinweis und Reaktivierung (Ads)`,en:`Monthly budget: pause, notice and reactivation (Ads)`,es:`Presupuesto mensual: pausa, aviso y reactivación (Ads)`,it:`Budget mensile: pausa, avviso e riattivazione (Ads)`},body:{de:`Der Monats-Etat ist eine harte Hülle über alle Werbeplattformen. Ist er erschöpft, pausiert der Etat-Wächter die laufenden Kampagnen bis zum Monatswechsel (mit Budget-Autopilot nach dem Veto-Fenster automatisch, sonst als Vorschlag im Empfehlungs-Feed). Am Monatsanfang reaktiviert er genau diese Kampagnen wieder, sofern der Budget-Autopilot an ist und der neue Etat sie trägt; du bekommst eine Benachrichtigung mit den Namen. Ist der Autopilot aus, starten sie nicht von selbst, du wirst nur informiert. Du darfst jederzeit selbst eingreifen: Aktivierst du eine Etat-pausierte Kampagne oder erhöhst Budget oder Gebot trotz erschöpftem Etat, wird die Ãnderung gespeichert und du siehst sofort einen Hinweis, dass der Etat-Wächter beim nächsten Lauf erneut pausieren kann. Jede manuelle Ãnderung an Status, Budget oder Gebot (Kampagne, Anzeigengruppe, Anzeige, Keyword) sperrt die gegenläufige Automatik für 24 Stunden, damit sie deine Entscheidung nicht sofort zurückdreht; bewusst pausierte Anzeigen und Keywords bleiben auch beim Aktivieren der Kampagne pausiert.`,en:`The monthly budget is a hard envelope across all ad platforms. Once it is used up, the budget guard pauses running campaigns until the start of next month (automatically after the veto window with the budget autopilot, otherwise as a proposal in the recommendations feed). At the start of the month it reactivates exactly these campaigns, provided the budget autopilot is on and the new budget can cover them; you receive a notification with their names. If the autopilot is off, they do not restart on their own, you are only informed. You may intervene at any time: if you activate a campaign paused by the budget or raise budget or bid despite the exhausted budget, the change is saved and you immediately see a notice that the budget guard may pause again on its next run. Every manual change to status, budget or bid (campaign, ad group, ad, keyword) locks the opposite automation for 24 hours so it does not immediately undo your decision; ads and keywords you paused deliberately stay paused even when the campaign is activated.`,es:`
2El presupuesto mensual es un lÃmite estricto sobre todas las plataformas publicitarias. Cuando se agota, el guardián del presupuesto pausa las campañas activas hasta el cambio de mes (automáticamente tras la ventana de veto con el piloto automático de presupuesto, si no como propuesta en el feed de recomendaciones). A principios de mes reactiva exactamente esas campañas, siempre que el piloto automático de presupuesto esté activado y el nuevo presupuesto las cubra; recibes una notificación con sus nombres. Si el piloto automático está desactivado, no se reanudan solas, solo se te informa. Puedes intervenir en cualquier momento: si activas una campaña pausada por el presupuesto o subes presupuesto o puja pese al presupuesto agotado, el cambio se guarda y ves al instante un aviso de que el guardián puede volver a pausar en su próxima ejecución. Cada cambio manual de estado, presupuesto o puja (campaña, grupo de anuncios, anuncio, palabra clave) bloquea la automatización contraria durante 24 horas para que no deshaga tu decisión de inmediato; los anuncios y palabras clave que pausaste a propósito siguen en pausa aunque se active la campaña.`,it:`Il budget mensile è un involucro rigido su tutte le piattaforme pubblicitarie. Quando è esaurito, il guardiano del budget mette in pausa le campagne attive fino al cambio di mese (automaticamente dopo la finestra di veto con il pilota automatico del budget, altrimenti come proposta nel feed dei suggerimenti). A inizio mese riattiva esattamente queste campagne, purché il pilota automatico del budget sia attivo e il nuovo budget le copra; ricevi una notifica con i loro nomi. Se il pilota automatico è disattivato, non ripartono da sole, vieni solo informato. Puoi intervenire in qualsiasi momento: se attivi una campagna messa in pausa dal budget o aumenti budget o offerta nonostante il budget esaurito, la modifica viene salvata e vedi subito un avviso che il guardiano può rimetterla in pausa alla prossima esecuzione. Ogni modifica manuale di stato, budget o offerta (campagna, gruppo di annunci, annuncio, parola chiave) blocca l'automazione contraria per 24 ore, così non annulla subito la tua decisione; annunci e parole chiave che hai messo in pausa di proposito restano in pausa anche quando la campagna viene attivata.`}}],Ha=[...La,...Ra,...za,...Ba,...Va],Ua=[`de`,`en`,`es`,`it`];function Wa(e=!1){return Ha.filter(t=>e||!t.requiresAds)}function Ga(e,t){let n=Ua.includes(t)?t:`de`,r=e=>e&&(e[n]||e.de||e[Object.keys(e||{})[0]])||``;return{id:e.id,routes:e.routes||[],title:r(e.title),body:r(e.body)}}function Ka(e,t=!1){let n=String(e||``);return Wa(t).filter(e=>(e.routes||[]).some(e=>n===e||n.startsWith(e+`/`)))}function qa({tp:e,open:t,onToggle:n}){return(0,U.jsxs)(`li`,{className:`border border-surface-200 rounded-lg overflow-hidden`,children:[(0,U.jsxs)(`button`,{onClick:n,className:`w-full flex items-center justify-between gap-2 px-3 py-2 text-left text-surface-800 hover:bg-surface-50`,children:[(0,U.jsx)(`span`,{className:`font-medium`,children:e.title}),t?(0,U.jsx)(mt,{size:15,className:`shrink-0 text-surface-400`}):(0,U.jsx)(ft,{size:15,className:`shrink-0 text-surface-400`})]}),t&&(0,U.jsx)(`p`,{className:`px-3 pb-3 text-surface-600 text-sm whitespace-pre-line`,children:e.body})]})}function Ja(){let{t:e}=g(`support`),t=A(e=>e.user),[n,r]=(0,B.useState)(!1),[i,a]=(0,B.useState)(`help`),[o,s]=(0,B.useState)(``),[c,l]=(0,B.useState)(!1),[u,d]=(0,B.useState)(!1),[f,m]=(0,B.useState)(null),[h,_]=(0,B.useState)(``),[y,b]=(0,B.useState)(null),x=p(),S=v.language,C=A(e=>e.hasModule(`ads`)),ee=(0,B.useMemo)(()=>Ka(x.pathname,C).map(e=>Ga(e,S)),[x.pathname,S,C]),E=h.trim().toLowerCase(),D=(0,B.useMemo)(()=>{let e=Wa(C).map(e=>Ga(e,S));return E?e.filter(e=>e.title.toLowerCase().includes(E)||e.body.toLowerCase().includes(E)):e},[E,S,C]);if(!t)return null;let te=()=>{d(e=>{let t=!e;return t&&m(Ia(v.language)),t})},ne=async()=>
2{let t=o.trim();if(!t){w.error(e(`validation.empty`));return}l(!0);try{let n=Ia(v.language);await k.post(`/support/message`,{message:t,context:n}),w.success(e(`success`)),s(``),d(!1),m(null),r(!1)}catch(t){w.error(T(t,e,`error`))}finally{l(!1)}},O=f||{},re=O.formSnapshot?Object.keys(O.formSnapshot).length:0,ie=Array.isArray(O.recentApi)?O.recentApi.length:0;return(0,U.jsxs)(U.Fragment,{children:[n&&(0,U.jsxs)(`div`,{className:`fixed bottom-24 right-4 sm:right-6 z-40 w-[calc(100vw-2rem)] max-w-sm rounded-2xl border border-surface-200 bg-white shadow-2xl overflow-hidden flex flex-col`,style:{maxHeight:`min(70vh, 32rem)`},role:`dialog`,"aria-label":e(`title`),children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-4 py-3 border-b border-surface-200 bg-surface-50`,children:[(0,U.jsxs)(`span`,{className:`font-semibold text-surface-900 flex items-center gap-2`,children:[(0,U.jsx)(Sn,{size:16,className:`text-brand-600`}),` `,e(`title`)]}),(0,U.jsx)(`button`,{onClick:()=>r(!1),"aria-label":e(`close`),className:`text-surface-400 hover:text-surface-700`,children:(0,U.jsx)(oe,{size:18})})]}),(0,U.jsxs)(`div`,{className:`flex border-b border-surface-200 text-sm`,children:[(0,U.jsxs)(`button`,{onClick:()=>a(`help`),className:`flex-1 flex items-center justify-center gap-1.5 py-2.5 font-medium transition-colors ${i===`help`?`text-brand-700 border-b-2 border-brand-600`:`text-surface-500 hover:text-surface-800`}`,children:[(0,U.jsx)(vt,{size:15}),` `,e(`tab.help`)]}),(0,U.jsxs)(`button`,{onClick:()=>a(`message`),className:`flex-1 flex items-center justify-center gap-1.5 py-2.5 font-medium transition-colors ${i===`message`?`text-brand-700 border-b-2 border-brand-600`:`text-surface-500 hover:text-surface-800`}`,children:[(0,U.jsx)(Mn,{size:15}),` `,e(`tab.message`)]})]}),(0,U.jsx)(`div`,{className:`p-4 overflow-y-auto`,children:i===`help`?(0,U.jsxs)(`div`,{className:`space-y-3 text-sm text-surface-700`,children:[(0,U.jsx)(`p`,{className:`text-surface-500`,children:e(`help.intro`)}),(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsx)(ur,{size:14,className:`absolute left-2.5 top-1/2 -translate-y-1/2 text-surface-400`}),(0,U.jsx)(`input`,{value:h,onChange:e=>{_(e.target.value),b(null)},placeholder:e(`help.searchPlaceholder`),className:`input w-full text-sm pl-8`,"aria-label":e(`help.searchPlaceholder`)})]}),!E&&ee.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-xs font-semibold text-surface-500 uppercase tracking-wide mb-1.5`,children:e(`help.forThisPage`)}),(0,U.jsx)(`ul`,{className:`space-y-1`,children:ee.map(e=>(0,U.jsx)(qa,{tp:e,open:y===e.id,onToggle:()=>b(y===e.id?null:e.id)},e.id))})]}),(0,U.jsxs)(`div`,{children:[!E&&(0,U.jsx)(`p`,{className:`text-xs font-semibold text-surface-500 uppercase tracking-wide mb-1.5`,children:e(`help.allTopics`)}),D.length===0?(0,U.jsx)(`p`,{className:`text-surface-400 py-2`,children:e(`help.noResults`)}):(0,U.jsx)(`ul`,{className:`space-y-1`,children:D.map(e=>(0,U.jsx)(qa,{tp:e,open:y===e.id,onToggle:()=>b(y===e.id?null:e.id)},e.id))})]}),(0,U.jsxs)(`button`,{onClick:()=>a(`message`),className:`btn-secondary text-sm w-full justify-center mt-1`,children:[(0,U.jsx)(Mn,{size:15}),` `,e(`help.toMessage`)]})]}):(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(`label`,{className:`block text-sm font-medium text-surface-700`,children:e(`form.label`)}),(0,U.jsx)(`textarea`,{value:o,onChange:e=>s(e.target.value),placeholder:e(`form.placeholder`),rows:4,maxLength:4e3,className:`input w-full text-sm resize-none`,"aria-label":e(`form.label`)}),(0,U.jsxs)(`div`,{className:`rounded-xl bg-surface-50 border border-surface-200 p-3 text-xs text-surface-500`,children:[(0,U.jsxs)(`p`,{className:`flex items-start gap-1.5`,children:[(0,U.jsx)(dn,{size:13,className:`mt-0.5 shrink-0 text-surface-400`}),(0,U.jsx)(`span`,{children:e(`context.note`)})]}),(0,U.jsxs)(`button`,{onClick:te,className:`mt-1.5 inline-flex items-center gap-1 text-brand-600 hover:text-brand-700 font-medium`,children:[u?(0,U.jsx)(mt,{size:13}):(0,U.jsx)(ft,{size:13}),e(u?`context.hide`:`context.show`)]}),u&&(0,U.jsxs)(`ul`,{className:`mt-2 space-y-0.5 text-surface-500`,children:[(0,U.jsxs)(`li`,{children:[e(`context.page`),`: `,(0,U.jsx)(`span`,{className:`text-surface-700`,children:O.url||`-`})]}
2),(0,U.jsx)(`li`,{children:e(`context.formFields`,{count:re})}),(0,U.jsx)(`li`,{children:e(`context.apiCalls`,{count:ie})})]})]}),(0,U.jsxs)(`button`,{onClick:ne,disabled:c||!o.trim(),className:`btn-primary text-sm w-full justify-center disabled:opacity-50`,children:[c?(0,U.jsx)(M,{size:15,className:`animate-spin`}):(0,U.jsx)(G,{size:15}),e(c?`form.sending`:`form.send`)]})]})})]}),(0,U.jsx)(`button`,{onClick:()=>r(e=>!e),"aria-label":e(`button.aria`),"aria-expanded":n,className:`fixed bottom-5 right-4 sm:right-6 z-40 w-14 h-14 rounded-full bg-brand-600 hover:bg-brand-700 text-white shadow-lg flex items-center justify-center transition-colors`,children:n?(0,U.jsx)(oe,{size:22}):(0,U.jsx)(Sn,{size:22})})]})}var Ya=new Set([`de`,`en`,`es`,`it`]);function Xa({code:e,className:t=`w-5 h-3.5 rounded-[2px] shrink-0`}){let n=(e||``).slice(0,2);return Ya.has(n)?(0,U.jsx)(`span`,{role:`img`,"aria-hidden":`true`,className:`cf-flag cf-flag-${n} ${t}`}):(0,U.jsx)(`span`,{"aria-hidden":`true`,className:t,children:`ð`})}function Za({kompakt:e=!1}){let{t,i18n:n}=g(),[r,i]=(0,B.useState)(!1),a=(0,B.useRef)(null),o=(n.resolvedLanguage||`de`).slice(0,2),s=A(e=>e.updateUser),c=A(e=>e.isAuthenticated());(0,B.useEffect)(()=>{function e(e){a.current&&!a.current.contains(e.target)&&i(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);async function l(e){if(i(!1),e!==o&&(S(e),c))try{await k.patch(`/auth/me`,{locale:e}),s({locale:e})}catch{}}return(0,U.jsxs)(`div`,{ref:a,className:`relative`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),"aria-label":t(`language.switch`),"aria-haspopup":`listbox`,"aria-expanded":r,className:`flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-sm text-slate-300 hover:bg-slate-700/50 transition`,children:[(0,U.jsx)(Xa,{code:o}),!e&&(0,U.jsx)(`span`,{className:`uppercase`,children:o})]}),r&&(0,U.jsx)(`ul`,{role:`listbox`,className:`absolute right-0 z-50 mt-1 min-w-[10rem] overflow-hidden rounded-xl border border-slate-700 bg-slate-800 py-1 shadow-xl`,children:he.map(e=>(0,U.jsx)(`li`,{children:(0,U.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":e===o,onClick:()=>l(e),className:`flex w-full items-center gap-2 px-3 py-2 text-sm hover:bg-slate-700/60 ${e===o?`text-white font-medium`:`text-slate-300`}`,children:[(0,U.jsx)(Xa,{code:e}),(0,U.jsx)(`span`,{children:se[e].label}),e===o&&(0,U.jsx)(`span`,{className:`ml-auto text-brand-400`,"aria-hidden":`true`,children:`â`})]})},e))})]})}function Qa(){let{t:e}=g([`settings`,`common`]),{user:t,updateUser:n}=A(),r=!!t?.totpEnabled,[i,a]=(0,B.useState)(null),[o,s]=(0,B.useState)(``),[c,l]=(0,B.useState)(!1),[u,d]=(0,B.useState)(!1);return(0,U.jsxs)(`div`,{className:`card mb-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3 mb-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,U.jsx)(`div`,{className:`w-9 h-9 rounded-xl bg-brand-600/10 flex items-center justify-center shrink-0`,children:(0,U.jsx)(K,{size:17,className:`text-brand-600`})}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`h2`,{className:`font-display font-semibold text-surface-900`,children:e(`security.title`)}),(0,U.jsx)(`p`,{className:`text-surface-500 text-xs`,children:e(r?`security.activeHint`:`security.inactiveHint`)})]})]}
2),r?(0,U.jsx)(`span`,{className:`badge bg-emerald-500/15 text-emerald-400 border border-emerald-500/30 shrink-0`,children:e(`status.active`,{ns:`common`})}):(0,U.jsx)(`span`,{className:`badge bg-surface-100 text-surface-400 shrink-0`,children:e(`status.inactive`,{ns:`common`})})]}),r?(0,U.jsxs)(`button`,{onClick:async()=>{let t=window.prompt(e(`security.disablePrompt`));if(t){l(!0);try{await k.post(`/auth/2fa/disable`,{code:t}),n({totpEnabled:!1}),w.success(e(`security.disabledToast`))}catch(t){w.error(t.response?.data?.error||e(`status.error`,{ns:`common`}))}finally{l(!1)}}},disabled:c,className:`btn-danger text-sm`,children:[c?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(K,{size:14}),` `,e(`security.disable`)]}):i?(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(`p`,{className:`text-sm text-surface-600`,children:e(`security.step1`)}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`code`,{className:`flex-1 bg-surface-50 border border-surface-300 rounded-xl px-3 py-2 text-sm font-mono text-brand-700 break-all`,children:i.secret}),(0,U.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(i.secret),d(!0),setTimeout(()=>d(!1),1500)},className:`btn-secondary text-xs shrink-0`,children:u?(0,U.jsx)(re,{size:13}):(0,U.jsx)(Mt,{size:13})})]}),(0,U.jsxs)(`p`,{className:`text-xs text-surface-500 break-all`,children:[e(`security.altUri`),` `,(0,U.jsx)(`span`,{className:`text-surface-400`,children:i.otpauthUrl})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1.5`,children:e(`security.step2`)}),(0,U.jsx)(`input`,{className:`input text-center font-mono tracking-[0.3em] max-w-[200px]`,placeholder:`000000`,inputMode:`numeric`,maxLength:6,value:o,onChange:e=>s(e.target.value.replace(/\D/g,``))})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`button`,{onClick:async()=>{l(!0);try{await k.post(`/auth/2fa/enable`,{code:o}),n({totpEnabled:!0}),a(null),s(``),w.success(e(`security.enabledToast`))}catch(t){w.error(t.response?.data?.error||e(`security.codeInvalid`))}finally{l(!1)}},disabled:c||o.length!==6,className:`btn-primary text-sm`,children:[c?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(W,{size:14}),` `,e(`security.activate`)]}),(0,U.jsx)(`button`,{onClick:()=>{a(null),s(``)},className:`btn-ghost text-sm`,children:e(`action.cancel`,{ns:`common`})})]})]}):(0,U.jsxs)(`button`,{onClick:async()=>{l(!0);try{let{data:e}=await k.post(`/auth/2fa/setup`);a(e)}catch{w.error(e(`security.setupError`))}finally{l(!1)}},disabled:c,className:`btn-secondary text-sm`,children:[c?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(K,{size:14}),` `,e(`security.setup`)]})]})}function $a(){let{t:e}=g([`settings`,`common`]),{data:t}=_e({queryKey:[`consents`],queryFn:()=>k.get(`/auth/consents`).then(e=>e.data)}),[n,r]=(0,B.useState)(null),i={terms:e(`legal.terms`,{ns:`common`}),privacy:e(`legal.privacy`,{ns:`common`})};if(!t)return null;let a=e=>e?Ri(new Date(e),`dd.MM.yyyy HH:mm`,{locale:ha()}):`-`,o=async t=>{r(t.doc_hash);try{let e=await k.get(`/auth/consents/${t.doc_hash}/download`,{responseType:`blob`}),n=URL.createObjectURL(e.data),r=document.createElement(`a`);r.href=n,r.download=`${t.doc_type}-v${t.version}-personativ.txt`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)}catch{w.error(e(`consents.loadError`))}finally{r(null)}},s=({doc:t,typeKey:n})=>{let r=t.acceptedVersion!=null&&t.currentVersion!=null&&t.acceptedVersion<t.currentVersion;return(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-2 border-b border-surface-200/60`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm text-surface-800`,children:t.title||i[n]||n}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500`,children:e(`consents.acceptedOn`,{date:a(t.acceptedAt),version:t.acceptedVersion??`-`})})]}),(0,U.jsx)(`a`,{href:`/legal/${n}`,target:`_blank`,rel:`noreferrer`,className:`text-xs text-brand-600 hover:text-brand-700 shrink-0 pt-0.5`,children:r?e(`consents.currentVersion`,{version:t.currentVersion}):e(`action.view`,{ns:`common`})})]})},c=t.history||[],l=c.filter(e=>!e.retrievable).length;return(0,U.jsxs)(`div`,{className:`card mb-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[(0,U.jsx)(`div`,{className:`w-9 h-9 rounded-xl bg-brand-600/10 flex items-center justify-center shrink-0`,children:(0,U.jsx)(vr,{size:17,className:`text-brand-600`})}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`h2`,{className:`font-display font-semibold text-surface-900`,children:e(`consents.title`)}),(0,U.jsx)(`p`,{className:`text-surface-500 text-xs`,children:e(`consents.subtitle`)})]})]}),(0,U.jsx)(s,{doc:t.terms,typeKey:`terms`}),(0,U.jsx)(s,{doc:t.privacy,typeKey:`privacy`}),c.length>0&&(0,U.jsxs)(`div`,{className:`mt-4`,children:[(0,U.jsx)(`p`,{className:`text-xs font-medium text-surface-400 mb-1`,children:e(`consents.history`)}),c.map((t,r)=>(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-2 border-b border-surface-200/60 last:border-0`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`p`,{className:`text-sm text-surface-800 truncate`,children:[t.doc_title||i[t.doc_type]||t.doc_type,` `,(0,U.jsx)(`span`,{className:`text-surface-400`,children:e(`consents.version`,{version:t.version})})]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500`,children:a(t.accepted_at)})]}),t.retrievable?(0,U.jsxs)(`button`,{onClick:()=>o(t),disabled:n===t.doc_hash,className:`text-xs text-brand-600 hover:text-brand-700
2inline-flex items-center gap-1 shrink-0 disabled:opacity-50`,children:[n===t.doc_hash?(0,U.jsx)(M,{size:13,className:`animate-spin`}):(0,U.jsx)(Rt,{size:13}),(0,U.jsx)(`span`,{className:`max-sm:hidden`,children:e(`consents.wording`)})]}):(0,U.jsx)(`span`,{className:`text-xs text-surface-400 shrink-0`,title:e(`consents.unavailableTitle`),children:e(`consents.unavailable`)})]},`${t.doc_hash||`x`}-${t.accepted_at}-${r}`)),l>0&&(0,U.jsx)(`p`,{className:`text-xs text-surface-400 mt-2`,children:e(`consents.missingNote`,{count:l})})]})]})}function eo({user:e,size:t=72}){let n=`${e?.firstName?.[0]||``}${e?.lastName?.[0]||``}`.toUpperCase();return e?.avatarUrl?(0,U.jsx)(`img`,{src:e.avatarUrl,alt:``,style:{width:t,height:t},className:`rounded-full object-cover border border-surface-200`}):(0,U.jsx)(`div`,{style:{width:t,height:t},className:`rounded-full bg-brand-600 flex items-center justify-center font-bold text-white`,children:(0,U.jsx)(`span`,{style:{fontSize:t*.36},children:n})})}function to({open:e,onClose:t}){let{t:n}=g([`account`,`settings`,`common`]),{user:r,updateUser:i}=A(),a=(0,B.useRef)(null),o=async e=>{if(e!==v.language){S(e);try{await k.patch(`/auth/me`,{locale:e}),i({locale:e})}catch(e){w.error(T(e,n,`status.error`))}}},s=async e=>{let t=e||null;try{let{data:e}=await k.patch(`/auth/me`,{contentLocale:t});i(e.user),w.success(n(`language.saved`))}catch(e){w.error(T(e,n,`status.error`))}},[c,l]=(0,B.useState)({firstName:``,lastName:``}),[u,d]=(0,B.useState)({email:``,currentPassword:``}),[f,p]=(0,B.useState)({currentPassword:``,newPassword:``,repeat:``}),[m,h]=(0,B.useState)({avatar:!1,name:!1,email:!1,pw:!1});if((0,B.useEffect)(()=>{e&&(l({firstName:r?.firstName||``,lastName:r?.lastName||``}),d({email:``,currentPassword:``}),p({currentPassword:``,newPassword:``,repeat:``}))},[e,r?.firstName,r?.lastName]),!e)return null;let _=async e=>{if(e){if(![`image/jpeg`,`image/png`,`image/webp`].includes(e.type))return w.error(n(`avatar.wrongType`));if(e.size>5242880)return w.error(n(`avatar.tooLarge`));h(e=>({...e,avatar:!0}));try{let t=new FormData;t.append(`file`,e);let{data:r}=await k.post(`/auth/me/avatar`,t,{headers:{"Content-Type":`multipart/form-data`}});i(r.user),w.success(n(`avatar.uploaded`))}catch(e){w.error(T(e,n,`status.error`))}finally{h(e=>({...e,avatar:!1})),a.current&&(a.current.value=``)}}};return(0,U.jsx)(fe,{title:n(`title`),onClose:t,bodyClassName:``,children:(0,U.jsxs)(`div`,{className:`p-6 space-y-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,U.jsx)(eo,{user:r,size:72}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-surface-800 mb-1.5`,children:n(`avatar.title`)}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsx)(`input`,{ref:a,type:`file`,accept:`image/jpeg,image/png,image/webp`,className:`hidden`,onChange:e=>_(e.target.files?.[0])}),(0,U.jsxs)(`button`,{onClick:()=>a.current?.click(),disabled:m.avatar,className:`btn-secondary text-xs`,children:[m.avatar?(0,U.jsx)(M,{size:13,className:`animate-spin`}):(0,U.jsx)(ot,{size:13}),` `,n(`avatar.change`)]}),r?.avatarUrl&&(0,U.jsxs)(`button`,{onClick:async()=>{h(e=>({...e,avatar:!0}));try{let{data:e}=await k.delete(`/auth/me/avatar`);i(e.user),w.success(n(`avatar.removed`))}catch(e){w.error(T(e,n,`status.error`))}finally{h(e=>({...e,avatar:!1}))}},disabled:m.avatar,className:`btn-ghost text-xs text-surface-500 hover:text-red-600`,children:[(0,U.jsx)(q,{size:13}),` `,n(`avatar.remove`)]})]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-400 mt-1.5`,children:n(`avatar.hint`)})]})]}),(0,U.jsxs)(`section`,{className:`border-t border-surface-200 pt-5`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-surface-800 flex items-center gap-2 mb-3`,children:[(0,U.jsx)(Lr,{size:15,className:`text-brand-600`}),` `,n(`profile.title`)]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`profile.firstName`)}),(0,U.jsx)(`input`,{className:`input text-sm`,value:c.firstName,onChange:e=>l(t=>({...t,firstName:e.target.value}))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`profile.lastName`)}),(0,U.jsx)(`input`,{className:`input text-sm`,value:c.lastName,onChange:e=>l(t=>({...t,lastName:e.target.value}))})]})]}),(0,U.jsxs)(`button`,{onClick:async()=>
2{if(!c.firstName.trim()||!c.lastName.trim())return w.error(n(`profile.nameRequired`));h(e=>({...e,name:!0}));try{let{data:e}=await k.patch(`/auth/me`,{firstName:c.firstName.trim(),lastName:c.lastName.trim()});i(e.user),w.success(n(`profile.saved`))}catch(e){w.error(T(e,n,`status.error`))}finally{h(e=>({...e,name:!1}))}},disabled:m.name,className:`btn-primary text-sm mt-3`,children:[m.name?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(ir,{size:14}),` `,n(`action.save`,{ns:`common`})]})]}),(0,U.jsxs)(`section`,{className:`border-t border-surface-200 pt-5`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-surface-800 flex items-center gap-2 mb-3`,children:[(0,U.jsx)(gn,{size:15,className:`text-brand-600`}),` `,n(`language.title`)]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`language.ui`)}),(0,U.jsx)(`select`,{className:`input text-sm`,value:r?.locale||`de`,onChange:e=>o(e.target.value),children:he.map(e=>(0,U.jsx)(`option`,{value:e,children:se[e].label},e))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`language.content`)}),(0,U.jsxs)(`select`,{className:`input text-sm`,value:r?.contentLocale??``,onChange:e=>s(e.target.value),children:[(0,U.jsx)(`option`,{value:``,children:n(`language.auto`)}),he.map(e=>(0,U.jsx)(`option`,{value:e,children:se[e].label},e))]})]})]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-400 mt-1.5`,children:n(`language.contentHint`)})]}),(0,U.jsxs)(`section`,{className:`border-t border-surface-200 pt-5`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-surface-800 flex items-center gap-2 mb-1`,children:[(0,U.jsx)(ne,{size:15,className:`text-brand-600`}),` `,n(`email.title`)]}),(0,U.jsxs)(`p`,{className:`text-xs text-surface-500 mb-3 flex items-center gap-1.5`,children:[n(`email.current`),`: `,(0,U.jsx)(`span`,{className:`text-surface-700 font-medium`,children:r?.email}),r?.emailVerified?(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-emerald-500`,children:[(0,U.jsx)(Je,{size:13}),` `,n(`email.verified`)]}):(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-500`,children:[(0,U.jsx)(gt,{size:13}),` `,n(`email.unverified`)]})]}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`email.new`)}),(0,U.jsx)(`input`,{type:`email`,className:`input text-sm`,value:u.email,onChange:e=>d(t=>({...t,email:e.target.value}))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`email.password`)}),(0,U.jsx)(`input`,{type:`password`,className:`input text-sm`,autoComplete:`current-password`,value:u.currentPassword,onChange:e=>d(t=>({...t,currentPassword:e.target.value}))}),(0,U.jsx)(`p`,{className:`text-xs text-surface-400 mt-1`,children:n(`email.verifyHint`)})]})]}),(0,U.jsxs)(`button`,{onClick:async()=>{if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(u.email))return w.error(n(`email.invalid`));if(!u.currentPassword)return w.error(n(`email.passwordRequired`));h(e=>({...e,email:!0}));try{let{data:e}=await k.post(`/auth/me/email`,{email:u.email.trim(),currentPassword:u.currentPassword});i(e.user),d({email:``,currentPassword:``}),w.success(n(`email.changed`))}catch(e){w.error(T(e,n,`status.error`))}finally{h(e=>({...e,email:!1}))}},disabled:m.email,className:`btn-primary text-sm mt-3`,children:[m.email?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(ir,{size:14}),` `,n(`email.save`)]})]}),(0,U.jsxs)(`section`,{className:`border-t border-surface-200 pt-5`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-surface-800 flex items-center gap-2 mb-3`,children:[(0,U.jsx)(W,{size:15,className:`text-brand-600`}),` `,n(`password.title`)]}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`password.current`)}),(0,U.jsx)(`input`,{type:`password`,className:`input text-sm`,autoComplete:`current-password`,value:f.currentPassword,onChange:e=>p(t=>({...t,currentPassword:e.target.value}))})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`password.new`)}),(0,U.jsx)(`input`,{type:`password`,className:`input text-sm`,autoComplete:`new-password`,value:f.newPassword,onChange:e=>p(t=>({...t,newPassword:e.target.value}))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`block text-xs font-medium text-surface-400 mb-1`,children:n(`password.repeat`)}),(0,U.jsx)(`input`,{type:`password`,className:`input text-sm`,autoComplete:`new-password`,value:f.repeat,onChange:e=>p(t=>({...t,repeat:e.target.value}))})]})]}),(0,U.jsx)(xa,{autoComplete:`new-password`,value:f.newPassword,t:n})]}),(0,U.jsxs)(`button`,{onClick:async()=>
2{if(!_a(f.newPassword))return w.error(n(`password.tooWeak`));if(f.newPassword!==f.repeat)return w.error(n(`password.mismatch`));if(!f.currentPassword)return w.error(n(`password.currentRequired`));h(e=>({...e,pw:!0}));try{await k.post(`/auth/change-password`,{currentPassword:f.currentPassword,newPassword:f.newPassword}),p({currentPassword:``,newPassword:``,repeat:``}),w.success(n(`password.changed`))}catch(e){w.error(T(e,n,`status.error`))}finally{h(e=>({...e,pw:!1}))}},disabled:m.pw||!_a(f.newPassword),className:`btn-primary text-sm mt-3`,children:[m.pw?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(W,{size:14}),` `,n(`password.save`)]})]}),(0,U.jsx)(`section`,{className:`border-t border-surface-200 pt-5`,children:(0,U.jsx)(Qa,{})}),(0,U.jsx)(`section`,{className:`border-t border-surface-200 pt-5`,children:(0,U.jsx)(no,{})}),(0,U.jsx)(`section`,{className:`border-t border-surface-200 pt-5`,children:(0,U.jsx)($a,{})}),(0,U.jsx)(`section`,{className:`border-t border-surface-200 pt-5`,children:(0,U.jsx)(ro,{})})]})})}function no(){let{t:e}=g([`account`,`settings`,`common`]),t=h(),{data:n}=_e({queryKey:[`telegram-me`],queryFn:()=>k.get(`/notify/telegram`).then(e=>e.data)}),[r,i]=(0,B.useState)(null),a=V({mutationFn:()=>k.post(`/notify/telegram/link`).then(e=>e.data),onSuccess:e=>i(e),onError:t=>w.error(t.response?.data?.error||e(`notifications.telegram.notPossible`,{ns:`settings`}))}),o=V({mutationFn:()=>k.delete(`/notify/telegram/link`).then(e=>e.data),onSuccess:()=>{i(null),t.invalidateQueries({queryKey:[`telegram-me`]}),w.success(e(`notifications.telegram.disconnectedToast`,{ns:`settings`}))}});return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-surface-800 flex items-center gap-2 mb-1`,children:[(0,U.jsx)(G,{size:15,className:`text-sky-500`}),` `,e(`telegram.title`)]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500 mb-3`,children:e(`telegram.hint`)}),n?.configured?n?.linked?(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsxs)(`span`,{className:`text-xs inline-flex items-center gap-1 text-emerald-600`,children:[(0,U.jsx)(Je,{size:14}),` `,e(`telegram.connected`)]}),(0,U.jsxs)(`button`,{onClick:()=>o.mutate(),disabled:o.isPending,className:`btn-ghost text-sm text-red-500`,children:[o.isPending?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(q,{size:14}),` `,e(`telegram.disconnect`)]})]}):r?(0,U.jsxs)(`div`,{className:`space-y-2 rounded-xl border border-surface-200 p-3`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[r.appLink&&(0,U.jsxs)(`a`,{href:r.appLink,className:`btn-primary text-sm inline-flex`,children:[(0,U.jsx)(G,{size:14}),` `,e(`notifications.telegram.openApp`,{ns:`settings`})]}),r.deepLink&&(0,U.jsx)(`a`,{href:r.deepLink,target:`_blank`,rel:`noreferrer`,className:`btn-secondary text-sm inline-flex`,children:e(`notifications.telegram.openBrowser`,{ns:`settings`})})]}),(0,U.jsxs)(`p`,{className:`text-xs text-surface-500`,children:[e(`notifications.telegram.manualPre`,{ns:`settings`}),(0,U.jsxs)(`code`,{className:`bg-surface-100 px-1 rounded`,children:[`@`,r.botUsername||`PersonativBot`]}),e(`notifications.telegram.manualPost`,{ns:`settings`})]})]}):(0,U.jsxs)(`button`,{onClick:()=>a.mutate(),disabled:a.isPending,className:`btn-secondary text-sm`,children:[a.isPending?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(G,{size:14}),` `,e(`telegram.connect`)]}):(0,U.jsx)(`p`,{className:`text-xs text-surface-400`,children:e(`telegram.notConfigured`)})]})}function ro(){let{t:e}=g([`account`,`common`]),{user:t,logout:n}=A(),r=a(),[i,o]=(0,B.useState)(!1),[s,c]=(0,B.useState)(``),[l,u]=(0,B.useState)(!1),d=t?.role===`owner`;return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`h3`,{className:`text-sm font-semibold text-red-600 flex items-center gap-2 mb-1`,children:[(0,U.jsx)(jr,{size:15}),` `,e(`delete.title`)]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500 mb-3`,children:e(d?`delete.ownerWarning`:`delete.warning`)}),i?(0,U.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-red-200 bg-red-50/50 p-4`,children:[(0,U.jsx)(`p`,{className:`text-xs text-surface-600`,children:e(`delete.confirmHint`)}),(0,U.jsx)(`input`,{type:`password`,className:`input text-sm`,placeholder:e(`delete.passwordLabel`),autoComplete:`current-password`,value:s,onChange:e=>c(e.target.value)}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`button`,{onClick:async()=>
2{if(!s)return w.error(e(`delete.passwordRequired`));u(!0);try{let{data:t}=await k.delete(`/auth/me`,{data:{currentPassword:s}});t.workspaceScheduledForDeletion?(w.success(e(`delete.workspaceScheduled`)),window.location.href=_()):(w.success(e(`delete.done`)),n(),r(_()))}catch(t){w.error(T(t,e,`status.error`))}finally{u(!1)}},disabled:l,className:`btn-danger text-sm`,children:[l?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(q,{size:14}),` `,e(`delete.confirmButton`)]}),(0,U.jsx)(`button`,{onClick:()=>{o(!1),c(``)},className:`btn-ghost text-sm`,children:e(`action.cancel`,{ns:`common`})})]})]}):(0,U.jsxs)(`button`,{onClick:()=>o(!0),className:`text-sm inline-flex items-center gap-1.5 rounded-lg border border-red-200 text-red-600 hover:bg-red-50 px-3 py-1.5`,children:[(0,U.jsx)(q,{size:14}),` `,e(`delete.button`)]})]})}function io({open:e,onClose:t}){let{t:n}=g([`account`,`common`]),{tenant:r,updateTenant:i}=A(),[a,o]=(0,B.useState)(``),s=r?.name||``,c=V({mutationFn:()=>k.delete(`/tenant`,{data:{confirm:a}}).then(e=>e.data),onSuccess:e=>{w.success(n(`planExpired.deleteModal.successToast`)),i({deletionScheduledFor:e?.scheduledFor??null})},onError:e=>w.error(e.response?.data?.error||n(`planExpired.deleteModal.failedToast`))});if(!e)return null;let l=()=>{t?.(),o(``)};return(0,U.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50`,onClick:l,children:(0,U.jsxs)(`div`,{className:`bg-white rounded-2xl shadow-xl w-full max-w-lg max-h-[90vh] overflow-y-auto`,onClick:e=>e.stopPropagation(),children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-4 border-b border-surface-200`,children:[(0,U.jsxs)(`h2`,{className:`font-semibold text-surface-900 flex items-center gap-2`,children:[(0,U.jsx)(jr,{size:18,className:`text-red-500`}),` `,n(`planExpired.deleteModal.title`)]}),(0,U.jsx)(`button`,{onClick:l,className:`text-surface-400 hover:text-surface-700`,"aria-label":n(`action.close`,{ns:`common`}),children:(0,U.jsx)(oe,{size:18})})]}),(0,U.jsxs)(`div`,{className:`p-5 space-y-4`,children:[(0,U.jsxs)(`div`,{className:`p-3 rounded-xl bg-red-500/10 border border-red-500/30 text-sm text-red-600`,children:[n(`planExpired.deleteModal.info`),` `,n(`planExpired.deleteModal.confirmPre`),(0,U.jsx)(`strong`,{children:s}),n(`planExpired.deleteModal.confirmPost`)]}),(0,U.jsx)(`input`,{className:`input text-sm`,value:a,onChange:e=>o(e.target.value),placeholder:s,autoFocus:!0}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`button`,{onClick:()=>c.mutate(),disabled:c.isPending||a.trim()!==s.trim(),className:`btn-danger text-sm`,children:[c.isPending?(0,U.jsx)(M,{size:14,className:`animate-spin`}):(0,U.jsx)(q,{size:14}),` `,n(`planExpired.deleteModal.submit`)]}),(0,U.jsx)(`button`,{onClick:l,className:`btn-ghost text-sm`,children:n(`action.cancel`,{ns:`common`})})]})]})]})})}function ao(){let{t:e}=g(`account`),t=a(),n=A(e=>e.planExpiry),r=A(e=>e.isOwner()),{plan:i,expiredAt:o}=n(),[s,c]=(0,B.useState)(!1),l=i===`trial`,u=o?Ri(o,`dd.MM.yyyy`,{locale:ha()}):null;return(0,U.jsxs)(`div`,{className:`max-w-lg mx-auto py-10`,children:[(0,U.jsxs)(`div`,{className:`card`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[(0,U.jsx)(`div`,{className:`w-9 h-9 rounded-xl bg-red-500/10 flex items-center justify-center shrink-0`,children:(0,U.jsx)(j,{size:17,className:`text-red-500`})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h1`,{className:`font-display font-semibold text-surface-900`,children:e(l?`planExpired.trialEndedTitle`:`planExpired.subEndedTitle`)}),u&&(0,U.jsx)(`p`,{className:`text-xs text-surface-500`,children:e(`planExpired.since`,{date:u})})]})]}),(0,U.jsx)(`p`,{className:`text-sm text-surface-600 mb-5`,children:e(`planExpired.body`)}),(0,U.jsxs)(`button`,{onClick:()=>t(`/billing`),className:`btn-primary w-full justify-center`,children:[(0,U.jsx)(ce,{size:16}),` `,e(`planExpired.choosePlan`)]}),r&&(0,U.jsx)(`div`,{className:`mt-5 pt-4 border-t border-surface-200`,children:(0,U.jsxs)(`button`,{onClick:()=>c(!0),className:`text-xs text-surface-500 hover:text-red-600 inline-flex items-center gap-1.5`,children:[(0,U.jsx)(q,{size:13}),` `,e(`planExpired.deleteWorkspace`)]})})]}),(0,U.jsx)(io,{open:s,onClose:()=>c(!1)})]})}function oo(){let{t:e}=g([`account`,`common`]),t=a(),n=A(e=>e.deletionPending),r=A(e=>e.updateTenant),i=A(e=>e.isOwner()),o=A(e=>e.tenant),s=A(e=>e.logout),c=()=>{s(),window.location.href=`/`},{scheduledFor:l}=n(),u=l?Ri(l,`dd.MM.yyyy`,{locale:ha()}):null,d=l?Math.max(0,ii(l,new Date)):null,f=V({mutationFn:()=>k.post(`/tenant/cancel-deletion`).then(e=>e.data),onSuccess:()=>{r({deletionScheduledFor:null,deletionRequestedAt:null,deletionRequestedBy:null}),w.success(e(`deletion.cancelSuccess`)),t(`/dashboard`)},onError:t=>w.error(t.response?.data?.error||e(`deletion.cancelFailed`))});return(0,U.jsx)(`div`,{className:`max-w-lg mx-auto py-10`,children:(0,U.jsxs)(`div`,{className:`card`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[(0,U.jsx)(`div`,{className:`w-9 h-9 rounded-xl bg-red-500/10 flex items-center justify-center shrink-0`,children:(0,U.jsx)(q,{size:17,className:`text-red-500`})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h1`,{className:`font-display font-semibold text-surface-900`,children:e(`deletion.title`)}),u&&(0,U.jsxs)(`p`,{className:`text-xs text-surface-500`,children:[e(`deletion.finalDeletion`,{date:u}),d!==null&&(0,U.jsxs)(U.Fragment,{children:[` `,e(`deletion.daysLeft`,{count:d})]})]})]})]}),(0,U.jsxs)(`div`,{className:`p-3 rounded-xl bg-red-500/10 border border-red-500/30 text-sm text-red-600 mb-5`,children:[e(`deletion.blockedPre`),o?.name?(0,U.jsx)(`strong`,{children:o.name}):e(`deletion.thisWorkspace`),e(`deletion.blockedPost`,{date:u||e(`deletion.dateFallback`)})]}),i?(0,U.jsxs)(`button`,{onClick:()=>f.mutate(),disabled:f.isPending,className:`btn-primary w-full justify-center`,children:[f.isPending?(0,U.jsx)(M,{size:16,className:`animate-spin`}):(0,U.jsx)(nr,{size:16}),` `,e(`deletion.cancelButton`)]}):(0,U.jsx)(`p`,{className:`text-sm text-surface-600`,children:e(`deletion.notOwner`)}),(0,U.jsxs)(`button`,{onClick:c,className:`btn-secondary w-full justify-center mt-3`,children:[(0,U.jsx)(En,{size:16}),` `,e(`deletion.logoutHome`)]})]})})}var so=[{to:`/compose`,labelKey:`tabs.composer`,icon:Ur},{to:`/compose/shop`,labelKey:`tabs.composeShop`,icon:br,requiresShop:!0,domain:{property:{labelKey:`tabs.composeObjects`,icon:nt},mixed:{labelKey:`tabs.composeCatalog`,icon:Bn}}},{to:`/voice-diff`,labelKey:`tabs.voiceDiff`,icon:Et}],co=[{to:`/autopilot`,labelKey:`tabs.autopilot`,icon:er},{to:`/highlights`,labelKey:`tabs.highlights`,icon:On},{to:`/shop-highlights`,labelKey:`tabs.shopProducts`,icon:br,requiresShop:!0,domain:{property:{labelKey:`tabs.objects`,icon:nt},mixed:{labelKey:`tabs.catalog`,icon:Bn}}},{to:`/agent`,labelKey:`tabs.contentAgent`,icon:Qe},{to:`/assistant`,labelKey:`tabs.assistant`,icon:Pn,requiresContent:!0}],lo=!1,uo=!1,fo=!0,po=`none`;function mo(e){if(!e.domain||po!==`property`&&po!==`mixed`)return e;let t=e.domain[po];return t?{...e,...t}:e}var Z=e=>e.filter(e=>(!e.requiresShop||lo)&&(!e.requiresAds||uo)&&(!e.requiresContent||fo)).map(mo),ho=Z(so),go=Z(co),_o=[],vo=[],yo=[],bo=[];function xo(){ho=Z(so),go=Z(co),_o=Z(Ao),vo=Z(Fo),yo=Z(jo),bo=Z(Mo)}function So(e){let t=!!e;t!==lo&&(lo=t,xo())}function Co(e){let t=!!e;t!==uo&&(uo=t,xo())}function wo(e){let t=!!e;t!==fo&&(fo=t,xo())}function To(e){let t=e===`property`||e===`product`||e===`mixed`?e:`none`;t!==po&&(po=t,xo())}function Eo(e=!0){let{data:t}=_e({queryKey:[`commerce-sources`],queryFn:async()=>(await k.get(`/commerce/sources`)).data.sources||[],enabled:e,staleTime:3e5}),n=Array.isArray(t)&&t.length>0;So(n);let r=Array.isArray(t)&&t.some(e=>e?.domain===`property`),i=Array.isArray(t)&&t.some(e=>e?.domain===`product`);return To(n?r&&i?`mixed`:r?`property`:`product`:`none`),n}var Do=[{to:`/trend-radar`,labelKey:`tabs.trendRadar`,icon:Kn},{to:`/outliers`,labelKey:`tabs.outliers`,icon:kr},{to:`/competitors`,labelKey:`tabs.competitors`,icon:Bt},{to:`/content-gap`,labelKey:`tabs.contentGap`,icon:ur},{to:`/zitat`,labelKey:`tabs.citations`,icon:Wn}],Oo=[{to:`/articles`,labelKey:`tabs.articles`,icon:Ht},{to:`/posts`,labelKey:`tabs.socialPosts`,icon:G},{to:`/layouts`,labelKey:`tabs.layouts`,icon:bn}],ko=[{to:`/video-studio`,labelKey:`tabs.videoStudio`,icon:bt}
2,{to:`/video-montage`,labelKey:`tabs.videoCompose`,icon:Ot},{to:`/video-kuerzen`,labelKey:`tabs.videoTrim`,icon:cr},{to:`/broll`,labelKey:`tabs.videoBroll`,icon:Wt}],Ao=[{to:`/social`,labelKey:`tabs.socialAccounts`,icon:hr},{to:`/shops`,labelKey:`tabs.shops`,icon:br},{to:`/crms`,labelKey:`tabs.crms`,icon:nt,requiresContent:!0},{to:`/website`,labelKey:`tabs.website`,icon:Qt,requiresContent:!0}],jo=[{to:`/ads/campaigns`,labelKey:`tabs.campaigns`,icon:On,requiresAds:!0},{to:`/ads/wizard/budget`,labelKey:`tabs.aiCampaign`,icon:Ur,requiresAds:!0},{to:`/ads/ads`,labelKey:`tabs.ads`,icon:an,requiresAds:!0},{to:`/ads/creative-studio`,labelKey:`tabs.creativeStudio`,icon:Hn,requiresAds:!0},{to:`/ads/keywords`,labelKey:`tabs.keywords`,icon:ur,requiresAds:!0},{to:`/ads/audiences`,labelKey:`tabs.audiences`,icon:zr,requiresAds:!0},{to:`/ads/recommendations`,labelKey:`tabs.recommendations`,icon:wn,match:[`/ads/recommendations`,`/ads/google-recommendations`,`/ads/proposals`],requiresAds:!0},{to:`/ads/conversion-actions`,labelKey:`tabs.conversionActions`,icon:Er,requiresAds:!0},{to:`/ads/shared-budgets`,labelKey:`tabs.sharedBudgets`,icon:Vr,requiresAds:!0},{to:`/ads/rules`,labelKey:`tabs.rules`,icon:qr,requiresAds:!0},{to:`/ads/experiments`,labelKey:`tabs.abtests`,icon:Jt,requiresAds:!0},{to:`/ads/cockpit`,labelKey:`tabs.cockpit`,icon:Sr,requiresAds:!0}],Mo=[{to:`/brand-kit`,labelKey:`tabs.brandKit`,icon:Kt},{to:`/site-design`,labelKey:`tabs.siteDesign`,icon:Hn,requiresContent:!0}],No=[{to:`/credits`,labelKey:`tabs.credits`,icon:qr},{to:`/billing`,labelKey:`tabs.subscription`,icon:It}],Po=[{to:`/settings`,labelKey:`tabs.settings`,icon:pr},{to:`/sovereignty`,labelKey:`tabs.sovereignty`,icon:j}],Fo=[{to:`/analytics`,labelKey:`tabs.analytics`,icon:ct},{to:`/insights`,labelKey:`tabs.insights`,icon:kr},{to:`/leads`,labelKey:`tabs.leads`,icon:zr,requiresContent:!0},{to:`/ads/reporting`,labelKey:`tabs.reporting`,icon:ct,requiresAds:!0},{to:`/ads/funnel`,labelKey:`tabs.funnel`,icon:Gr,requiresAds:!0}];xo();var Io=[{all:()=>so,tabs:()=>ho},{all:()=>co,tabs:()=>go},{all:()=>Ao,tabs:()=>_o},{all:()=>jo,tabs:()=>yo},{all:()=>Mo,tabs:()=>bo},{all:()=>Fo,tabs:()=>vo},{all:()=>Do,tabs:()=>Do},{all:()=>Oo,tabs:()=>Oo},{all:()=>ko,tabs:()=>ko},{all:()=>No,tabs:()=>No},{all:()=>Po,tabs:()=>Po}];function Lo(e,t){return(Array.isArray(t.match)&&t.match.length?t.match:[t.to]).some(t=>e===t||e.startsWith(`${t}/`))}function Ro(e){let t=String(e||``).split(/[?#]/)[0];for(let e of Io)if(e.all().some(e=>Lo(t,e)))return e.tabs();return null}function zo(){try{return typeof window<`u`&&!!window.Capacitor?.isNativePlatform?.()}catch{return!1}}function Bo(){try{let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`?e:`web`}catch{return`web`}}async function Vo(){if(zo())try{let{PushNotifications:e}=await r(async()=>{let{PushNotifications:e}=await import(`@capacitor/push-notifications`);return{PushNotifications:e}},[]),t=(await e.checkPermissions()).receive===`granted`;if(t||=(await e.requestPermissions()).receive===`granted`,!t)return;await e.removeAllListeners(),e.addListener(`registration`,e=>{let t=e?.value;t&&k.post(`/push/register`,{platform:Bo(),token:t}).catch(()=>{})}),e.addListener(`registrationError`,()=>{}),await e.register()}catch{}}async function Ho(){if(zo())try{let{PushNotifications:e}=await r(async()=>{let{PushNotifications:e}=await import(`@capacitor/push-notifications`);return{PushNotifications:e}},[]);try{let t=await new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};e.addListener(`registration`,e=>r(e?.value||null)),e.register().catch(()=>r(null)),setTimeout(()=>r(null),2e3)});t&&await k.post(`/push/unregister`,{token:t}).catch(()=>{})}finally{await e.removeAllListeners()}}catch{}}var Uo={posts:`/posts`,postsReview:`/posts?status=review`,postsFailed:`/posts?status=failed`,postsDrafts:`/posts?status=draft`,calendar:`/calendar`,autopilot:`/autopilot`,highlights:`/highlights`,inbox:`/inbox`,social:`/social`,billing:`/billing`,credits:`/credits`,trendRadar:`/trend-radar`,settings:`/settings`,adsRecommendations:`/ads/recommendations`,adsProposals:`/ads/proposals`,article:e=>`/articles/${e}`,articleEdit:e=>`/articles/${e}/edit`,adsCampaign:e=>`/ads/campaigns/${e}`},Wo=100,Go=e=>Number(e?.data?.pagination?.total)||0;function Ko({enabled:e=!0}={}){let t=_e({queryKey:[`work-queue`],enabled:e,staleTime:6e4,refetchOnWindowFocus:!1,queryFn:async()=>{let e=e=>k.get(`/social-posts`,{params:e}),[t,n,r]=await Promise.allSettled([e({status:`review`,limit:1}),e({status:`failed`,limit:1}),e({status:`draft`,limit:Wo}
2)]),i=[t,n,r].every(e=>e.status===`rejected`),a=r.status===`fulfilled`?r.value:null,o=Array.isArray(a?.data?.posts)?a.data.posts:[];return{review:t.status===`fulfilled`?Go(t.value):0,failed:n.status===`fulfilled`?Go(n.value):0,drafts:o.filter(e=>!e?.scheduled_at).length,draftsPartial:Go(a)>o.length,alleFehl:i}}}),{alleFehl:n=!1,...r}=t.data||{review:0,failed:0,drafts:0,draftsPartial:!1};return{...r,total:r.review+r.failed+r.drafts,rows:[{key:`review`,count:r.review,partial:!1,to:Uo.postsReview,tone:`bg-amber-500/10 text-amber-700`},{key:`failed`,count:r.failed,partial:!1,to:Uo.postsFailed,tone:`bg-red-500/10 text-red-600`},{key:`drafts`,count:r.drafts,partial:r.draftsPartial,to:Uo.postsDrafts,tone:`bg-brand-600/10 text-brand-700`}],isLoading:e&&t.isLoading,isError:t.isError||n}}function qo(){return(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsx)(`div`,{className:`skeleton rounded-2xl h-9 w-56`}),(0,U.jsx)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-4`,children:[0,1,2,3].map(e=>(0,U.jsx)(`div`,{className:`skeleton rounded-2xl h-24`},e))}),(0,U.jsx)(`div`,{className:`skeleton rounded-2xl h-64`})]})}var Jo=H(()=>r(()=>import(`./BrandKitPage-K4EaBN03.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]))),Yo=[{to:`/dashboard`,icon:vn,label:`dashboard`,match:[`/dashboard`],module:`shared`},{to:`/overview`,icon:At,label:`overview`,match:[`/overview`],hideForViewer:!0,module:`content`},{to:`/compose`,icon:Ur,label:`composer`,match:[`/compose`,`/voice-diff`],hideForViewer:!0,module:`content`},{to:`/video-studio`,icon:bt,label:`videoStudio`,match:[`/video-studio`,`/video-montage`,`/video-kuerzen`,`/broll`],hideForViewer:!0,module:`content`},{to:`/autopilot`,icon:er,label:`automation`,match:[`/autopilot`,`/highlights`,`/shop-highlights`,`/agent`,`/assistant`],module:`content`},{to:`/trend-radar`,icon:Kn,label:`research`,match:[`/trend-radar`,`/competitors`,`/content-gap`,`/zitat`,`/outliers`],module:`content`},{to:`/articles`,icon:Ht,label:`posts`,match:[`/articles`,`/posts`,`/layouts`],module:`content`,badge:`workQueue`},{to:`/inbox`,icon:ln,label:`inbox`,match:[`/inbox`],module:`content`},{to:`/interview`,icon:en,label:`interview`,match:[`/interview`],hideForViewer:!0,module:`content`},{to:`/ads/campaigns`,icon:On,label:`campaigns`,match:[`/ads/campaigns`,`/ads/wizard`,`/ads/ads`,`/ads/creative-studio`,`/ads/keywords`,`/ads/audiences`,`/ads/recommendations`,`/ads/google-recommendations`,`/ads/proposals`,`/ads/conversion-actions`,`/ads/shared-budgets`,`/ads/rules`,`/ads/experiments`,`/ads/cockpit`],module:`ads`},{to:`/media`,icon:an,label:`media`,match:[`/media`],module:`content`},{to:`/calendar`,icon:it,label:`calendar`,match:[`/calendar`],module:`content`},{to:`/analytics`,icon:ct,label:`analytics`,match:[`/analytics`,`/insights`,`/leads`,`/ads/reporting`,`/ads/funnel`],module:`content`}],Xo=[{to:`/social`,icon:hr,label:`connectors`,match:[`/social`,`/shops`,`/crms`,`/website`],module:`shared`},{to:`/brand-kit`,icon:Kt,label:`brand`,match:[`/brand-kit`,`/site-design`],module:`shared`},{to:`/credits`,icon:qr,label:`account`,match:[`/credits`,`/billing`],module:`shared`},{to:`/referrals`,icon:Xt,label:`referrals`,match:[`/referrals`],module:`shared`},{to:`/settings`,icon:pr,label:`settings`,match:[`/settings`,`/sovereignty`],adminOnly:!0,module:`shared`}];function Zo(e,t,n){if(e===`shared`||n)return!0;let r=t?.entitlements;return e===`ads`?r?.has_ads===!0:r?.[`has_${e}`]!==!1}function Qo({onLogout:e,wide:t=!1,children:n}){let{t:r}=g(`common`),{appName:i}=le();return(0,U.jsxs)(`div`,{className:`min-h-[100dvh] bg-surface-100 flex flex-col`,children:[(0,U.jsxs)(`header`,{className:`flex items-center justify-between gap-3 px-4 sm:px-6 py-4 border-b border-surface-200 bg-surface-50`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,U.jsx)(`div`,{className:`w-8 h-8 rounded-xl bg-brand-600 flex items-center justify-center shrink-0`,children:(0,U.jsx)(ie,{size:16,className:`text-white`})}),(0,U.jsx)(`span`,{className:`font-display font-bold text-surface-900 text-lg tracking-tight truncate`,children:i})]}),(0,U.jsxs)(`button`,{onClick:e,className:`text-sm text-surface-500 hover:text-red-600 inline-flex items-center gap-1.5 shrink-0`,children:[(0,U.jsx)(En,{size:15}),` `,r(`action.logout`)]})]}),(0,U.jsx)(`div`,{className:`flex-1 overflow-y-auto [scrollbar-gutter:stable]`,children:(0,U.jsx)(`div`,{className:t?`w-full max-w-7xl px-4 sm:px-6 md:px-8 py-6`:`max-w-4xl mx-auto px-4 sm:px-6 py-8`,children:n})})]})}function $o(e,t){return t?e(`planLabels.${t}`,{ns:`billing`,defaultValue:``})||t.split(`_`).map(t=>e(`planLabels.${t}`,{ns:`billing`,defaultValue:t})).join(` `):``}function es({tenant:e,kostenbefreit:t}){let{t:n}=g(`nav`);if(!e)return null;if(t)return(0,U.jsxs)(`div`,{className:`mx-3 mb-3 p-2 bg-surface-100 rounded-xl text-xs text-surface-500 flex items-center gap-1.5`,children:[(0,U.jsx)(qr,{size:12,className:`text-brand-600`}),` `,n(`planBadge.freeAccess`)]});if(e.plan===`trial`){let t=Math.max(0,ii(new Date(e.trialEndsAt),new Date));return(0,U.jsxs)(`div`,{className:`mx-3 mb-3 p-3 bg-brand-600/10 border border-brand-600/30 rounded-xl text-xs`,children:[(0,U.jsxs)(`p`,{className:`text-brand-700 font-semibold flex items-center gap-1`,children:[(0,U.jsx)(qr,{size:12}
2),` `,n(`planBadge.trialDays`,{count:t})]}),(0,U.jsx)(u,{to:`/billing`,className:`text-brand-600 underline`,children:n(`planBadge.choosePlan`)})]})}return(0,U.jsxs)(`div`,{className:`mx-3 mb-3 p-2 bg-surface-100 rounded-xl text-xs text-surface-400 flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`font-medium text-surface-600`,children:$o(n,e.plan)}),e.planExpiresAt&&(0,U.jsx)(`span`,{children:n(`planBadge.until`,{date:Ri(new Date(e.planExpiresAt),`dd.MM.yy`,{locale:ha()})})})]})}function ts(){let{t:e}=g([`nav`,`common`]),{user:t,tenant:n,logout:r,updateUser:i,updateTenant:a,isAdmin:o,isViewer:s}=A(),c=A(e=>e.isPlatformAdmin()),l=A(e=>e.isDemo()),f=le(),m=A(e=>e.planExpiry),h=A(e=>e.deletionPending),v=p();(0,B.useEffect)(()=>{t?.locale&&S(t.locale)},[t?.locale]),(0,B.useEffect)(()=>{t?.id&&Vo()},[t?.id]);let[y,b]=(0,B.useState)(!1),[x,C]=(0,B.useState)(!1),[T,ee]=(0,B.useState)(!1),E=m().expired,D=h().pending,{data:te}=_e({queryKey:[`onboarding-gate`],queryFn:()=>k.get(`/brand-kit/status`).then(e=>e.data),enabled:!!n&&!c&&!E&&!D,staleTime:6e4}),{data:O}=_e({queryKey:[`auth-me`],queryFn:()=>k.get(`/auth/me`).then(e=>e.data),enabled:!!n&&!c,staleTime:3e4});(0,B.useEffect)(()=>{let e=O?.user;e&&a({plan:e.plan,trialEndsAt:e.trial_ends_at,planExpiresAt:e.plan_expires_at})},[O,a]);let re=Eo(!!n&&!E&&!D),oe=Zo(`ads`,n,c);Co(oe);let se=Zo(`content`,n,c);wo(se);let ce=se&&oe,j=Ko({enabled:!!n&&se&&!E&&!D&&!s()}),de=async()=>{try{await Ho()}catch{}try{await k.post(`/auth/logout`)}catch{}r(),window.location.href=_()},fe=async()=>{C(!0);try{let{data:t}=await k.post(`/auth/resend-verification`);if(t.alreadyVerified){i({emailVerified:!0});return}t.verifyUrl?window.location.href=t.verifyUrl:w.success(e(`verify.sent`))}catch{w.error(e(`verify.sendError`))}finally{C(!1)}};if(t?.mustChangePassword)return(0,U.jsx)(Sa,{});if(D)return(0,U.jsx)(Qo,{onLogout:de,children:(0,U.jsx)(oo,{})});if(E){let e=v.pathname===`/billing`;return(0,U.jsx)(Qo,{onLogout:de,wide:e,children:e?(0,U.jsx)(d,{}):(0,U.jsx)(ao,{})})}if(te?.needsOnboarding&&!c)return(0,U.jsx)(Qo,{onLogout:de,children:(0,U.jsx)(B.Suspense,{fallback:(0,U.jsx)(`div`,{className:`flex justify-center py-20`,children:(0,U.jsx)(`span`,{className:`w-6 h-6 rounded-full border-2 border-surface-300 border-t-brand-600 animate-spin`})}),children:(0,U.jsx)(Jo,{onboarding:!0})})});let M=()=>{let r=({to:t,icon:n,text:r,match:i,badge:a})=>{let o=i.some(e=>v.pathname===e||v.pathname.startsWith(`${e}/`));return(0,U.jsxs)(u,{to:t,onClick:()=>b(!1),className:`flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium transition-all duration-150 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--accent,var(--color-brand-500))] ${o?`bg-brand-600/15 text-brand-700 border border-brand-600/25`:`text-surface-400 hover:text-surface-900 hover:bg-surface-100`}`,children:[(0,U.jsx)(n,{size:17}),r,a===`workQueue`&&j.total>0&&(0,U.jsx)(`span`,{"data-testid":`nav-work-queue-badge`,title:e(`workQueue.badge`,{ns:`common`,count:j.total}),"aria-label":e(`workQueue.badge`,{ns:`common`,count:j.total}),className:`ml-auto min-w-5 rounded-full bg-amber-500/20 px-1.5 py-0.5 text-center text-[11px] font-semibold leading-none text-amber-800 tabular-nums`,children:j.total>99?`99+`:j.total})]},t)},i=Yo.filter(e=>(!e.hideForViewer||!s())&&Zo(e.module,n,c));return(0,U.jsxs)(`aside`,{className:`flex flex-col h-full bg-surface-50 border-r border-surface-200 w-60 overflow-y-auto overflow-x-hidden [scrollbar-gutter:stable]`,children:[(0,U.jsx)(`div`,{className:`flex items-center gap-2.5 px-5 py-5 border-b border-surface-200 shrink-0`,children:ce?(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`div`,{className:`w-8 h-8 rounded-xl bg-brand-600 flex items-center justify-center`,children:(0,U.jsx)(ae,{size:20,className:`text-white`})}),(0,U.jsx)(`span`,{className:`text-surface-300 text-lg font-light leading-none`,children:`/`}),(0,U.jsx)(`div`,{className:`w-8 h-8 rounded-xl bg-brand-600 flex items-center justify-center`,children:(0,U.jsx)(ue,{size:16,className:`text-white`})})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{className:`w-8 h-8 rounded-xl bg-brand-600 flex items-center justify-center`,children:(0,U.jsx)(ie,{size:16,className:`text-white`})}),(0,U.jsx)(`span`,{className:`font-display font-bold text-surface-900 text-lg tracking-tight`,children:f.appName})]})}),n&&(0,U.jsxs)(`div`,{className:`px-5 py-3 border-b border-surface-200 shrink-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsx)(`p`,{className:`text-xs text-surface-500 uppercase tracking-widest font-medium`,children:e(`sidebar.workspace`)}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,U.jsx)(Za,{kompakt:!0}),(0,U.jsx)(Ea,{})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-0.5 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm text-surface-800 font-medium truncate`,children:n.name}),l&&(0,U.jsx)(`span`,{className:`shrink-0 inline-flex items-center px-1.5 py-0.5 rounded-md bg-amber-500/15 border border-amber-500/40 text-amber-700 text-[10px] font-bold tracking-wider`,children:e(`demo.badge`,{defaultValue:`DEMO`})})]})]}),(0,U.jsx)(`nav`,{className:`p-3 space-y-0.5 shrink-0`,children:i.map(t=>r({...t,text:e(t.label)}))}),(0,U.jsxs)(`div`,{className:`mt-auto shrink-0`,children:[c?(0,U.jsx)(`div`,{className:`mx-3 mb-3 p-3 bg-emerald-500/10 border border-emerald-500/30 rounded-xl text-xs`,children:(0,U.jsxs)(`p`,{className:`text-emerald-700 font-semibold flex items-center gap-1`,children:[(0,U.jsx)(K,{size:12}),` `,e(`planBadge.adminAll`)]})}
2):(0,U.jsx)(es,{tenant:n,kostenbefreit:!!t?.costExempt}),(0,U.jsxs)(`div`,{className:`p-3 border-t border-surface-200`,children:[Xo.filter(e=>(!e.adminOnly||o())&&Zo(e.module,n,c)).map(({to:t,icon:n,label:r,match:i})=>{let a=i.some(e=>v.pathname===e||v.pathname.startsWith(`${e}/`));return(0,U.jsxs)(u,{to:t,onClick:()=>b(!1),className:`flex items-center gap-3 px-3 py-2 rounded-xl text-sm font-medium transition-all duration-150 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--accent,var(--color-brand-500))] ${a?`bg-brand-600/15 text-brand-700`:`text-surface-400 hover:text-surface-900 hover:bg-surface-100`}`,children:[(0,U.jsx)(n,{size:17}),e(r)]},t)}),c&&(0,U.jsxs)(u,{to:`/admin`,onClick:()=>b(!1),className:`flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium text-red-600 hover:text-red-700 hover:bg-red-600/10 transition-all duration-150`,children:[(0,U.jsx)(K,{size:17}),e(`admin`)]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-2 mt-1 rounded-xl bg-white`,children:[(0,U.jsxs)(`button`,{onClick:()=>{ee(!0),b(!1)},className:`flex items-center gap-3 flex-1 min-w-0 text-left rounded-lg px-1 py-0.5 hover:bg-surface-100 transition-colors`,title:e(`manage`,{ns:`account`}),children:[t?.avatarUrl?(0,U.jsx)(`img`,{src:t.avatarUrl,alt:``,className:`w-7 h-7 rounded-full object-cover shrink-0`}):(0,U.jsxs)(`div`,{className:`w-7 h-7 rounded-full bg-brand-600 flex items-center justify-center text-xs font-bold text-white shrink-0`,children:[t?.firstName?.[0],t?.lastName?.[0]]}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`p`,{className:`text-xs font-medium text-surface-800 truncate`,children:[t?.firstName,` `,t?.lastName]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500 truncate`,children:t?.role})]})]}),(0,U.jsx)(`button`,{onClick:de,className:`text-surface-500 hover:text-red-600 transition-colors shrink-0`,title:e(`action.logout`),children:(0,U.jsx)(En,{size:14})})]})]})]})]})};return(0,U.jsxs)(`div`,{className:`flex h-[100dvh] overflow-hidden`,children:[(0,U.jsx)(`div`,{className:`hidden lg:flex shrink-0`,children:(0,U.jsx)(M,{})}),y&&(0,U.jsxs)(`div`,{className:`lg:hidden fixed inset-0 z-50 flex`,children:[(0,U.jsx)(`div`,{className:`w-60 shrink-0`,children:(0,U.jsx)(M,{})}),(0,U.jsx)(`div`,{className:`flex-1 bg-black/60`,onClick:()=>b(!1)})]}),(0,U.jsxs)(`main`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,U.jsxs)(`header`,{className:`lg:hidden flex items-center gap-3 px-4 py-3 border-b border-surface-200 bg-surface-50`,children:[(0,U.jsx)(`button`,{onClick:()=>b(!0),className:`text-surface-400`,children:(0,U.jsx)(An,{size:20})}),ce?(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-1`,children:[(0,U.jsx)(ae,{size:22,className:`text-brand-600`}),(0,U.jsx)(`span`,{className:`text-surface-300 font-light`,children:`/`}),(0,U.jsx)(ue,{size:18,className:`text-brand-600`})]}):(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-1`,children:[(0,U.jsx)(ie,{size:20,className:`text-brand-600`}),(0,U.jsx)(`span`,{className:`font-display font-bold text-surface-900`,children:f.appName})]}),l&&(0,U.jsx)(`span`,{className:`shrink-0 inline-flex items-center px-1.5 py-0.5 rounded-md bg-amber-500/15 border border-amber-500/40 text-amber-700 text-[10px] font-bold tracking-wider`,children:e(`demo.badge`,{defaultValue:`DEMO`})}),(0,U.jsx)(Za,{kompakt:!0}),(0,U.jsx)(Ea,{})]}),l&&(0,U.jsxs)(`div`,{className:`flex items-center gap-2 px-4 sm:px-6 py-2 bg-amber-500/10 border-b border-amber-500/30`,children:[(0,U.jsx)(Rn,{size:14,className:`text-amber-600 shrink-0`}),(0,U.jsx)(`span`,{className:`text-sm text-amber-700`,children:e(`demo.notice`,{defaultValue:`Demo-Modus: nichts wird veroeffentlicht, keine Kosten.`})})]}),t&&!t.emailVerified&&!c&&(0,U.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-2 sm:gap-3 px-4 sm:px-6 py-2.5 bg-yellow-500/10 border-b border-yellow-500/30`,children:[(0,U.jsxs)(`span`,{className:`text-sm text-yellow-700 flex items-center gap-2 min-w-0`,children:[(0,U.jsx)(ne,{size:14,className:`shrink-0`}),(0,U.jsx)(`span`,{className:`truncate`,children:e(`verify.banner`,{email:t.email})})]}),(0,U.jsx)(`button`,{onClick:fe,disabled:x,className:`btn-secondary text-xs shrink-0 w-full sm:w-auto justify-center`,children:x?`â¦`:e(`verify.confirm`)})]}),(0,U.jsxs)(`div`,{className:`flex-1 overflow-y-auto [scrollbar-gutter:stable] flex flex-col`,children:[(0,U.jsx)(`div`,{className:`animate-fadeIn w-full max-w-7xl px-4 sm:px-6 md:px-8 py-6 flex-1`,children:(0,U.jsx)(B.Suspense,{fallback:(0,U.jsx)(qo,{}),children:(0,U.jsx)(d,{})})},re?`shop`:`no-shop`),(0,U.jsx)(`footer`,{className:`border-t border-surface-200 mt-2`,children:(0,U.jsx)(`div`,{className:`w-full max-w-7xl px-4 sm:px-6 md:px-8 py-5`,children:(0,U.jsx)(He,{})})})]})]}),(0,U.jsx)(to,{open:T,onClose:()=>ee(!1)}),(0,U.jsx)(Ja,{})]})}function ns({tabs:e}){let{pathname:t}=p(),{t:n}=g(`nav`),r=null,i=-1;for(let n of e)for(let e of n.match||[n.to])(t===e||t.startsWith(`${e}/`))&&e.length>i&&(i=e.length,r=n.to);return(0,U.jsx)(`div`,{className:`mb-6`,children:(0,U.jsx)(`div`,{className:`flex flex-wrap items-stretch gap-1 bg-surface-100 rounded-xl p-1`,children:e.map(({to:e,label:t,labelKey:i,icon:a})=>{let o=e===r;return(0,U.jsxs)(s,{to:e,"aria-current":o?`page`:void 0,className:`shrink-0 inline-flex items-center justify-center gap-1.5 px-3 sm:px-4 py-1.5 rounded-lg text-sm font-medium whitespace-nowrap transition-colors ${o?`bg-white text-brand-700 shadow-sm`:`text-surface-500 hover:text-surface-800`}`,children:[(0,U.jsx)(a,{size:15}),` `,i?n(i):t]},e)})})})}function rs(){let{pathname:e}=p(),t=Ro(e);return(0,U.jsxs)(U.Fragment,{children:[t&&t.length>0?(0,U.jsx)(ns,{tabs:t}):null,(0,U.jsx)(d,{})]})}var is=[{to:`/admin`,end:!0,icon:vn,label:`Ãbersicht`},{to:`/admin/tenants`,icon:nt,label:`Workspaces`},{to:`/admin/users`,icon:zr,label:`Nutzer`},{to:`/admin/demo`,icon:Rn,label:`Demo-Modus`},{to:`/admin/invoices`,icon:Ht,label:`Rechnungen`},{to:`/admin/seller-billing`,icon:mn,label:`Rechnungsdaten`},{to:`/admin/payments`,icon:Xn,label:`Zahlungen`},{to:`/admin/partners`,icon:nn,label:`Vertrieb & Partner`},{to:`/admin/ai-models`,icon:Sr,label:`KI-Modelle`},{to:`/admin/ai-stats`,icon:We,label:`KI-Statistik`},{to:`/admin/image-pool`,icon:sn,label:`KI-Bild-Pool`},{to:`/admin/credit-costs`,icon:wt,label:`Credit-Kosten`}
2,{to:`/admin/support`,icon:Sn,label:`Support`},{to:`/admin/inbox`,icon:ne,label:`Postfach`},{to:`/admin/errors`,icon:et,label:`Fehlerprotokoll`},{to:`/admin/crons`,icon:St,label:`Cron-Jobs`},{to:`/admin/branding`,icon:Hn,label:`Branding`},{to:`/admin/tone-tags`,icon:wr,label:`Ton-Tags`},{to:`/admin/channels`,icon:Jn,label:`Kanäle`},{to:`/admin/trends`,icon:kr,label:`Trends`},{to:`/admin/posts`,icon:G,label:`Beiträge`},{to:`/admin/leads`,icon:Fr,label:`Leads`},{to:`/admin/follower-tracker`,icon:Nr,label:`Follower-Tracker`},{to:`/admin/legal`,icon:or,label:`Rechtliches`},{to:`/admin/version`,icon:Pt,label:`Software-Stand`}];function as(){let{user:e,logout:t}=A(),n=a(),[r,i]=(0,B.useState)(!1),o=async()=>{try{await k.post(`/auth/logout`)}catch{}t(),n(`/login`),w.success(`Abgemeldet`)},s=()=>(0,U.jsxs)(`aside`,{className:`flex flex-col h-full bg-surface-50 border-r border-surface-200 w-60`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2.5 px-5 py-5 border-b border-surface-200`,children:[(0,U.jsx)(`div`,{className:`w-8 h-8 rounded-xl bg-red-600 flex items-center justify-center`,children:(0,U.jsx)(K,{size:16,className:`text-white`})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`font-display font-bold text-surface-900 text-base leading-tight`,children:`Personativ`}),(0,U.jsx)(`p`,{className:`text-[11px] text-red-400 font-medium tracking-wide`,children:`PLATFORM ADMIN`})]})]}),(0,U.jsx)(`nav`,{className:`flex-1 p-3 space-y-0.5 overflow-y-auto`,children:is.map(({to:e,end:t,icon:n,label:r})=>(0,U.jsxs)(u,{to:e,end:t,onClick:()=>i(!1),className:({isActive:e})=>`flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium transition-all duration-150 ${e?`bg-red-600/15 text-red-700 border border-red-600/25`:`text-surface-400 hover:text-surface-900 hover:bg-surface-100`}`,children:[(0,U.jsx)(n,{size:17}),r]},e))}),(0,U.jsxs)(`div`,{className:`p-3 border-t border-surface-200 space-y-0.5`,children:[(0,U.jsxs)(u,{to:`/dashboard`,onClick:()=>i(!1),className:`flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium text-surface-400 hover:text-surface-900 hover:bg-surface-100 transition-all`,children:[(0,U.jsx)(Ke,{size:17}),`Zurück zur App`]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2.5 mt-1 rounded-xl bg-white`,children:[(0,U.jsxs)(`div`,{className:`w-7 h-7 rounded-full bg-red-600 flex items-center justify-center text-xs font-bold text-white shrink-0`,children:[e?.firstName?.[0],e?.lastName?.[0]]}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`p`,{className:`text-xs font-medium text-surface-800 truncate`,children:[e?.firstName,` `,e?.lastName]}),(0,U.jsx)(`p`,{className:`text-xs text-surface-500 truncate`,children:e?.email})]}),(0,U.jsx)(`button`,{onClick:o,className:`text-surface-500 hover:text-red-400 transition-colors`,children:(0,U.jsx)(En,{size:14})})]})]})]});return(0,U.jsxs)(`div`,{className:`flex h-screen overflow-hidden`,children:[(0,U.jsx)(`div`,{className:`hidden lg:flex shrink-0`,children:(0,U.jsx)(s,{})}),r&&(0,U.jsxs)(`div`,{className:`lg:hidden fixed inset-0 z-50 flex`,children:[(0,U.jsx)(`div`,{className:`w-60 shrink-0`,children:(0,U.jsx)(s,{})}),(0,U.jsx)(`div`,{className:`flex-1 bg-black/60`,onClick:()=>i(!1)})]}),(0,U.jsxs)(`main`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,U.jsxs)(`header`,{className:`lg:hidden flex items-center gap-3 px-4 py-3 border-b border-surface-200 bg-surface-50`,children:[(0,U.jsx)(`button`,{onClick:()=>i(!0),className:`text-surface-400`,children:(0,U.jsx)(An,{size:20})}),(0,U.jsx)(`span`,{className:`font-display font-bold text-surface-900`,children:`Admin`})]}),(0,U.jsx)(`div`,{className:`flex-1 overflow-y-auto [scrollbar-gutter:stable]`,children:(0,U.jsx)(`div`,{className:`animate-fadeIn w-full max-w-7xl px-4 sm:px-6 md:px-8 py-6`,children:(0,U.jsx)(d,{})})})]})]})}var os=`Personativ`,ss=`/favicon.svg`;function cs(){let{appName:e,faviconUrl:t,brand:n}=le();return(0,B.useEffect)(()=>{document.documentElement.setAttribute(`data-brand`,n||`personativ`)},[n]),(0,B.useEffect)(()=>{let e=t&&t.trim()||ss,n=document.querySelector(`link[rel="icon"]`);n||(n=document.createElement(`link`),n.setAttribute(`rel`,`icon`),document.head.appendChild(n)),/\.svg(\?|$)/i.test(e)?n.setAttribute(`type`,`image/svg+xml`):n.removeAttribute(`type`),n.setAttribute(`href`,e)},[t]),(0,B.useEffect)(()=>{let t=e&&e.trim()||os;if(t===os)return;let n=document.title||``;n.startsWith(`${os}:`)||n.startsWith(`${os} `)?document.title=n.replace(os,t):n.startsWith(t)||(document.title=`${t}: ${n}`)},[e]),null}var ls=H(()=>r(()=>import(`./VoiceDiffPage-Cb-hjT_r.js`),__vite__mapDeps([30,1,2,3,4,5,31,15,16,32,25]
2))),us=H(()=>r(()=>import(`./GuidePage-Cff0Rm7D.js`),__vite__mapDeps([33,3,1,2,4,5,34,35,9]))),ds=H(()=>r(()=>import(`./LoginPage-Dn7T7375.js`),__vite__mapDeps([36,1,2,3,4,5]))),fs=H(()=>r(()=>import(`./RegisterPage-DD6RMoTr.js`),__vite__mapDeps([37,1,2,3,4,5]))),ps=H(()=>r(()=>import(`./CheckoutPage-Bntmd175.js`),__vite__mapDeps([38,1,2,3,4,5,9,39,40]))),ms=H(()=>r(()=>import(`./VerifyEmailPage-PhXRbvLG.js`),__vite__mapDeps([41,1,2,3,4,5]))),hs=H(()=>r(()=>import(`./ForgotPasswordPage-DG-OalKF.js`),__vite__mapDeps([42,1,2,3,4,5,9]))),gs=H(()=>r(()=>import(`./ResetPasswordPage-Bkez4gYQ.js`),__vite__mapDeps([43,1,2,3,4,5]))),_s=H(()=>r(()=>import(`./DashboardPage-wGIm_quC.js`),__vite__mapDeps([44,1,2,3,4,5,45,9,46,47,48,49,34,50,51,52,20,21,53,54,25,55,56,32,57,58,40]))),vs=H(()=>r(()=>import(`./ArticlesPage-CGmXpPgG.js`),__vite__mapDeps([59,1,2,3,4,5,12,13,9,60,61,62,20,63,64,65,66,25,56,32,67,68,69]))),ys=H(()=>r(()=>import(`./ArticleEditorPage-F0i4Qst3.js`),__vite__mapDeps([70,1,2,3,4,5,9,71,11,12,13,14,15,16,72,19,73,25,64,74,75,35,22,40,76,77,61,78,79,80,81,32,26,27]))),bs=H(()=>r(()=>import(`./ArticleDetailPage-D8YnEwiA.js`),__vite__mapDeps([82,1,2,3,4,5,13,9,17,62,83,24,15,16,25,64,74,66,56,32,67,59,12,60,61,20,63,65,68,69]))),xs=H(()=>r(()=>import(`./MediaPage-Cdayzjs_.js`),__vite__mapDeps([84,1,2,3,4,5,12,13,85,19,14,15,16,86,20,87,83]))),Ss=H(()=>r(()=>import(`./SocialAccountsPage-BNlwWBHr.js`),__vite__mapDeps([88,1,2,3,4,5,9,85,89,40,32,25,56]))),Cs=H(()=>r(()=>import(`./CalendarPage-Do7QErVo.js`),__vite__mapDeps([90,1,2,3,4,5,91,12,13,72,73,21,24,54,40,32,25,77,35,61,78,79]))),ws=H(()=>r(()=>import(`./AnalyticsPage-COJKun-2.js`),__vite__mapDeps([92,1,2,3,4,5,34,50,72,49,52,21,40,15,32,25,55,93]))),Ts=H(()=>r(()=>import(`./SettingsPage-C6BHdL2X.js`),__vite__mapDeps([94,1,2,3,4,5,35,9,10,95,20,65,96]))),Es=H(()=>r(()=>import(`./ReferralsPage-v1VwWUIg.js`),__vite__mapDeps([97,1,2,4,5,3,85,73,40]))),Ds=H(()=>r(()=>import(`./SiteDesignPage-BxkQeRZO.js`),__vite__mapDeps([98,1,2,3,4,5,6,10,11,12,13,14,15,16,72,99]))),Os=H(()=>r(()=>import(`./LayoutsPage-BBrpauU4.js`),__vite__mapDeps([100,1,2,4,5,3,10,11,12,13,14,15,16,20,23]))),ks=H(()=>r(()=>import(`./ComposePage-BoziIJJr.js`),__vite__mapDeps([101,1,2,3,4,5,34,102,47,11,12,13,14,15,16,72,20,22,103,83,50,8,35,61,85,23,104,18,32,25,77,40,78,79,80,9,81,75,76,28,29,105,106]))),As=H(()=>r(()=>import(`./PostsPage-CmbduRGY.js`),__vite__mapDeps([107,1,2,3,4,5,91,11,12,13,14,15,16,72,17,73,21,22,24,40,32,25,66,9,56,67,75,35,76,77,61,78,79]))),js=H(()=>r(()=>import(`./CommercePage-DFMj7lOd.js`),__vite__mapDeps([108,1,2,3,4,5,60,72,85,109,86,20,110,111,40]))),Ms=H(()=>r(()=>import(`./CrmsPage-CQMWnCbT.js`),__vite__mapDeps([112,1,2,4,5,3,85,20,40]))),Ns=H(()=>r(()=>import(`./WebsitePage-Oz8a6cEO.js`),__vite__mapDeps([113,1,2,3,4,5,6,72,31,79]))),Ps=H(()=>r(()=>import(`./ShopComposePage-D-Xz8cYF.js`),__vite__mapDeps([114,1,2,3,4,5,60,72,115,116,103,111,32,25,106]))),Fs=H(()=>r(()=>import(`./ShopHighlightsPage-DsO1iisz.js`),__vite__mapDeps([117,1,2,4,5,3,60,73,86,20,118]))),Is=H(()=>r(()=>import(`./BrandKitPage-K4EaBN03.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]))),Ls=H(()=>r(()=>import(`./InterviewPage-DDcrRyxk.js`),__vite__mapDeps([119,1,2,4,5,3,7,9,116,62,86,69,26,27]))),Rs=H(()=>r(()=>import(`./CreditsPage-CefiU-AQ.js`),__vite__mapDeps([120,1,2,3,4,5,109,86,39,40,121]))),zs=H(()=>r(()=>import(`./AutopilotPage-CpfnFMIT.js`),__vite__mapDeps([122,1,2,3,4,5,8,13,123,86,20,124,15,16,104,18,32,25,28,29,105]))),Bs=H(()=>r(()=>import(`./HighlightsPage-DmzOWBJT.js`),__vite__mapDeps([125,1,2,3,4,5,11,12,13,14,15,16,72,62,20,124,126,23,104,18,32,25,69,78,26,27,28,29,105]))),Vs=H(()=>r(()=>import(`./TrendRadarPage-novxF90a.js`),__vite__mapDeps([127,1,2,3,4,5,6,128,73,20,99,22,29,15,16,63,69,76]))),Hs=H(()=>r(()=>import(`./GeoPage-lZQp18GZ.js`),__vite__mapDeps([129,1,2,3,4,5,130,13,72,61,123,20,126,103,15,16,55,93,76,57]))),Us=H(()=>r(()=>import(`./SovereigntyPage-BLcNhnKt.js`),__vite__mapDeps([131,1,2,4,5,3,9,71,10,27,22]))),Ws=H(()=>r(()=>import(`./AgentPage-B0JLKNeR.js`),__vite__mapDeps([132,1,2,3,4,5,6,61,73,86,20,15,16,104,18,32,25]))),Gs=H(()=>r(()=>import(`./CompetitorsPage-DAz9virl.js`),__vite__mapDeps([133,1,2,4,5,3,72,128,20,99,15,16,63,68,69]))),Ks=H(()=>r(()=>import(`./ContentGapPage-C8rY0DSM.js`),__vite__mapDeps([134,1,2,4,5,3,45,128,15,16]))),qs=H(()=>r(()=>import(`./OutlierPanel-0kqVoEpn.js`),__vite__mapDeps([135,1,2,4,5,3,72,15,16,63]))),Js=H(()=>r(()=>import(`./InboxPage-CQwp-QcT.js`),__vite__mapDeps([136,1,2,4,5,3,72,103,15,16,
263,32,25,68,69]))),Ys=H(()=>r(()=>import(`./LeadsPage-BxU68Qvg.js`),__vite__mapDeps([137,1,2,4,5,3,72,63,32,25,69,76]))),Xs=H(()=>r(()=>import(`./AssistantPage-BkR_-Nlz.js`),__vite__mapDeps([138,1,2,4,5,3,15]))),Zs=H(()=>r(()=>import(`./VideoStudioPage-Dyz3FfMT.js`),__vite__mapDeps([139,1,2,3,4,5,102,47,11,12,13,14,15,16,72,20,22,103,83,32,25]))),Qs=H(()=>r(()=>import(`./VideoComposePage-s5efPCL3.js`),__vite__mapDeps([140,1,2,3,4,5,34,50,9,11,12,13,14,15,16,86,20,23]))),$s=H(()=>r(()=>import(`./VideoTrimPage-BL5lCo2S.js`),__vite__mapDeps([141,1,2,3,4,5,9,11,12,13,14,15,16,86,20]))),ec=H(()=>r(()=>import(`./BRollPage-BieGyC-G.js`),__vite__mapDeps([142,1,2,4,5,3,20,15,16]))),tc=H(()=>r(()=>import(`./InsightsPage-CH6Nq46M.js`),__vite__mapDeps([143,1,2,3,4,5,45,130,81,21,32,25]))),nc=H(()=>r(()=>import(`./BillingPage-UkyaUqBM.js`),__vite__mapDeps([144,1,2,3,4,5,145,40,95,39,121]))),rc=H(()=>r(()=>import(`./CampaignsPage-cXhB7GOt.js`),__vite__mapDeps([146,1,2,3,4,5,115,109,73,86,20,40,56,32,147,148,149,150]))),ic=H(()=>r(()=>import(`./AdCreativeStudioPage-BKaN0fa4.js`),__vite__mapDeps([151,1,2,3,4,5,85,22,26,27,147]))),ac=H(()=>r(()=>import(`./CampaignDetailPage-C4-alzO5.js`),__vite__mapDeps([152,1,2,3,4,5,91,48,72,153,61,85,154,11,12,13,14,15,16,17,20,29,83,155,19,51,109,73,52,86,126,156,40,56,32,57,58,147,148,149,150,157]))),oc=H(()=>r(()=>import(`./CrossPlatformBudgetWizardPage-Dxh649tg.js`),__vite__mapDeps([158,1,2,3,4,5,91,12,13,61,85,154,11,14,15,16,17,20,29,83,155,51,110,56,32,67,150]))),sc=H(()=>r(()=>import(`./AdsPage-CEh3WwOT.js`),__vite__mapDeps([159,1,2,3,4,5,11,12,13,14,15,16,72,115,73,20,56,32,148]))),cc=H(()=>r(()=>import(`./KeywordsPage-C6k1Y8Ar.js`),__vite__mapDeps([160,1,2,4,5,3,91,20,56,32,147,148,157]))),lc=H(()=>r(()=>import(`./AudiencesPage-sAr4sUvs.js`),__vite__mapDeps([161,1,2,4,5,3,60,20,155]))),uc=H(()=>r(()=>import(`./RecommendationsPage-D1HZPLjC.js`),__vite__mapDeps([162,1,2,3,4,5,95,18,118,156,40,56,32,57]))),dc=H(()=>r(()=>import(`./ConversionActionsPage-DXnAq17d.js`),__vite__mapDeps([163,1,2,4,5,3,73,20,124,155]))),fc=H(()=>r(()=>import(`./SharedBudgetsPage-DL1YlFVX.js`),__vite__mapDeps([164,1,2,4,5,3,20,40]))),pc=H(()=>r(()=>import(`./AdRulesPage-CnO1bsMS.js`),__vite__mapDeps([165,1,2,4,5,3,73,86,20,89]))),mc=H(()=>r(()=>import(`./AdExperimentsPage-BlUCm0Sa.js`),__vite__mapDeps([166,1,2,4,5,3,13,86,20,167,147]))),hc=H(()=>r(()=>import(`./AdsCockpitPage-B7Ei_Ajh.js`),__vite__mapDeps([168,1,2,3,4,5,153,22,56,32,58,40,147]))),gc=H(()=>r(()=>import(`./ProposalsPage-CI1hLgxN.js`),__vite__mapDeps([169,1,2,3,4,5,85,22,156,40,15,16,67,56,32,57]))),_c=H(()=>r(()=>import(`./ReportingPage-LyBm9GGk.js`),__vite__mapDeps([170,1,2,3,4,5,48,95,61,18,51,111,53,54,40,55,56,32,57,58]))),vc=H(()=>r(()=>import(`./FunnelPage-BO7k7fDC.js`),__vite__mapDeps([171,1,2,4,5,3,48,95,51,167,53,54,55,57,58,40]))),yc=H(()=>r(()=>import(`./GuideShopwareAttributionPage-BIwyG4e5.js`),__vite__mapDeps([172,1,2,3,4,5,72,111]))),bc=H(()=>r(()=>import(`./AdminDashboardPage-bi-fKqER.js`),__vite__mapDeps([173,2,1,4,5,3,48,55,174]))),xc=H(()=>r(()=>import(`./AdminTenantsPage-C2rUo6sV.js`),__vite__mapDeps([175,1,2,4,5,3,124,176]))),Sc=H(()=>r(()=>import(`./AdminUsersPage-QTSmzIDr.js`),__vite__mapDeps([177,1,2,3,4,5,178,124,65,176]))),Cc=H(()=>r(()=>import(`./AdminInvoicesPage-CN-aWme1.js`),__vite__mapDeps([179,1,2,4,5,3,48,145,40,176]))),wc=H(()=>r(()=>import(`./AdminLegalPage-C3_0LQz6.js`),__vite__mapDeps([180,1,2,4,5,3]))),Tc=H(()=>r(()=>import(`./AdminVersionPage-Dv0NFno5.js`),__vite__mapDeps([181,1,2,4,5,3,176]))),Ec=H(()=>r(()=>import(`./AdminToneTagsPage-plsegqUh.js`),__vite__mapDeps([182,1,2,4,5,3,128,22,183]))),Dc=H(()=>r(()=>import(`./AdminAiModelsPage-DdZQgeRp.js`),__vite__mapDeps([184,1,2,4,5,3,176]))),Oc=H(()=>r(()=>import(`./AdminAiStatsPage-CIelgwCq.js`),__vite__mapDeps([185,1,2,4,5,3,9,46,81,174]))),kc=H(()=>r(()=>import(`./AdminImagePoolPage-B4jSpST5.js`),__vite__mapDeps([186,1,2,4,5,3,12,13,46,87]))),Ac=H(()=>r(()=>import(`./AdminCreditCostsPage-oWzP_DAO.js`),__vite__mapDeps([187,1,2,4,5,3,176]))),jc=H(()=>r(()=>import(`./AdminErrorsPage-BNaD4KgC.js`),__vite__mapDeps([188,1,2,4,5,3,13]))),Mc=H(()=>r(()=>import(`./AdminSupportPage-qxfyBLKU.js`),__vite__mapDeps([189,1,2,4,5,3,13,83]))),Nc=H(()=>r(()=>import(`./AdminInboxPage-esc_7otC.js`),__vite__mapDeps([190,1,2,4,5,3,13]))),Pc=H(()=>r(()=>import(`./AdminCronsPage-Cv-7jLge.js`),__vite__mapDeps([191,1,2,4,5,3,9]))),Fc=H(()=>r(()=>import(`./AdminBrandingPage-B6Jkpes5.js`),__vite__mapDeps([192,1,2,4,5,3,11,12,13,14,15,16,23,183]))),Ic=H(()=>r(()=>import(`./AdminBillingPage-oU-vMNYj.js`),__vite__mapDeps([193,1,2,4,5,3,91,20,22,183]))),Lc=H(()=>r(()=>import(`./AdminPaymentsPage-CVvz85K1.js`),__vite__mapDeps([194,4,1,2,5,3,72,24,176]))),Rc=H(()=>r(()=>import(`./AdminChannelsPage-Dzwv7SOA.js`),__vite__mapDeps([195,1,2,4,5,3,9,32,183]))),zc=H(()=>r(()=>import(`./AdminTrendsPage-CE1PIJ22.js`),__vite__mapDeps([196,4,1,2,5,3,72,176]))),Bc=H(()=>r(()=>import(`./AdminPostsPage-Bk0lqNGP.js`),__vite__mapDeps([197,4,1,2,5,3,35,25,176]))),Vc=H(()=>r(()=>import(`./AdminFollowerTrackerPage-BXoUlbya.js`),__vite__mapDeps([198,1,2,4,5,3,12,13,72]))),Hc=H(()=>r(()=>import(`./AdminPartnersPage-D8xrOWHg.js`),__vite__mapDeps([199,1,2,4,5,3,178,73,20,176]))),Uc=H(()=>r(()=>import(`./AdminDemoPage-CbmCQZhx.js`),__vite__mapDeps([200,1,2,4,5,3,20,176]))),Wc=H(()=>r(()=>import(`./AdminLeadsPage-C5DVOdl-.js`),__vite__mapDeps([201,1,2,4,5,3,12,13]))),Gc=H(()=>r(()=>import(`./LegalPage-EG6SW7xk.js`),__vite__mapDeps([202,3,1,2,4,5])));function Kc({children:e}){return A(e=>e.isAuthenticated())?e:(0,U.jsx)(c,{to:`/login`,replace:!0})}function qc({children:e}){return A(e=>e.isAuthenticated())?(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):e}
2function Jc({children:e}){let t=A(e=>e.isAuthenticated()),n=A(e=>e.isPlatformAdmin());return t?n?e:(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):(0,U.jsx)(c,{to:`/login`,replace:!0})}function Yc({children:e}){let t=A(e=>e.isAuthenticated()),n=A(e=>e.isAdmin);return t?n()?e:(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):(0,U.jsx)(c,{to:`/login`,replace:!0})}function Q({module:e,children:t}){let n=A(e=>e.isAuthenticated()),r=A(e=>e.hasModule);return n?r(e)?t:(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):(0,U.jsx)(c,{to:`/login`,replace:!0})}function Xc({to:e}){let{search:t}=p();return(0,U.jsx)(c,{to:`${e}${t}`,replace:!0})}function $({children:e}){let t=A(e=>e.isAuthenticated()),n=A(e=>e.isViewer);return t?n()?(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):e:(0,U.jsx)(c,{to:`/login`,replace:!0})}function Zc(){return(0,B.useEffect)(()=>{window.location.replace(`/`)},[]),(0,U.jsx)($c,{})}function Qc(){return A(e=>e.isAuthenticated())?(0,U.jsx)(c,{to:`/dashboard`,replace:!0}):(0,U.jsx)(Zc,{})}function $c(){return(0,U.jsx)(`div`,{className:`min-h-[40vh] flex items-center justify-center text-surface-400`,children:(0,U.jsx)(`span`,{className:`w-6 h-6 rounded-full border-2 border-surface-300 border-t-brand-600 animate-spin`})})}function el(){return(0,U.jsx)(ze,{children:(0,U.jsxs)(B.Suspense,{fallback:(0,U.jsx)($c,{}),children:[(0,U.jsx)(cs,{}),(0,U.jsxs)(o,{children:[(0,U.jsx)(i,{path:`/login`,element:(0,U.jsx)(qc,{children:(0,U.jsx)(ds,{})})}),(0,U.jsx)(i,{path:`/register`,element:(0,U.jsx)(qc,{children:(0,U.jsx)(fs,{})})}),(0,U.jsx)(i,{path:`/checkout`,element:(0,U.jsx)(ps,{})}),(0,U.jsx)(i,{path:`/verify-email`,element:(0,U.jsx)(ms,{})}),(0,U.jsx)(i,{path:`/forgot-password`,element:(0,U.jsx)(qc,{children:(0,U.jsx)(hs,{})})}),(0,U.jsx)(i,{path:`/reset-password`,element:(0,U.jsx)(qc,{children:(0,U.jsx)(gs,{})})}),(0,U.jsx)(i,{path:`/legal/:type`,element:(0,U.jsx)(Gc,{})}),(0,U.jsx)(i,{element:(0,U.jsx)(Kc,{children:(0,U.jsx)(ts,{})}),children:(0,U.jsxs)(i,{element:(0,U.jsx)(rs,{}),children:[(0,U.jsx)(i,{path:`dashboard`,element:(0,U.jsx)(_s,{})}),(0,U.jsx)(i,{path:`overview`,element:(0,U.jsx)($,{children:(0,U.jsx)(us,{})})}),(0,U.jsx)(i,{path:`compose`,element:(0,U.jsx)($,{children:(0,U.jsx)(ks,{})})}),(0,U.jsx)(i,{path:`compose/graphics`,element:(0,U.jsx)($,{children:(0,U.jsx)(ks,{initialType:`graphics`})})}),(0,U.jsx)(i,{path:`compose/shop`,element:(0,U.jsx)($,{children:(0,U.jsx)(Ps,{})})}),(0,U.jsx)(i,{path:`voice-diff`,element:(0,U.jsx)($,{children:(0,U.jsx)(ls,{})})}),(0,U.jsx)(i,{path:`brand-kit`,element:(0,U.jsx)(Is,{})}),(0,U.jsx)(i,{path:`interview`,element:(0,U.jsx)($,{children:(0,U.jsx)(Ls,{})})}),(0,U.jsx)(i,{path:`credits`,element:(0,U.jsx)(Rs,{})}),(0,U.jsx)(i,{path:`autopilot`,element:(0,U.jsx)(zs,{})}),(0,U.jsx)(i,{path:`highlights`,element:(0,U.jsx)(Bs,{})}),(0,U.jsx)(i,{path:`shop-highlights`,element:(0,U.jsx)(Fs,{})}),(0,U.jsx)(i,{path:`trend-radar`,element:(0,U.jsx)(Vs,{})}),(0,U.jsx)(i,{path:`agent`,element:(0,U.jsx)(Ws,{})}),(0,U.jsx)(i,{path:`zitat`,element:(0,U.jsx)(Hs,{})}),(0,U.jsx)(i,{path:`competitors`,element:(0,U.jsx)(Gs,{})}),(0,U.jsx)(i,{path:`content-gap`,element:(0,U.jsx)(Ks,{})}),(0,U.jsx)(i,{path:`outliers`,element:(0,U.jsx)(qs,{})}),(0,U.jsx)(i,{path:`sovereignty`,element:(0,U.jsx)(Yc,{children:(0,U.jsx)(Us,{})})}),(0,U.jsx)(i,{path:`inbox`,element:(0,U.jsx)(Js,{})}),(0,U.jsx)(i,{path:`leads`,element:(0,U.jsx)(Ys,{})}),(0,U.jsx)(i,{path:`assistant`,element:(0,U.jsx)($,{children:(0,U.jsx)(Xs,{})})}),(0,U.jsx)(i,{path:`video`,element:(0,U.jsx)(Xc,{to:`/video-studio`})}),(0,U.jsx)(i,{path:`video-studio`,element:(0,U.jsx)($,{children:(0,U.jsx)(Zs,{})})}),(0,U.jsx)(i,{path:`video-montage`,element:(0,U.jsx)($,{children:(0,U.jsx)(Qs,{})})}),(0,U.jsx)(i,{path:`video-kuerzen`,element:(0,U.jsx)($,{children:(0,U.jsx)($s,{})})}),(0,U.jsx)(i,{path:`broll`,element:(0,U.jsx)($,{children:(0,U.jsx)(ec,{})})}),(0,U.jsx)(i,{path:`layouts`,element:(0,U.jsx)(Os,{})}),(0,U.jsx)(i,{path:`insights`,element:(0,U.jsx)(tc,{})}),(0,U.jsx)(i,{path:`articles`,element:(0,U.jsx)(vs,{})}),(0,U.jsx)(i,{path:`articles/new`,element:(0,U.jsx)(ys,{})}),(0,U.jsx)(i,{path:`articles/:id`,element:(0,U.jsx)(bs,{})}),(0,U.jsx)(i,{path:`articles/:id/edit`,element:(0,U.jsx)(ys,{})}),(0,U.jsx)(i,{path:`media`,element:(0,U.jsx)(Q,{module:`content`,children:(0,U.jsx)(xs,{})})}),(0,U.jsx)(i,{path:`posts`,element:(0,U.jsx)(As,{})}),(0,U.jsx)(i,{path:`shops`,element:(0,U.jsx)(js,{})}),(0,U.jsx)(i,{path:`crms`,element:(0,U.jsx)(Ms,{})}),(0,U.jsx)(i,{path:`social`,element:(0,U.jsx)(Ss,{})}),(0,U.jsx)(i,{path:`social-accounts`,element:(0,U.jsx)(c,{to:`/social`,replace:!0})}),(0,U.jsx)(i,{path:`website`,element:(0,U.jsx)(Ns,{})}),(0,U.jsx)(i,{path:`calendar`,element:(0,U.jsx)(Cs,{})}),(0,U.jsx)(i,{path:`analytics`,element:(0,U.jsx)(ws,{})}),(0,U.jsx)(i,{path:`settings`,element:(0,U.jsx)(Yc,{children:(0,U.jsx)(Ts,{})})}),(0,U.jsx)(i,{path:`referrals`,element:(0,U.jsx)(Es,{})}),(0,U.jsx)(i,{path:`site-design`,element:(0,U.jsx)(Ds,{})}),(0,U.jsx)(i,{path:`billing`,element:(0,U.jsx)(nc,{})}),(0,U.jsx)(i,{path:`ads/dashboard`,element:(0,U.jsx)(c,{to:`/dashboard`,replace:!0})}),(0,U.jsx)(i,{path:`ads/campaigns`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(rc,{})})}),(0,U.jsx)(i,{path:`ads/campaigns/:id`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(ac,{})})}),(0,U.jsx)(i,{path:`ads/wizard`,element:(0,U.jsx)(c,{to:`/ads/wizard/budget`,replace:!0})}),(0,U.jsx)(i,{path:`ads/wizard/budget`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(oc,{})})}),(0,U.jsx)(i,{path:`ads/ads`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(sc,{})})}),(0,U.jsx)(i,{path:`ads/creative-studio`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(ic,{})})}),(0,U.jsx)(i,{path:`ads/keywords`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(cc,{})})}),(0,U.jsx)(i,{path:`ads/audiences`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(lc,{})})}),(0,U.jsx)(i,{path:`ads/recommendations`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(uc,{})})}),(0,U.jsx)(i,{path:`ads/conversion-actions`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(dc,{})})}),(0,U.jsx)(i,{path:`ads/shared-budgets`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(fc,{})})}),(0,U.jsx)(i,{path:`ads/google-recommendations`,element:(0,U.jsx)(c,{to:`/ads/recommendations`,replace:!0})}),(0,U.jsx)(i,{path:`ads/rules`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(pc,{})})}),(0,U.jsx)(i,{path:`ads/experiments`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(mc,{})})}),(0,U.jsx)(i,{path:`ads/cockpit`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(hc,{})})}),(0,U.jsx)(i,{path:`ads/proposals`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(gc,{})})}),(0,U.jsx)(i,{path:`ads/reporting`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(_c,{})})}),(0,U.jsx)(i,{path:`ads/funnel`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(vc,{})})}),(0,U.jsx)(i,{path:`ads/ad-accounts`,element:(0,U.jsx)(Xc,{to:`/social`})}),(0,U.jsx)(i,{path:`ad-accounts`,element:(0,U.jsx)(Xc,{to:`/social`})}),(0,U.jsx)(i,{path:`ads/revenue-sources`,element:(0,U.jsx)(Xc,{to:`/shops`})}),(0,U.jsx)(i,{path:`revenue-sources`,element:(0,U.jsx)(Xc,{to:`/shops`})}),(0,U.jsx)(i,{path:`ads/guides/shopware-attribution`,element:(0,U.jsx)(Q,{module:`ads`,children:(0,U.jsx)(yc,{})})})]})}),(0,U.jsxs)(i,{path:`/admin`,element:(0,U.jsx)(Jc,{children:(0,U.jsx)(as,{})}),children:[(0,U.jsx)(i,{index:!0,element:(0,U.jsx)(bc,{})}),(0,U.jsx)(i,{path:`tenants`,element:(0,U.jsx)(xc,{})}),(0,U.jsx)(i,{path:`users`,element:(0,U.jsx)(Sc,{})}),(0,U.jsx)(i,{path:`invoices`,element:(0,U.jsx)(Cc,{})}),(0,U.jsx)(i,{path:`legal`,element:(0,U.jsx)(wc,{})}),(0,U.jsx)(i,{path:`version`,element:(0,U.jsx)(Tc,{})}),(0,U.jsx)(i,{path:`tone-tags`,element:(0,U.jsx)(Ec,{})}),(0,U.jsx)(i,{path:`ai-models`,element:(0,U.jsx)(Dc,{})}),(0,U.jsx)(i,{path:`ai-stats`,element:(0,U.jsx)(Oc,{})}),(0,U.jsx)(i,{path:`image-pool`,element:(0,U.jsx)(kc,{})}),(0,U.jsx)(i,{path:`credit-costs`,element:(0,U.jsx)(Ac,{})}),(0,U.jsx)(i,{path:`errors`,element:(0,U.jsx)(jc,{})}
2),(0,U.jsx)(i,{path:`support`,element:(0,U.jsx)(Mc,{})}),(0,U.jsx)(i,{path:`inbox`,element:(0,U.jsx)(Nc,{})}),(0,U.jsx)(i,{path:`crons`,element:(0,U.jsx)(Pc,{})}),(0,U.jsx)(i,{path:`branding`,element:(0,U.jsx)(Fc,{})}),(0,U.jsx)(i,{path:`seller-billing`,element:(0,U.jsx)(Ic,{})}),(0,U.jsx)(i,{path:`payments`,element:(0,U.jsx)(Lc,{})}),(0,U.jsx)(i,{path:`channels`,element:(0,U.jsx)(Rc,{})}),(0,U.jsx)(i,{path:`trends`,element:(0,U.jsx)(zc,{})}),(0,U.jsx)(i,{path:`posts`,element:(0,U.jsx)(Bc,{})}),(0,U.jsx)(i,{path:`leads`,element:(0,U.jsx)(Wc,{})}),(0,U.jsx)(i,{path:`follower-tracker`,element:(0,U.jsx)(Vc,{})}),(0,U.jsx)(i,{path:`partners`,element:(0,U.jsx)(Hc,{})}),(0,U.jsx)(i,{path:`demo`,element:(0,U.jsx)(Uc,{})})]}),(0,U.jsx)(i,{path:`*`,element:(0,U.jsx)(Qc,{})})]})]})})}Ie(),pe(),window.addEventListener(`vite:preloadError`,e=>{let t=Number(sessionStorage.getItem(`cf-chunk-reload-at`)||0);Date.now()-t<1e4||(sessionStorage.setItem(`cf-chunk-reload-at`,String(Date.now())),e.preventDefault(),window.location.reload())});function tl(){let e=a();return(0,B.useEffect)(()=>(ge(e),()=>ge(null)),[e]),null}Oe.createRoot(document.getElementById(`root`)).render((0,U.jsx)(B.StrictMode,{children:(0,U.jsx)(C,{client:O,children:(0,U.jsxs)(f,{children:[(0,U.jsx)(tl,{}),(0,U.jsx)(el,{}),(0,U.jsx)(x,{position:`top-right`,toastOptions:{duration:4e3,style:{background:`#252840`,color:`#e2e5f0`,borderRadius:`12px`,border:`1px solid #3a3d55`,fontSize:`14px`}}})]})})}));export{gn as $,pr as A,ct as At,Jn as B,Er as C,St as Ct,vr as D,mt as Dt,br as E,gt as Et,ir as F,Qe as Ft,Rn as G,Wn as H,nr as I,Xe as It,On as J,In as K,er as L,Ke as Lt,ur as M,it as Mt,cr as N,nt as Nt,K as O,ft as Ot,or as P,et as Pt,vn as Q,Qn as R,We as Rt,q as S,wt as St,Sr as T,vt as Tt,Hn as U,Kn as V,Bn as W,Sn as X,wn as Y,bn as Z,zr as _,Pt as _t,ha as a,an as at,jr as b,Ot as bt,Ri as c,Qt as ct,ei as d,Kt as dt,mn as et,Xr as f,Wt as ft,Vr as g,It as gt,Ur as h,Rt as ht,_a as i,sn as it,G as j,ot as jt,hr as k,ut as kt,li as l,Xt as lt,Gr as m,Bt as mt,Za as n,dn as nt,Qi as o,nn as ot,qr as p,Ht as pt,Mn as q,xa as r,ln as rt,Vi as s,en as st,Ko as t,W as tt,ii as u,Jt as ut,Lr as v,Mt as vt,wr as w,bt as wt,kr as x,Et as xt,Fr as y,At as yt,Xn as z,V as zt};
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.