1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/C1sDIVLv2.js","assets/Bbxag9Mn.js","assets/DdS3i1vt.js","assets/DpGEqr_R.js","assets/DKSMqoWe.js","assets/B3l7mx48.css","assets/LCyGNNMk.js","assets/CdLzR3uq.js","assets/C1YBRc5n.js","assets/DVeboIae.js","assets/8GghGlG8.js","assets/DgCaTn7z.js","assets/DcmUAudm.js","assets/C54SVKT_.js","assets/BWnN45I5.js","assets/CF8ZNmxR2.js","assets/BIflwe132.js","assets/CblDfcem.js","assets/B8orEGOF2.js","assets/Bz_IhOjP.js","assets/DcJNdpZ42.js","assets/BpijwphO.js","assets/-tzA8xmx2.js","assets/neTNmC0j.js","assets/REb7VKt_.js","assets/AcirhPcQ.js","assets/hKRZwwKj.js","assets/BvVOUs-02.js","assets/DWiHULoD2.js","assets/Bg9bbV1m.js","assets/BBTN2YpU2.js","assets/DPgKcZbW.js","assets/uk0vS2Pn2.js","assets/BEJSTErc.js","assets/CpLZMyxc.js","assets/Bq8Efofs2.js","assets/rExEq-Ar2.js","assets/QNK6UnUz2.js","assets/DPcGnzTP2.js","assets/DknJxl9Q.js","assets/CexpIumw.js","assets/C2a1Wk4x.js","assets/B7hBtmTD.js","assets/B-5mcytn.js","assets/DyA5OB6u.js","assets/DelWcisK.js","assets/Rjy2HMPg.js","assets/geXW8bCj.js","assets/DZgVSNTn.js","assets/C_j9Cd9D.js","assets/Duh5dnmS.js","assets/CNwSyGOv.js","assets/5RaCYbhg.js","assets/C0TFom1P.js","assets/Dx8mk5W5.js","assets/CLbbYhGx.js","assets/4XFN28Fd.js","assets/DcdXn-Mz2.js","assets/DnDvKuYy.js","assets/jFtZ7YOQ2.js","assets/BSmeP8Qg.js","assets/mwodE9d3.js","assets/CChBuVQX2.js","assets/AM4M_HjM.js","assets/DehSf-Xf2.js","assets/verRBsFt.js","assets/BCem1_0X2.js","assets/Dq_wBDP82.js","assets/Apjs38NJ.js","assets/CWnJ7a4m2.js","assets/Bh1dvv_v2.js","assets/C_WR1Iqv.js","assets/CHAb7F8R.js","assets/CLWlQhmm.css","assets/GOnMqwbt.js","assets/DKN0O7ra.js","assets/DSghTrZq2.js","assets/BRyAbvaS.js","assets/BVPTpTzM.js","assets/CLapvluq.js","assets/BD1mHGB_2.js","assets/B6LQdhGo2.js","assets/Bfbr1oiy2.js"])))=>i.map(i=>d[i]); 2import{r as e}from"./DdS3i1vt.js";import{A as t,At as n,B as r,Bn as i,Bt as a,Dn as o,Dt as s,En as c,Et as l,Fn as u,G as d,Gt as f,H as p,Hn as m,Ht as h,I as g,In as _,It as v,Kn as y,Kt as b,Lt as x,Mt as S,N as C,Nt as w,P as T,Pn as E,Q as D,Qn as ee,Qt as O,R as te,Rn as k,Sn as ne,T as re,Tt as ie,U as ae,Un as oe,Vn as se,Vt as ce,Wn as A,X as le,Xt as ue,Y as de,Yt as fe,_t as pe,a as me,b as he,bn as ge,d as _e,et as ve,f as ye,g as be,hr as xe,ht as Se,i as Ce,in as we,j as Te,jn as Ee,jt as De,kn as Oe,lr as ke,mn as Ae,o as j,on as je,ot as Me,pn as Ne,pr as Pe,qn as Fe,qt as Ie,r as M,rt as Le,s as Re,sn as ze,sr as Be,tr as Ve,u as He,ur as Ue,v as We,vn as Ge,x as Ke,xn as qe,y as N,yn as Je,z as Ye,zt as Xe}from"./DKSMqoWe.js";import{a as Ze,c as Qe,d as $e,f as P,i as F,l as I,n as et,o as L,p as tt,r as R,s as nt,t as rt,u as it}from"./DpGEqr_R.js";import{a as z,i as B,o as at}from"./Bbxag9Mn.js";import{n as V}from"./LCyGNNMk.js";import{a as ot,i as st,r as H,s as ct,t as U}from"./DVeboIae.js";import{c as lt,i as ut,n as W,s as dt,t as ft}from"./DgCaTn7z.js";import{n as G,t as pt}from"./DcmUAudm.js";import{t as mt}from"./8GghGlG8.js";import{n as ht,t as gt}from"./C54SVKT_.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),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var _t=tt(),K=e(xe(),1),q=rt();function vt({variante:e=`kompakt`,className:t}){let{i18n:n}=V(),[r,i]=(0,K.useState)(!1),a=ot(),o=st.find(e=>e.code===a)||st[0],s=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(!r)return;let e=e=>{s.current&&!s.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),(0,K.useEffect)(()=>
2{if(!r)return;let e=e=>{e.key===`Escape`&&i(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]);let c=e=>{ct(e),i(!1)};return(0,q.jsxs)(`div`,{ref:s,className:M(`relative`,t),children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),"aria-label":`Sprache ändern (aktuell ${o.name})`,className:M(`flex items-center gap-2 px-2.5 py-1.5 rounded-lg text-xs font-medium transition-all`,`bg-white/5 border border-white/10 text-text-secondary`,`hover:bg-white/10 hover:text-text-primary hover:border-white/20`,r&&`bg-white/10 text-text-primary border-white/20`),children:[(0,q.jsx)(we,{className:`w-3.5 h-3.5`}),(0,q.jsx)(`span`,{className:`font-mono`,children:o.flagge}),e===`voll`&&(0,q.jsx)(`span`,{children:o.name})]}),r&&(0,q.jsx)(`div`,{className:`absolute right-0 mt-1 min-w-[160px] rounded-lg border border-white/10 bg-surface shadow-xl z-50 py-1`,children:st.map(e=>{let t=e.code===a;return(0,q.jsxs)(`button`,{type:`button`,onClick:()=>c(e.code),className:M(`w-full flex items-center justify-between gap-3 px-3 py-2 text-sm transition-colors`,t?`bg-petrol-500/15 text-petrol-300`:`text-text-secondary hover:bg-surface-hover hover:text-text-primary`),children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[(0,q.jsx)(`span`,{className:`font-mono text-xs`,children:e.flagge}),(0,q.jsx)(`span`,{children:e.name})]}),t&&(0,q.jsx)(A,{className:`w-3.5 h-3.5`})]},e.code)})})]})}function yt(e,t){if(e.length<8)return{wert:0,text:t(`Zu kurz`),farbe:`bg-danger`};let n=0;return e.length>=12&&n++,/[A-Z]/.test(e)&&/[a-z]/.test(e)&&n++,/\d/.test(e)&&n++,/[^A-Za-z0-9]/.test(e)&&n++,n<=1?{wert:0,text:t(`Schwach`),farbe:`bg-danger`}:n<=2?{wert:1,text:t(`OK`),farbe:`bg-amber-400`}:{wert:2,text:t(`Stark`),farbe:`bg-success`}}function bt(){let{token:e}=it(),t=I(),{benutzer:n,login:r,register:i}=G(),o=H(),[s,c]=(0,K.useState)(`pruefe`),[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(`register`),[h,g]=(0,K.useState)(``),[y,b]=(0,K.useState)(``),[x,S]=(0,K.useState)(``),[C,w]=(0,K.useState)(!1),[T,E]=(0,K.useState)(``),[D,ee]=(0,K.useState)(!1),O=(0,K.useMemo)(()=>yt(y,o),[y,o]),te=y.length>0&&y===x;(0,K.useEffect)(()=>{if(!e){c(`ungueltig`);return}(async()=>{try{let t=await B(`${z()}/api/einladen/${e}`,{},8e3);if(!t.ok){let e=await t.json().catch(()=>({}));console.error(`Einladung prüfen:`,t.status),u(e.fehler??o(`Etwas hat nicht geklappt. Bitte versuch es später erneut.`)),c(`ungueltig`);return}let r=await t.json();f({gueltigkeit_tage:r.gueltigkeit_tage,einloesungen_frei:r.einloesungen_frei});try{localStorage.setItem(`genv_pending_invite`,e)}catch{}n?k():c(`login`)}catch(e){u(e?.message??`Netzwerkfehler`),c(`fehler`)}})()},[e]);let k=async()=>{if(e){c(`aktiviere`);try{let n=await B(`${z()}/api/einladen/${e}/einloesen`,{method:`POST`},1e4);if(!n.ok){let e=await n.json().catch(()=>({}));console.error(`Einlösung:`,n.status),u(e.fehler??o(`Etwas hat nicht geklappt. Bitte versuch es später erneut.`)),c(`fehler`);return}try{localStorage.removeItem(`genv_pending_invite`)}catch{}c(`erfolg`),setTimeout(()=>t(`/`),2500)}catch(e){u(e?.message??`Netzwerkfehler`),c(`fehler`)}}},ne=async e=>{if(e.preventDefault(),E(``),p===`register`){if(y.length<8){E(`Passwort muss mindestens 8 Zeichen haben.`);return}if(y!==x){E(`Die Passwörter stimmen nicht überein.`);return}}ee(!0);try{let e=p===`register`?await i(h,y):await r(h,y);if(e){E(e.fehler??(p===`register`?`Registrierung fehlgeschlagen`:`Login fehlgeschlagen`)),ee(!1);return}k()}catch(e){E(e?.message??`Fehlgeschlagen`),ee(!1)}};return(0,q.jsxs)(`div`,{className:`min-h-screen bg-background flex items-center justify-center p-4`,children:[(0,q.jsx)(`div`,{className:`fixed top-4 right-4 z-20`,children:(0,q.jsx)(vt,{})}),(0,q.jsxs)(`div`,{className:`w-full max-w-md`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 mb-6 justify-center`,children:[(0,q.jsx)(`div`,{className:`w-8 h-8 bg-petrol-500/20 rounded-lg flex items-center justify-center`,children:(0,q.jsx)(a,{className:`w-4 h-4 text-petrol-300`})}),(0,q.jsx)(`span`,{className:`font-semibold text-text-primary`,children:`GenV Reselling`})]}),(0,q.jsxs)(`div`,{className:`bg-surface border border-border rounded-xl shadow-xl p-6 space-y-4`,children:[s===`pruefe`&&(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-6`,children:[(0,q.jsx)(v,{className:`w-8 h-8 text-petrol-300 animate-spin`}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary`,children:o(`Einladungslink wird geprüftâ¦`)})]}),s===`aktiviere`&&(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-6`,children:[(0,q.jsx)(v,{className:`w-8 h-8 text-petrol-300 animate-spin`}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary`,children:o(`Lizenz wird aktiviertâ¦`)})]}),s===`erfolg`&&(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-4 text-center`,children:[(0,q.jsx)(_,{className:`w-12 h-12 text-success`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`font-semibold text-text-primary text-lg`,children:o(`Lizenz aktiviert!`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary mt-1`,children:d?.gueltigkeit_tage?o(`Gültig für {{n}} Tage.`,{n:d.gueltigkeit_tage}):o(`Gültig ohne Ablaufdatum (Lifetime).`)})]}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted`,children:o(`Du wirst gleich zum Dashboard weitergeleitetâ¦`)})]}),s===`ungueltig`&&(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-4 text-center`,children:[(0,q.jsx)(N,{className:`w-10 h-10 text-warning`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`font-semibold text-text-primary`,children:o(`Link nicht mehr gültig`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary mt-1`,children:l})]}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted`,children:o(`Bitte beim Admin einen neuen Link anfordern.`)})]}),s===`fehler`&&(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-4 text-center`,children:[(0,q.jsx)(N,{className:`w-10 h-10 text-danger`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`font-semibold text-text-primary`,children:o(`Einlösung fehlgeschlagen`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary mt-1 break-words`,children:l})]}),(0,q.jsx)(`button`,{onClick:()=>t(`/`),className:`mt-2 px-4 py-2 bg-petrol-500 text-white rounded text-sm hover:bg-petrol-600`,children:o(`Zum Dashboard`)})]}),s===`login`&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`font-semibold text-text-primary mb-1`,children:o(`Einladung annehmen`)}),(0,q.jsxs)(`p`,{className:`text-sm text-text-secondary mb-4`,children:[o(p===`register`?`Erstelle deinen Account, um die Lizenz zu aktivieren.`:`Logge dich ein, um die Lizenz zu aktivieren.`),d?.gueltigkeit_tage?` `+o(`Gültig für {{n}} Tage.`,{n:d.gueltigkeit_tage}):` `+o(`Lifetime-Zugang.`),d&&d.einloesungen_frei>1?` `+o(`Noch {{n}} Plätze verfügbar.`,{n:d.einloesungen_frei}):``]}),(0,q.jsxs)(`form`,{onSubmit:e=>void ne(e),className:`space-y-3`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`einladen-email`,className:`block text-sm font-medium mb-1`,children:o(`E-Mail`)}),(0,q.jsx)(`input`,{type:`email`,id:`einladen-email`,value:h,onChange:e=>g(e.target.value),required:!0,autoFocus:!0,autoComplete:`email`,className:`w-full px-3 py-2 bg-surface-hover border border-border rounded text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-petrol-500`,placeholder:`[email protected]`,disabled:D,"aria-invalid":!!T||void 0,"aria-describedby":T?`einladen-fehler`:void 0})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`einladen-passwort`,className:`block text-sm font-medium mb-1`,children:o(`Passwort`)}
2),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`input`,{type:C?`text`:`password`,id:`einladen-passwort`,value:y,onChange:e=>b(e.target.value),required:!0,autoComplete:p===`register`?`new-password`:`current-password`,className:`w-full px-3 pr-10 py-2 bg-surface-hover border border-border rounded text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-petrol-500`,placeholder:p===`register`?o(`mind. 8 Zeichen`):void 0,disabled:D}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>w(e=>!e),"aria-label":o(C?`Passwort verbergen`:`Passwort anzeigen`),tabIndex:-1,disabled:D,className:`absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary transition-colors disabled:opacity-40`,children:C?(0,q.jsx)(ge,{className:`w-4 h-4`}):(0,q.jsx)(Je,{className:`w-4 h-4`})})]}),p===`register`&&y.length>0&&(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`flex-1 h-1 rounded-full bg-white/5 overflow-hidden`,children:(0,q.jsx)(`div`,{className:`h-full transition-all duration-300 ${O.farbe}`,style:{width:`${(O.wert+1)*33.33}%`}})}),(0,q.jsx)(`span`,{className:`text-[11px] text-text-muted shrink-0`,children:O.text})]})]}),p===`register`&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`einladen-passwort2`,className:`block text-sm font-medium mb-1`,children:o(`Passwort bestätigen`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`input`,{type:C?`text`:`password`,id:`einladen-passwort2`,value:x,onChange:e=>S(e.target.value),required:!0,autoComplete:`new-password`,className:`w-full px-3 pr-10 py-2 bg-surface-hover border border-border rounded text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-petrol-500`,disabled:D}),x.length>0&&(0,q.jsx)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2`,children:te?(0,q.jsx)(A,{className:`w-4 h-4 text-success`}):(0,q.jsx)(j,{className:`w-4 h-4 text-danger`})})]})]}),T&&(0,q.jsx)(`div`,{id:`einladen-fehler`,className:`bg-danger/10 border border-danger/30 rounded p-2 text-sm text-danger`,children:T}),(0,q.jsxs)(`button`,{type:`submit`,disabled:D,className:`press-scale w-full px-4 py-2 bg-petrol-500 text-white rounded text-sm font-medium hover:bg-petrol-600 disabled:opacity-60 flex items-center justify-center gap-2`,children:[D&&(0,q.jsx)(v,{className:`w-4 h-4 animate-spin`}),o(D?p===`register`?`Account wird erstelltâ¦`:`Einloggenâ¦`:p===`register`?`Registrieren & Lizenz aktivieren`:`Einloggen & Lizenz aktivieren`)]})]}),(0,q.jsx)(`p`,{className:`mt-4 text-xs text-text-muted text-center`,children:p===`register`?(0,q.jsxs)(q.Fragment,{children:[o(`Schon einen Account?`),` `,(0,q.jsx)(`button`,{type:`button`,onClick:()=>{m(`login`),E(``),S(``)},className:`text-petrol-300 hover:underline`,children:o(`Stattdessen einloggen`)})]}):(0,q.jsxs)(q.Fragment,{children:[o(`Noch kein Account?`),` `,(0,q.jsx)(`button`,{type:`button`,onClick:()=>{m(`register`),E(``)},className:`text-petrol-300 hover:underline`,children:o(`Jetzt registrieren`)})]})})]})]})]})]})}var xt=` 3 @keyframes voltKnopfPuls { 4 0% { transform: scale(.7); opacity: .7 } 5 70%, 100% { transform: scale(1.5); opacity: 0 } 6 } 7 @media (prefers-reduced-motion: reduce) { 8 [style*="voltKnopfPuls"] { animation: none !important } 9 } 10`;function St({kompakt:e=!1}){let t=H(),n=I(),{pathname:r}=Qe(),[i,a]=(0,K.useState)(null),[o,s]=(0,K.useState)(0);return(0,K.useEffect)(()=>{let e=!0,t=async()=>{if(!document.hidden)try{let t=await fetch(`${z()}/api/volt/status`,{credentials:`include`});if(!t.ok||!e)return;let n=await t.json();a(!!n?.aktiv),s(Number(n?.braucht_dich)||0)}catch{}};t();let n=setInterval(t,3e4);return()=>{e=!1,clearInterval(n)}},[]),r.startsWith(`/volt-modus`)?null:e?(0,q.jsxs)(`button`,{onClick:()=>n(`/volt-modus`),title:t(`In den Volt-Modus wechseln`),className:`ml-3 flex h-8 shrink-0 items-center gap-1.5 rounded-full border border-border-subtle 11 bg-surface/70 px-2.5 text-[11.5px] font-medium text-text-secondary 12 transition-opacity duration-150 active:opacity-70`,children:[(0,q.jsxs)(`span`,{className:`relative flex h-[16px] w-[16px] items-center justify-center`,children:[(0,q.jsx)(Le,{size:12,className:i?`text-petrol-300`:`text-text-muted`}
12),i&&(0,q.jsx)(`span`,{className:`pointer-events-none absolute inset-0 rounded-full border border-petrol-400`,style:{animation:`voltKnopfPuls 2.4s cubic-bezier(.77,0,.175,1) infinite`}})]}),(0,q.jsx)(`span`,{className:`whitespace-nowrap`,children:t(`Volt-Modus`)}),o>0&&(0,q.jsx)(`span`,{className:`rounded-full bg-warning px-1.5 text-[10px] font-bold text-[#1a1300]`,children:o}),(0,q.jsx)(`style`,{children:xt})]}):(0,q.jsxs)(`button`,{onClick:()=>n(`/volt-modus`),title:t(`In den Volt-Modus wechseln`),style:{top:`calc(var(--mp3-oben, 0px) + 12px)`},className:`group fixed left-1/2 z-50 flex h-[42px] -translate-x-1/2 items-center rounded-full 13 px-2 text-[12.5px] font-medium text-text-secondary 14 transition-[color] duration-150 hover:text-text-primary`,children:[(0,q.jsxs)(`span`,{className:`pointer-events-none flex h-[34px] items-center gap-2.5 rounded-full 15 border border-border-subtle bg-surface/85 pl-3 pr-3.5 backdrop-blur-md 16 transition-[transform,border-color] duration-150 17 group-hover:border-petrol-400/60 group-active:scale-[.97]`,children:[(0,q.jsxs)(`span`,{className:`relative flex h-[18px] w-[18px] items-center justify-center`,children:[(0,q.jsx)(Le,{size:13,className:i?`text-petrol-300`:`text-text-muted`}),i&&(0,q.jsx)(`span`,{className:`pointer-events-none absolute inset-0 rounded-full border border-petrol-400`,style:{animation:`voltKnopfPuls 2.4s cubic-bezier(.77,0,.175,1) infinite`}})]}),(0,q.jsxs)(`span`,{className:`whitespace-nowrap`,children:[t(`Volt-Modus`),(0,q.jsx)(`span`,{className:`ml-2 inline-block min-w-[34px] text-text-muted`,children:i===null?``:t(i?`läuft`:`aus`)})]}),o>0&&(0,q.jsx)(`span`,{className:`ml-0.5 rounded-full bg-warning px-1.5 text-[10.5px] font-bold text-[#1a1300]`,children:o})]}),(0,q.jsx)(`style`,{children:xt})]})}function Ct(){let e=H(),[t,n]=(0,K.useState)(!1),[r,i]=(0,K.useState)(!1),[a,o]=(0,K.useState)(``),[s,c]=(0,K.useState)(!1),l=(0,K.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch(`${z()}/api/unterkonten`,{credentials:`include`}).then(e=>e.ok?e.json():null).catch(()=>null),fetch(`${z()}/api/auth/me`,{credentials:`include`}).then(e=>e.ok?e.json():null).catch(()=>null)]);n(!!e?.im_unterkonto),i(!!e?.rueckweg_da),o(t?.email??t?.user?.email??``)}catch{}},[]);return(0,K.useEffect)(()=>
17{l()},[l]),t?(0,q.jsx)(`div`,{className:`sticky top-0 z-[60] w-full bg-amber-500/15 border-b border-amber-500/40 backdrop-blur`,children:(0,q.jsxs)(`div`,{className:`max-w-6xl mx-auto px-4 py-2 flex items-center justify-between gap-3`,children:[(0,q.jsx)(`span`,{className:`text-xs md:text-sm text-amber-200 font-medium`,children:e(r?`Du arbeitest gerade im Unterkonto {{email}} â nicht in deinem Hauptkonto.`:`Du arbeitest im Unterkonto {{email}}. Diese Sitzung ist aus keinem Wechsel entstanden â zurueck geht es ueber Abmelden.`,{email:a})}),r?(0,q.jsxs)(`button`,{onClick:async()=>{c(!0);try{(await fetch(`${z()}/api/unterkonten/zurueck`,{method:`POST`,credentials:`include`})).ok&&(window.location.href=`/`)}finally{c(!1)}},disabled:s,className:`flex items-center gap-2 shrink-0 px-3 py-1 rounded-lg text-xs border border-amber-500/40 text-amber-100 hover:bg-amber-500/20 disabled:opacity-50`,children:[(0,q.jsx)(Ue,{className:`w-3.5 h-3.5`}),e(s?`Wechsleâ¦`:`Zurueck ins Hauptkonto`)]}):(0,q.jsxs)(`button`,{onClick:async()=>{c(!0);try{await fetch(`${z()}/api/auth/abmelden`,{method:`POST`,credentials:`include`})}catch{}finally{window.location.href=`/anmelden`}},disabled:s,className:`flex items-center gap-2 shrink-0 px-3 py-1 rounded-lg text-xs border border-amber-500/40 text-amber-100 hover:bg-amber-500/20 disabled:opacity-50`,children:[(0,q.jsx)(S,{className:`w-3.5 h-3.5`}),e(`Abmelden und als Hauptkonto anmelden`)]})]})}):null}function wt(){let e=H(),[t,n]=(0,K.useState)(!1),[r,i]=(0,K.useState)(!1),a=(0,K.useCallback)(async()=>{try{let e=await fetch(`${z()}/api/unterkonten`,{credentials:`include`});if(!e.ok)return;n(!!(await e.json())?.im_unterkonto)}catch{}},[]);return(0,K.useEffect)(()=>{a()},[a]),(0,q.jsx)(`div`,{className:`sticky top-0 z-[70] w-full bg-slate-900/95 border-b border-white/10 backdrop-blur`,children:(0,q.jsxs)(`div`,{className:`max-w-6xl mx-auto px-4 py-2 flex items-center justify-end gap-2`,children:[t&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`mr-auto text-xs text-amber-300`,children:e(`Du bist in einem Unterkonto. Es hat kein eigenes Passwort â der Rueckweg fuehrt nur hierueber.`)}),(0,q.jsxs)(`button`,{onClick:async()=>{i(!0);try{(await fetch(`${z()}/api/unterkonten/zurueck`,{method:`POST`,credentials:`include`})).ok&&(window.location.href=`/`)}finally{i(!1)}},disabled:r,className:`flex items-center gap-2 px-3 py-1 rounded-lg text-xs border border-amber-500/40 text-amber-100 hover:bg-amber-500/20 disabled:opacity-50`,children:[(0,q.jsx)(Ue,{className:`w-3.5 h-3.5`}),e(`Zurueck ins Hauptkonto`)]})]}),(0,q.jsxs)(`button`,{onClick:async()=>{i(!0);try{await fetch(`${z()}/api/auth/abmelden`,{method:`POST`,credentials:`include`})}catch{}finally{window.location.href=`/anmelden`}},disabled:r,className:`flex items-center gap-2 px-3 py-1 rounded-lg text-xs border border-white/15 text-slate-300 hover:bg-white/10 disabled:opacity-50`,children:[(0,q.jsx)(S,{className:`w-3.5 h-3.5`}),e(`Abmelden`)]})]})})}function Tt({state:e,onClose:t,onChange:n}){if((0,K.useEffect)(()=>{if(!e)return;let r=r=>{r.key===`Escape`&&t(),r.key===`ArrowRight`&&e.bilder.length>1&&n((e.index+1)%e.bilder.length),r.key===`ArrowLeft`&&e.bilder.length>1&&n((e.index-1+e.bilder.length)%e.bilder.length)};return window.addEventListener(`keydown`,r),document.body.style.overflow=`hidden`,()=>{window.removeEventListener(`keydown`,r),document.body.style.overflow=``}},[e,t,n]),!e)return null;let r=e.bilder[e.index],i=e.bilder.length>1;return(0,q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/90 animate-backdrop-in`,onClick:t,children:(0,q.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,className:`relative flex items-center justify-center animate-modal-in`,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(`img`,{src:r,alt:`Vollansicht`,className:`max-w-[90vw] max-h-[90vh] object-contain rounded-lg shadow-2xl`}),(0,q.jsx)(`button`,{onClick:t,"aria-label":`SchlieÃen`,className:`absolute -top-3 -right-3 bg-neutral-800 hover:bg-neutral-700 text-white rounded-full p-1.5 shadow-lg transition-colors`,children:(0,q.jsx)(j,{className:`w-5 h-5`})}
17),i&&(0,q.jsx)(`button`,{onClick:()=>n((e.index-1+e.bilder.length)%e.bilder.length),"aria-label":`Vorheriges Bild`,className:`absolute left-2 top-1/2 -translate-y-1/2 bg-black/60 hover:bg-black/80 text-white rounded-full p-2 transition-colors`,children:(0,q.jsx)(m,{className:`w-6 h-6`})}),i&&(0,q.jsx)(`button`,{onClick:()=>n((e.index+1)%e.bilder.length),"aria-label":`Nächstes Bild`,className:`absolute right-2 top-1/2 -translate-y-1/2 bg-black/60 hover:bg-black/80 text-white rounded-full p-2 transition-colors`,children:(0,q.jsx)(se,{className:`w-6 h-6`})}),i&&(0,q.jsxs)(`div`,{className:`absolute bottom-2 left-1/2 -translate-x-1/2 bg-black/60 text-white text-xs px-2 py-1 rounded-full`,children:[e.index+1,` / `,e.bilder.length]})]})})}var Et=(0,K.createContext)({openLightbox:()=>{}});function Dt(){return(0,K.useContext)(Et)}var Ot=`m07_platform_filter`,kt=3e4,At=1e4,jt=`m07-plattform-session-status`,Mt=`/api/plattform-session/status`,Nt=(0,K.createContext)(null);function Pt({children:e}){let[t,n]=(0,K.useState)(()=>{try{let e=localStorage.getItem(Ot);if(e===`vinted`||e===`ebay`||e===`all`)return e}catch{}return`all`}),r=(0,K.useCallback)(e=>{n(e);try{localStorage.setItem(Ot,e)}catch{}},[]),[i,a]=(0,K.useState)({}),[o,s]=(0,K.useState)(!0),c=(0,K.useRef)(null),l=(0,K.useRef)(0),u=(0,K.useRef)(null),d=(0,K.useCallback)(async()=>{u.current?.abort();let e=new AbortController;u.current=e;let t=setTimeout(()=>e.abort(),At);try{let n=await fetch(`${z()}${Mt}`,{signal:e.signal});if(clearTimeout(t),!n.ok)return!1;let r=await n.json();a(r),l.current=Date.now();try{c.current?.postMessage({type:`status`,data:r,at:l.current})}catch{}return!0}catch(e){return clearTimeout(t),e?.name!==`AbortError`&&console.warn(`[PlatformContext] Status-Fetch fehlgeschlagen:`,e?.message??e),!1}},[]),f=(0,K.useCallback)(async()=>{await d()},[d]);(0,K.useEffect)(()=>{let e=null,t=!0,n=0,r=0,i=()=>{e||(s(!0),d(),e=setInterval(async()=>{if(!t||(r++,r%Math.min(2**n,5)!==0))return;let e=await d();t&&(n=e?0:n+1)},kt))},a=()=>{e&&(clearInterval(e),e=null),s(!1)},o=()=>{document.hidden?a():i()};return document.addEventListener(`visibilitychange`,o),document.hidden?d():i(),()=>{t=!1,document.removeEventListener(`visibilitychange`,o),a(),u.current?.abort()}},[d]),(0,K.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(jt);return c.current=e,e.onmessage=e=>{let t=e.data;t.type===`status`&&t.data&&t.at&&t.at>l.current&&(a(t.data),l.current=t.at)},()=>{e.close(),c.current=null}},[]);let p=(0,K.useMemo)(()=>({platform:t,setPlatform:r,sessionStatus:i,isPolling:o,refreshNow:f}),[t,r,i,o,f]);return(0,q.jsx)(Nt.Provider,{value:p,children:e})}function Ft(){let e=(0,K.useContext)(Nt);if(!e)throw Error(`usePlatformContext muss innerhalb von <PlatformProvider> genutzt werden`);return e}function It(){let{sessionStatus:e,isPolling:t,refreshNow:n}=Ft();return{status:e,vinted:e.vinted??null,ebay:e.ebay??null,isPolling:t,refreshNow:n}}var Lt=`mp3-toast`;function Rt(e,t,n){if(typeof window>`u`)return;let r={text:t,typ:e,dauer:n};window.dispatchEvent(new CustomEvent(Lt,{detail:r}))}var zt={fehler:(e,t)=>Rt(`fehler`,e,t),erfolg:(e,t)=>Rt(`erfolg`,e,t),info:(e,t)=>Rt(`info`,e,t),warnung:(e,t)=>Rt(`warnung`,e,t)},Bt=Lt,J=z,Vt=`mp3_wizard_schritt`,Ht=[`welcome`,`lizenz`,`stammdaten`,`vinted`,`ebay`,`ebay-vorbereitung`,`volt`,`ki-kosten`,`tour-wahl`];function Ut(e){return e===`vinted_ebay`?[`welcome`,`vinted`,`ebay`,`ebay-vorbereitung`,`volt`,`ki-kosten`,`tour-wahl`]:[`welcome`,`vinted`,`volt`,`ki-kosten`,`tour-wahl`]}function Wt({beiAbschluss:e,startSchritt:t}){let[n,r]=(0,K.useState)(()=>{let e=localStorage.getItem(Vt);return e&&Ht.includes(e)?e:t&&Ht.includes(t)?t:`welcome`}),[i,a]=(0,K.useState)(null);(0,K.useEffect)(()=>{let e=new AbortController;
17return B(`${J()}/api/einstellungen`,{signal:e.signal,credentials:`include`},6e3).then(e=>e.ok?e.json():null).then(e=>{let t=e?.verkaufskanal;(t===`vinted`||t===`vinted_ebay`)&&a(t)}).catch(()=>{}),()=>e.abort()},[]);let o=(0,K.useCallback)(async e=>{a(e);try{await fetch(`${J()}/api/einstellungen`,{method:`PUT`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({verkaufskanal:e})})}catch{zt.fehler(U(`Deine Auswahl konnte nicht gespeichert werden â du kannst sie später unter Einstellungen ändern.`))}},[]),s=(0,K.useMemo)(()=>Ut(i),[i]);(0,K.useEffect)(()=>{if(!s.includes(n)){let e=Ht.indexOf(n);r(Ht.slice(e+1).find(e=>s.includes(e))??`welcome`)}},[s,n]),(0,K.useEffect)(()=>{localStorage.setItem(Vt,n),fetch(`${J()}/api/benutzer-status`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({onboarding_schritt:n})}).catch(()=>{})},[n]);let c=(0,K.useCallback)(()=>{let e=s.indexOf(n);e<s.length-1&&r(s[e+1])},[n,s]),l=(0,K.useCallback)(()=>{let e=s.indexOf(n);e>0&&r(s[e-1])},[n,s]),u=(0,K.useCallback)(async()=>{await fetch(`${J()}/api/benutzer-status/onboarding-fertig`,{method:`POST`}).catch(()=>{}),localStorage.removeItem(Vt),localStorage.setItem(`mp3_intro_tour_pending`,`1`),e(),window.location.assign(`/`)},[e]);return(0,q.jsxs)(`div`,{className:`fixed inset-0 z-[9999] bg-background flex flex-col`,children:[(0,q.jsx)(`div`,{className:`absolute top-3 right-3 z-20`,children:(0,q.jsx)(vt,{})}),n!==`welcome`&&(0,q.jsx)(Jt,{aktuell:n,reihenfolge:s}),(0,q.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[n===`welcome`&&(0,q.jsx)(Xt,{weiter:c,kanal:i,kanalWaehlen:o}),n===`lizenz`&&(0,q.jsx)(Qt,{weiter:c,zurueck:l}),n===`stammdaten`&&(0,q.jsx)($t,{weiter:c,zurueck:l}),n===`vinted`&&(0,q.jsx)(nn,{weiter:c,zurueck:l}),n===`ebay`&&(0,q.jsx)(an,{weiter:c,zurueck:l}),n===`ebay-vorbereitung`&&(0,q.jsx)(sn,{weiter:c,zurueck:l}),n===`volt`&&(0,q.jsx)(ln,{weiter:c,zurueck:l}),n===`ki-kosten`&&(0,q.jsx)(cn,{weiter:c,zurueck:l}),n===`tour-wahl`&&(0,q.jsx)(un,{abschluss:u,zurueck:l})]}),(0,q.jsx)(Gt,{})]})}function Gt(){let{t:e}=V(`wizard`);return(0,q.jsx)(`div`,{className:`border-t border-white/5 px-8 py-3 flex items-center justify-center text-xs text-text-muted`,children:(0,q.jsx)(`span`,{children:e(`footer_brand`,`GenV · Einrichtung`)})})}var Kt={welcome:{key:`schritt.welcome`,fb:`Willkommen`},lizenz:{key:`schritt.lizenz`,fb:`Lizenz`},stammdaten:{key:`schritt.stammdaten`,fb:`Stammdaten`},vinted:{key:`schritt.vinted`,fb:`Vinted`},ebay:{key:`schritt.ebay`,fb:`eBay verbinden`},"ebay-vorbereitung":{key:`schritt.ebay_vorbereitung`,fb:`eBay vorbereiten`},volt:{key:`schritt.volt`,fb:`Volt`},"ki-kosten":{key:`schritt.ki_kosten`,fb:`KI-Kosten`},"tour-wahl":{key:`schritt.tour_wahl`,fb:`Tour`}},qt={welcome:!1,lizenz:!0,stammdaten:!1,vinted:!1,"ebay-vorbereitung":!1,ebay:!1,volt:!1,"ki-kosten":!0,"tour-wahl":!1};function Jt({aktuell:e,reihenfolge:t}){let{t:n}=V(`wizard`),r=t.indexOf(e),i=n(Kt[e].key,Kt[e].fb);return(0,q.jsxs)(`div`,{className:`border-b border-white/5 px-4 sm:px-8 py-4 bg-surface`,children:[(0,q.jsxs)(`div`,{className:`hidden md:flex items-center gap-2 text-xs`,children:[t.map((e,i)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-semibold transition-colors ${i<r?`bg-petrol-500 text-white`:i===r?`bg-petrol-500 text-white ring-2 ring-petrol-500/30`:`bg-white/5 text-text-muted`}`,children:i<r?(0,q.jsx)(A,{size:12}):i+1}),(0,q.jsx)(`span`,{className:i===r?`text-text-primary font-medium`:`text-text-muted`,children:n(Kt[e].key,Kt[e].fb)}),i<t.length-1&&(0,q.jsx)(`div`,{className:`w-8 h-px bg-white/10`})]},e)),(0,q.jsxs)(`div`,{className:`ml-auto text-text-muted`,children:[r+1,` / `,t.length]})]}),(0,q.jsxs)(`div`,{className:`flex md:hidden items-center gap-3`,children:[(0,q.jsx)(`div`,{className:`w-7 h-7 rounded-full bg-petrol-500 text-white flex items-center justify-center text-xs font-semibold ring-2 ring-petrol-500/30`,children:r+1}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-text-primary truncate`,children:i}),(0,q.jsx)(`div`,{className:`text-[10px] text-text-muted`,children:n(`schritt_von`,{defaultValue:`Schritt {{aktuell}} von {{gesamt}}`,aktuell:r+1,gesamt:t.length})})]}),(0,q.jsx)(`div`,{className:`w-16 h-1 rounded-full bg-white/10 overflow-hidden`,children:(0,q.jsx)(`div`,{className:`h-full bg-petrol-500 transition-all`,style:{width:`${(r+1)/t.length*100}%`}})})]})]})}var Yt=[{icon:T,titel:`Cross-Listing`,text:`Vinted und eBay aus einem einzigen Artikel`},{icon:o,titel:`Automatische Workflows`,text:`Versandlabel, Verkaufsprüfung â alles automatisch`},{icon:Xe,titel:`Statistiken`,text:`Umsatz, Gewinn und Performance auf einen Blick`},{icon:C,titel:`eBay-Sync`,text:`Kategorien, Aspects und Policies â vorbereitet`}];function Xt({weiter:e,kanal:n,kanalWaehlen:r}){let{t:i}=V(`wizard`),a=H(),[o,s]=(0,K.useState)(0),[c,l]=(0,K.useState)(!1),u=async t=>{l(!0),await r(t),l(!1),e()};(0,K.useEffect)(()=>{let e=setInterval(()=>s(e=>(e+1)%Yt.length),5e3);return()=>clearInterval(e)},[]);let d=Yt[o],f=i(`highlights.${o}.titel`,d.titel),p=i(`highlights.${o}.text`,d.text);return(0,q.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center text-center px-4 sm:px-8 py-8 relative overflow-hidden`,children:[(0,q.jsx)(`div`,{className:`absolute inset-0 bg-gradient-to-br from-marine-900/40 via-background to-petrol-900/30 pointer-events-none`}),(0,q.jsxs)(`div`,{className:`relative z-10 max-w-2xl w-full space-y-8 sm:space-y-10 mp3-fade-in`,children:[(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(`h1`,{className:`text-4xl sm:text-5xl md:text-6xl font-bold text-text-primary tracking-tight mp3-slide-in-top`,children:i(`welcome.headline`,`Willkommen`)}),(0,q.jsx)(`p`,{className:`text-base sm:text-xl text-text-secondary mp3-slide-in-top-delay`,children:a(`GenV macht aus deinem Vinted-Konto ein Lager mit Buchhaltung â und übernimmt nac
17h und nach, was du heute von Hand machst. Alles läuft über deinen Browser. GenV tut nichts, was du nicht siehst.`)})]}),(0,q.jsxs)(`div`,{className:`bg-surface/60 backdrop-blur border border-white/10 rounded-2xl p-5 sm:p-8 min-h-[120px] sm:min-h-[140px] flex items-center gap-4 sm:gap-6 transition-all`,children:[(0,q.jsx)(`div`,{className:`shrink-0 w-12 h-12 sm:w-14 sm:h-14 rounded-xl bg-petrol-500/10 border border-petrol-500/30 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(d.icon,{size:24})}),(0,q.jsxs)(`div`,{className:`text-left flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-text-primary font-semibold text-base sm:text-lg`,children:f}),(0,q.jsx)(`div`,{className:`text-text-muted text-xs sm:text-sm mt-0.5`,children:p})]}),(0,q.jsx)(`div`,{className:`hidden sm:flex gap-1.5`,children:Yt.map((e,t)=>(0,q.jsx)(`div`,{className:`w-1.5 h-1.5 rounded-full transition-colors ${t===o?`bg-petrol-500`:`bg-white/15`}`},t))})]}),(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-text-secondary`,children:a(`Wie verkaufst du?`)}),(0,q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,q.jsxs)(`button`,{onClick:()=>void u(`vinted`),disabled:c,className:`text-left rounded-xl border p-4 sm:p-5 transition-all disabled:opacity-60 ${n===`vinted`?`border-petrol-500 bg-petrol-500/10`:`border-white/10 bg-surface/60 hover:border-petrol-500/50`}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-text-primary font-semibold`,children:[(0,q.jsx)(T,{size:18,className:`text-petrol-300`}),` `,a(`Nur Vinted`)]}),(0,q.jsx)(`div`,{className:`text-xs text-text-muted mt-1`,children:a(`Erweiterung einrichten, Kleiderschrank holen, loslegen.`)})]}),(0,q.jsxs)(`button`,{onClick:()=>void u(`vinted_ebay`),disabled:c,className:`text-left rounded-xl border p-4 sm:p-5 transition-all disabled:opacity-60 ${n===`vinted_ebay`?`border-petrol-500 bg-petrol-500/10`:`border-white/10 bg-surface/60 hover:border-petrol-500/50`}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-text-primary font-semibold`,children:[(0,q.jsx)(C,{size:18,className:`text-petrol-300`}),` `,a(`Vinted + eBay`)]}),(0,q.jsx)(`div`,{className:`text-xs text-text-muted mt-1`,children:a(`Zusätzlich eBay verbinden â für Cross-Listing auf beiden Plattformen.`)})]})]}),(0,q.jsxs)(`div`,{className:`text-xs text-text-muted flex items-center justify-center gap-1.5`,children:[(0,q.jsx)(t,{size:14}),` `,a(`Du kannst das später unter Einstellungen ändern.`)]})]})]}),(0,q.jsx)(`style`,{children:` 18 @keyframes mp3-fade-in { from { opacity: 0 } to { opacity: 1 } } 19 @keyframes mp3-slide-in-top { 20 from { opacity: 0; transform: translateY(-20px) } 21 to { opacity: 1; transform: translateY(0) } 22 } 23 @keyframes mp3-pulse { 24 0%, 100% { box-shadow: 0 10px 25px rgba(0, 139, 139, 0.35), 0 0 0 0 rgba(0, 139, 139, 0.4) } 25 50% { box-shadow: 0 10px 25px rgba(0, 139, 139, 0.35), 0 0 0 12px rgba(0, 139, 139, 0) } 26 } 27 .mp3-fade-in { animation: mp3-fade-in 0.6s ease-out } 28 .mp3-slide-in-top { animation: mp3-slide-in-top 0.7s ease-out } 29 .mp3-slide-in-top-delay { animation: mp3-slide-in-top 0.9s ease-out 0.2s backwards } 30 .mp3-pulse { animation: mp3-pulse 2.5s ease-in-out infinite } 31 `})]})}function Zt({icon:e,titel:t,untertitel:n,pflicht:r,children:i,zurueck:a,weiter:o,weiterText:s,weiterDeaktiviert:c,zusatzAktion:l}){let{t:u}=V(`wizard`);return(0,q.jsxs)(`div`,{className:`max-w-3xl mx-auto px-4 sm:px-8 py-8 sm:py-12 space-y-6 sm:space-y-8`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,q.jsx)(`div`,{className:`shrink-0 w-12 h-12 rounded-xl bg-petrol-500/10 border border-petrol-500/30 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(e,{size:24})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,q.jsx)(`h2`,{className:`text-xl sm:text-2xl font-bold text-text-primary`,children:t}),r===!0&&(0,q.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider font-semibold px-2 py-0.5 rounded-full bg-danger/15 text-danger border border-danger/30`,children:u(`badge.pflicht`,`Pflicht`)}),r===!1&&(0,q.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider font-semibold px-2 py-0.5 rounded-full bg-white/5 text-text-muted border border-white/10`,children:u(`badge.optional`,`Optional`)})]}
31),n&&(0,q.jsx)(`p`,{className:`text-sm text-text-muted mt-1 leading-relaxed`,children:n})]})]}),(0,q.jsx)(`div`,{children:i}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between pt-4 border-t border-white/5 gap-3`,children:[(0,q.jsxs)(`button`,{onClick:a,disabled:!a,className:`px-3 sm:px-4 py-2 text-text-muted hover:text-text-primary disabled:opacity-30 disabled:cursor-not-allowed flex items-center gap-2 text-sm transition-colors`,children:[(0,q.jsx)(ke,{size:16}),` `,u(`zurueck`)]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-wrap justify-end`,children:[l,o&&(0,q.jsxs)(`button`,{onClick:o,disabled:c,className:`px-5 sm:px-6 py-2.5 bg-petrol-500 hover:bg-petrol-600 disabled:bg-white/5 disabled:text-text-muted disabled:cursor-not-allowed text-white font-medium rounded-lg transition-colors flex items-center gap-2`,children:[s??u(`weiter`),` `,(0,q.jsx)(Be,{size:16})]})]})]})]})}function Qt({weiter:e,zurueck:t}){let n=H(),[r,i]=(0,K.useState)(``),[a,o]=(0,K.useState)(!1),[s,c]=(0,K.useState)(null),[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(!1);(0,K.useEffect)(()=>{let e=new AbortController,t=!1;B(`${J()}/api/auth/me`,{signal:e.signal},5e3).then(e=>e.json()).then(e=>{(e?.rolle===`admin`||e?.rolle===`superadmin`)&&m(!0)}).catch(()=>{});let n=async()=>{try{let n=await(await B(`${J()}/api/lizenz/status`,{signal:e.signal},5e3)).json();if(n?.status===`aktiv`)return t||(o(!0),f(n.gueltig_bis)),!0}catch{}return!1};return(async()=>{if(await n())return;let e=null;try{e=localStorage.getItem(`genv_pending_invite`)}catch{}if(!(!e||t)){try{await fetch(`${J()}/api/einladen/${encodeURIComponent(e)}/einloesen`,{method:`POST`});try{localStorage.removeItem(`genv_pending_invite`)}catch{}}catch{}t||await n()}})(),()=>{t=!0,e.abort()}},[]);let h=async e=>{u(!0),c(null);try{let t=e??r,n=await fetch(`${J()}/api/lizenz/aktivieren`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({lizenz_schluessel:t})});if(!n.ok){c((await n.json().catch(()=>({}))).fehler??`HTTP ${n.status}`);return}let i=await n.json();o(!0),f(i.gueltig_bis)}catch(e){c(e?.message??`Netzwerkfehler`)}finally{u(!1)}};return(0,q.jsx)(Zt,{icon:b,titel:U(`Lizenz aktivieren`),pflicht:!p&&qt.lizenz,untertitel:U(p?`Du bist als Admin eingeloggt â kein Lizenz-Schlüssel nötig. Klick einfach auf Weiter.`:`Trag hier deinen Lizenz-Schlüssel ein. Den hast du per E-Mail bekommen â Format: GENV-XXXX-XXXX-XXXX.`),zurueck:t,weiter:a||p?e:void 0,weiterDeaktiviert:!a&&!p,children:a?(0,q.jsxs)(`div`,{className:`bg-success/5 border border-success/30 rounded-xl p-6 flex items-center gap-4`,children:[(0,q.jsx)(`div`,{className:`w-10 h-10 rounded-full bg-success/20 flex items-center justify-center text-success`,children:(0,q.jsx)(A,{size:20})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`text-text-primary font-semibold`,children:n(`Lizenz aktiv`)}),(0,q.jsxs)(`div`,{className:`text-sm text-text-muted`,children:[U(`Gültig bis`),` `,d?new Date(d).toLocaleDateString(`de-DE`):U(`unbekannt`)]})]})]}):(0,q.jsxs)(`div`,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-sm font-medium text-text-primary mb-2`,children:n(`Lizenz-Schlüssel`)}),(0,q.jsx)(`input`,{type:`text`,value:r,onChange:e=>{i(e.target.value),c(null)},placeholder:`GENV-XXXX-XXXX-XXXX`,className:`w-full bg-background border border-white/10 rounded-lg px-4 py-3 text-text-primary placeholder:text-text-muted focus:outline-none focus:border-petrol-500/50 font-mono`})]}),s&&(0,q.jsxs)(`div`,{className:`bg-danger/10 border border-danger/30 rounded-lg p-3 text-sm text-danger flex items-start gap-2`,children:[(0,q.jsx)(N,{size:16,className:`shrink-0 mt-0.5`}),(0,q.jsx)(`span`,{children:s})]}),(0,q.jsx)(`button`,{onClick:()=>h(),disabled:l||!r.trim(),className:`w-full bg-petrol-500 hover:bg-petrol-600 disabled:bg-white/5 disabled:text-text-muted text-white font-medium rounded-lg py-3 transition-colors`,children:U(l?`Prüfeâ¦`:`Aktivieren`)}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted text-center`,children:n(`Noch keinen Schlüssel? Schau in dein E-Mail-Postfach â auch im Spam-Ordner. Falls keine Mail da ist, schreib uns über die Hilfe-Seite.`)})]})})}function $t({weiter:e,zurueck:t}){let n=H(),[r,i]=(0,K.useState)(``),[a,o]=(0,K.useState)(``),[s,c]=(0,K.useState)(``),[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(`kleinunter
31nehmer`),[p,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(`19`),[_,v]=(0,K.useState)(``),[y,b]=(0,K.useState)(``),[x,S]=(0,K.useState)(``),[C,w]=(0,K.useState)(``),[T,E]=(0,K.useState)(``),[D,O]=(0,K.useState)(!1);(0,K.useEffect)(()=>{let e=new AbortController;return B(`${J()}/api/einstellungen`,{signal:e.signal},5e3).then(e=>e.json()).then(e=>{i(e.verkaeufer_name??``),o(e.verkaeufer_strasse??``),c(e.verkaeufer_plz_ort??``),u(e.steuernummer??``),f(e.steuermodell===`regelbesteuert`?`regelbesteuert`:`kleinunternehmer`),m(e.ust_id??``),g(e.steuersatz_standard??`19`),v(e.email??``),b(e.telefon??``),S(e.iban??``),w(e.bic??``),E(e.bankname??``)}).catch(()=>{}),()=>e.abort()},[]);let te=async()=>{O(!0);try{await fetch(`${J()}/api/einstellungen`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({verkaeufer_name:r,verkaeufer_strasse:a,verkaeufer_plz_ort:s,steuernummer:l,steuermodell:d,ust_id:p,steuersatz_standard:h,email:_,telefon:y,iban:x,bic:C,bankname:T})}),e()}catch{e()}finally{O(!1)}},k=`w-full bg-background border border-white/10 rounded-lg px-4 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:border-petrol-500/50 focus:ring-1 focus:ring-petrol-500/25 transition-all`,ne=`bg-surface border border-white/5 rounded-xl p-6 space-y-4`,re=`text-sm font-semibold text-text-primary mb-3`;return(0,q.jsx)(Zt,{icon:ee,titel:U(`Deine Stammdaten`),pflicht:!1,untertitel:U(`Diese Angaben landen automatisch auf deinen Rechnungen. Du kannst alles jederzeit unter Einstellungen ändern â oder jetzt überspringen und später nachtragen.`),zurueck:t,weiter:te,weiterText:U(D?`Speichereâ¦`:`Weiter`),zusatzAktion:(0,q.jsx)(`button`,{onClick:e,className:`px-4 py-2 text-sm text-text-muted hover:text-text-primary transition-colors`,children:U(`Ãberspringen`)}),children:(0,q.jsxs)(`div`,{className:`space-y-5`,children:[(0,q.jsxs)(`div`,{className:ne,children:[(0,q.jsx)(`div`,{className:re,children:n(`Verkäufer-Daten`)}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Name oder Firma`)}),(0,q.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`z.B. Max Mustermann`,className:k})]}),(0,q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`StraÃe + Hausnummer`)}),(0,q.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),placeholder:`MusterstraÃe 1`,className:k})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`PLZ + Ort`)}),(0,q.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),placeholder:`12345 Musterstadt`,className:k})]})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Steuernummer`)}),(0,q.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),placeholder:`z.B. 12/345/67890`,className:k})]})]}),(0,q.jsxs)(`div`,{className:ne,children:[(0,q.jsx)(`div`,{className:re,children:n(`Steuerstatus`)}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Wie versteuerst du deine Verkäufe?`)}),(0,q.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),className:k,children:[(0,q.jsx)(`option`,{value:`kleinunternehmer`,children:U(`Kleinunternehmer (§19 UStG â ohne MwSt)`)}),(0,q.jsx)(`option`,{value:`regelbesteuert`,children:U(`Regelbesteuert (mit MwSt-Ausweis)`)})]})]}),d===`regelbesteuert`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`USt-IdNr. (empfohlen)`)}),(0,q.jsx)(`input`,{value:p,onChange:e=>m(e.target.value),placeholder:`z.B. DE123456789`,className:k}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted mt-1`,children:n(`Wenn vorhanden, wird diese statt der Steuernummer auf der Rechnung gedruckt.`)})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Standard-Steuersatz`)}),(0,q.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),className:k,children:[(0,q.jsx)(`option`,{value:`19`,children:U(`19 % (Normaler Satz)`)}),(0,q.jsx)(`option`,{value:`7`,children:U(`7 % (ErmäÃigter Satz â z.B. Bücher)`)})]})]})]}),(0,q.jsxs)(`div`,{className:`bg-petrol-500/5 border border-petrol-500/20 rounded-lg p-4 flex gap-3 mt-2`,children:[(0,q.jsx)(fe,{size:16,className:`text-petrol-400 shrink-0 mt-0.5`}),(0,q.jsxs)(`div`,{className:`text-xs text-text-secondary space-y-1`,children:[(0,q.jsx)(`p`,{className:`font-semibold text-text-primary`,children:n(`So werden Rechnungen erstellt:`)}),(0,q.jsxs)(`p`,{children:[`⢠`,(0,q.jsx)(`span`,{className:`font-medium`,children:n(`Unter 250 â¬:`)}),` `,n(`Kleinbetragsrechnung (§33 UStDV) â ohne Käufer-Adresse.`)]}),(0,q.jsxs)(`p`,{children:[`⢠`,(0,q.jsx)(`span`,{className:`font-medium`,children:n(`Ab 250 â¬:`)}),` `,n(`Volle Rechnung mit Käufer-Adresse (Pflicht nach §14 UStG).`)]}),(0,q.jsx)(`p`,{className:`pt-1 text-text-muted`,children:n(`Wechselt automatisch je nach Betrag der Bestellung.`)})]})]})]}),(0,q.jsxs)(`div`,{className:ne,children:[(0,q.jsx)(`div`,{className:re,children:n(`Kontakt`)}),(0,q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`E-Mail für Rechnungen`)}
31),(0,q.jsx)(`input`,{type:`email`,value:_,onChange:e=>v(e.target.value),placeholder:`[email protected]`,className:k}),(0,q.jsx)(`p`,{className:`text-[11px] text-text-muted mt-1`,children:n(`Erscheint auf der Rechnung. Muss nicht deine Login-Adresse sein.`)})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Telefon`)}),(0,q.jsx)(`input`,{type:`tel`,value:y,onChange:e=>b(e.target.value),placeholder:`+49 123 456789`,className:k})]})]})]}),(0,q.jsxs)(`div`,{className:ne,children:[(0,q.jsx)(`div`,{className:re,children:n(`Bankverbindung`)}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`Bankname`)}),(0,q.jsx)(`input`,{value:T,onChange:e=>E(e.target.value),placeholder:`z.B. Sparkasse Berlin`,className:k})]}),(0,q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`IBAN`)}),(0,q.jsx)(`input`,{value:x,onChange:e=>S(e.target.value),placeholder:`DE12 3456 7890 â¦`,className:`${k} font-mono`})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-xs font-medium text-text-secondary mb-1.5`,children:n(`BIC`)}),(0,q.jsx)(`input`,{value:C,onChange:e=>w(e.target.value),placeholder:`BELADEBEXXX`,className:`${k} font-mono`})]})]})]})]})})}var en=`https://chromewebstore.google.com/detail/vinted-session-manager/ahhgejcklmjginholcldmdbemabiilka`,tn=`https://www.vinted.de/member/general/login`;function nn({weiter:e,zurueck:t}){let n=H(),{vinted:r}=It(),i=r?.status===`verbunden`;return(0,q.jsx)(Zt,{icon:T,titel:U(`Vinted verbinden`),pflicht:!1,untertitel:U(`Als Erstes holt GenV deinen Kleiderschrank. Dafür braucht es die Chrome-Erweiterung â sie ist deine Hand bei Vinted. Dauert zwei Minuten.`),zurueck:t,weiter:e,zusatzAktion:!i&&(0,q.jsx)(`button`,{onClick:e,className:`px-4 py-2 text-sm text-text-muted hover:text-text-primary transition-colors`,children:U(`Ãberspringen`)}),children:(0,q.jsxs)(`div`,{className:`space-y-5`,children:[(0,q.jsx)(`div`,{className:`rounded-xl p-5 border ${i?`bg-success/5 border-success/30`:`bg-amber-500/5 border-amber-500/30`}`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,q.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-purple-500/10 flex items-center justify-center text-purple-400 font-bold`,children:`Vi`}),(0,q.jsxs)(`div`,{className:`flex-1`,children:[(0,q.jsxs)(`div`,{className:`font-semibold text-text-primary`,children:[`Vinted: `,U(i?`Verbunden`:`Nicht verbunden`)]}),(0,q.jsx)(`div`,{className:`text-sm text-text-muted`,children:i?`${U(`Aktive Session`)}${r?.benutzername?` als ${r.benutzername}`:``} â ${U(`deinen Kleiderschrank holst du gleich mit einem Klick auf dem Dashboard.`)}`:U(`Sobald du die Erweiterung eingerichtet hast, wird der Status grün.`)})]}),i&&(0,q.jsx)(A,{size:24,className:`text-success`})]})}),!i&&(0,q.jsxs)(`div`,{className:`bg-surface border border-white/5 rounded-xl p-6 space-y-5`,children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-text-primary`,children:n(`So verbindest du Vinted`)}),(0,q.jsx)(rn,{nummer:1,titel:U(`Erweiterung im Chrome Web Store installieren`),text:U(`Wir nutzen eine kleine Chrome-Erweiterung, damit die Plattform deine Vinted-Session lesen darf. Sie ist gratis.`),children:(0,q.jsxs)(`a`,{href:en,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 px-4 py-2.5 bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium rounded-lg transition-colors`,children:[n(`Im Chrome Web Store öffnen`),` `,(0,q.jsx)(qe,{size:14})]})}),(0,q.jsx)(rn,{nummer:2,titel:U(`Auf vinted.de einloggen`),text:U(`Logge dich ganz normal mit deinem Vinted-Account ein. Falls du schon eingeloggt bist, kannst du diesen Schritt überspringen.`),children:(0,q.jsxs)(`a`,{href:tn,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 px-4 py-2.5 bg-white/5 hover:bg-white/10 text-text-primary text-sm font-medium rounded-lg border border-white/10 transition-colors`,children:[n(`vinted.de öffnen`),` `,(0,q.jsx)(qe,{size:14})]})}),(0,q.jsx)(rn,{nummer:3,titel:U(`Erweiterung-Popup öffnen`),text:U(`Klick oben rechts in Chrome auf das Puzzle-Symbol. Falls ausgegraut, klick den Pin daneben. Dann auf das Symbol von Vinted Session Manager.`)}),(0,q.jsx)(rn,{nummer:4,titel:U(`Im Popup auf den Speichern-Button klicken`),text:U(`Das war es. Die Status-Anzeige oben wird in wenigen Sekunden grün â dann kannst du auf Weiter klicken.`)})]}),!i&&(0,q.jsxs)(`div`,{className:`text-xs text-text-muted bg-white/5 border border-white/10 rounded-lg p-3 flex gap-2`,children:[(0,q.jsx)(fe,{size:14,className:`shrink-0 mt-0.5`}),(0,q.jsx)(`span`,{children:n(`Du kannst diesen Schritt später nachholen. Ohne Vinted-Verbindung sind Vinted-Listings, Versandlabel-Bot und Verkaufsprüfer nicht nutzbar.`)})]})]})})}function rn({nummer:e,titel:t,text:n,children:r}){return(0,q.jsxs)(`div`,{className:`flex gap-4`,children:[(0,q.jsx)(`div`,{className:`shrink-0 w-7 h-7 rounded-full bg-petrol-500/15 border border-petrol-500/30 text-petrol-300 flex items-center justify-center text-xs font-semibold`,children:e}),(0,q.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-text-primary`,children:t}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted leading-relaxed`,children:n}),r&&(0,q.jsx)(`div`,{className:`pt-1`,children:r})]})]})}function an({weiter:e,zurueck:t}){let n=H(),{ebay:r}=It(),[i,a]=(0,K.useState)(null);(0,K.useEffect)(()=>{let e=new AbortController;
31return B(`${J()}/api/ebay/auth-status`,{signal:e.signal},5e3).then(e=>e.json()).then(e=>{let t=e?.refresh_fehler_text??``;a(!t.toLowerCase().includes(`client_id`)&&!t.toLowerCase().includes(`konfiguration`))}).catch(()=>a(!1)),()=>e.abort()},[]);let o=r?.status===`verbunden`;return(0,q.jsx)(Zt,{icon:C,titel:U(`eBay verbinden`),pflicht:!1,untertitel:U(`Verbinde deinen eigenen eBay-Account. Wir legen keinen Account für dich an â du nutzt deinen bestehenden. Im nächsten Schritt richtest du Pflicht-Einstellungen in deinem eBay-Konto ein.`),zurueck:t,weiter:e,zusatzAktion:!o&&(0,q.jsx)(`button`,{onClick:e,className:`px-4 py-2 text-sm text-text-muted hover:text-text-primary transition-colors`,children:U(`Ãberspringen`)}),children:(0,q.jsx)(`div`,{className:`space-y-4`,children:i===!1?(0,q.jsxs)(`div`,{className:`bg-amber-500/5 border border-amber-500/30 rounded-xl p-6 space-y-3`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(N,{size:20,className:`text-amber-400`}),(0,q.jsx)(`div`,{className:`font-semibold text-text-primary`,children:n(`eBay-Integration noch nicht konfiguriert`)})]}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted`,children:n(`Die eBay-Anbindung wartet noch auf Freischaltung beim Anbieter. Sobald sie aktiv ist, kannst du dich hier verbinden â kein Eingreifen von dir nötig.`)}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted`,children:n(`Tipp: Du kannst diesen Schritt überspringen und eBay später unter Administration nachholen.`)})]}):(0,q.jsxs)(`div`,{className:`rounded-xl p-6 border ${o?`bg-success/5 border-success/30`:`bg-amber-500/5 border-amber-500/30`}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,q.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-blue-500/10 flex items-center justify-center text-blue-400 font-bold`,children:`eB`}),(0,q.jsxs)(`div`,{className:`flex-1`,children:[(0,q.jsxs)(`div`,{className:`font-semibold text-text-primary`,children:[`eBay: `,U(o?`Verbunden`:`Nicht verbunden`)]}),(0,q.jsx)(`div`,{className:`text-sm text-text-muted`,children:o?`${U(`Aktive Session`)}${r?.benutzername?` als ${r.benutzername}`:``}`:U(`Klick unten auf Mit eBay verbinden`)})]}),o&&(0,q.jsx)(A,{size:24,className:`text-success`})]}),!o&&i&&r?.status!==`pending_consent`&&(0,q.jsx)(`button`,{onClick:async()=>{try{let e=await(await fetch(`${J()}/api/ebay/auth-start`,{method:`POST`})).json();e.auth_url?window.open(e.auth_url,`_blank`,`noopener`):e.error&&zt.fehler(`Fehler: ${e.error}`)}catch(e){zt.fehler(`Netzwerk-Fehler: ${e?.message??e}`)}},className:`mt-4 w-full bg-blue-500 hover:bg-blue-600 text-white font-medium rounded-lg py-2.5`,children:n(`Mit eBay verbinden`)}),r?.status===`pending_consent`&&(0,q.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,q.jsx)(`p`,{className:`text-xs text-amber-300`,children:n(`â Es läuft ein Consent-Versuch â bitte im Browser-Tab fertig durchklicken, oder setz den hängenden Versuch zurück:`)}),(0,q.jsx)(`button`,{onClick:async()=>{try{let e=await(await fetch(`${J()}/api/ebay/auth-reset`,{method:`POST`})).json();e.ok?zt.fehler(e.message||`Reset erfolgreich`):zt.fehler(`Reset-Fehler: ${e.error||`unbekannt`}`)}catch(e){zt.fehler(`Netzwerk-Fehler: ${e?.message??e}`)}},className:`w-full bg-amber-500/10 hover:bg-amber-500/20 text-amber-300 border border-amber-500/30 rounded-lg py-2.5 text-sm font-medium transition-all`,children:n(`Hängenden Versuch zurücksetzen`)})]})]})})})}var on={payment_policy:`Zahlungsregel`,return_policy:`Rückgaberegel`,fulfillment_policy:`Versandregel`,vat_id:`USt-/Steuer-ID`};function sn({weiter:e,zurueck:t}){let n=H(),[r,i]=(0,K.useState)(null),[a,o]=(0,K.useState)(!0),[s,c]=(0,K.useState)(null),[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),p=(0,K.useCallback)(async()=>{o(!0),c(null);try{let e=await B(`${z()}/api/ebay/setup-check`,{},15e3),t=await e.json();!e.ok||t?.ok===!1||t?.error?(i(null),c(t?.error||U(`Status konnte nicht geladen werden. Ist eBay im vorherigen Schritt verbunden?`))):i(t)}catch(e){i(null),c(U(`Netzwerk-Fehler: {{msg}}`,{msg:e?.message??e}))}finally{o(!1)}},[]);(0,K.useEffect)(()=>{p()},[p]);let m=async()=>{u(!0),f(null);try{let e=await B(`${z()}/api/ebay/setup/policies-auto-anlegen`,{method:`POST`},3e4),t=await e.json();e.ok&&t?.ok!==!1&&!t?.error?(f({ok:!0,message:t?.message||U(`Standard-Regeln wurden angelegt.`)}),await p()):f({ok:!1,message:t?.error||U(`Anlegen fehlgeschlagen.`)})}catch(e){f({ok:!1,message:U(`Netzwerk-Fehler: {{msg}}`,{msg:e?.message??e})})}finally{u(!1)}},h=(r?.fehlende??[]).filter(e=>e!==`vat_id`),g=(r?.fehlende??[]).includes(`vat_id`),_=!!r?.bereit_fuer_listings;return(0,q.jsx)(Zt,{icon:Xe,titel:U(`eBay vorbereiten`),pflicht:!1,untertitel:U(`Vor dem ersten eBay-Listing müssen Versand-, Rückgabe- und Zahlungsregeln existieren. Ich prüfe deinen Account automatisch â meist ist schon alles da.`),zurueck:t,weiter:e,weiterText:U(`Weiter`),zusatzAktion:(0,q.jsx)(`button`,{onClick:e,className:`px-4 py-2 text-sm text-text-muted hover:text-text-primary transition-colors`,children:U(`Ãberspringen`)}),children:(0,q.jsxs)(`div`,{className:`max-w-2xl mx-auto`,children:[a&&(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-text-muted`,children:[(0,q.jsx)(v,{className:`w-4 h-4 animate-spin`}),` `,n(`Prüfe deinen eBay-Accountâ¦`)]}
31),!a&&s&&(0,q.jsxs)(`div`,{className:`bg-amber-500/10 border border-amber-500/30 rounded-xl p-4 text-sm text-amber-200 space-y-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,q.jsx)(N,{className:`w-4 h-4`}),` `,n(`Status nicht ladbar`)]}),(0,q.jsx)(`p`,{className:`opacity-80`,children:s}),(0,q.jsx)(`p`,{className:`opacity-70 text-xs`,children:n(`Stelle sicher, dass eBay im vorherigen Schritt verbunden wurde. Du kannst diesen Schritt auch überspringen und später nachholen.`)}),(0,q.jsx)(`button`,{onClick:()=>void p(),className:`text-xs px-3 py-1.5 rounded bg-white/5 hover:bg-white/10 text-text-secondary`,children:n(`Erneut prüfen`)})]}),!a&&r&&_&&(0,q.jsxs)(`div`,{className:`bg-success/10 border border-success/30 rounded-xl p-4 text-sm`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-success`,children:[(0,q.jsx)(A,{className:`w-4 h-4`}),` `,n(`Alles eingerichtet`)]}),(0,q.jsx)(`p`,{className:`opacity-80 mt-1 text-text-secondary`,children:n(`Versand-, Rückgabe- und Zahlungsregeln sind vorhanden. Du kannst direkt eBay-Listings erstellen.`)})]}),!a&&r&&!_&&(0,q.jsxs)(`div`,{className:`space-y-4`,children:[r.sandbox_eingeschraenkt&&(0,q.jsxs)(`div`,{className:`bg-amber-500/10 border border-amber-500/30 rounded-xl p-3 text-xs text-amber-200`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,q.jsx)(fe,{className:`w-3.5 h-3.5`}),` `,n(`Konto noch nicht für Geschäftsregeln freigeschaltet`)]}),(0,q.jsx)(`p`,{className:`opacity-80 mt-1`,children:n(`eBay meldet, dass dein Konto noch kein Business-Policy-Opt-in hat. Der Button unten erledigt das automatisch (Opt-in + Standard-Regeln). Falls du ein eBay-Testkonto (Sandbox) nutzt, ist das erwartbar â dann einfach überspringen.`)})]}),(0,q.jsxs)(`div`,{className:`bg-surface border border-white/5 rounded-xl p-4 space-y-2`,children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-text-primary`,children:n(`Es fehlen noch Geschäftsregeln`)}),(0,q.jsx)(`ul`,{className:`text-xs text-text-muted space-y-1`,children:h.map(e=>(0,q.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(N,{className:`w-3 h-3 text-amber-400`}),` `,on[e]?n(on[e]):e]},e))}),h.length>0&&(0,q.jsxs)(`button`,{onClick:m,disabled:l,className:`mt-2 px-4 py-2 bg-petrol-500 hover:bg-petrol-600 disabled:bg-petrol-500/30 disabled:cursor-not-allowed text-white rounded-lg text-sm font-medium transition-all inline-flex items-center gap-2`,children:[l&&(0,q.jsx)(v,{className:`w-4 h-4 animate-spin`}),n(l?`Lege anâ¦`:`Standard-Regeln automatisch anlegen`)]}),d&&(0,q.jsx)(`div`,{className:`text-xs mt-1 ${d.ok?`text-success`:`text-danger`}`,children:d.message}),(0,q.jsx)(`p`,{className:`text-[11px] text-text-muted mt-2`,children:n(`Legt je eine Standard-Versandregel (DHL Paket), Rückgaberegel (30 Tage) und Zahlungsregel an. Du kannst sie später in den eBay-Einstellungen anpassen.`)})]}),g&&(0,q.jsxs)(`div`,{className:`bg-amber-500/10 border border-amber-500/30 rounded-xl p-3 text-xs text-amber-200`,children:[n(`AuÃerdem fehlt deine USt-/Steuer-ID im eBay-Konto. Die musst du manuell bei eBay hinterlegen:`),` `,(0,q.jsxs)(`a`,{href:`https://www.ebay.de/sh/ovw`,target:`_blank`,rel:`noreferrer`,className:`underline inline-flex items-center gap-1`,children:[n(`Seller Hub öffnen`),` `,(0,q.jsx)(qe,{size:10})]})]})]})]})})}function cn({weiter:e,zurueck:n}){let r=H(),[i,a]=(0,K.useState)(null);return(0,K.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await fetch(`${z()}/api/ki-kosten/uebersicht`,{credentials:`include`});if(!t.ok||!e)return;let n=await t.json();e&&n?.preis_hinweis&&a(n.preis_hinweis)}catch{}})(),()=>{e=!1}},[]),(0,q.jsx)(Zt,{icon:t,titel:U(`Die KI-Kosten trägst du selbst`),pflicht:!0,untertitel:U(`GenV analysiert deine Fotos und erzeugt Bilder â das kostet bei jedem Aufruf echtes Geld beim KI-Anbieter. Diese Kosten sind nicht im Abo enthalten, sondern werden dir verbrauchsabhängig weiterberechnet.`),zurueck:n,weiter:e,weiterText:U(`Verstanden`),children:(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,q.jsxs)(`div`,{className:`bg-surface border border-white/5 rounded-xl p-4`,children:[(0,q.jsx)(`div`,{className:`text-xs text-text-muted`,children:r(`Ein erzeugtes Bild`)}),(0,q.jsx)(`div`,{className:`text-xl font-semibold text-text-primary mt-1`,children:i?`$${i.bild_usd.toFixed(4)}`:`â`}),(0,q.jsx)(`div`,{className:`text-xs text-text-muted mt-1`,children:r(`Genau das, was es uns kostet.`)}
31)]}),(0,q.jsxs)(`div`,{className:`bg-surface border border-white/5 rounded-xl p-4`,children:[(0,q.jsx)(`div`,{className:`text-xs text-text-muted`,children:r(`Eine Foto-Analyse`)}),(0,q.jsx)(`div`,{className:`text-xl font-semibold text-text-primary mt-1`,children:i?`$${i.analyse_usd.toFixed(4)}`:`â`}),(0,q.jsx)(`div`,{className:`text-xs text-text-muted mt-1`,children:r(`Das Doppelte der reinen Anbieterkosten.`)})]})]}),(0,q.jsxs)(`div`,{className:`bg-surface border border-white/5 rounded-xl p-4 text-sm text-text-muted leading-relaxed`,children:[(0,q.jsx)(`p`,{children:r(`Jeder einzelne Aufruf wird gezählt und ist unter âKI-Kosten" im Dashboard nachvollziehbar â mit Datum, Artikel und Betrag. Dort siehst du auch, was heute, diesen Monat und insgesamt zusammengekommen ist.`)}),(0,q.jsx)(`p`,{className:`mt-2`,children:r(`Den offenen Betrag begleichst du dort mit einem Klick über Stripe. Bleibt er länger als 14 Tage offen, ruht dein Zugang, bis bezahlt ist â du kommst dann nur noch auf die Bezahlseite.`)}),(0,q.jsx)(`p`,{className:`mt-2`,children:r(`Ein Artikel mit vielen Fotos kostet mehr als einer mit zwei. Wenn du sparen willst: weniger, aber bessere Fotos.`)})]})]})})}function ln({weiter:e,zurueck:t}){let n=H(),r=[{icon:Ce,titel:n(`Was Volt für dich tut`),text:n(`Artikel einstellen und neu einstellen, Preise nach deinen Regeln senken, Käufer-Nachrichten holen und beantworten, Interessenten anschreiben, Versandlabel und Rechnungen erzeugen. Du legst die Regeln fest, Volt arbeitet sie ab â in deinem Browser, in deinem Konto.`)},{icon:ze,titel:n(`Ein Topf am Tag: 130 Credits`),text:n(`Ein Anschreiben kostet 1 Credit, ein Einstellen 3, ein Neu-Einstellen 4. Ist der Topf leer, ist der Tag zu Ende. Die Abstände zwischen zwei Aktionen werden aus deinen aktiven Stunden gerechnet, nicht gewürfelt â und geschrieben wird nur, während du am Rechner sitzt.`)},{icon:Je,titel:n(`Die Augen: Volt liest, was Vinted sagt`),text:n(`Sagt Vinted etwas Kritisches, stoppt Volt sofort â 48 Stunden nichts. Ein Fass zeigt dir den Risikostand der letzten 14 Tage. Steigt er, macht Volt am nächsten Tag weniger. Das ist normal und gewollt.`)},{icon:Oe,titel:n(`Wann es losgeht`),text:n(`Volt ist aus, bis du ihn einschaltest. Erst liest GenV nur mit (Kleiderschrank, Bestellungen, Nachrichten), dann stellst du einen Artikel von Hand ein â ab Mission 7 kommt die Automatik, jede mit eigenem Tagesdeckel. Was du freischaltest, hast du vorher selbst gemacht.`)}];return(0,q.jsx)(Zt,{icon:Ce,titel:U(`So wird dein Alltag automatisiert`),pflicht:!1,untertitel:U(`Volt ist dein Mitarbeiter in GenV. Er übernimmt nach und nach, was du heute von Hand machst â aber erst, wenn du ihn einschaltest, und nie mehr, als dein Konto verträgt.`),zurueck:t,weiter:e,weiterText:U(`Verstanden, weiter`),children:(0,q.jsxs)(`div`,{className:`space-y-3`,children:[r.map(e=>(0,q.jsxs)(`div`,{className:`flex items-start gap-4 bg-surface border border-white/5 rounded-xl p-4`,children:[(0,q.jsx)(`div`,{className:`shrink-0 w-10 h-10 rounded-lg bg-petrol-500/10 border border-petrol-500/30 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(e.icon,{size:20})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-text-primary`,children:e.titel}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted mt-1 leading-relaxed`,children:e.text})]})]},e.titel)),(0,q.jsxs)(`p`,{className:`text-xs text-text-muted flex items-center gap-2 pt-1`,children:[(0,q.jsx)(fe,{size:14,className:`shrink-0`}),n(`Alles Weitere lernst du in den Missionen â jede endet mit einem echten Ergebnis, nicht mit einem Häkchen.`)]})]})})}function un({abschluss:e,zurueck:n}){return(0,q.jsx)(Zt,{icon:o,titel:U(`Geschafft â hier dein Wegweiser durch die App`),pflicht:!1,untertitel:U(`Diese 5 Bereiche solltest du kennen. Vor allem den Quest-Bereich â dort lernst du jede Funktion Schritt für Schritt.`),zurueck:n,children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,q.jsx)(dn,{icon:ce,titel:U(`Dashboard`),beschreibung:U(`Deine Startseite mit allen Apps (Einkauf, Verkauf, Online-Artikel, Buchhaltung etc.) und der Ãbersicht über deine Statistiken.`),akzent:`petrol`}),(0,q.jsx)(dn,{icon:We,titel:U(`Quest-Bereich`),beschreibung:U(`Hier lernst du jede Funktion der App per Klick. Jede Quest ist eine kleine interaktive Tour â fang einfach oben an und arbeite dich durch.`),akzent:`marine`,empfohlen:!0}),(0,q.jsx)(dn,{icon:ye,titel:U(`Profil`),beschreibung:U(`Dein Avatar, Anzeigename und Badges. Erreichbar über den Avatar oben rechts.`),akzent:`muted`}),(0,q.jsx)(dn,{icon:r,titel:U(`Einstellungen`),beschreibung:U(`Stammdaten, Vinted- & eBay-Verbindungen, Versand, KI-Optionen. Alles was du später noc
31h anpassen kannst.`),akzent:`muted`}),(0,q.jsx)(dn,{icon:p,titel:U(`Suche & Hilfe`),beschreibung:U(`Suchen kannst du oben in der Leiste. Hilfe & FAQ findest du beim Fragezeichen-Icon.`),akzent:`muted`}),(0,q.jsx)(dn,{icon:t,titel:U(`App jetzt nutzen`),beschreibung:U(`Bereit? Klick hier und du landest direkt auf dem Dashboard. Die Quests warten auf dich.`),akzent:`cta`,aufKlick:e})]})})}function dn({icon:e,titel:t,beschreibung:n,akzent:r,empfohlen:i,aufKlick:a}){let o={petrol:{bg:`bg-petrol-500/10`,border:`border-petrol-500/30`,iconBg:`bg-petrol-500/20`,iconText:`text-petrol-300`},marine:{bg:`bg-marine-500/10`,border:`border-marine-500/40`,iconBg:`bg-marine-500/25`,iconText:`text-marine-300`},muted:{bg:`bg-bg-secondary`,border:`border-border-subtle`,iconBg:`bg-bg-tertiary`,iconText:`text-text-secondary`},cta:{bg:`bg-petrol-500`,border:`border-petrol-400`,iconBg:`bg-white/20`,iconText:`text-white`}}[r],s=r===`cta`,c=s?`text-white`:`text-text-primary`,l=s?`text-white/90`:`text-text-muted`;return(0,q.jsx)(a?`button`:`div`,{onClick:a,className:`text-left rounded-xl p-4 border transition-all ${a?`hover:scale-[1.02] cursor-pointer`:``} ${o.bg} ${o.border}`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:`${o.iconBg} ${o.iconText} w-10 h-10 rounded-lg flex items-center justify-center shrink-0`,children:(0,q.jsx)(e,{className:`w-5 h-5`})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,q.jsx)(`div`,{className:`font-semibold ${c}`,children:t}),i&&(0,q.jsx)(`span`,{className:`text-[10px] bg-marine-500/30 text-marine-200 px-2 py-0.5 rounded-full font-medium`,children:U(`empfohlen`)})]}),(0,q.jsx)(`p`,{className:`text-sm ${l}`,children:n})]})]})})}var fn=5e3,pn=2e3,mn=5,hn=(0,K.createContext)(null);function gn({children:e}){let[t,n]=(0,K.useState)(null),[r,i]=(0,K.useState)(!0),[a,o]=(0,K.useState)(!1),s=(0,K.useRef)(null),c=(0,K.useRef)(null),l=(0,K.useCallback)(async(e=0)=>{s.current?.abort();let t=new AbortController;s.current=t;try{let e=await B(`${z()}/api/benutzer-status`,{signal:t.signal},fn);if(!e.ok)throw Error(`HTTP ${e.status}`);n(await e.json()),o(!1),i(!1)}catch(t){if(t?.name===`AbortError`)return;console.warn(`[BenutzerStatusProvider] Versuch ${e+1}/${mn} fehlgeschlagen:`,t?.message??t),e+1<mn?c.current=setTimeout(()=>{l(e+1)},pn):(console.error(`[BenutzerStatusProvider] Backend nach 5 Versuchen nicht erreichbar`),o(!0),i(!1))}},[]),u=(0,K.useCallback)(()=>{c.current&&(clearTimeout(c.current),c.current=null),i(!0),o(!1),l(0)},[l]);(0,K.useEffect)(()=>(l(0),()=>{s.current?.abort(),c.current&&(clearTimeout(c.current),c.current=null)}),[l]);let d=(0,K.useMemo)(()=>({status:t,loading:r,backendUnreachable:a,refresh:u}),[t,r,a,u]);return(0,K.createElement)(hn.Provider,{value:d},e)}function _n(){let e=(0,K.useContext)(hn);if(!e)throw Error(`useBenutzerStatus() muss innerhalb von <BenutzerStatusProvider> aufgerufen werden`);return e}function vn(e){return e===`aktiv`||e===`frei`}var yn=6e4,bn=null,xn=0,Sn=null;async function Cn(){return bn!==null&&Date.now()-xn<yn?bn:Sn||(Sn=(async()=>{try{let e=await B(`${z()}/api/lizenz/status`,{credentials:`include`},6e3);if(!e.ok)return null;let t=await e.json().catch(()=>null);return t!==null&&(bn=t,xn=Date.now()),t}catch{return null}finally{Sn=null}})(),Sn)}function wn(){let e=H(),{status:t}=_n(),{benutzer:n,logout:r}=G(),i=n?.rolle===`admin`||n?.rolle===`superadmin`,[a,o]=(0,K.useState)(null),[s,c]=(0,K.useState)(()=>{try{return localStorage.getItem(`vam_lizenzbalken_weg`)}catch{return null}}),l=()=>{let e=a?.status??``;try{localStorage.setItem(`vam_lizenzbalken_weg`,e)}catch{}c(e)},u=!!t?.onboarding_abgeschlossen&&!!a&&a.pflicht!==!1&&!vn(a.status)&&i&&s!==a.status;return(0,K.useEffect)(()=>{let e=document.documentElement;return e.style.setProperty(`--mp3-oben`,u?`36px`:`0px`),()=>{e.style.setProperty(`--mp3-oben`,`0px`)}},[u]),(0,K.useEffect)(()=>{let e=!0,t=0,n=0,r=async()=>{let t=await Cn();return t===null?!1:(e&&o(t),!0)};r();let i=setInterval(async()=>{document.visibilityState===`visible`&&(n++,n%Math.min(2**t,5)===0&&(t=await r()?0:t+1))},6e4),a=()=>{document.visibilityState===`visible`&&r()};return document.addEventListener(`visibilitychange`,a),()=>{e=!1,clearInterval(i),document.removeEventListener(`visibilitychange`,a)}},[]),!t?.onboarding_abgeschlossen||!a||a.pflicht===!1||vn(a.status)?null:i?s===a.status?null:(0,q.jsxs)(`div`,{"data-topbanner":!0,className:`fixed top-0 left-0 right-0 z-[150] h-9 bg-amber-500/95 border-b border-amber-600 flex items-center justify-center gap-3 px-4 text-white text-xs font-medium`,children:[(0,q.jsx)(b,{size:14}),(0,q.jsxs)(`span`,{children:[U(`Lizenz`),` `,a.status===`abgelaufen`?e(`abgelaufen`):a.status===`widerrufen`?e(`widerrufen`):e(`nicht aktiviert`),` â `,e(`als Admin trotzdem nutzbar.`)]}),(0,q.jsx)(`a`,{href:`/admin/lizenzen`,className:`ml-2 px-2 py-0.5 bg-white/15 hover:bg-white/25 rounded`,children:e(`Lizenz-Verwaltung`)}),(0,q.jsx)(`button`,{type:`button`,onClick:l,title:e(`Hinweis ausblenden`),"aria-label":U(`Hinweis ausblenden`),className:`absolute right-2 top-1/2 -translate-y-1/2 p-1.5 rounded hover:bg-white/25 focus:outline-none focus:ring-2 focus:ring-white/60`,children:(0,q.jsx)(j,{size:14})})]}):(0,q.jsx)(Tn,{status:a.status,logout:r,checkoutLink:a.checkout_link})}function Tn({status:e,logout:t,checkoutLink:n}){let r=H(),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(null),u=async()=>{let e=i.trim();if(!e){l(U(`Bitte einen Lizenz-Schluessel eingeben.`));return}s(!0),l(null);try{let t=await B(`${z()}/api/lizenz/aktivieren`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({lizenz_schluessel:e})},1e4),n=await t.json().catch(()=>({}));if(!t.ok){l(n?.fehler??`HTTP ${t.status}`);return}window.location.reload()}catch(e){l(e?.message??`Netzwerk`)}finally{s(!1)}},d=U(e===`abgelaufen`?`Lizenz abgelaufen`:e===`widerrufen`?`Lizenz widerrufen`:`Lizenz aktivieren`);return(0,q.jsx)(`div`,{className:`fixed inset-0 z-[300] bg-black/70 backdrop-blur-sm flex items-center justify-center p-4`,children:(0,q.jsxs)(`div`,{className:`bg-surface border border-border rounded-lg shadow-2xl max-w-md w-full`,children:[(0,q.jsxs)(`div`,{className:`px-5 py-4 border-b border-border flex items-center gap-2`,children:[e===`inaktiv`?(0,q.jsx)(b,{size:20,className:`text-petrol-300`}):(0,q.jsx)(N,{size:20,className:`text-danger`}),(0,q.jsx)(`h2`,{className:`text-lg font-medium`,children:d})]}),(0,q.jsxs)(`div`,{className:`p-5 space-y-4`,children:[(0,q.jsx)(`p`,{className:`text-sm text-muted`,children:r(e===`inaktiv`?`Um die App nutzen zu koennen, brauchst du einen Lizenz-Schluessel. Du hast einen vom Anbieter erhalten â gib ihn hier ein.`:e===`abgelaufen`?`Deine Lizenz ist abgelaufen. Gib einen neuen Schluessel ein um weiterzumachen.`:`Deine Lizenz wurde widerrufen. Bitte einen neuen Schluessel anfordern und unten eingeben.`)}
31),n&&(0,q.jsx)(`a`,{href:`/preise`,className:`block w-full text-center px-4 py-2.5 bg-petrol-500 text-white rounded hover:bg-petrol-600 text-sm font-semibold`,children:r(`Plan wählen & abonnieren`)}),n&&(0,q.jsx)(`div`,{className:`text-center text-xs text-muted`,children:r(`â oder Lizenz-Schlüssel eingeben â`)}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-sm font-medium mb-1`,children:r(`Lizenz-Schluessel`)}),(0,q.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value.toUpperCase()),onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`GENV-XXXX-XXXX-XXXX`,className:`w-full px-3 py-2 bg-surface-hover border border-border rounded font-mono text-sm tracking-wider`,disabled:o,autoFocus:!0})]}),c&&(0,q.jsx)(`div`,{className:`bg-danger/10 border border-danger/30 rounded p-3 text-sm text-danger`,children:c}),(0,q.jsx)(`button`,{onClick:u,disabled:o||!i.trim(),className:`w-full px-4 py-2.5 bg-petrol-500 text-white rounded hover:bg-petrol-600 text-sm font-medium disabled:opacity-60 disabled:cursor-not-allowed`,children:r(o?`Wird aktiviert...`:`Lizenz aktivieren`)}),(0,q.jsxs)(`button`,{onClick:async()=>{try{await t()}catch{}window.location.href=`/anmelden`},className:`w-full px-4 py-2.5 bg-surface-hover border border-border text-foreground rounded hover:bg-surface text-sm font-medium flex items-center justify-center gap-2`,children:[(0,q.jsx)(S,{size:14}),r(`Mit anderem Account anmelden`)]}),(0,q.jsx)(`p`,{className:`pt-2 border-t border-border text-xs text-muted text-center`,children:r(`Noch keinen Schluessel? Bitte beim Anbieter anfragen.`)})]})]})})}function En(){let{t:e}=V(`common`),[t,n]=(0,K.useState)([]),r=(0,K.useRef)(null),i=(0,K.useCallback)(async()=>{try{let e=await fetch(`/api/auto-sync/notifications`);if(e.ok){let t=await e.json();Array.isArray(t)&&n(t)}}catch(e){console.warn(`[AutoSyncBanner] Initial-Fetch fehlgeschlagen:`,e)}},[]);(0,K.useEffect)(()=>{i();let e=!1,t=null,a=null,o=5e3,s=()=>{if(e||r.current)return;t=null;let i=new EventSource(`/api/sse/notifications`,{withCredentials:!0});r.current=i,i.onopen=()=>{o=5e3},i.onmessage=e=>{try{let t=JSON.parse(e.data);n(e=>e.some(e=>e.id===t.id)?e:[...e,t])}catch(e){console.warn(`[AutoSyncBanner] SSE-Parse-Fehler:`,e)}},i.onerror=()=>{if(i.close(),r.current===i&&(r.current=null),e||t!==null)return;let n=o+Math.random()*1e4;o=Math.min(o*2,12e4),console.warn(`[AutoSyncBanner] SSE-Error â Reconnect in ${Math.round(n/1e3)}s`),t=window.setTimeout(s,n)}},c=()=>{document.hidden?a===null&&(a=window.setTimeout(()=>{a=null,r.current?.close(),r.current=null},3e5)):(a!==null&&(window.clearTimeout(a),a=null),!r.current&&t===null&&(o=5e3,s()))};return document.addEventListener(`visibilitychange`,c),s(),()=>{e=!0,document.removeEventListener(`visibilitychange`,c),t!==null&&window.clearTimeout(t),a!==null&&window.clearTimeout(a),r.current?.close(),r.current=null}},[i]);let a=async e=>{n(t=>t.filter(t=>t.id!==e));try{await fetch(`/api/auto-sync/notifications/${e}/read`,{method:`PATCH`})}catch(e){console.warn(`[AutoSyncBanner] Mark-read fehlgeschlagen:`,e)}};if(t.length===0)return null;let o=e=>{switch(e){case`error`:return`bg-red-500/10 border-red-500/30 text-red-300`;case`warning`:return`bg-amber-500/10 border-amber-500/30 text-amber-300`;default:return`bg-petrol-500/10 border-petrol-500/30 text-petrol-300`}},s=e=>{let t=`w-4 h-4 flex-shrink-0 mt-0.5`;switch(e){case`error`:return(0,q.jsx)(k,{className:t});case`warning`:return(0,q.jsx)(N,{className:t});default:return(0,q.jsx)(fe,{className:t})}};return(0,q.jsx)(`div`,{className:`space-y-1.5 px-4 pt-3`,children:t.map(t=>(0,q.jsxs)(`div`,{className:M(`border rounded-lg px-3 py-2 text-sm flex items-start gap-2`,o(t.level)),children:[s(t.level),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`p`,{className:`leading-snug`,children:t.text}),(0,q.jsx)(`p`,{className:`text-[10px] opacity-60 mt-0.5`,children:new Date(t.erstellt_am).toLocaleString(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`2-digit`,hour:`2-digit`,minute:`2-digit`})})]}),(0,q.jsx)(`button`,{onClick:()=>a(t.id),className:`opacity-60 hover:opacity-100 transition-opacity p-0.5`,title:e(`common:schliessen`,`SchlieÃen`),children:(0,q.jsx)(j,{className:`w-3.5 h-3.5`})})]},t.id))})}function Dn(){let{t:e}=V(`common`);return(0,q.jsxs)(`footer`,{className:`border-t border-white/5 bg-surface/30 px-4 sm:px-8 py-3 text-xs text-text-muted flex flex-wrap items-center justify-center gap-x-4 gap-y-1`,children:[(0,q.jsx)(R,{to:`/preise`,className:`hover:text-text-primary transition-colors`,children:e(`footer.preise`,`Preise`)}),(0,q.jsx)(`span`,{className:`text-text-muted/40`,children:`|`}),(0,q.jsx)(R,{to:`/datenschutz`,className:`hover:text-text-primary transition-colors`,children:e(`footer.datenschutz`,`Datenschutz`)}),(0,q.jsx)(`span`,{className:`text-text-muted/40`,children:`|`}),(0,q.jsx)(R,{to:`/impressum`,className:`hover:text-text-primary transition-colors`,children:e(`footer.impressum`,`Impressum`)}),(0,q.jsx)(`span`,{className:`text-text-muted/40`,children:`|`}),(0,q.jsx)(R,{to:`/widerrufen`,className:`hover:text-text-primary transition-colors`,children:e(`footer.widerruf`,`Vertrag widerrufen`)}),(0,q.jsx)(`span`,{className:`text-text-muted/40`,children:`|`}),(0,q.jsx)(R,{to:`/kuendigen`,className:`hover:text-text-primary transition-colors`,children:e(`footer.kuendigen`,`Verträge hier kündigen`)})]})}var On=z;function kn(){let e=H(),{benutzer:t,refresh:r}=G(),[i,a]=(0,K.useState)(!1),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(!1),u=(0,K.useRef)(r);return u.current=r,(0,K.useEffect)(()=>{let e=()=>{document.visibilityState!==`hidden`&&u.current()};return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[]),!t||t.bestaetigt||i?null:(0,q.jsx)(`div`,{className:`fixed top-0 left-0 right-0 z-40 bg-amber-500/20 dark:bg-amber-500/10 border-b border-amber-500/50 dark:border-amber-500/30 px-4 py-2 backdrop-blur`,children:(0,q.jsxs)(`div`,{className:`max-w-5xl mx-auto flex items-center gap-3 text-xs sm:text-sm`,children:[(0,q.jsx)(n,{className:`w-4 h-4 text-amber-700 dark:text-amber-400 shrink-0`}),(0,q.jsx)(`div`,{className:`flex-1 text-amber-900 dark:text-amber-200`,children:c?(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(A,{className:`w-4 h-4`}),` `,e(`Bestaetigungs-Mail wurde an {{email}} verschickt â bitte E-Mail-Postfach pruefen.`,{email:t.email})]}):(0,q.jsx)(`span`,{children:e(`Deine E-Mail-Adresse {{email}} ist noch nicht bestaetigt.`,{email:t.email})})}),(0,q.jsx)(`a`,{href:`/bestaetigen`,className:`px-3 py-1 rounded bg-amber-500/30 hover:bg-amber-500/40 text-amber-900 dark:text-amber-200 text-xs font-medium border border-amber-500/40 dark:border-amber-500/30 transition-colors whitespace-nowrap`,children:e(`Jetzt bestätigen`)}),!c&&(0,q.jsx)(`button`,{onClick:async()=>{s(!0);try{(await fetch(`${On()}/api/auth/bestaetigungs-mail-neu`,{method:`POST`,credentials:`include`})).ok&&(l(!0),setTimeout(()=>l(!1),5e3))}catch{}finally{s(!1)}},disabled:o,className:`px-3 py-1 rounded text-amber-900 dark:text-amber-200 text-xs underline transition-colors whitespace-nowrap`,children:e(o?`Sendeâ¦`:`Neuen Code senden`)}),(0,q.jsx)(`button`,{onClick:()=>a(!0),className:`p-1 text-amber-700 dark:text-amber-400/60 hover:text-amber-900 dark:hover:text-amber-200 transition-colors`,title:U(`Banner ausblenden (kommt nach Reload wieder)`),children:(0,q.jsx)(j,{className:`w-4 h-4`})})]})})}var An=1,jn={erfolg:{bg:`bg-success/15`,border:`border-success/40`,icon:u,iconCls:`text-success`},fehler:{bg:`bg-danger/15`,border:`border-danger/40`,icon:Ee,iconCls:`text-danger`},warnung:{bg:`bg-amber-500/15`,border:`border-amber-500/40`,icon:N,iconCls:`text-amber-400`},info:{bg:`bg-petrol-500/15`,border:`border-petrol-500/40`,icon:fe,iconCls:`text-petrol-300`}};function Mn(){let{t:e}=V(`common`),[t,n]=(0,K.useState)([]),r=(0,K.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]);return(0,K.useEffect)(()=>{let e=e=>{let t=e,i=t.detail.dauer??5e3,a={id:An++,text:t.detail.text,typ:t.detail.typ,dauer:i};n(e=>[a,...e].slice(0,6)),i>0&&setTimeout(()=>r(a.id),i)};return window.addEventListener(Bt,e),()=>window.removeEventListener(Bt,e)},[r]),t.length===0?null:(0,q.jsxs)(`div`,{className:`fixed top-4 right-4 z-[10000] flex flex-col gap-2 pointer-events-none max-w-sm w-[calc(100vw-2rem)]`,role:`status`,"aria-live":`polite`,children:[t.map(t=>{let n=jn[t.typ],i=n.icon;return(0,q.jsxs)(`div`,{className:`pointer-events-auto rounded-lg border ${n.bg} ${n.border} backdrop-blur-md shadow-lg px-4 py-3 flex items-start gap-3 mp3-toast-enter`,children:[(0,q.jsx)(i,{className:`w-5 h-5 shrink-0 mt-0.5 ${n.iconCls}`}),(0,q.jsx)(`div`,{className:`flex-1 text-sm text-text-primary leading-relaxed break-words whitespace-pre-line`,children:t.text}),(0,q.jsx)(`button`,{onClick:()=>r(t.id),className:`shrink-0 text-text-muted hover:text-text-primary transition-colors`,"aria-label":e(`common:schliessen`,`SchlieÃen`),children:(0,q.jsx)(j,{className:`w-4 h-4`})})]},t.id)}),(0,q.jsx)(`style`,{children:` 32 @keyframes mp3-toast-enter { 33 from { opacity: 0; transform: translateX(20px); } 34 to { opacity: 1; transform: translateX(0); } 35 } 36 .mp3-toast-enter { animation: mp3-toast-enter 0.22s ease-out; } 37 `})]})}var Nn=[{datum:`2026-05-15`,typ:`neu`,titel:`2-Faktor-Authentifizierung`,beschreibung:`
37Schütze dein Konto mit einer Authenticator-App (Google Authenticator, Authy, 1Password). Aktivierung unter Einstellungen â Account.`},{datum:`2026-05-15`,typ:`neu`,titel:`Erste-Schritte-Checkliste`,beschreibung:`Auf dem Dashboard siehst du jetzt, welche Schritte zur vollständigen Einrichtung deines Kontos noch offen sind â mit Direkt-Sprung zur jeweiligen Stelle.`},{datum:`2026-05-15`,typ:`verbessert`,titel:`Schönere Anmelde- und Registrieren-Seite`,beschreibung:`Komplett neues Design mit Branding, Vertrauenssignalen und Passwort-Stärke-Anzeige. Wegwerf-E-Mail-Adressen werden jetzt geblockt.`},{datum:`2026-05-15`,typ:`verbessert`,titel:`Status-Anzeige auf App-Kacheln`,beschreibung:`Apps, die Vinted oder eBay brauchen, zeigen jetzt einen grünen Punkt wenn alles verbunden ist â oder einen grauen wenn Setup nötig ist.`},{datum:`2026-05-15`,typ:`verbessert`,titel:`Toast-Benachrichtigungen statt nerviger Pop-ups`,beschreibung:`Statt blockierender Browser-Dialoge erscheinen Erfolge und Fehler jetzt als unaufdringliche Karten oben rechts.`},{datum:`2026-05-14`,typ:`neu`,titel:`Avatar mit Initialen + Anzeigename`,beschreibung:`Trag unter Einstellungen â Account einen Anzeigenamen ein â wir zeigen dann automatisch deine Initialen in einem farbigen Avatar.`},{datum:`2026-05-14`,typ:`neu`,titel:`E-Mail-Bestätigung & Passwort-Reset`,beschreibung:`Du bekommst jetzt automatisch eine Bestätigungsmail nach der Registrierung und kannst dein Passwort per E-Mail zurücksetzen.`},{datum:`2026-05-14`,typ:`neu`,titel:`Kontakt-Formular & Newsletter`,beschreibung:`Schreib uns direkt aus der App über die Hilfe-Seite â oder abonniere den Newsletter, um über neue Features informiert zu bleiben.`},{datum:`2026-05-12`,typ:`verbessert`,titel:`Hell-Modus für die ganze App`,beschreibung:`Stell unter Einstellungen â Account zwischen Dunkel- und Hell-Modus um â alle Seiten passen sich automatisch an.`},{datum:`2026-05-11`,typ:`neu`,titel:`Echtzeit-Benachrichtigungen`,beschreibung:`Klick auf die Glocke oben rechts â du siehst sofort, wenn ein Verkauf reinkommt, ein Listing fertig ist oder ein Fehler auftritt.`},{datum:`2026-05-08`,typ:`verbessert`,titel:`Automatische DB-Backups`,beschreibung:`Wir sichern deine Daten täglich um 02:00 Uhr automatisch â du musst dich um nichts kümmern.`}],Pn=`mp3_changelog_zuletzt_gesehen`,Fn=(0,K.createContext)(void 0);function In({children:e}){let[t,n]=(0,K.useState)(!1),[r,i]=(0,K.useState)(()=>{try{return localStorage.getItem(Pn)}catch{return null}}),a=Nn.filter(e=>!r||e.datum>r).length,o=(0,K.useCallback)(()=>{n(!0);let e=Nn[0]?.datum;if(e)try{localStorage.setItem(Pn,e),i(e)}catch{}},[]),s=(0,K.useCallback)(()=>n(!1),[]);return(0,K.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&s()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,s]),(0,q.jsxs)(Fn.Provider,{value:{oeffnen:o,ungeleseneAnzahl:a},children:[e,t&&(0,q.jsx)(Rn,{onClose:s})]})}function Ln(){return(0,K.useContext)(Fn)||{oeffnen:()=>{},ungeleseneAnzahl:0}}function Rn({onClose:e}){let n=H();return(0,q.jsxs)(`div`,{className:`fixed inset-0 z-[9998] bg-black/60 backdrop-blur-sm flex items-end sm:items-center justify-center p-0 sm:p-4 animate-fade-in`,onClick:e,children:[(0,q.jsxs)(`div`,{"data-tour-id":`changelog-modal`,className:`bg-surface border border-white/10 rounded-t-2xl sm:rounded-2xl shadow-2xl w-full max-w-2xl max-h-[85vh] overflow-hidden flex flex-col`,onClick:e=>e.stopPropagation(),children:[(0,q.jsxs)(`div`,{"data-tour-id":`changelog-modal-header`,className:`flex items-center justify-between gap-4 px-6 py-4 border-b border-white/5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`div`,{className:`w-9 h-9 rounded-lg bg-petrol-500/15 border border-petrol-500/30 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(t,{className:`w-4 h-4`})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-text-primary`,children:n(`Was ist neu`)}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted`,children:n(`Updates und Verbesserungen`)})]})]}),(0,q.jsx)(`button`,{onClick:e,className:`text-text-muted hover:text-text-primary transition-colors`,"aria-label":U(`Schliessen`),children:(0,q.jsx)(j,{className:`w-5 h-5`})})]}),(0,q.jsx)(`div`,{"data-tour-id":`changelog-modal-liste`,className:`flex-1 overflow-y-auto p-6 space-y-6`,children:Nn.map(e=>(0,q.jsx)(zn,{eintrag:e},e.datum+`_`+e.titel))}),(0,q.jsxs)(`div`,{className:`px-6 py-3 border-t border-white/5 text-xs text-text-muted text-center`,children:[n(`Aeltere Updates findest du im`),` `,(0,q.jsx)(`a`,{href:`https://github.com/your-org/genv`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-text-secondary`,children:n(`Public-Repo`)}),` `,n(`(folgt).`)]})]}),(0,q.jsx)(`style`,{children:` 38 @keyframes mp3-fade-in { 39 from { opacity: 0 } 40 to { opacity: 1 } 41 } 42 .animate-fade-in { animation: mp3-fade-in 0.2s ease-out } 43 `})]})}function zn({eintrag:e}){let t={neu:{bg:`bg-success/15 border-success/30`,text:`text-success`},verbessert:{bg:`bg-petrol-500/15 border-petrol-500/30`,text:`text-petrol-300`},bugfix:{bg:`bg-amber-500/15 border-amber-500/30`,text:`text-amber-400`}},n={neu:U(`Neu`),verbessert:U(`Verbessert`),bugfix:U(`Bugfix`)},r=e.typ??`neu`,i=t[r],a=e.datum;try{let t=new Date(e.datum);isNaN(t.getTime())||(a=t.toLocaleDateString(`de-DE`,{day:`numeric`,month:`long`,year:`numeric`}))}catch{}return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,q.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider font-bold px-2 py-0.5 rounded-full border ${i.bg} ${i.text}`,children:n[r]}),(0,q.jsx)(`h3`,{className:`text-sm font-semibold text-text-primary`,children:e.titel}),(0,q.jsx)(`span`,{className:`text-[11px] text-text-muted ml-auto`,children:a})]}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary leading-relaxed pl-1`,children:e.beschreibung})]})}var Bn=(0,K.createContext)(void 0);function Vn({children:e}){let[t,n]=(0,K.useState)(!1);return(0,K.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),n(e=>!e);return}if(e.key===`/`&&!t){let t=document.activeElement;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;e.preventDefault(),n(!0)}};
43return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,q.jsxs)(Bn.Provider,{value:{oeffnen:()=>n(!0)},children:[e,t&&(0,q.jsx)(Un,{onClose:()=>n(!1)})]})}function Hn(){return(0,K.useContext)(Bn)??{oeffnen:()=>{}}}function Un({onClose:e}){let{t:i}=V(`nav`),o=I(),{oeffnen:s}=Ln(),{istAdmin:c}=G(),[l,u]=(0,K.useState)(``),[m,h]=(0,K.useState)(0),g=(0,K.useRef)(null),_=(0,K.useRef)(null),v=(0,K.useMemo)(()=>[{id:`home`,tk:`app_dashboard`,label:`Dashboard`,beschreibung:`Ãbersicht und Statistiken`,icon:O,zielPfad:`/`,kategorie:`Apps`},{id:`einkauf`,tk:`app_einkauf`,label:`Einkauf`,beschreibung:`Bundles & Beschaffung`,tags:[`kaufen`,`bundle`],icon:C,zielPfad:`/einkauf`,kategorie:`Apps`},{id:`checkin`,tk:`app_checkin`,label:`Check-In`,beschreibung:`Artikel per Smartphone erfassen`,tags:[`foto`,`mobile`,`workflow`],icon:d,zielPfad:`/checkin`,kategorie:`Apps`},{id:`artikel`,tk:`app_bulk_manager`,label:`Bulk-Manager`,beschreibung:`Artikel bearbeiten & einstellen`,tags:[`liste`,`edit`],icon:Se,zielPfad:`/artikel`,kategorie:`Apps`},{id:`cross`,tk:`app_cross_lister`,label:`Cross-Lister`,beschreibung:`Vinted â eBay verschieben`,icon:a,zielPfad:`/cross-lister`,kategorie:`Apps`},{id:`online`,tk:`app_online`,label:`Online`,beschreibung:`Aktive Listings auf allen Plattformen`,icon:we,zielPfad:`/online`,kategorie:`Apps`},{id:`verkauf`,tk:`app_bestellungen`,label:`Meine Bestellungen`,beschreibung:`Verkaufte Artikel & Versand`,tags:[`versand`,`label`],icon:he,zielPfad:`/verkauf`,kategorie:`Apps`},{id:`gekauft`,tk:`app_kaeufe`,label:`Meine Käufe`,beschreibung:`Eingekaufte Bundles & Wareneingang`,icon:T,zielPfad:`/gekauft`,kategorie:`Apps`},{id:`statistik`,tk:`app_statistik`,label:`Statistik`,beschreibung:`Umsatz, Gewinn, Trend-Analysen`,tags:[`analytics`,`kpi`,`umsatz`],icon:y,zielPfad:`/statistik`,kategorie:`Apps`},{id:`buchhaltung`,tk:`app_buchhaltung`,label:`Buchhaltung`,beschreibung:`Rechnungen, Versand, CSV-Export`,tags:[`rechnung`,`export`,`csv`,`datev`],icon:Ae,zielPfad:`/buchhaltung`,kategorie:`Apps`},{id:`preisanpassung`,tk:`app_preisanpassung`,label:`Preisanpassung`,beschreibung:`Preise nach X Tagen senken`,tags:[`rabatt`,`senken`],icon:Ke,zielPfad:`/preisanpassung`,kategorie:`Apps`},{id:`archiv`,tk:`app_archiv`,label:`Archiv`,beschreibung:`Verkaufte & alte Listings`,icon:Pe,zielPfad:`/archiv`,kategorie:`Apps`},{id:`fotoki`,tk:`app_foto_ki`,label:`Foto-KI`,beschreibung:`Hintergrund, Wasserzeichen, Try-On`,tags:[`ki`,`bild`,`edit`],icon:ue,zielPfad:`/foto-ki`,kategorie:`Apps`},{id:`komm`,tk:`app_kommunikation`,label:`Kommunikation`,beschreibung:`Nachrichten Vinted & eBay`,tags:[`chat`,`nachricht`],icon:ie,zielPfad:`/kommunikation`,kategorie:`Apps`},{id:`profil`,tk:`search_profil`,label:`Profil`,beschreibung:`Account, Lizenz, Sicherheit, Daten`,icon:ye,zielPfad:`/profil`,kategorie:`Einstellungen`},{id:`stammdaten`,tk:`search_stammdaten`,label:`Stammdaten`,beschreibung:`Verkäufer-Daten, Steuer, Bank`,icon:r,zielPfad:`/einstellungen`,kategorie:`Einstellungen`},{id:`hilfe`,tk:`search_hilfe`,label:`Hilfe / FAQ`,beschreibung:`FAQ und Kontakt`,tags:[`faq`,`support`,`fragen`],icon:E,zielPfad:`/hilfe`,kategorie:`Einstellungen`},{id:`benachrichtigungen`,tk:`search_benachrichtigungen`,label:`Benachrichtigungen`,tags:[`notifications`,`alerts`],icon:Ve,zielPfad:`/benachrichtigungen`,kategorie:`Einstellungen`},{id:`admin-allgemein`,label:`Administration`,beschreibung:`Admin-Center · Allgemein`,tags:[`admin`],icon:r,zielPfad:`/administration`,kategorie:`Admin`},{id:`admin-lizenzen`,label:`Lizenzen`,beschreibung:`Admin · Lizenz-Verwaltung`,tags:[`key`,`schluessel`],icon:f,zielPfad:`/admin/lizenzen`,kategorie:`Admin`},{id:`admin-benutzer`,label:`Benutzer`,beschreibung:`Admin · User-Verwaltung`,tags:[`user`],icon:_e,zielPfad:`/admin/benutzer`,kategorie:`Admin`},{id:`admin-support`,label:`Support-Tickets`,beschreibung:`Admin · Eingehende Kontakte`,tags:[`kontakt`],icon:ie,zielPfad:`/admin/support`,kategorie:`Admin`},{id:`admin-newsletter`,label:`Newsletter`,beschreibung:`Admin · Abonnenten + Mailversand`,icon:n,zielPfad:`/admin/newsletter`,kategorie:`Admin`},{id:`admin-audit`,label:`Audit-Log`,beschreibung:`Admin · Zugriffs-Historie`,tags:[`protokoll`,`log`],icon:Ne,zielPfad:`/admin/audit-log`,kategorie:`Admin`},{id:`profil-aktion`,tk:`search_profil_aktion`,label:`Profil bearbeiten`,tags:[`avatar`,`anzeigename`],icon:ye,aktion:()=>o(`/profil`),kategorie:`Aktionen`},{id:`changelog`,tk:`search_changelog`,label:`Was ist neu`,beschreibung:`Aktuelle Updates und Verbesserungen`,icon:t,aktion:()=>{e(),s()},kategorie:`Aktionen`}],[o,s,e]),b=(0,K.useMemo)(()=>c?v:v.filter(e=>e.kategorie!==`Admin`),[v,c]),x=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();if(!e)return b;
43let t=e.split(/\s+/).filter(Boolean);return b.filter(e=>{let n=`${e.label} ${e.beschreibung??``} ${(e.tags??[]).join(` `)}`.toLowerCase();return t.every(e=>n.includes(e))})},[l,b]),S=(0,K.useMemo)(()=>{let e=new Map;for(let t of x){let n=e.get(t.kategorie)??[];n.push(t),e.set(t.kategorie,n)}return Array.from(e.entries())},[x]);(0,K.useEffect)(()=>{h(0)},[l]),(0,K.useEffect)(()=>{g.current?.focus();let t=t=>{if(t.key===`Escape`)t.preventDefault(),e();else if(t.key===`ArrowDown`)t.preventDefault(),h(e=>Math.min(e+1,x.length-1));else if(t.key===`ArrowUp`)t.preventDefault(),h(e=>Math.max(e-1,0));else if(t.key===`Enter`){t.preventDefault();let e=x[m];if(!e)return;w(e)}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[x,m,e]),(0,K.useEffect)(()=>{(_.current?.querySelector(`[data-idx="${m}"]`))?.scrollIntoView({block:`nearest`})},[m]);function w(t){e(),t.zielPfad?o(t.zielPfad):t.aktion&&t.aktion()}let D=0;return(0,q.jsx)(`div`,{className:`fixed inset-0 z-[10000] bg-black/60 backdrop-blur-sm flex items-start justify-center p-4 sm:p-10`,onClick:e,children:(0,q.jsxs)(`div`,{"data-tour-id":`cmdk-modal`,className:`bg-surface border border-white/10 rounded-2xl shadow-2xl w-full max-w-xl overflow-hidden flex flex-col mt-8 sm:mt-20`,onClick:e=>e.stopPropagation(),children:[(0,q.jsxs)(`div`,{"data-tour-id":`cmdk-suchfeld`,className:`flex items-center gap-3 px-4 py-3 border-b border-white/5`,children:[(0,q.jsx)(p,{className:`w-5 h-5 text-text-muted shrink-0`}),(0,q.jsx)(`input`,{ref:g,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:i(`nav:suche_platzhalter`,`Suche nach App, Einstellung oder Aktion â¦`),className:`flex-1 bg-transparent border-none outline-none text-base text-text-primary placeholder:text-text-muted`}),(0,q.jsx)(`kbd`,{className:`hidden sm:inline-flex shrink-0 text-[10px] text-text-muted bg-white/5 border border-white/10 rounded px-1.5 py-0.5 font-mono`,children:`Esc`})]}),(0,q.jsx)(`ul`,{ref:_,"data-tour-id":`cmdk-ergebnisliste`,className:`flex-1 overflow-y-auto max-h-[60vh] py-2`,children:S.length===0?(0,q.jsx)(`li`,{className:`px-4 py-8 text-center text-sm text-text-muted`,children:i(`nav:suche_keine_treffer`,{defaultValue:`Keine Treffer für â{{query}}".`,query:l})}):S.map(([e,t])=>(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`div`,{className:`px-4 pt-3 pb-1 text-[10px] uppercase tracking-wider font-semibold text-text-muted`,children:i(`nav:kat_${e.toLowerCase()}`,e)}),(0,q.jsx)(`ul`,{children:t.map(e=>{let t=D++,n=t===m,r=e.icon;return(0,q.jsx)(`li`,{"data-idx":t,children:(0,q.jsxs)(`button`,{type:`button`,onClick:()=>w(e),onMouseEnter:()=>h(t),className:`w-full flex items-center gap-3 px-4 py-2.5 text-left transition-colors ${n?`bg-petrol-500/15`:`hover:bg-white/[0.03]`}`,children:[(0,q.jsx)(r,{className:`w-4 h-4 shrink-0 ${n?`text-petrol-300`:`text-text-muted`}`}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium truncate text-text-primary`,children:e.tk?i(`nav:${e.tk}_label`,e.label):e.label}),e.beschreibung&&(0,q.jsx)(`div`,{className:`text-xs text-text-muted truncate`,children:e.tk?i(`nav:${e.tk}_desc`,e.beschreibung):e.beschreibung})]}),n&&(0,q.jsx)(`kbd`,{className:`shrink-0 text-[10px] text-text-muted bg-white/5 border border-white/10 rounded px-1.5 py-0.5 font-mono`,children:`â`})]})},e.id)})})]},e))}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-t border-white/5 text-[11px] text-text-muted`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`kbd`,{className:`bg-white/5 border border-white/10 rounded px-1 py-0.5 font-mono`,children:`â`}),(0,q.jsx)(`kbd`,{className:`bg-white/5 border border-white/10 rounded px-1 py-0.5 font-mono`,children:`â`}),i(`nav:suche_navigieren`,`navigieren`)]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`kbd`,{className:`bg-white/5 border border-white/10 rounded px-1 py-0.5 font-mono`,children:`â`}),i(`nav:suche_oeffnen`,`öffnen`)]})]}),(0,q.jsxs)(`span`,{children:[x.length,` `,i(`nav:suche_treffer`,`Treffer`)]})]})]})})}var Wn=(void 0)?.trim()||void 0;function Gn(e){try{let t=new URL(e),n=t.username,r=t.pathname.replace(/^\//,``);return!n||!r?null:{ingestUrl:`${t.protocol}//${t.host}/api/${r}/store/`,projectId:r,publicKey:n,enabled:!0}}catch{return null}}var Kn=Wn?Gn(Wn):null;function qn(e,t){if(!Kn||!Kn.enabled)return;let n=typeof e==`string`?e:e.message||`Unbekannter Fehler`,r=typeof e==`string`?void 0:e.stack,i={event_id:Yn(),timestamp:new Date().toISOString(),level:`error`,platform:`javascript`,message:{formatted:n},exception:r?{values:[{type:typeof e==`string`?`Error`:e.name||`Error`,value:n,stacktrace:{frames:Xn(r)}}]}:void 0,request:{url:typeof window<`u`?window.location.href:void 0,headers:{"User-Agent":typeof navigator<`u`?navigator.userAgent:``}},tags:{app:`genv-frontend`},extra:t};fetch(Kn.ingestUrl,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Se
43ntry-Auth":Jn(Kn.publicKey)},body:JSON.stringify(i),keepalive:!0}).catch(()=>{})}function Jn(e){return[`Sentry sentry_version=7`,`sentry_client=genv-custom-hook/1.0`,`sentry_key=${e}`].join(`, `)}function Yn(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function Xn(e){return e.split(` 44`).slice(0,30).map(e=>{let t=e.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?/);return t?{function:t[1]||`<anonymous>`,filename:t[2],lineno:parseInt(t[3],10),colno:parseInt(t[4],10)}:{function:e.trim()}}).reverse()}function Zn(){!Kn||!Kn.enabled||typeof window>`u`||(window.addEventListener(`error`,e=>{qn(e.error instanceof Error?e.error:Error(e.message||`Unbekannter Fehler`),{quelle:`window.onerror`,filename:e.filename,lineno:e.lineno,colno:e.colno})}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;qn(t instanceof Error?t:Error(typeof t==`string`?t:JSON.stringify(t)),{quelle:`unhandledrejection`})}),(()=>{})(`[Sentry] Globale Error-Listener installiert`))}var Qn=class extends K.Component{constructor(e){super(e),at(this,`neustart`,()=>{this.setState({fehler:null,fehlerInfo:null})}),this.state={fehler:null,fehlerInfo:null}}static getDerivedStateFromError(e){return{fehler:e,fehlerInfo:null}}componentDidCatch(e,t){this.setState({fehlerInfo:{componentStack:t.componentStack??void 0}}),qn(e,{quelle:`FehlerGrenze`,componentStack:t.componentStack}),console.error(`[FehlerGrenze] Crash:`,e,t)}render(){return this.state.fehler?this.props.fallback?this.props.fallback(this.state.fehler,this.neustart):(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background text-text-primary p-4`,children:(0,q.jsxs)(`div`,{className:`max-w-md w-full bg-surface border border-white/10 rounded-2xl p-8 shadow-xl space-y-6`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-amber-500/15 border border-amber-500/30 flex items-center justify-center text-amber-400`,children:(0,q.jsx)(N,{className:`w-6 h-6`})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{className:`text-lg font-bold text-text-primary`,children:U(`Etwas ist schiefgegangen`)}),(0,q.jsx)(`p`,{className:`text-xs text-text-muted`,children:U(`Die Seite konnte nicht geladen werden.`)})]})]}),(0,q.jsx)(`p`,{className:`text-sm text-text-secondary leading-relaxed`,children:U(`Keine Sorge â deine Daten sind sicher. Versuch es nochmal oder geh zurueck zum Dashboard. Wenn das Problem bleibt, schreib uns ueber die Hilfe-Seite.`)}),(0,q.jsxs)(`details`,{className:`text-xs`,children:[(0,q.jsx)(`summary`,{className:`cursor-pointer text-text-muted hover:text-text-secondary`,children:U(`Technische Details (fuer Support)`)}),(0,q.jsxs)(`pre`,{className:`mt-2 p-3 bg-background/60 border border-white/5 rounded text-[10px] text-text-muted font-mono overflow-auto max-h-32 whitespace-pre-wrap`,children:[this.state.fehler.message,this.state.fehlerInfo?.componentStack&&` 45 46`+this.state.fehlerInfo.componentStack]})]}),(0,q.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,q.jsxs)(`button`,{onClick:this.neustart,className:`flex-1 px-4 py-2.5 bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium rounded-lg inline-flex items-center justify-center gap-2`,children:[(0,q.jsx)(de,{className:`w-4 h-4`}),U(`Erneut versuchen`)]}),(0,q.jsxs)(`a`,{href:`/`,className:`flex-1 px-4 py-2.5 bg-white/5 hover:bg-white/10 text-text-primary text-sm font-medium rounded-lg inline-flex items-center justify-center gap-2`,children:[(0,q.jsx)(O,{className:`w-4 h-4`}),U(`Zum Dashboard`)]})]})]})}):this.props.children}},$n=100010,er=8e3,tr=3e3,nr=7,rr=!1;function ir(e,t=er){return new Promise(n=>{let r=document.querySelector(e);if(r)return n(r);let i=new MutationObserver(()=>{let t=document.querySelector(e);t&&(i.disconnect(),clearTimeout(a),n(t))});i.observe(document.body,{childList:!0,subtree:!0,attributes:!0});let a=setTimeout(()=>{i.disconnect(),n(null)},t)})}function ar(e){return new Promise(t=>setTimeout(t,e))}function Y(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}function or(e){return Y(W(e)).replace(/\*\*(.+?)\*\*/g,`<b>$1</b>`)}var sr=`mp3-mission-style`;function cr(){if(document.getElementById(sr))return;let e=document.createElement(`style`);e.id=sr,e.textContent=` 47 @keyframes mp3vFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}} 48 @keyframes mp3vBlink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}} 49 @keyframes mp3vGlow{0%,100%{opacity:.55}50%{opacity:1}} 50 @keyframes mp3vSpark{0%,100%{opacity:0;transform:scale(.4) rotate(0)}50%{opacity:1;transform:scale(1) rotate(20deg)}} 51 @keyframes mp3vHop{0%,100%{transform:translateY(0)}30%{transform:translateY(-14px)}55%{transform:translateY(0)}70%{transform:translateY(-6px)}85%{transform:translateY(0)}} 52 @keyframes mp3vDenk{0%,100%{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}} 53 @keyframes mp3vRing{0%{opacity:.9;transform:scale(.97)}70%{opacity:0;transform:scale(1.1)}100%{opacity:0;transform:scale(1.1)}} 54 @keyframes mp3vRein{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}} 55 .mp3v-float{animation:mp3vFloat 3.2s ease-in-out infinite} 56 .mp3v-pose-freuen .mp3v-float{animation:mp3vHop 1s ease-in-out infinite} 57 .mp3v-pose-warten .mp3v-float{animation:mp3vDenk 2.4s ease-in-out infinite} 58 .mp3v-eye{transform-origin:center;animation:mp3vBlink 4.5s infinite} 59 .mp3v-glow{animation:mp3vGlow 2.6s ease-in-out infinite} 60 .mp3v-spark{animation:mp3vSpark 3.8s ease-in-out infinite} 61 .mp3v-mund-froh{display:none} 62 .mp3v-pose-freuen .mp3v-mund-normal{display:none} 63 .mp3v-pose-freuen .mp3v-mund-froh{display:block} 64 65 .mp3v-ring{position:fixed;border-radius:14px;border:2px solid #b388ff;pointer-events:none; 66 z-index:${$n+2};animation:mp3vRing 1.5s ease-out infinite} 67 .mp3v-helper{position:fixed;z-index:${$n+4};display:flex;align-items:flex-end;
67gap:13px; 68 bottom:28px;right:30px;animation:mp3vRein .5s cubic-bezier(.34,1.56,.64,1)} 69 .mp3v-helper.mp3v-links{right:auto;left:30px;flex-direction:row-reverse} 70 .mp3v-helper.mp3v-links .mp3v-bubble{border-radius:16px 16px 16px 4px} 71 .mp3v-bubble{background:#141820;border:1px solid rgba(124,58,237,.45);border-radius:16px 16px 4px 16px; 72 padding:13px 16px;max-width:330px;box-shadow:0 18px 50px rgba(0,0,0,.55),0 0 30px rgba(124,58,237,.12); 73 font-family:inherit} 74 .mp3v-who{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.08em; 75 color:#b388ff;text-transform:uppercase;margin-bottom:6px} 76 .mp3v-dotlive{width:6px;height:6px;border-radius:99px;background:#47bfff;box-shadow:0 0 8px #47bfff} 77 .mp3v-msg{font-size:14px;line-height:1.5;color:#e2e8f0;min-height:20px} 78 .mp3v-msg b{color:#b388ff} 79 .mp3v-meta{display:flex;align-items:center;justify-content:space-between;margin-top:11px;gap:10px} 80 .mp3v-dots{display:flex;gap:5px} 81 .mp3v-dots i{width:7px;height:7px;border-radius:99px;background:#1e293b;transition:background .3s} 82 .mp3v-dots i.mp3v-done{background:#7c3aed} 83 .mp3v-dots i.mp3v-now{background:#b388ff;box-shadow:0 0 8px rgba(179,136,255,.8)} 84 .mp3v-skip{font-size:11px;color:#64748b;background:none;border:none;cursor:pointer;font-family:inherit;padding:0} 85 .mp3v-skip:hover{color:#94a3b8} 86 .mp3v-weiter{font-size:12.5px;font-weight:700;color:#fff;border:none;cursor:pointer;font-family:inherit; 87 background:linear-gradient(135deg,#7c3aed,#863bff);border-radius:9px;padding:7px 16px} 88 .mp3v-weiter:hover{filter:brightness(1.1)} 89 .mp3v-stage{width:96px;flex-shrink:0;filter:drop-shadow(0 12px 24px rgba(124,58,237,.35))} 90 91 .mp3v-modal{position:fixed;inset:0;z-index:${$n+10};background:rgba(4,5,10,.78); 92 display:flex;align-items:center;justify-content:center} 93 .mp3v-card{background:linear-gradient(165deg,#140a24,#0d1017 60%);border:1px solid rgba(124,58,237,.45); 94 border-radius:22px;padding:36px 38px;max-width:460px;width:92%;text-align:center;color:#e2e8f0; 95 font-family:inherit;animation:mp3vRein .4s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden} 96 .mp3v-etikett{font-size:10px;font-weight:700;letter-spacing:.14em;color:#47bfff;text-transform:uppercase} 97 .mp3v-card h2{font-size:22px;margin:8px 0 4px;color:#fff} 98 .mp3v-ziel{font-size:14px;color:#94a3b8;line-height:1.55;max-width:340px;margin:0 auto} 99 .mp3v-ziel b{color:#b388ff} 100 .mp3v-facts{display:flex;justify-content:center;gap:10px;margin:18px 0 22px;flex-wrap:wrap} 101 .mp3v-fact{font-size:11.5px;color:#94a3b8;background:#111827;border:1px solid #1e293b; 102 border-radius:99px;padding:6px 14px} 103 .mp3v-fact b{color:#b388ff} 104 .mp3v-start{background:linear-gradient(135deg,#7c3aed,#863bff);color:#fff;border:none;font-size:15px; 105 font-weight:700;padding:13px 32px;border-radius:14px;cursor:pointer;font-family:inherit; 106 box-shadow:0 10px 30px rgba(124,58,237,.35)} 107 .mp3v-start:hover{filter:brightness(1.1)} 108 .mp3v-spaeter{display:block;margin:13px auto 0;font-size:12px;color:#64748b;background:none; 109 border:none;cursor:pointer;font-family:inherit} 110 .mp3v-badge{width:72px;height:72px;border-radius:99px;margin:0 auto 4px; 111 background:radial-gradient(circle at 35% 30%,#a06bff,#5b21b6);border:2px solid #b388ff; 112 display:flex;align-items:center;justify-content:center;font-size:31px; 113 box-shadow:0 0 40px rgba(134,59,255,.5)} 114 .mp3v-xp{display:inline-block;margin-top:16px;font-size:14px;font-weight:800;color:#47bfff; 115 background:rgba(71,191,255,.1);border:1px solid rgba(71,191,255,.35);padding:7px 18px; 116 border-radius:99px;min-width:104px} 117 .mp3v-endbtns{margin-top:18px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap} 118 .mp3v-btn2{background:#111827;color:#94a3b8;border:1px solid #1e293b;font-size:13px;font-weight:600; 119 padding:10px 16px;border-radius:12px;cursor:pointer;font-family:inherit} 120 .mp3v-btn2:hover{color:#e2e8f0} 121 `,document.head.appendChild(e)}var lr=0;function ur(e){let t=++lr;return` 122 <svg class="mp3v-float" width="${e}" height="${Math.round(e*1.08)}" viewBox="0 0 120 130" aria-hidden="true"> 123 <defs> 124 <linearGradient id="mp3vG${t}" x1="0" y1="0" x2="1" y2="1"> 125 <stop offset="0" stop-color="#a06bff"/><stop offset=".55" stop-color="#863bff"/><stop offset="1" stop-color="#5b21b6"/> 126 </linearGradient> 127 <radialGradient id="mp3vGlow${t}" cx=".5" cy=".45" r=".6"> 128 <stop offset="0" stop-color="#863bff" stop-opacity=".5"/><stop offset="1" stop-color="#863bff" stop-opacity="0"/> 129 </radialGradient> 130 </defs> 131 <circle class="mp3v-glow" cx="60" cy="62" r="52" fill="url(#mp3vGlow${t})"/> 132 <path fill="url(#mp3vG${t})" stroke="#b388ff" stroke-width="1.5" stroke-linejoin="round" 133 d="M52 14 L92 14 L74 46 L96 46 L54 112 L60 68 L36 68 L58 36 L40 36 Z"/>
134 <ellipse class="mp3v-eye" cx="58" cy="46" rx="4.6" ry="6" fill="#fff"/> 135 <ellipse class="mp3v-eye" cx="76" cy="46" rx="4.6" ry="6" fill="#fff" style="animation-delay:.1s"/> 136 <circle cx="59.5" cy="47.5" r="2" fill="#2e1065"/> 137 <circle cx="77.5" cy="47.5" r="2" fill="#2e1065"/> 138 <path class="mp3v-mund-normal" d="M62 58 Q67 63 74 57" stroke="#fff" stroke-width="2.6" fill="none" stroke-linecap="round"/> 139 <path class="mp3v-mund-froh" d="M60 56 Q67 66 76 55" stroke="#fff" stroke-width="2.8" fill="none" stroke-linecap="round"/> 140 <g class="mp3v-spark"><path d="M99 24 l2.5 5 5 2.5 -5 2.5 -2.5 5 -2.5 -5 -5 -2.5 5 -2.5 Z" fill="#47bfff"/></g> 141 <g class="mp3v-spark" style="animation-delay:1.7s"><path d="M22 78 l2 4 4 2 -4 2 -2 4 -2 -4 -4 -2 4 -2 Z" fill="#b388ff"/></g> 142 </svg>`}async function dr(e,t={}){if(rr||e.stationen.length===0)return;rr=!0,cr();let n=!1,r=!1,i=[],a=!1,o=null,s=[],c=e=>(i.push(e),e),l=()=>{o&&(o.disconnect(),o=null),s.forEach(e=>e()),s=[]},u=()=>{l(),a=!1,i.forEach(e=>e.remove()),i.length=0,document.removeEventListener(`keydown`,f)},d=()=>{r||(r=!0,u(),rr=!1,t.beiAbbruch?.())},f=e=>{e.key===`Escape`&&d()};if(!await new Promise(t=>{let n=document.createElement(`div`);n.className=`mp3v-modal`,n.innerHTML=` 143 <div class="mp3v-card"> 144 <div style="filter:drop-shadow(0 10px 26px rgba(134,59,255,.4));margin-bottom:2px">${ur(84)}</div> 145 <div class="mp3v-etikett">${Y(W(e.etikett))}</div> 146 <h2>${Y(W(e.titel))}</h2> 147 <p class="mp3v-ziel">${or(e.ziel)}</p> 148 <div class="mp3v-facts"> 149 <span class="mp3v-fact">â± <b>~${e.dauerMin} Min.</b></span> 150 <span class="mp3v-fact">ð± <b>${e.stationen.filter(e=>e.interaktiv).length} Klicks</b></span> 151 ${e.xp>0?`<span class="mp3v-fact">ð Badge + <b>${e.xp} XP</b></span>`:``} 152 </div> 153 <button class="mp3v-start" type="button">${Y(W(`Mission starten`))}</button> 154 <button class="mp3v-spaeter" type="button">${Y(W(`Später`))}</button> 155 </div>`,document.body.appendChild(n),n.querySelector(`.mp3v-start`).onclick=()=>{n.remove(),t(!0)},n.querySelector(`.mp3v-spaeter`).onclick=()=>{n.remove(),t(!1)}})){rr=!1,t.beiAbbruch?.();return}document.addEventListener(`keydown`,f);let p=c(document.createElementNS(`http://www.w3.org/2000/svg`,`svg`));p.setAttribute(`style`,`position:fixed;inset:0;width:100%;height:100%;z-index:${$n};pointer-events:none`);let m=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);m.setAttribute(`fill`,`rgba(4,5,10,0.62)`),m.setAttribute(`fill-rule`,`evenodd`),m.setAttribute(`style`,`pointer-events:auto;transition:d .2s`),p.appendChild(m),document.body.appendChild(p);let h=c(document.createElement(`div`));h.className=`mp3v-ring`,document.body.appendChild(h);let g=c(document.createElement(`div`));g.className=`mp3v-helper`,g.innerHTML=` 156 <div class="mp3v-bubble"> 157 <div class="mp3v-who"><span class="mp3v-dotlive"></span> Volty · GenV Helper</div> 158 <div class="mp3v-msg"></div> 159 <div class="mp3v-meta"> 160 <div class="mp3v-dots">${e.stationen.map(()=>`<i></i>`).join(``)}</div> 161 <div style="display:flex;gap:10px;align-items:center"> 162 <button class="mp3v-skip" type="button">${Y(W(`Mission verlassen`))}</button> 163 <button class="mp3v-weiter" type="button" style="display:none">${Y(W(`Weiter`))}</button> 164 </div> 165 </div> 166 </div> 167 <div class="mp3v-stage mp3v-pose">${ur(96)}</div>`,document.body.appendChild(g);let _=g.querySelector(`.mp3v-msg`),v=Array.from(g.querySelectorAll(`.mp3v-dots i`)),y=g.querySelector(`.mp3v-weiter`),b=g.querySelector(`.mp3v-stage`);g.querySelector(`.mp3v-skip`).onclick=d;let x=null,S=()=>{if(!x||!x.isConnected)return;let e=x.getBoundingClientRect(),t=nr,n=window.innerWidth,r=window.innerHeight;m.setAttribute(`d`,`M0,0 H${n} V${r} H0 Z M${e.left-t},${e.top-t} H${e.right+t} V${e.bottom+t} H${e.left-t} Z`),h.style.left=`${e.left-t}px`,h.style.top=`${e.top-t}px`,h.style.width=`${e.width+t*2}px`,h.style.height=`${e.height+t*2}px`;let i=e.right>n*.55&&e.bottom>r*.5;g.classList.toggle(`mp3v-links`,i)};a=!0;let C=()=>{a&&(S(),window.requestAnimationFrame(C))};window.requestAnimationFrame(C);let w=e=>{b.classList.remove(`mp3v-pose-freuen`,`mp3v-pose-warten`),e===`freuen`&&b.classList.add(`mp3v-pose-freuen`),e===`warten`&&b.classList.add(`mp3v-pose-warten`)},T=async t=>{if(r)return;if(t>=e.stationen.length){E();return}let i=e.stationen[t];if(l(),i.seite&&window.location.pathname!==i.seite&&(lt(i.seite),n=!0,await ar(tr),r))return;let a=await ir(i.element);if(r)return;if(!a)return(()=>{})(`[Mission] Station uebersprungen â Element fehlt: ${i.element}`),T(t+1);x=a;try{a.scrollIntoView({block:`center`,behavior:`smooth`})}catch{}await ar(350),S(),_.innerHTML=or(i.sag),w(i.pose??`zeigen`),v.forEach((e,n)=>{e.className=n<t?`mp3v-done`:n===t?`mp3v-now`:``});let c=t===e.stationen.length-1;if(i.interaktiv){y.style.display=`none`;let n=!1,c=()=>{n||r||(n=!0,w(`freuen`),window.setTimeout(()=>{r||T(t+1)},500))},l=i.warteAuf??(e.stationen[t+1]&&!document.querySelector(e.stationen[t+1].element)?e.stationen[t+1].element:null);l&&(o=new MutationObserver(()=>{document.querySelector(l)&&c()}),o.observe(document.body,{childList:!0,subtree:!0,attributes:!0}));let u=()=>window.setTimeout(c,600);a.addEventListener(`click`,u,{capture:!0}),s.push(()=>a.removeEventListener(`click`,u,{capture:!0}))}else y.style.display=``,y.textContent=W(c?`Fertig`:`Weiter`),y.onclick=()=>{T(t+1)}},E=()=>
167{if(r)return;r=!0,u(),t.beiEnde?.(),ft();let i=document.createElement(`div`);i.className=`mp3v-modal`;let a=e.weiterPfad?`<button class="mp3v-start mp3v-weiter-mission" type="button" style="font-size:13.5px;padding:11px 20px">${Y(W(e.weiterLabel??`Weiter`))} â</button>`:``,o=e.videoUrl?`<a class="mp3v-btn2" href="${Y(e.videoUrl)}" target="_blank" rel="noopener" style="text-decoration:none">â¶ ${Y(W(`Vertiefung: Video`))}</a>`:``,s=e.xp>0?`${Y(W(`Mission`))} â${Y(W(e.titel))}" ${Y(W(`abgeschlossen`))} · ${Y(W(`Badge freigeschaltet`))}`:e.wahl?or(e.wahl.frage):``,c=e.wahl?e.wahl.optionen.map((e,t)=>e.primaer?`<button class="mp3v-start mp3v-wahl" data-wahl="${t}" type="button" style="font-size:13.5px;padding:11px 20px">${Y(W(e.label))}</button>`:`<button class="mp3v-btn2 mp3v-wahl" data-wahl="${t}" type="button">${Y(W(e.label))}</button>`).join(``):`${a}${o}<button class="mp3v-btn2 mp3v-uebersicht" type="button">${Y(W(`Zur Missions-Ãbersicht`))}</button>`;i.innerHTML=` 168 <div class="mp3v-card"> 169 <div class="mp3v-badge">${Y(e.badgeIcon)}</div> 170 <div style="margin:-46px auto 0;width:64px;position:relative;left:64px">${ur(58)}</div> 171 <h2>${or(e.ergebnis)}</h2> 172 <p class="mp3v-ziel">${s}</p> 173 ${e.xp>0?`<div class="mp3v-xp">+0 XP</div>`:``} 174 <div class="mp3v-endbtns"> 175 ${c} 176 </div> 177 </div>`,document.body.appendChild(i);let l=i.querySelector(`.mp3v-xp`),d=0;if(l&&e.xp>0){let t=performance.now(),n=r=>{let i=Math.min(1,(r-t)/1100);l.textContent=`+${Math.round(e.xp*i)} XP`,i<1&&(d=window.requestAnimationFrame(n))};d=window.requestAnimationFrame(n)}let f=()=>{window.cancelAnimationFrame(d),i.remove(),rr=!1},p=i.querySelector(`.mp3v-uebersicht`);p&&(p.onclick=()=>{f(),lt(`/quests`)});let m=i.querySelector(`.mp3v-weiter-mission`);m&&e.weiterPfad&&(m.onclick=()=>{f(),lt(e.weiterPfad)}),e.wahl&&i.querySelectorAll(`.mp3v-wahl`).forEach(t=>{t.onclick=()=>{let n=e.wahl.optionen[Number(t.dataset.wahl)];if(n){if(n.url){window.open(n.url,`_blank`,`noopener`);return}f(),n.pfad&<(n.pfad)}}}),i.addEventListener(`click`,e=>{e.target===i&&(f(),n&&window.setTimeout(()=>window.location.reload(),300))})};T(0)}var fr=`https://www.genv-resellingautomation.com/genv%20links`,pr={"m0-intro":{id:`m0-intro`,titel:`Willkommen bei GenV`,etikett:`Deine ersten 2 Minuten`,ziel:`Hi, ich bin **Volty** â dein GenV-Begleiter! Ich zeig dir kurz, wo alles wohnt, dann gehört die Plattform dir.`,ergebnis:`Das war die Tour â GenV gehört jetzt dir! â¡`,dauerMin:2,xp:0,badgeIcon:`ð`,wahl:{frage:`Wie willst du starten?`,optionen:[{label:`Mit Missionen lernen (empfohlen)`,pfad:`/quests`,primaer:!0},{label:`Selbst entdecken`,pfad:`/`},{label:`Discord, Tutorials & Socials`,url:fr}]},stationen:[{seite:`/`,element:`[data-tour-id="dashboard-hero"]`,sag:`Das ist dein **Dashboard** â Verkäufe, Gewinn und was gerade online ist, immer auf einen Blick.`},{seite:`/`,element:`[data-tour-id="dashboard-apps"]`,sag:`Hier unten wohnen **alle GenV-Apps** â jede übernimmt einen Teil deines Reseller-Alltags.`},{seite:`/`,element:`[data-tour-id="toolbar-avatar"]`,sag:`Oben rechts sitzt deine **Steuerzentrale**: Konto, Einstellungen, Hell/Dunkel-Modus.`},{seite:`/`,element:`[data-tour-id="toolbar-suche"]`,sag:`Die **Schnellsuche** (Strg+K) bringt dich in jede App â tippen, Enter, drüben.`},{seite:`/hilfe`,element:`[data-tour-id="page-heading-hilfe"]`,sag:`Hängst du irgendwo? Hier sind die **FAQ** â und du erreichst direkt das GenV-Team.`},{seite:`/quests`,element:`[data-tour-id="page-heading-quests"]`,sag:`**Wichtig:** Das sind deine Missionen â sie bringen dir Schritt für Schritt bei, wie du mit GenV umgehst.`,pose:`freuen`},{seite:`/quests`,element:`[data-tour-id="page-heading-quests"]`,sag:`Und für alles drumherum: Auf der **GenV-Links-Seite** warten Discord, Tutorials und alle Socials â Link kommt gleich.`}]},"m1-verbinden":{id:`m1-verbinden`,titel:`Verbinden`,etikett:`Mission · Startklar`,ziel:`Jetzt schlieÃen wir **Vinted und eBay** an â danach flieÃt alles von selbst in GenV.`,ergebnis:`Beide Plattformen sind angeschlossen! ð`,dauerMin:3,xp:100,badgeIcon:`ð`,weiterPfad:`/online?spotlight=m8-online`,weiterLabel:`Weiter: Online`,stationen:[{seite:`/administration`,element:`[data-tour-id="admin-vinted-status"]`,sag:`Zuerst Vinted: folge den **3 Schritten auf dieser Karte** â Erweiterung installieren, bei Vinted einloggen, Session speichern.`},{seite:`/administration`,element:`[data-tour-id="admin-ebay-status"]`,sag:`Jetzt eBay: Klick auf **âMit eBay verbinden"** und melde dich im eBay-Fenster an â du wirst automatisch zurückgeleitet.`},{seite:`/administration`,element:`[data-tour-id="admin-vinted-status"]`,sag:`Stehe
177n beide Karten auf **âVerbunden"**? Dann ist die Basis gelegt.`,pose:`freuen`}]},"m2-konto":{id:`m2-konto`,titel:`Dein Konto`,etikett:`Mission · Startklar`,ziel:`Wir machen dein Konto **startklar** â Name, Stammdaten, Steuermodell.`,ergebnis:`Dein Konto steht â Rechnungen und Labels stimmen ab jetzt automatisch!`,dauerMin:3,xp:50,badgeIcon:`ð`,weiterPfad:`/einkauf?spotlight=m3-einkauf`,weiterLabel:`Weiter: Einkauf`,stationen:[{seite:`/profil`,element:`[data-tour-id="profil-karte"]`,sag:`Trag hier einen **Anzeigenamen** ein und speichere.`},{seite:`/profil`,element:`[data-tour-id="profil-karte"]`,sag:`Siehst du die Badge-Reihe am Avatar? **Jede Mission schaltet so ein Badge frei** â du kannst es dir ans Profilbild heften.`,pose:`freuen`},{seite:`/einstellungen`,element:`[data-tour-id="einstellungen-stammdaten-formular"]`,sag:`Füll hier **Name, Adresse und Steuermodell** aus â das landet automatisch auf jeder Rechnung und jedem Label.`},{seite:`/einstellungen`,element:`[data-tour-id="einstellungen-speichern"]`,sag:`Klick auf **âSpeichern"** â fertig.`,interaktiv:!0}]},"m3-einkauf":{id:`m3-einkauf`,titel:`Einkauf`,etikett:`Mission · Erste Ware`,ziel:`Jetzt erfassen wir **dein erstes Bundle** â daraus werden gleich einzelne Artikel mit eigener SKU.`,ergebnis:`Dein erstes Bundle ist erfasst â die Artikel warten im Check-in!`,dauerMin:4,xp:100,badgeIcon:`ð`,weiterPfad:`/gekauft?spotlight=m4-kaeufe`,weiterLabel:`Weiter: Meine Käufe`,stationen:[{seite:`/einkauf`,element:`[data-tour-id="einkauf-neuer-button"]`,sag:`Klick auf **âNeuer Einkauf"** â das Formular öffnet sich.`,interaktiv:!0,warteAuf:`[data-tour-id="einkauf-modal"]`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-sku"]`,sag:`Gib dem Bundle eine **SKU** (z.B. â5") â sie wird zum Ordnungs-Code jedes einzelnen Teils.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-artikelinfos"]`,sag:`Wähle die **Kategorie** â sie vererbt sich auf alle Artikel des Bundles, du tippst sie nie wieder.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-preis"]`,sag:`Anzahl und Bundle-Preis rein â GenV rechnet sofort die **Kosten pro Stück** aus.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-tabelle"]`,sag:`Speichere â und klick auf der neuen Karte auf **âPropagieren"**: aus dem Bundle werden einzelne Artikel.`}]},"m4-kaeufe":{id:`m4-kaeufe`,titel:`Meine Käufe`,etikett:`Mission · Erste Ware`,ziel:`Jetzt holen wir **deine Vinted- und eBay-Käufe** automatisch in die Plattform.`,ergebnis:`Deine Käufe sind importiert â jeder Einkaufspreis ist jetzt im System!`,dauerMin:3,xp:100,badgeIcon:`ðï¸`,weiterPfad:`/checkin?spotlight=m5-checkin`,weiterLabel:`Weiter: Check-In`,stationen:[{seite:`/gekauft`,element:`[data-tour-id="gekauft-vinted-sync-button"]`,sag:`Klick auf **âEinkäufe synchronisieren"** â GenV zieht alle deine Vinted-Käufe herüber.`,interaktiv:!0,warteAuf:`[data-tour-id="gekauft-vinted-sync-banner"]`},{seite:`/gekauft`,element:`[data-tour-id="gekauft-vinted-sync-banner"]`,sag:`Der Import läuft **im Hintergrund** â du kannst das Fenster wegklicken und weiterarbeiten.`,pose:`warten`},{seite:`/gekauft`,element:`[data-tour-id="gekauft-tab-ebay"]`,s
177ag:`Klick auf den Tab **âeBay"** â gleiche Mechanik, zweite Plattform.`,interaktiv:!0,warteAuf:`[data-tour-id="ebaygekauft-sync-button"]`},{seite:`/gekauft`,element:`[data-tour-id="ebaygekauft-sync-button"]`,sag:`Ein Klick auf **âKäufe synchronisieren"** â und auch deine eBay-Käufe sind drin.`}]},"m5-checkin":{id:`m5-checkin`,titel:`Check-In`,etikett:`Mission · Erste Ware`,ziel:`Jetzt bringen wir **deinen ersten Artikel mit Fotos** ins System â in unter einer Minute.`,ergebnis:`Dein erster Artikel ist drin â mit Fotos, SKU und allem! ð¸`,dauerMin:4,xp:150,badgeIcon:`ð²`,weiterPfad:`/artikel?spotlight=m6-bulk-manager`,weiterLabel:`Weiter: Bulk-Manager`,stationen:[{seite:`/checkin`,element:`[data-tour-id="checkin-qr-karte"]`,sag:`Scann den QR-Code mit dem Handy â **oder mach den Check-in gleich hier am PC**.`},{seite:`/checkin`,element:`[data-tour-id="checkin-pc-oeffnen"]`,sag:`Klick auf **âCheck-in öffnen"** â es geht direkt am PC weiter.`,interaktiv:!0,warteAuf:`[data-tour-id="checkin-mobile-header"]`},{seite:`/mobile`,element:`[data-tour-id="checkin-mobile-header"]`,sag:`Du bist im Check-in â hier erfasst du Artikel **in Sekunden**.`},{seite:`/mobile`,element:`[data-tour-id="checkin-mobile-bundle"]`,sag:`Tipp dein Bundle an â **SKU, Marke und Kategorie füllen sich von selbst**; dann Fotos machen, GröÃe wählen, speichern.`}]},"m6-bulk-manager":{id:`m6-bulk-manager`,titel:`Bulk-Manager`,etikett:`Mission · Erster Verkauf`,ziel:`Jetzt machen wir **deinen Artikel verkaufsfertig** â die KI füllt die Felder, du bestätigst nur.`,ergebnis:`Dein Artikel ist verkaufsfertig â bereit für Vinted! ð`,dauerMin:5,xp:200,badgeIcon:`ð¦`,abhaken:!0,weiterPfad:`/cross-lister?spotlight=m7-cross-lister`,weiterLabel:`Weiter: Cross-Lister`,stationen:[{seite:`/artikel`,element:`[data-tour-id="artikel-grid"]`,sag:`Setz bei **ein bis zwei Artikeln das Häkchen** â alle Bulk- und KI-Funktionen arbeiten mit deiner Markierung.`},{seite:`/artikel`,element:`[data-tour-id="artikel-aktionsleiste"]`,sag:`Die Ampel-Logik: **rot = Pflichtfeld fehlt, grün = fertig** â arbeite dich einfach von rot nach grün.`},{seite:`/artikel`,element:`[data-tour-id="artikel-vinted-einstellen-button"]`,sag:`Sind alle Knöpfe grün, geht es **hier live zu Vinted** â oder du sicherst erst als Entwurf.`}]},"m7-cross-lister":{id:`m7-cross-lister`,titel:`Cross-Lister`,etikett:`Mission · Erster Verkauf`,ziel:`Jetzt bringen wir **einen Vinted-Artikel auf eBay** â ein Klick, doppelte Reichweite.`,ergebnis:`Dein Artikel ist auf dem Weg zu eBay â doppelte Sichtbarkeit! ð`,dauerMin:3,xp:150,badgeIcon:`ð`,abhaken:!0,weiterPfad:`/verkauf?spotlight=m9-bestellungen`,weiterLabel:`Weiter: Bestellungen`,stationen:[{seite:`/cross-lister`,element:`[data-tour-id="cross-lister-tabelle"]`,sag:`Diese Tabelle zeigt jeden Artikel mit seinem Status auf **Vinted UND eBay nebeneinander**.`},{seite:`/cross-lister`,element:`[data-tour-id="cross-lister-auto-ebay-button"]`,sag:`Such eine Zeile ohne eBay-Status und klick **âAuto auf eBay"** â GenV bereitet Kategorie und Pflichtfelder automatisch vor.`,interaktiv:!0}]},"m8-online":{id:`m8-online`,titel:`Online`,etikett:`Mission · Startklar`,ziel:`Jetzt holen wir **dein komplettes Vinted-Inventar** in die Plattform.`,ergebnis:`Das ist dein Inventar â alle Artikel sind drin! ð`,dauerMin:3,xp:100,badgeIcon:`ð`,weiterPfad:`/profil?spotlight=m2-konto`,weiterLabel:`Weiter: Dein Konto`,stationen:[{seite:`/online`,element:`[data-tour-id="online-vinted-sync-button"]`,sag:`Klick auf **âVon Vinted synchronisieren"** â GenV liest dein ganzes Vinted-Profil ein.`,interaktiv:!0},{seite:`/online`,element:`[data-tour-id="online-plattform-tabs"]`,sag:`Der Sync läuft â **du musst nichts tun**, deine Artikel kommen gerade rein.`,pose:`warten`},{seite:`/online`,element:`[data-tour-id="online-plattform-tabs"]`,sag:`**Online** = live auf Vinted, **In-App-Entwurf** = nur hier, **Vinted-Draft** = Entwurf auf Vinted.`},{seite:`/online`,element:`[data-tour-id="online-vinted-verbindung"]`,sag:`Ab jetzt ist diese Seite dein **Live-Spiegel** â was auf Vinted passiert, siehst du hier.`,pose:`freuen`}]},"m9-bestellungen":{id:`m9-bestellungen`,titel:`Bestellungen`,etikett:`Mission · Erster Verkauf`,ziel:`Jetzt holen wir **deine Verkäufe** rein â und der Label-Bot besorgt die Versandlabel.`,ergebnis:`Verkäufe drin, Labels da â deine Pakete können raus! ð¦`,dauerMin:4,xp:150,badgeIcon:`ð¸`,abhaken:!0,weiterPfad:`/kommunikation?spotlight=m10-kommunikation`,weiterLabel:`Weiter: Kommunikation`,stationen:[{seite:`/verkauf`,element:`[data-tour-id="verkauf-versandlabel-knopf"]`,sag:`Klick auf **âBestellungen synchronisieren"** â alle deine Vinted-Verkäufe kommen rein.`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-tab-versand"]`,sag:`Klick auf den Tab **âVersand"** â hier liegt alles, was jetzt raus muss.`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-versandlabel-bot"]`,sag:`Klick auf **âLabels anfordern"** â der Bot holt für jede bezahlte Bestellung das Versandlabel.`,interaktiv:!0,warteAuf:`[data-tour-id="verkauf-bot-ergebnis-anzeige"]`},{seite:`/verkauf`,element:`[data-tour-id="verkauf-bot-ergebnis-anzeige"]`,sag:`Das hat der Bot geschafft â **drucken kannst du die Labels direkt aus der Liste**, auch alle auf einmal.`,pose:`freuen`}]}
177,"m10-kommunikation":{id:`m10-kommunikation`,titel:`Kommunikation`,etikett:`Mission · Erster Verkauf`,ziel:`Jetzt holen wir **deine Käufer-Chats** rein und bauen dir eine Ein-Klick-Antwort.`,ergebnis:`Chats drin, Schnellantwort steht â Käuferfragen kosten dich ab jetzt Sekunden!`,dauerMin:4,xp:150,badgeIcon:`ð¬`,abhaken:!0,weiterPfad:`/statistik?spotlight=m11-statistik`,weiterLabel:`Weiter: Statistik`,stationen:[{seite:`/kommunikation`,element:`[data-tour-id="komm-scan-button"]`,sag:`Klick auf **âChats scannen"** â GenV holt deine Vinted-Nachrichten und sortiert sie automatisch.`,interaktiv:!0},{seite:`/kommunikation`,element:`[data-tour-id="komm-tabs-vinted-ebay"]`,sag:`**Probleme, Angebote, Hilfe, Archiv** â du arbeitest gezielt ab, was gerade wichtig ist.`},{seite:`/kommunikation`,element:`[data-tour-id="komm-schnellzugriff-box"]`,sag:`Hier wohnen deine **Schnellantworten** â Kürzel antippen statt tippen.`},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-anlegen-button"]`,sag:`Klick auf **âNeuen Schnellzugriff anlegen"** â wir bauen deine erste eigene Vorlage.`,interaktiv:!0,warteAuf:`[data-tour-id="schnellzugriff-editor"]`},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-editor"]`,sag:`Kürzel links, Antwort rechts â Platzhalter wie **{LAENGE}** füllt GenV mit den echten MaÃen des Artikels.`},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-anlegen-speichern"]`,sag:`Klick auf **âAnlegen"** â ab jetzt ist das deine Ein-Klick-Antwort in jedem Chat.`,interaktiv:!0}]},"m11-statistik":{id:`m11-statistik`,titel:`Statistik`,etikett:`Mission · Profi-Level`,ziel:`Jetzt findest du heraus, **was du wirklich verdienst** â nicht nur Umsatz, echter Gewinn.`,ergebnis:`Dein Gewinn rechnet jetzt mit echten Einkaufspreisen â das ist deine wahre Zahl! ð`,dauerMin:4,xp:150,badgeIcon:`ð`,abhaken:!0,weiterPfad:`/preisanpassung?spotlight=m12-preisanpassung`,weiterLabel:`Weiter: Preisanpassung`,stationen:[{seite:`/statistik`,element:`[data-tour-id="statistik-info-card"]`,sag:`Dein echter Gewinn entsteht erst, wenn **jeder Verkauf seinem Einkauf zugeordnet** ist â genau das machen wir jetzt.`},{seite:`/statistik`,element:`[data-tour-id="statistik-zeitraum-filter"]`,sag:`Hier stellst du den **Auswertungszeitraum** um â alle Kacheln reagieren sofort.`},{seite:`/statistik`,element:`[data-tour-id="statistik-finanzen"]`,sag:`**Umsatz, Gewinn, Ausgaben, Marge** â die Pfeile vergleichen automatisch mit dem Zeitraum davor.`},{seite:`/zuordnen`,element:`[data-tour-id="page-heading-zuordnen"]`,sag:`Ordne eine Bestellung per **Vorschlags-Chip** zu â ein Klick, und GenV kennt den Einkaufspreis.`}]},"m12-preisanpassung":{id:`m12-preisanpassung`,titel:`Preisanpassung`,etikett:`Mission · Profi-Level`,ziel:`Jetzt bringen wir GenV bei, **deine Ladenhüter automatisch billiger zu machen**.`,ergebnis:`Deine Preissenkung läuft â Ladenhüter verkaufen sich ab jetzt von selbst! ð`,dauerMin:3,xp:100,badgeIcon:`ð`,weiterPfad:`/automatisierung?spotlight=m13-automatisierung`,weiterLabel:`Weiter: Automatisierung`,stationen:[{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-artikel-section"]`,sag:`Diese Ãbersicht zeigt, welcher Artikel schon eine **automatische Preissenkung** hat.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-alle-markieren"]`,sag:`Klick auf **âAlle markieren"** â oder setz einzelne Häkchen.`,interaktiv:!0,warteAuf:`[data-tour-id="preisanpassung-setzen-button"]`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-button"]`,sag:`Klick auf **âAnpassung setzen"**.`,interaktiv:!0,warteAuf:`[data-tour-id="preisanpassung-setzen-modal"]`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-modal"]`,sag:`**Prozent, Mindestpreis, maximale Senkungen** â du bestimmst, wie mutig gesenkt wird.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-speichern"]`,sag:`Klick auf **âSetzen"** â ab jetzt senkt GenV nach deinem Plan.`,interaktiv:!0},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-sofort-senken"]`,sag:`Mit **âSofort senken"** wendest du alles direkt an â ohne auf den Termin zu warten.`}
177]},"m13-automatisierung":{id:`m13-automatisierung`,titel:`Automatisierung`,etikett:`Mission · Profi-Level`,ziel:`Jetzt lernst du die **drei Werkzeuge, die für dich arbeiten**: Relist-Kette, Favoriten-Anschreiben, Bulk-Editor.`,ergebnis:`Du kennst jetzt die Maschinen-Halle von GenV â lass sie für dich arbeiten! ð¤`,dauerMin:4,xp:200,badgeIcon:`ð¤`,abhaken:!0,weiterPfad:`/foto-ki?spotlight=m14-foto-ki`,weiterLabel:`Weiter: Foto-KI`,stationen:[{seite:`/automatisierung`,element:`[data-tour-id="automatisierung-tab-relist"]`,sag:`Klick auf **âRelisting-Planer"** â alte Listings neu einstellen bringt sie wieder nach oben in die Suche.`,interaktiv:!0,warteAuf:`[data-tour-id="relist-auswaehlen-button"]`},{seite:`/automatisierung`,element:`[data-tour-id="relist-auswaehlen-button"]`,sag:`Mit **âRelists auswählen"** suchst du im Online-Tab Artikel aus â GenV arbeitet sie dann als Kette ab, mit menschlichem Tempo.`},{seite:`/automatisierung`,element:`[data-tour-id="automatisierung-tab-favoriten"]`,sag:`Klick auf **âFavoriten"** â jeder, der deine Artikel liket, ist ein warmer Käufer.`,interaktiv:!0,warteAuf:`[data-tour-id="favoriten-anschreiben-button"]`},{seite:`/automatisierung`,element:`[data-tour-id="favoriten-anschreiben-button"]`,sag:`**âJetzt anschreiben"** liest deine Liker ein und schreibt sie automatisch an â Vinted-Tab dabei offen lassen.`}]},"m14-foto-ki":{id:`m14-foto-ki`,titel:`Foto-KI`,etikett:`Mission · Profi-Level`,ziel:`Jetzt bekommt dein Artikel ein **Tragebild** â die KI setzt deine Kleidung auf ein Model.`,ergebnis:`Dein Tragebild entsteht â Fotos, die verkaufen! â¨`,dauerMin:3,xp:100,badgeIcon:`ð¸`,abhaken:!0,weiterPfad:`/buchhaltung?spotlight=m15-buchhaltung`,weiterLabel:`Weiter: Buchhaltung`,stationen:[{seite:`/foto-ki`,element:`[data-tour-id="foto-ki-referenz-upload"]`,sag:`Lade hier ein **Referenzbild** hoch (z.B. von Pinterest) â auf dieses Model setzt die KI deine Kleidung.`},{seite:`/foto-ki`,element:`[data-tour-id="foto-ki-jobs"]`,sag:`Gestartet wird im **Bulk-Manager** (âTragebild"-Knopf bei markiertem Artikel) â die fertigen Vorher/Nachher-Bilder landen hier.`}]},"m15-buchhaltung":{id:`m15-buchhaltung`,titel:`Buchhaltung`,etikett:`Mission · Profi-Level`,ziel:`Jetzt machen wir dich **Finanzamt-fertig** â Rechnungen im Stapel und der Excel-Export.`,ergebnis:`Dein Steuerberater bekommt eine fertige Excel-Datei â Buchhaltung in Minuten! ð§¾`,dauerMin:3,xp:100,badgeIcon:`ð§¾`,abhaken:!0,weiterPfad:`/?spotlight=m16-entdecker`,weiterLabel:`Weiter: Entdecker`,stationen:[{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-tabs"]`,sag:`Drei Bereiche: **Vinted-Rechnungen, eBay-Rechnungen, Export** â Rechnungen erstellt GenV im Stapel.`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-tab-export"]`,sag:`Klick auf den Tab **âCSV-Export"**.`,interaktiv:!0,warteAuf:`[data-tour-id="buchhaltung-export-zeitraum"]`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-export-zeitraum"]`,sag:`Wähle **âDieses Jahr"** â darunter rechnet GenV Umsatz, Ausgaben und Gewinn zusammen.`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-export-download"]`,sag:`Ein Klick auf **âExcel Export"** â und die Datei für den Steuerberater ist fertig.`,interaktiv:!0}]},"m16-entdecker":{id:`m16-entdecker`,titel:`Entdecker`,etikett:`Mission · Profi-Level`,ziel:`Zum Abschluss die **kleinen Helfer**, die deinen Alltag schneller machen.`,ergebnis:`Du kennst jetzt jede Ecke von GenV â Mission komplett! ð`,dauerMin:3,xp:50,badgeIcon:`ð§`,abhaken:!0,stationen:[{seite:`/`,element:`[data-tour-id="toolbar-glocke"]`,sag:`Klick auf die **Glocke** â dort landen Verkäufe, Nachrichten und Warnungen.`,interaktiv:!0,warteAuf:`[data-tour-id="page-heading-benachrichtigungen"]`},{seite:`/`,element:`[data-tour-id="toolbar-suche"]`,sag:`Die **Schnellsuche**: Strg+K drücken, Seitenname tippen, Enter â nie wieder Klick-Marathon.`,interaktiv:!0,warteAuf:`[data-tour-id="cmdk-suchfeld"]`},{seite:`/`,element:`[data-tour-id="toolbar-avatar"]`,sag:`Im **Konto-Menü** wohnen Hell/Dunkel-Modus und âWas ist neu" â klick es mal auf.`,interaktiv:!0},{seite:`/`,element:`[data-tour-id="dashboard-newsletter"]`,sag:`Der **Newsletter** bringt neue Features direkt ins Postfach â deine E-Mail steht schon drin, ein Klick auf âAnmelden" reicht.`}]}},mr={"q2-vinted":{stationen:[{seite:`/administration`,element:`[data-tour-id="admin-vinted-status"]`,titel:`Vinted verbinden`,beschreibung:`Vinted hat keine offene Schnittstelle für externe Tools. Die Verbindung läuft deshalb über eine kleine Browser-Erweiterung â sie reicht deinen Vinted-Login sicher an die App weiter, ohne dass du hier irgendwo ein Passwort eintippst.`,
177icon:`ð£`,aktion:`Diese Karte führt dich durch die 3 nötigen Schritte â gehen wir sie zusammen durch.`,naechstes:`Schritt 1: die Erweiterung installieren.`},{seite:`/administration`,element:`[data-tour-id="vinted-anleitung-installieren"]`,titel:`Schritt 1 â Erweiterung installieren`,beschreibung:`Ãber den Link in diesem Schritt installierst du die GenV-Erweiterung in deinem Chrome-Browser. Füg sie hinzu und pinne sie am besten an die Browser-Leiste, dann findest du sie jederzeit schnell wieder.`,icon:`ð§©`,naechstes:`Schritt 2: in der Erweiterung anmelden.`},{seite:`/administration`,element:`[data-tour-id="vinted-anleitung-einloggen"]`,titel:`Schritt 2 â In der Erweiterung anmelden`,beschreibung:`Ãffne in einem neuen Tab deine Vinted-Profilseite und logg dich dort normal ein. Klick dann auf die GenV-Erweiterung und drück auf "Session speichern". Damit übergibst du deine aktive Sitzung an die App.`,icon:`ð`,beispiel:`Die Erweiterung erklärt dir die 3 Schritte nochmal direkt in ihrem eigenen Fenster.`,naechstes:`Schritt 3: prüfen, ob es geklappt hat.`},{seite:`/administration`,element:`[data-tour-id="vinted-anleitung-pruefen"]`,titel:`Schritt 3 â Verbindung prüfen`,beschreibung:`Sobald die Session gespeichert ist, springt der Status dieser Karte oben auf "Verbunden". Ab dann holt die App Käufe, Listings und Verkäufe automatisch von Vinted â du musst nie wieder etwas von Hand übertragen.`,icon:`â
`,aktion:`Zeigt der Status noch "Getrennt"? Dann kurz auf "Status aktualisieren" klicken.`}]},"q3-ebay":{stationen:[{seite:`/administration`,element:`[data-tour-id="page-heading-administration"]`,titel:`Der Service Manager`,beschreibung:`Diese Seite ist deine Schaltzentrale: Hier verbindest du deine Verkaufs-Plattformen und siehst jederzeit, ob alles läuft. Für eBay brauchst du nur einen einzigen Login â den machen wir jetzt.`,icon:`âï¸`,naechstes:`Hier ist die eBay-Karte.`},{seite:`/administration`,element:`[data-tour-id="admin-ebay-status"]`,titel:`Deine eBay-Verbindung`,beschreibung:`Anders als Vinted hat eBay eine offizielle Schnittstelle. Du loggst dich einmal sicher per eBay-Login ein â danach landen eBay-Listings und -Bestellungen automatisch im selben Dashboard wie deine Vinted-Artikel.`,icon:`ðµ`,naechstes:`Mit diesem Knopf startest du.`},{seite:`/administration`,element:`[data-spotlight="q3-ebay"]`,titel:`Mit eBay verbinden`,beschreibung:`Ein Klick auf diesen Knopf öffnet die offizielle eBay-Anmeldung in einem neuen Fenster. Du meldest dich bei eBay an, bestätigst den Zugriff â und wirst automatisch zurück zur App geleitet.`,icon:`ð`,aktion:`Klick auf "Mit eBay verbinden", sobald du bereit bist.`}]},"q4-stammdaten":{stationen:[{seite:`/einstellungen`,element:`[data-tour-id="page-heading-einstellungen"]`,titel:`Stammdaten & Rechnungen`,beschreibung:`Damit Rechnungen und Versandlabel rechtssicher sind, müssen ein paar feste Angaben stimmen: dein Name, deine Adresse, dein Steuermodell. Die App setzt sie danach automatisch auf jedes Dokument.`,icon:`ðªª`,naechstes:`Hier füllst du das aus.`},{seite:`/einstellungen`,element:`[data-tour-id="einstellungen-stammdaten-formular"]`,titel:`Jetzt bist du dran`,beschreibung:`Trag hier Verkäufer-Daten, Steuerstatus und Bankverbindung ein â einmal sorgfältig ausgefüllt, danach nie wieder anfassen. Mehr braucht diese Quest nicht.`,icon:`âï¸`,aktion:`Felder ausfüllen und unten auf "Speichern" klicken â fertig.`}]},"q5-profil":{stationen:[{seite:`/profil`,element:`[data-tour-id="profil-karte"]`,titel:`Dein Profil`,beschreibung:`Hier gibst du deinem Arbeitsplatz ein Gesicht: Anzeigename und Avatar. Sobald eines davon gesetzt ist, gilt diese Quest als erledigt â und du erkennst dein Konto auf einen Blick.`,icon:`ð`,aktion:`Trag einen Anzeigenamen ein oder lad ein Avatar-Bild hoch.`,naechstes:`Weiter geht es mit deiner Lizenz.`},{seite:`/profil`,element:`[data-tour-id="profil-lizenz"]`,titel:`Deine Lizenz`,beschreibung:`Diese Karte zeigt, bis wann dein Zugang läuft. Färbt sie sich gelb oder rot, wird es Zeit zu verlängern â so überrascht dich eine abgelaufene Lizenz nie.`,icon:`ð`,naechstes:`Als Nächstes: dein Passwort.`},{seite:`/profil`,element:`[data-tour-id="profil-passwort"]`,titel:`Passwort ändern`,beschreibung:`Hier änderst du jederzeit dein Passwort. Tu das sofort, wenn du den Verdacht hast, dass es jemand kennt â dein Konto enthält schlieÃlich all deine Verkaufsdaten.`,icon:`ð`,naechstes:`Für noch mehr Sicherheit: die Zwei-Faktor-Anmeldung.`},{seite:`/profil`,element:`[data-tour-id="profil-2fa"]`,titel:`Zwei-Faktor-Schutz (2FA)`,beschreibung:`Mit 2FA brauchst du beim Login zusätzlich einen Code aus einer App auf deinem Handy. Selbst wer dein Passwort hätte, käme ohne dein Handy nicht in dein Konto. Sehr empfohlen.`,icon:`ð¡ï¸`,naechstes:`Zum Schluss: deine angemeldeten Geräte.`},{seite:`/profil`,element:`[data-tour-id="profil-sitzungen"]`,titel:`Aktive Sitzungen`,beschreibung:`Hier siehst du jedes Gerät, das gerade in deinem Konto angemeldet ist. Kommt dir eines fremd vor, meldest du es mit einem Klick ab. Mehr musst du im Profil nicht wissen.`,icon:`ð»`,aktion:`Schau ab und zu rein â fremde Geräte sofort abmelden.`}]},"q32-system-einstellungen":{abhaken:!0,stationen:[{seite:`/administration`,element:`[data-tour-id="page-heading-administration"]`,titel:`Rundgang: Service Manager`,beschreibung:`Der Service Manager ist deine Schaltzentrale. Er hat vier Tabs â die gehen wir jetzt zusammen durch. Du klickst dabei selbst, ich erkläre dir, wofür jeder Bereich gut ist.`,icon:`âï¸`,naechstes:`Tab 1: Verbindungen.`},{seite:`/administration`,element:`[data-tour-id="admin-vinted-status"]`,titel:`Tab 1 â Verbindungen`,beschreibung:`Im er
177sten Tab "Verbindungen" steckt der Draht zu deinen Plattformen Vinted und eBay. Hier siehst du jederzeit, ob die Verbindung steht â und erneuerst sie, falls eine Plattform dich ausloggt.`,icon:`ð`,naechstes:`Jetzt wechselst du selbst den Tab.`},{seite:`/administration`,element:`[data-tour-id="admin-tab-stammdaten"]`,titel:`Klick auf "Stammdaten"`,beschreibung:`Klick jetzt oben auf den Tab "Stammdaten". Sobald du das tust, springt der Rundgang von selbst weiter und zeigt dir, was dahinter steckt.`,icon:`ð`,interaktiv:!0},{seite:`/administration`,element:`[data-tour-id="admin-stammdaten-inhalt"]`,titel:`Tab 2 â Stammdaten`,beschreibung:`Dieser Tab bündelt deine Grunddaten: Produktkategorien, eBay-Kategorien, Hilfstabellen für Marken und GröÃen, Listing-Vorlagen und deine Verkäufer-Stammdaten. Je besser das gepflegt ist, desto weniger tippst du später bei jedem einzelnen Artikel.`,icon:`ð`,beispiel:`Eine Listing-Vorlage einmal anlegen â sie spart dir bei jedem Listing den Beschreibungstext.`,naechstes:`Weiter zum nächsten Tab.`},{seite:`/administration`,element:`[data-tour-id="admin-tab-ki"]`,titel:`Klick auf "KI & Automation"`,beschreibung:`Klick jetzt auf den Tab "KI & Automation". Der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/administration`,element:`[data-tour-id="admin-ki-inhalt"]`,titel:`Tab 3 â KI & Automation`,beschreibung:`Hier wohnen die KI-Funktionen: die Bild-Analyse, die aus deinen Fotos Marke und GröÃe erkennt, die Foto-KI für Tragebilder â und du siehst, was die KI dich kostet. So behältst du deine Ausgaben immer im Blick.`,icon:`ð¤`,naechstes:`Eine Kachel hier ist besonders wichtig.`},{seite:`/administration`,element:`[data-tour-id="admin-ki-zuordnung"]`,titel:`Wichtig: die Zuordnung`,beschreibung:`Diese Kachel führt zur Zuordnung â und die entscheidet über deinen Gewinn. Nur wenn ein Verkauf mit seinem Einkauf verknüpft ist, kennt die App den Einkaufspreis und kann den echten Gewinn berechnen. Ohne Zuordnung siehst du nur Umsatz.`,icon:`ð`,beispiel:`Jacke für 30 ⬠verkauft. Erst wenn die App weiÃ, dass sie 8 ⬠im Einkauf war, zeigt die Statistik die 22 ⬠Gewinn.`,naechstes:`Letzter Tab.`},{seite:`/administration`,element:`[data-tour-id="admin-tab-system"]`,titel:`Klick auf "System & Hilfe"`,beschreibung:`Klick zum Abschluss auf den Tab "System & Hilfe".`,icon:`ð`,interaktiv:!0},{seite:`/administration`,element:`[data-tour-id="admin-hilfe-section"]`,titel:`Tab 4 â System & Hilfe`,beschreibung:`Im letzten Tab kannst du jederzeit alle Touren neu starten â diese hier eingeschlossen. Wenn du eine Funktion noch einmal erklärt haben willst, kommst du hierher. Damit kennst du den Service Manager komplett.`,icon:`ð`,aktion:`Geschafft â du hast den Rundgang abgeschlossen.`}]},"q6-einkauf-anlegen":{stationen:[{seite:`/einkauf`,element:`[data-tour-id="page-heading-einkauf"]`,titel:`Warum du Einkäufe erfasst`,beschreibung:`Jeder Artikel, den du später verkaufst, hat einen Einkaufspreis. Nur wenn die App diesen Preis kennt, kann sie deinen echten Gewinn ausrechnen â nicht bloà den Umsatz. Deshalb beginnt jeder Artikel hier, im Einkauf.`,icon:`ð`,naechstes:`Hier sammeln sich deine Einkäufe.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-tabelle"]`,titel:`Deine Einkaufs-Liste`,beschreibung:`Jeder erfasste Einkauf landet als Karte in dieser Liste. Von hier aus machst du später aus einem Einkauf einen oder mehrere verkaufsfertige Artikel.`,icon:`ð`,naechstes:`Bei vielen Einträgen hilft die Suche.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-filter"]`,titel:`Suchen & filtern`,beschreibung:`Wird die Liste lang, findest du hier oben jeden Einkauf schnell wieder â per Suche oder Filter. Direkt daneben sitzt der Knopf, mit dem du einen neuen Einkauf anlegst.`,icon:`ð`,naechstes:`Den probieren wir jetzt aus.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-neuer-button"]`,titel:`Klick hier: Neuer Einkauf`,beschreibung:`Klick jetzt auf "Neuer Einkauf". Es öffnet sich das Erfassungs-Formular â und der Rundgang geht von selbst weiter und erklärt dir jeden Abschnitt darin.`,icon:`ð`,interaktiv:!0},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-bestellung"]`,titel:`Oben: die Bestell-Infos`,beschreibung:`Das Formular ist offen. Ganz oben steht alles zur Bestellung selbst: Bestellnummer, Verkaufskanal und die Daten. Diese Angaben beschreiben den Kauf als Ganzes â egal, wie viele Teile drinstecken.`,icon:`ð¦`,naechstes:`Ein Feld hier ist besonders wichtig.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-sku"]`,titel:`Die SKU â dein Ordnungs-Code`,beschreibung:`Die SKU ist die eindeutige Nummer deines Bundles. Die App hängt für jedes Einzelteil eine Ziffer an â aus der Bundle-SKU "JNS-12" werden "JNS-12-1", "JNS-12-2" und so weiter. So findest du jedes Teil vom Lagerregal bis zum Versandlabel sofort wieder.`,icon:`ð¢`,beispiel:`Steht die SKU später im Vinted-Titel, ordnet die App den Verkauf ganz automatisch dem richtigen Artikel zu.`,naechstes:`Darunter: die Artikel-Infos.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-artikelinfos"]`,titel:`Kategorie & Vorgaben fürs Bundle`,beschreibung:`Hier legst du Kategorie, Marke und Vorlagen-Texte fest. Der Clou: Was du hier einträgst, vererbt die App an ALLE Artikel des Bundles. Hast du 10 gleiche Teile gekauft, setzt du Marke und Kategorie nur ein einziges Mal.`,icon:`ð·ï¸`,beispiel:`10 H&M-Shirts aus einem Kauf â Marke "H&M" einmal eintragen, alle 10 Artikel haben sie.`,naechstes:`Zum Schluss: der Preis.`},{seite:`/einkauf`,element:`[data-tour-id="einkauf-modal-preis"]`,titel:`Preis & Menge`,beschreibung:`Hier trägst du ein, wie viele Teile im Bundle sind und was du insgesamt bezahlt hast â Nebenkosten wie Versand inklusive. Die App rechnet darau
177s den Stückpreis aus, und genau der ist die Basis für deine spätere Gewinn-Rechnung.`,icon:`ð¶`,aktion:`Formular ausfüllen, speichern â dein erster Einkauf ist erfasst.`}]},"q7-einkauf-vinted":{stationen:[{seite:`/gekauft`,element:`[data-tour-id="page-heading-gekauft"]`,titel:`Warum du deine Vinted-Käufe importierst`,beschreibung:`Jeder Artikel, den du weiterverkaufst, hat einen Einkaufspreis. Holst du deine Vinted-Käufe automatisch in die App, kennt sie diesen Preis â und kann später deinen echten Gewinn ausrechnen statt nur den Umsatz.`,icon:`ðï¸`,naechstes:`Zuerst der Ãberblick über die Plattform-Tabs.`},{seite:`/gekauft`,element:`[data-tour-id="gekauft-plattform-tabs"]`,titel:`Vinted & eBay getrennt`,beschreibung:`Diese Seite hat zwei Tabs: deine Vinted-Käufe und deine eBay-Käufe. Wir bleiben jetzt im Tab "Vinted" â hier landen alle Einkäufe, die du auf Vinted getätigt hast.`,icon:`ðï¸`,naechstes:`Den Import startest du mit einem Knopf.`},{seite:`/gekauft`,element:`[data-tour-id="gekauft-vinted-sync-button"]`,titel:`Klick hier: Einkäufe synchronisieren`,beschreibung:`Klick jetzt auf "Einkaeufe synchronisieren". Die App verbindet sich über die Browser-Erweiterung mit Vinted und zieht alle deine Käufe herüber â du musst nichts von Hand abtippen.`,icon:`ð`,interaktiv:!0},{seite:`/gekauft`,element:`[data-tour-id="gekauft-vinted-sync-banner"]`,titel:`Der Sync läuft im Hintergrund`,beschreibung:`Die Synchronisierung läuft jetzt los â sie kann je nach Käufeanzahl etwas dauern. Du kannst in der Zwischenzeit ruhig weiterarbeiten, die App holt die Käufe im Hintergrund.`,icon:`â³`,beispiel:`Sobald der Sync fertig ist, steht jeder Kauf mit Foto, Preis und Status in der Liste.`,aktion:`Warte kurz, bis der Sync durch ist â deine Vinted-Käufe sind dann erfasst.`}]},"q8-einkauf-ebay":{stationen:[{seite:`/gekauft`,element:`[data-tour-id="page-heading-gekauft"]`,titel:`Auch deine eBay-Käufe gehören rein`,beschreibung:`Du kaufst nicht nur auf Vinted ein. Damit wirklich alle Einkaufspreise an einem Ort sind, holt die App auch deine eBay-Käufe automatisch herüber â die Gewinn-Rechnung wird dadurch lückenlos.`,icon:`ð`,naechstes:`Dafür wechselst du den Plattform-Tab.`},{seite:`/gekauft`,element:`[data-tour-id="gekauft-tab-ebay"]`,titel:`Klick auf den Tab "eBay"`,beschreibung:`Klick jetzt oben auf den Tab "eBay". Der Rundgang springt danach von selbst weiter und zeigt dir den eBay-Käufe-Bereich.`,icon:`ð`,interaktiv:!0},{seite:`/gekauft`,element:`[data-tour-id="ebaygekauft-sync-header"]`,titel:`Der eBay-Käufe-Bereich`,beschreibung:`Das ist dein eBay-Einkaufsbereich â er erfasst gewonnene Auktionen genauso wie Sofort-Käufe. Aufbau und Bedienung sind identisch zum Vinted-Tab, du musst also nichts Neues lernen.`,icon:`ðµ`,naechstes:`Den Import startest du mit einem Knopf.`},{seite:`/gekauft`,element:`[data-tour-id="ebaygekauft-sync-button"]`,titel:`Klick hier: Käufe synchronisieren`,beschreibung:`Klick auf "Käufe synchronisieren". Die App ruft über die offizielle eBay-Schnittstelle deine Einkäufe ab und legt sie hier ab â komplett ohne manuelles Abtippen.`,icon:`ð`,interaktiv:!0,aktion:`Nach dem Sync stehen alle eBay-Käufe mit Preis und Status in der Liste.`}]},"q9-foto-set":{stationen:[{seite:`/checkin`,element:`[data-tour-id="page-heading-checkin"]`,titel:`Warum es den Check-in gibt`,beschreibung:`Neue Ware muss schnell ins System. Der Check-in ist die schnellste Art, Artikel mit Fotos zu erfassen â du knipst sie und sie landen sofort in deiner Artikelliste. Du kannst ihn am Handy nutzen oder direkt hier am PC.`,icon:`ð²`,naechstes:`Zuerst die Handy-Variante: der QR-Code.`},{seite:`/checkin`,element:`[data-tour-id="checkin-qr-karte"]`,titel:`Variante 1 â per Handy`,beschreibung:`Scann diesen QR-Code mit der Handy-Kamera â der Browser deines Handys öffnet damit sofort den Check-in, und durch den Login-Token bist du direkt angemeldet. Kein Passwort tippen, kein Kabel. Ideal, um direkt beim Auspacken zu fotografieren.`,icon:`ð³`,naechstes:`Es geht aber auch ohne Handy.`},{seite:`/checkin`,element:`[data-tour-id="checkin-pc-oeffnen"]`,titel:`Klick hier: Check-in öffnen`,beschreibung:`Du musst nicht zum Handy greifen â klick auf diesen Knopf und der Check-in öffnet sich direkt hier am PC. Der Rundgang läuft im Check-in weiter und zeigt dir, wie er funktioniert.`,icon:`ð`,interaktiv:!0},{seite:`/mobile`,element:`[data-tour-id="checkin-mobile-header"]`,titel:`Du bist jetzt im Check-in`,beschreibung:`Das hier ist der Check-in â dieselbe Ansicht, die auch auf dem Handy erscheint. Von hier aus erfasst du Artikel in Sekunden: Bundle wählen, Fotos dazu, ein paar Details, speichern.`,icon:`â
`,naechstes:`Los geht es mit der Bundle-Auswahl.`},{seite:`/mobile`,element:`[data-tour-id="checkin-mobile-bundle"]`,titel:`Hier wählst du dein Bundle`,beschreibung:`Das sind deine erfassten Einkäufe. Tipp einen an, dann übernimmt der Check-in dessen SKU, Kategorie und Marke automatisch. Hast du noc
177h keinen Einkauf, wählst du einfach "Ohne Bundle fortfahren". Danach führt dich der Check-in Schritt für Schritt: Fotos aufnehmen, Details eintragen, speichern â jeder gespeicherte Artikel landet sofort in deiner Artikelliste.`,icon:`ð¦`,beispiel:`Sobald dein erster Artikel gespeichert ist, gilt diese Quest automatisch als erledigt.`,aktion:`Bundle wählen und den ersten Artikel mit Fotos erfassen.`}]},"q10-foto-ki":{abhaken:!0,stationen:[{seite:`/artikel`,element:`[data-tour-id="page-heading-artikel"]`,titel:`Warum Tragebilder verkaufen`,beschreibung:`Ein Kleidungsstück flach auf dem Boden wirkt langweilig. Die Foto-KI setzt dein Teil auf ein Model â solche Tragebilder ziehen mehr Blicke und verkaufen erfahrungsgemäà deutlich besser. Hier im Bulk-Manager liegen all deine Artikel, von hier aus startest du die Foto-KI.`,icon:`ð¸`,naechstes:`Wichtig zuerst: einen Artikel markieren.`},{seite:`/artikel`,element:`[data-tour-id="artikel-grid"]`,titel:`Schritt 1 â zuerst einen Artikel markieren`,beschreibung:`Setz bei mindestens einem Artikel das Häkchen in der Checkbox links. Das ist Pflicht: Alle KI- und Bulk-Funktionen arbeiten immer nur mit den markierten Artikeln â ohne Markierung bleibt die Aktionsleiste leer und unsichtbar.`,icon:`âï¸`,aktion:`Häkchen bei einem Artikel setzen, dann unten auf "Weiter".`,naechstes:`Schritt 2: die Aktionsleiste einblenden.`},{seite:`/artikel`,element:`[data-tour-id="artikel-aktionsleiste"]`,titel:`Die Aktionsleiste`,beschreibung:`Das ist die Aktionsleiste. Sie ist in Abschnitte sortiert â Felder setzen, KI, Zuordnen, Plattform und ganz unten "Sonstiges". Dort wohnt die Foto-KI.`,icon:`ð§°`,naechstes:`Der Tragebild-Knopf wartet im Abschnitt "Sonstiges".`},{seite:`/artikel`,element:`[data-tour-id="artikel-tragebild-button"]`,titel:`Klick hier: Tragebild`,beschreibung:`Klick auf "Tragebild". Es öffnet sich ein Fenster, in dem du ein Referenz-Model auswählst â die KI setzt dein Kleidungsstück dann auf dieses Model. Das fertige Foto ist in rund einer Minute da.`,icon:`ð`,interaktiv:!0,aktion:`Model wählen, Job starten â dein Tragebild wird erstellt.`}]},"q11-ki-beschreibung":{abhaken:!0,stationen:[{seite:`/artikel`,element:`[data-tour-id="page-heading-artikel"]`,titel:`Warum die KI deine Texte schreibt`,beschreibung:`Für jeden Artikel eine verkaufsstarke Beschreibung zu tippen, kostet viel Zeit. Die KI-Analyse liest deine Fotos aus und füllt Eigenschaften wie Farbe, Material und Kategorie automatisch â das spart dir die Tipparbeit. Gestartet wird sie hier im Bulk-Manager.`,icon:`â¨`,naechstes:`Wichtig zuerst: einen Artikel markieren.`},{seite:`/artikel`,element:`[data-tour-id="artikel-grid"]`,titel:`Schritt 1 â zuerst einen Artikel markieren`,beschreibung:`Setz bei mindestens einem Artikel das Häkchen in der Checkbox links. Das ist Pflicht: Die KI-Analyse läuft immer nur über die markierten Artikel â ohne Markierung bleibt die Aktionsleiste unsichtbar.`,icon:`âï¸`,aktion:`Häkchen bei einem Artikel setzen, dann unten auf "Weiter".`,naechstes:`Schritt 2: die Aktionsleiste einblenden.`}]},"q12-vinted-upload":{stationen:[{seite:`/artikel`,element:`[data-tour-id="page-heading-artikel"]`,titel:`Dein erstes Vinted-Listing`,beschreibung:`Wenn ein Artikel fertig gepflegt ist, stellst du ihn direkt aus der App auf Vinted ein â du musst die Vinted-App gar nicht mehr öffnen. Titel, Beschreibung, Fotos und Preis nimmt die App alle mit.`,icon:`ð`,naechstes:`Zuerst suchst du den Artikel aus.`},{seite:`/artikel`,element:`[data-tour-id="artikel-grid"]`,titel:`Schritt 1 â zuerst den Artikel markieren`,beschreibung:`Setz das Häkchen bei dem Artikel, den du hochladen willst â ohne Markierung bleibt die Aktionsleiste unsichtbar. Wichtig: Alle Pflichtfelder â Titel, Beschreibung, Preis, Fotos, Marke, GröÃe, Zustand, Kategorie â müssen gefüllt sein, sonst lässt Vinted das Listing nicht zu.`,icon:`âï¸`,aktion:`Häkchen bei einem vollständig gepflegten Artikel setzen, dann auf "Weiter".`,naechstes:`Schritt 2: die Aktionsleiste einblenden.`},{seite:`/artikel`,element:`[data-tour-id="artikel-vinted-einstellen-button"]`,titel:`Klick hier: Bei Vinted einstellen`,beschreibung:`Klick auf "Bei Vinted einstellen". Die App prüft er
177st alle Pflichtfelder und öffnet dann den Upload â pro Artikel ein Browser-Tab, weil Vinted den Upload aus Sicherheitsgründen im Browser verlangt.`,icon:`ð`,interaktiv:!0,beispiel:`Fehlt noch ein Pflichtfeld, zeigt dir die App genau an, was nachzutragen ist.`,aktion:`Upload im geöffneten Tab bestätigen â dein erstes Vinted-Listing ist online.`}]},"q13-ebay-upload":{stationen:[{seite:`/cross-lister`,element:`[data-tour-id="page-heading-cross-lister"]`,titel:`Warum du auch auf eBay listest`,beschreibung:`Ein Artikel, der auf Vinted UND eBay steht, wird von doppelt so vielen Käufern gesehen â bei gleichem Aufwand. Der Cross-Lister überträgt deine Vinted-Artikel mit einem Klick auf eBay.`,icon:`ð`,naechstes:`Hier siehst du den Status jedes Artikels.`},{seite:`/cross-lister`,element:`[data-tour-id="cross-lister-tabelle"]`,titel:`Schritt 1 â den Artikel aussuchen`,beschreibung:`Diese Tabelle zeigt pro Artikel auf einen Blick, ob er auf Vinted und/oder eBay gelistet ist. Such dir hier eine Zeile aus, die noch nicht auf eBay ist â genau diesen Artikel bringst du gleich rüber. Anders als im Bulk-Manager brauchst du hier keine Checkbox: du arbeitest direkt in der Zeile.`,icon:`ð`,naechstes:`In dieser Zeile sitzt der Auto-Knopf.`},{seite:`/cross-lister`,element:`[data-tour-id="cross-lister-auto-ebay-button"]`,titel:`Klick hier: Auto auf eBay`,beschreibung:`Klick bei einem Artikel, der noch nicht auf eBay ist, auf "Auto auf eBay". Die App zieht eBay-Kategorie und Pflichtangaben automatisch aus dem Mapping â du musst die Felder nicht von Hand suchen.`,icon:`ð`,interaktiv:!0,beispiel:`Klappt die Auto-Vorbereitung sauber durch, öffnet sich gleich das eBay-Upload-Fenster.`,aktion:`Im eBay-Upload-Fenster bestätigen â dein erstes eBay-Listing ist live.`}]},"q14-online-vinted":{stationen:[{seite:`/online`,element:`[data-tour-id="page-heading-online"]`,titel:`Warum du deine Vinted-Listings syncst`,beschreibung:`Auf Vinted ändert sich ständig etwas: Artikel werden verkauft, Preise gesenkt, Listings beendet. Die Online-Seite holt diesen Stand in die App, damit du nicht mehr zwischen App und Vinted hin- und herwechselst.`,icon:`ð`,naechstes:`Bleiben wir im Tab "Vinted".`},{seite:`/online`,element:`[data-tour-id="online-vinted-verbindung"]`,titel:`Deine Vinted-Verbindung`,beschreibung:`Diese Karte zeigt, ob die App mit Vinted verbunden ist. Der Sync läuft über deine gespeicherte Sitzung â du musst dich hier nirgends erneut anmelden.`,icon:`ð£`,naechstes:`Den Sync startest du mit einem Knopf.`},{seite:`/online`,element:`[data-tour-id="online-vinted-sync-button"]`,titel:`Klick hier: Von Vinted synchronisieren`,beschreibung:`Klick jetzt auf "Von Vinted Synchronisieren". Die App liest dein komplettes Vinted-Profil aus und gleicht jeden Artikel mit der App ab â bei groÃen Profilen dauert das ein bis drei Minuten.`,icon:`ð`,interaktiv:!0},{seite:`/online`,element:`[data-tour-id="online-plattform-tabs"]`,titel:`Online, Entwurf, Vinted-Draft`,beschreibung:`Nach dem Sync sortiert die App deine Artikel in diese Tabs: "Online" ist live auf Vinted sichtbar, "In-App-Entwurf" liegt nur lokal, "Vinted-Draft" ist auf Vinted als Entwurf hinterlegt. So siehst du auf einen Blick, was schon verkauft wird und was noch wartet.`,icon:`ðï¸`,beispiel:`Ein Artikel, der auf Vinted verkauft wurde, rutscht beim Sync automatisch aus dem "Online"-Tab heraus.`,aktion:`Warte kurz, bis der Sync durch ist â deine Vinted-Listings sind dann aktuell.`}]},"q15-online-ebay":{stationen:[{seite:`/online`,element:`[data-tour-id="page-heading-online"]`,titel:`Auch deine eBay-Listings gehören rein`,beschreibung:`Du verkaufst nicht nur auf Vinted. Damit du beide Plattformen im selben Ãberblick hast, holt die App auch den Stand deiner eBay-Listings â kein Tab-Wechsel zu eBay mehr nötig.`,icon:`ðµ`,naechstes:`Dafür wechselst du den Plattform-Tab.`},{seite:`/online`,element:`[data-tour-id="online-tab-ebay"]`,titel:`Klick auf den Tab "eBay"`,beschreibung:`Klick jetzt oben auf den Tab "eBay". Der Rundgang springt danach von selbst weiter und zeigt dir den eBay-Listings-Bereich.`,icon:`ð`,interaktiv:!0},{seite:`/online`,element:`[data-tour-id="online-ebay-verbindung"]`,titel:`Der eBay-Listings-Bereich`,beschreibung:`Das ist de
177in eBay-Bereich. Aufbau und Bedienung sind identisch zum Vinted-Tab â du findest hier deine eBay-Entwürfe genauso wie deine live geschalteten Angebote.`,icon:`ð`,naechstes:`Den Sync startest du mit einem Knopf.`},{seite:`/online`,element:`[data-tour-id="online-ebay-sync-button"]`,titel:`Klick hier: Mit eBay synchronisieren`,beschreibung:`Klick auf "Mit eBay synchronisieren". Die App holt über die offizielle eBay-Schnittstelle deine Listings samt Beschreibungen und MaÃen â alles in einem Schritt, ganz ohne manuelles Abtippen.`,icon:`ð`,interaktiv:!0,aktion:`Nach dem Sync stehen alle eBay-Listings mit Status und Preis in der Liste.`}]},"q16-bestellung-vinted":{stationen:[{seite:`/verkauf`,element:`[data-tour-id="page-heading-verkauf"]`,titel:`Warum du Bestellungen hier verwaltest`,beschreibung:`Sobald jemand auf Vinted kauft, beginnt ein Ablauf: Label drucken, verschicken, abschlieÃen. Die Bestellungs-Seite bündelt all das an einem Ort â du musst nicht mehr im Vinted-Postfach nach offenen Verkäufen suchen.`,icon:`ð¸`,naechstes:`Die Bestellungen holst du dir per Sync.`},{seite:`/verkauf`,element:`[data-tour-id="verkauf-versandlabel-knopf"]`,titel:`Klick hier: Bestellungen synchronisieren`,beschreibung:`Klick jetzt auf "Bestellungen synchronisieren". Die App liest alle deine Vinted-Verkäufe ein und gleicht ihren Status ab â der Sync läuft im Hintergrund, du kannst weiterarbeiten.`,icon:`ð`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-status-tabs"]`,titel:`Bestellungen nach Status`,beschreibung:`Diese Tabs gruppieren deine Bestellungen nach Phase: Versand, abgeschlossen, storniert, Problem. So arbeitest du gezielt die Verkäufe ab, bei denen gerade etwas von dir zu tun ist.`,icon:`ðï¸`,beispiel:`Im Tab "Versand" stehen genau die Bestellungen, für die du noch ein Label brauchst.`,aktion:`Warte kurz auf den Sync â deine Vinted-Bestellungen sind dann erfasst.`}]},"q17-bestellung-ebay":{stationen:[{seite:`/verkauf`,element:`[data-tour-id="page-heading-verkauf"]`,titel:`Auch deine eBay-Bestellungen gehören rein`,beschreibung:`Verkäufe auf eBay haben dieselben Deadlines wie auf Vinted: schnell verschicken, sauber abschlieÃen. Damit du keinen Versand verpasst, sammelt die App auch deine eBay-Bestellungen in dieser Ãbersicht.`,icon:`ðµ`,naechstes:`Dafür wechselst du den Plattform-Tab.`},{seite:`/verkauf`,element:`[data-tour-id="verkauf-tab-ebay"]`,titel:`Klick auf den Tab "eBay"`,beschreibung:`Klick jetzt oben auf den Tab "eBay". Der Rundgang springt danach von selbst weiter und zeigt dir den eBay-Bestellungs-Bereich.`,icon:`ð`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-ebay-sync-header"]`,titel:`Der eBay-Bestellungs-Bereich`,beschreibung:`Geschafft â das ist dein eBay-Bestellungs-Bereich. Hier landen alle eBay-Verkäufe mit Käufer, Status und Versand-Stand. Mit "Bestellungen sync" holst du den aktuellen Stand von eBay; danach erscheinen die Verkäufe in der Liste darunter.`,icon:`ð`,beispiel:`Aufbau und Bedienung sind dieselben wie im Vinted-Tab â du musst nichts Neues lernen.`,aktion:`Mit "Bestellungen sync" deine eBay-Bestellungen abholen.`}]},"q18-label":{stationen:[{seite:`/verkauf`,element:`[data-tour-id="page-heading-verkauf"]`,titel:`Warum du Labels aus der App druckst`,beschreibung:`Nach jedem Verkauf muss ein Versandlabel her. Statt dich bei der Post einzuloggen, holt die App das Label direkt von Vinted â ein Schritt weniger, und das Paket geht schneller raus zum Käufer. Dieser Rundgang spielt im Vinted-Teil der Verkauf-Seite; der Label-Bot ist Vinted-spezifisch.`,icon:`ð·ï¸`,naechstes:`Den Label-Bot findest du weiter unten.`},{seite:`/verkauf`,element:`[data-tour-id="verkauf-versandlabel-bot"]`,titel:`Klick hier: Labels anfordern`,beschreibung:`Klick jetzt auf "Labels anfordern". Der Versandlabel-Bot geht alle bezahlten Bestellungen durch und holt für jede das passende Versandlabel â als QR-Code oder druckbares PDF, je nach Versanddienst.`,icon:`ð`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-bot-ergebnis-anzeige"]`,titel:`Das Bot-Ergebnis`,beschreibung:`Hier zeigt der Bot, was er geschafft hat: wie viele Labels erstellt wurden, was schon vorhanden war und wo es hakte. Die fertigen Labels findest du jetzt in der Bestell-Liste â aber nicht im Tab "Alle", sondern im Tab "Versand".`,icon:`â
`,naechstes:`Dafür wechselst du auf den Tab "Versand".`},{seite:`/verkauf`,element:`[data-tour-id="verkauf-tab-versand"]`,titel:`Klick hier: Tab "Versand"`,beschreibung:`Klick auf den Tab "Versand". Die Bestell-Liste zeigt dir dann genau die Verkäufe, die jetzt verschickt werden müssen â also die mit frischem Label. Danach geht der Rundgang weiter.`,icon:`ð`,interaktiv:!0},{seite:`/verkauf`,element:`[data-tour-id="verkauf-tabelle"]`,titel:`Labels drucken`,beschreibung:`In dieser Liste â jetzt gefiltert auf "Versand" â erscheint pro Verkauf mit Label ein Druck-Knopf. Du kannst mehrere markieren und alle Labels auf einmal drucken â oder per Handy-Link am Smartphone ausgeben. Nach dem Druck markiert die App die Bestellung automatisch als erledigt.`,icon:`ð¨ï¸`,beispiel:`Zehn Verkäufe markieren, einmal "drucken" â alle zehn Labels landen in einer Druckvorschau.`,aktion:`Label anfordern, drucken, Paket verschicken â fertig.`}]},"q19-statistik":{abhaken:!0,stationen:[{seite:`/statistik`,element:`[data-tour-id="page-heading-statistik"]`,titel:`Warum die Statistik wichtig ist`,beschreibung:`Reselling lohnt sich nur, wenn die Zahlen stimmen. Die Statistik zeigt dir Umsatz, Gewinn und Trends â damit du erkennst, was sich verkauft und wo du nachsteuern solltest.`,icon:`ð`,naechstes:`Zuerst der wichtigste Hinweis zum Gewinn.`},{seite:`/statistik`,element:`[data-tour-id="statistik-info-card"]`,titel:`So entsteht dein Gewinn`,beschreibung:`Diese Karte erklärt die Grundlage: Dein echter Gewinn stimmt nur, wenn jeder Verkauf mit einem Einkauf verknüpft ist. Ohne zugeordneten Einkauf kennt die App den Einkaufspreis nicht und kann nur Umsatz zeigen.`,icon:`â¹ï¸`,naechstes:`Den Zeitraum stellst du oben rechts ein.`},{seite:`/statistik`,element:`[data-tour-id="statistik-zeitraum-filter"]`,titel:`Zeitraum wählen`,beschreibung:`Hier wählst du, welchen Zeitraum die Statistik auswertet â von 7 Tagen bis unbegrenzt, oder ein freies Datum. Die App vergleicht jede Kennzahl automatisch mit dem gleich langen Zeitraum davor.`,icon:`ðï¸`,naechstes:`Darunter kommen deine Finanz-Kennzahlen.`},{seite:`/statistik`,element:`[data-tour-id="statistik-finanzen"]`,titel:`Deine Finanzen`,beschreibung:`Diese Reihe bündelt das Wichtigste: Umsatz, geschätzter Gewinn, Einkaufs-Ausgaben und Marge. Der kleine Pfeil an jeder Kachel zeigt, ob es gegenüber dem Vorzeitraum bergauf oder bergab ging.`,icon:`ð°`,naechstes:`Daneben siehst du deine Aktivität.`},{seite:`/statistik`,element:`[data-tour-id="statistik-aktivitaet"]`,titel:`Deine Aktivität`,beschreibung:`Hier siehst du Stückzahlen statt Euro: wie viele Verkäufe, wie viele versendet, wie viele storniert. Zusammen mit den Finanzen ergibt das ein vollständiges Bild deines Reselling-Geschäfts.`,icon:`ð¦`,aktion:`Schau regelmäÃig rein â die Statistik zeigt dir, was sich wirklich lohnt.`}]},"q20-chat":{abhaken:!0,stationen:[{seite:`/kommunikation`,element:`[data-tour-id="page-heading-kommunikation"]`,titel:`Warum du hier antwortest`,beschreibung:`Käufer fragen vor dem Kauf nach MaÃen, Zustand oder Versand. Schnelle Antworten heben deine Verkäufer-Bewertung und entscheiden oft erst
177über den Verkauf. Dieser Posteingang bündelt deine Vinted-Nachrichten an einem Ort.`,icon:`ð¬`,naechstes:`Zuerst holst du deine Chats herein.`},{seite:`/kommunikation`,element:`[data-tour-id="komm-scan-leiste"]`,titel:`Chats aus dem gewählten Zeitraum`,beschreibung:`Hier stellst du ein, ab welchem Datum Nachrichten geladen werden. Die App liest deine Vinted-Chats nicht dauerhaft mit â du holst sie gezielt per Scan, das schont deine Vinted-Sitzung.`,icon:`ðï¸`,naechstes:`Den Scan startest du mit einem Knopf.`},{seite:`/kommunikation`,element:`[data-tour-id="komm-scan-button"]`,titel:`Klick hier: Chats scannen`,beschreibung:`Klick jetzt auf "Chats scannen". Die App holt deine Vinted-Nachrichten über die Browser-Erweiterung herein und sortiert sie automatisch in die Tabs Probleme, Angebote und Hilfe.`,icon:`ð`,interaktiv:!0},{seite:`/kommunikation`,element:`[data-tour-id="komm-tabs-vinted-ebay"]`,titel:`Nach Anliegen sortiert`,beschreibung:`Nach dem Scan liegen deine Chats in vier Tabs: "Probleme" für offizielle Vinted-Fälle, "Angebote" für Preisvorschläge, "Hilfe" für normale Käuferfragen und "Archiv" für Erledigtes. So arbeitest du gezielt das ab, was gerade dran ist.`,icon:`ðï¸`,naechstes:`Geantwortet wird direkt in der Chat-Karte.`},{seite:`/kommunikation`,element:`[data-tour-id="komm-schnellzugriff-box"]`,titel:`Antworten & senden`,beschreibung:`Jeder Chat erscheint darunter als Karte mit Antwortfeld. Du tippst deine Antwort â oder nutzt einen Schnellzugriff aus dieser Box â und sendest sie direkt aus der App ab, ohne Umweg über die Vinted-App.`,icon:`âï¸`,aktion:`Beantworte eine Käufer-Nachricht â fertig.`}]},"q21-schnellzugriff":{abhaken:!0,stationen:[{seite:`/kommunikation`,element:`[data-tour-id="page-heading-kommunikation"]`,titel:`Warum Schnellantworten Zeit sparen`,beschreibung:`Die gleichen Fragen kommen immer wieder: MaÃe, Versanddauer, Zustand. Statt jedes Mal neu zu tippen, legst du einmal eine Vorlage an â danach erledigst du Standardfragen mit einem Klick.`,icon:`â¡`,naechstes:`Deine Vorlagen wohnen in einer eigenen Box.`},{seite:`/kommunikation`,element:`[data-tour-id="komm-schnellzugriff-box"]`,titel:`Die Schnellzugriff-Box`,beschreibung:`Diese Box sammelt all deine Antwort-Vorlagen. Jede hat ein kurzes Kürzel und einen Text. In einem Chat tippst du nur das Kürzel an und der ganze Text steht im Antwortfeld.`,icon:`ð`,beispiel:`Ein Platzhalter wie {LAENGE} füllt die App automatisch mit den echten MaÃen des Artikels.`,naechstes:`Eine eigene Vorlage legst du jetzt an.`},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-anlegen-button"]`,titel:`Klick hier: Neuen Schnellzugriff anlegen`,beschreibung:`Klick auf "Neuen Schnellzugriff anlegen". Es öffnet sich ein kleines Eingabe-Feld â der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-editor"]`,titel:`Kürzel & Text festlegen`,beschreibung:`Links trägst du ein kurzes Kürzel ein (z.B. "6."), rechts den Antwort-Text. Das Kürzel ist später dein Schnell-Tipp im Chat, der Text ist die fertige Antwort, die dann eingesetzt wird.`,icon:`âï¸`,aktion:`Kürzel und Text eingeben, dann unten auf "Weiter".`,naechstes:`Zum Schluss speicherst du die Vorlage.`},{seite:`/kommunikation`,element:`[data-tour-id="schnellzugriff-anlegen-speichern"]`,titel:`Klick hier: Anlegen`,beschreibung:`Klick auf "Anlegen", um den Schnellzugriff final zu speichern. Erst dieser Klick legt die Vorlage wirklich an â ab dann steht sie dir in jedem Chat als Ein-Klick-Antwort bereit.`,icon:`ð`,interaktiv:!0,aktion:`Auf "Anlegen" klicken â dann den Rundgang mit "Fertig" abschlieÃen.`}]},"q23-support":{abhaken:!0,stationen:[{seite:`/hilfe`,element:`[data-tour-id="page-heading-hilfe"]`,titel:`Hilfe & FAQ`,beschreibung:`Diese Seite beantwortet die häufigsten Fragen rund um die App â von "Wie verbinde ich Vinted?" bis "Wie exportiere ich für den Steuerberater?". Schau hier immer zuerst rein, wenn du irgendwo hängst.`,icon:`â`,naechstes:`Bei vielen Themen hilft die Suche.`},{seite:`/hilfe`,element:`[data-tour-id="hilfe-suche"]`,titel:`Schnell zur Antwort`,beschreibung:`Tipp hier ein Stichwort ein â z.B. "Versand" oder "Rechnung" â und die Liste filtert sich sofort auf passende Fragen. So musst du nicht alles durchblättern.`,icon:`ð`,naechstes:`Darunter stehen die Fragen nach Themen sortiert.`},{seite:`/hilfe`,element:`[data-tour-id="hilfe-faq-gruppe"]`,titel:`Themen aufklappen`,beschreibung:`Die Fragen sind in Themenblöcke gruppiert â Vinted, eBay, Einkauf, Buchhaltung und mehr. Klick auf eine Frage, und die Antwort klappt direkt darunter auf.`,icon:`ð`,naechstes:`Ist nichts dabei, hilft der Direkt-Kontakt.`},{seite:`/hilfe`,element:`[data-tour-id="hilfe-kontakt-formular"]`,titel:`Direkt-Kontakt zum Support`,beschreibung:`Findest du in der FAQ keine Antwort, schreibst du uns hier direkt. Wir melden uns meist innerhalb von 1â2 Tagen â per E-Mail und im Glocken-Icon der App.`,icon:`âï¸`,aktion:`Stöber durch die FAQ â und nutz bei Bedarf das Kontakt-Formular.`}]},"q24-preisanpassung":{stationen:[{seite:`/preisanpassung`,element:`[data-tour-id="page-heading-preisanpassung"]`,titel:`Warum Auto-Preissenkung verkauft`,beschreibung:`Ein Artikel, der wochenlang liegt, blockiert nur dein Kapital. Eine Preisanpassung senkt den Preis automatisch nach X Tagen â der Ladenhüter wird wieder attraktiv, ganz ohne dass du täglich nachfasst. Wir richten das jetzt zusammen für einen Artikel ein.`,icon:`ð`,naechstes:`Zuerst kurz die zwei Wege.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-sku-section"]`,titel:`Weg 1 â SKU-Prefix-Defaults`,beschreibung:`Hier legst du eine Regel für einen ganzen SKU-Prefix an â jeder Artikel mit passender SKU bekommt sie automatisch. Praktisch, wenn eine ganze Charge gleich behandelt werden soll. Für den Einstieg nehmen wir aber den direkteren Weg: pro Artikel.`,icon:`ð·ï¸`,naechstes:`Weg 2: die Artikel-Ãbersicht.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-artikel-section"]`,titel:`Weg 2 â Anpassung pro Artikel`,beschreibung:`In dieser Ãbersicht stehen deine Online-Artikel. Du markierst einen oder mehrere und gibst ihnen direkt eine eigene Preisanpassung â genau das machen wir jetzt.`,icon:`ð`,naechstes:`Zuerst: Artikel markieren.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-alle-markieren"]`,titel:`Schritt 1 â Klick hier: Art
177ikel markieren`,beschreibung:`Klick auf "Alle markieren" â das markiert alle Artikel der Liste auf einmal. Du kannst stattdessen auch einzeln die Häkchen setzen. Sobald mindestens ein Artikel markiert ist, erscheint die Aktionsleiste.`,icon:`ð`,interaktiv:!0},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-button"]`,titel:`Schritt 2 â Klick hier: Anpassung setzen`,beschreibung:`Klick auf "Anpassung setzen". Es öffnet sich ein Fenster, in dem du festlegst, wie stark und wie oft der Preis gesenkt wird â der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-modal"]`,titel:`Die Anpassung festlegen`,beschreibung:`Hier stellst du ein: um wie viel Prozent gesenkt wird, ein optionaler Mindestpreis als Untergrenze, wie oft maximal gesenkt wird und die Wartezeit zwischen den Senkungen. So bestimmst du selbst, wie aggressiv ein Ladenhüter heruntergepreist wird.`,icon:`âï¸`,beispiel:`5 % alle 7 Tage, Mindestpreis 10 â¬, maximal 3 Senkungen.`,naechstes:`Dann speicherst du die Anpassung.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-setzen-speichern"]`,titel:`Schritt 3 â Klick hier: Setzen`,beschreibung:`Klick auf "Setzen". Damit ist die Preisanpassung für deine markierten Artikel aktiv â ab jetzt senkt die App ihren Preis von selbst nach Plan. Diese Quest gilt damit als erledigt.`,icon:`ð`,interaktiv:!0,aktion:`Auf "Setzen" klicken â die Anpassung ist gespeichert.`},{seite:`/preisanpassung`,element:`[data-tour-id="preisanpassung-sofort-senken"]`,titel:`Nicht warten? Sofort senken`,beschreibung:`Du musst nicht auf den nächsten Termin warten: "Sofort senken" wendet die Anpassung sofort auf alle aktiven Artikel an und ignoriert die Wartezeit. Ideal, wenn ein Artikel schnell weg soll.`,icon:`â¡`,aktion:`Optional: "Sofort senken" klicken, um den Preis gleich zu senken.`}]},"q25-buchhaltung":{abhaken:!0,stationen:[{seite:`/buchhaltung`,element:`[data-tour-id="page-heading-buchhaltung"]`,titel:`Warum der Buchhaltungs-Export`,beschreibung:`Am Jahresende will das Finanzamt Zahlen sehen. Die Buchhaltung bündelt Rechnungen und einen fertigen CSV-Export an einem Ort â du musst Verkäufe nie wieder von Hand für den Steuerberater zusammensuchen.`,icon:`ð§¾`,naechstes:`Die Seite hat drei Tabs.`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-tabs"]`,titel:`Rechnungen & Export`,beschreibung:`Die ersten beiden Tabs erstellen Rechnungen für Vinted- und eBay-Verkäufe. Der dritte Tab, "CSV-Export", liefert die Datei für Steuer und DATEV â den schauen wir uns jetzt an.`,icon:`ðï¸`,naechstes:`Wechsle dazu auf den Export-Tab.`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-tab-export"]`,titel:`Klick hier: CSV-Export`,beschreibung:`Klick jetzt auf den Tab "CSV-Export". Der Rundgang springt danach von selbst weiter und zeigt dir den Export-Bereich.`,icon:`ð`,interaktiv:!0},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-export-zeitraum"]`,titel:`Zeitraum wählen`,beschreibung:`Hier legst du fest, welchen Zeitraum der Export abdeckt â per Datumsfeldern oder mit einem Schnell-Knopf wie "Dieses Jahr". Genau dieser Zeitraum landet später in der CSV-Datei.`,icon:`ðï¸`,naechstes:`Darunter sitzt der Download.`},{seite:`/buchhaltung`,element:`[data-tour-id="buchhaltung-export-download"]`,titel:`CSV herunterladen`,beschreibung:`Ein Klick auf "CSV herunterladen" erzeugt die fertige Datei: UTF-8 mit BOM, Semikolon-getrennt â direkt in Excel und im DATEV-Import lesbar. Mehr braucht dein Steuerberater nicht.`,icon:`ð¥`,aktion:`Zeitraum wählen und CSV herunterladen â fertig.`}]},"q26-2fa":{stationen:[{seite:`/profil`,element:`[data-tour-id="page-heading-profil"]`,titel:`Warum Zwei-Faktor-Schutz`,beschreibung:`Dein Konto enthält all deine Verkaufsdaten, Verbindungen und Rechnungen. Mit 2FA brauchst du beim Login zusätzlich einen Code von deinem Handy â selbst ein geklautes Passwort reicht dann nicht mehr aus.`,icon:`ð¡ï¸`,naechstes:`Die 2FA-Karte findest du weiter unten.`},{seite:`/profil`,element:`[data-tour-id="profil-2fa"]`,titel:`Die 2FA-Karte`,beschreibung:`Das ist de
177ine Zwei-Faktor-Karte. Der Code beim Login kommt aus einer Authenticator-App auf deinem Handy â Google Authenticator, Authy oder 1Password funktionieren alle.`,icon:`ð`,naechstes:`Die Einrichtung startest du mit einem Knopf.`},{seite:`/profil`,element:`[data-tour-id="profil-2fa-einrichten-button"]`,titel:`Klick hier: 2FA einrichten`,beschreibung:`Klick jetzt auf "2FA einrichten". Es öffnet sich der Einrichtungs-Bereich mit einem QR-Code â und der Rundgang geht von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/profil`,element:`[data-tour-id="profil-2fa-einrichtung"]`,titel:`QR scannen & Code eingeben`,beschreibung:`Scann den QR-Code mit deiner Authenticator-App und tippe den 6-stelligen Code, den die App anzeigt, hier ein. Damit ist 2FA aktiv â ab dem nächsten Login wirst du nach dem Code gefragt.`,icon:`ð±`,beispiel:`Kein QR-Scanner? Ãber "Code zum manuellen Eintippen" bekommst du den Schlüssel auch als Text.`,aktion:`QR scannen, Code eingeben, bestätigen â dein Konto ist jetzt doppelt geschützt.`}]},"q27-theme":{abhaken:!0,stationen:[{seite:`/`,element:`[data-tour-id="page-heading-dashboard"]`,titel:`Hell- oder Dunkel-Modus`,beschreibung:`Du arbeitest manchmal stundenlang in der App. Such dir das Aussehen aus, mit dem deine Augen am entspanntesten bleiben â die App kann hell oder dunkel.`,icon:`ð`,naechstes:`Der Umschalter sitzt oben rechts in deinem Konto-Menü.`},{seite:`/`,element:`[data-tour-id="toolbar-avatar"]`,titel:`Klick hier: Konto-Menü`,beschreibung:`Klick oben rechts auf deinen Avatar. Es klappt das Konto-Menü auf â darin sitzt der Umschalter für das Aussehen. Der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/`,element:`[data-tour-id="toolbar-theme-toggle"]`,titel:`Der Theme-Umschalter`,beschreibung:`Mit diesem Knopf wechselst du zwischen Hell- und Dunkel-Modus. Die App merkt sich deine Wahl und lädt beim nächsten Start direkt im gewünschten Aussehen. Probier es ruhig aus â du kannst jederzeit zurückschalten.`,icon:`âï¸`,aktion:`Klick auf den Umschalter â die App wechselt sofort das Aussehen.`}]},"q28-changelog":{abhaken:!0,stationen:[{seite:`/`,element:`[data-tour-id="page-heading-dashboard"]`,titel:`Was ist neu`,beschreibung:`Die App wird laufend weiterentwickelt. Im Changelog siehst du alle neuen Funktionen und Verbesserungen â so verpasst du nichts, das dir Arbeit abnehmen könnte.`,icon:`â¨`,naechstes:`Den Changelog öffnest du über dein Konto-Menü.`},{seite:`/`,element:`[data-tour-id="toolbar-avatar"]`,titel:`Klick hier: Konto-Menü`,beschreibung:`Klick oben rechts auf deinen Avatar. Im aufklappenden Menü findest du den Eintrag "Was ist neu" â der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/`,element:`[data-tour-id="toolbar-changelog"]`,titel:`Klick hier: Was ist neu`,beschreibung:`Klick auf "Was ist neu". Es öffnet sich der Changelog mit allen Updates. Hat der Eintrag einen "neu"-Hinweis, gibt es Funktionen, die du noch nicht gesehen hast.`,icon:`ð`,interaktiv:!0},{seite:`/`,element:`[data-tour-id="changelog-modal-liste"]`,titel:`Alle Updates auf einen Blick`,beschreibung:`Hier stehen alle Ãnderungen chronologisch â neueste oben. Jeder Eintrag ist als "Neu", "Verbessert" oder "Bugfix" markiert, damit du sofort siehst, was sich für dich lohnt zu lesen.`,icon:`ð°`,aktion:`Stöber durch die Einträge â so bleibst du immer auf dem Laufenden.`}]},"q29-notifications":{abhaken:!0,stationen:[{seite:`/`,element:`[data-tour-id="page-heading-dashboard"]`,titel:`Warum es Benachrichtigungen gibt`,beschreibung:`Du kannst nicht ständig jede Plattform im Blick haben. Die App sammelt darum alle wichtigen Ereignisse an einem Ort â neue Verkäufe, Käufer-Nachrichten, Support-Antworten und System-Hinweise. Erreichbar ist das über ein Symbol, das auf jeder Seite oben rechts sitzt.`,icon:`ð`,naechstes:`Dieses Symbol ist die Glocke â gleich oben rechts.`},{seite:`/`,element:`[data-tour-id="toolbar-glocke"]`,titel:`Klick hier: die Glocke`,beschreibung:`Das ist die Benachrichtigungs-Glocke. Ein roter Punkt an ihr bedeutet: es gibt etwas Neues. Klick sie jetzt an â der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/benachrichtigungen`,element:`[data-tour-id="page-heading-benachrichtigungen"]`,titel:`Deine Benachrichtigungen`,beschreibung:`Ãber die Glocke bist du hier gelandet â auf der Benachrichtigungs-Seite. Sie bündelt jedes wichtige Ereignis, damit du nichts verpasst, ohne überall selbst nachschauen zu müssen.`,icon:`ð`,naechstes:`Darunter liegt deine Ereignis-Liste.`}
177,{seite:`/benachrichtigungen`,element:`[data-tour-id="benachrichtigungen-inhalt"]`,titel:`Lesen & abarbeiten`,beschreibung:`Sobald etwas passiert, erscheint es hier als Eintrag. Ungelesenes steht oben und hervorgehoben â ein Klick öffnet die zugehörige Seite und markiert es als gelesen. Mit "Alle als gelesen" oben rechts räumst du die Liste in einem Schritt auf.`,icon:`â
`,aktion:`Schau ab und zu rein â so verpasst du keinen Verkauf und keine Nachricht.`}]},"q30-newsletter":{stationen:[{seite:`/`,element:`[data-tour-id="page-heading-dashboard"]`,titel:`Warum der Newsletter`,beschreibung:`Nicht jedes Update siehst du sofort in der App. Der Newsletter bringt neue Features und Reselling-Tipps direkt in dein Postfach â keine Werbung Dritter, Abmeldung jederzeit.`,icon:`ð§`,naechstes:`Der Anmelde-Block sitzt ganz unten auf dem Dashboard.`},{seite:`/`,element:`[data-tour-id="dashboard-newsletter"]`,titel:`Der Newsletter-Block`,beschreibung:`Das ist der Anmelde-Bereich am Ende deines Dashboards. Mehr als eine E-Mail-Adresse braucht die Anmeldung nicht â und die ist gleich schon ausgefüllt.`,icon:`ð¬`,naechstes:`Schau dir das E-Mail-Feld an.`},{seite:`/`,element:`[data-tour-id="dashboard-newsletter-input"]`,titel:`Deine E-Mail steht schon fest`,beschreibung:`Hier steht deine Konto-E-Mail â fest eingetragen, du musst nichts eintippen. Genau an diese Adresse kommt der Newsletter, und genau damit zählt die Quest als erledigt.`,icon:`âï¸`,naechstes:`Jetzt nur noch bestätigen.`},{seite:`/`,element:`[data-tour-id="dashboard-newsletter-button"]`,titel:`Klick hier: Anmelden`,beschreibung:`Klick jetzt auf "Anmelden" â das ist der entscheidende Schritt. Erst dieser Klick legt dein Abo wirklich an; danach gilt die Quest als erledigt und du bekommst Updates direkt per Mail. Abmelden kannst du dich jederzeit über den Link in jeder E-Mail.`,icon:`ð`,interaktiv:!0,aktion:`Auf "Anmelden" klicken â dann den Rundgang mit "Fertig" abschlieÃen.`}]},"q31-cmdk":{abhaken:!0,stationen:[{seite:`/`,element:`[data-tour-id="page-heading-dashboard"]`,titel:`Die Schnellsuche`,beschreibung:`Klick dich nicht durch Menüs. Die Schnellsuche springt mit wenigen Tastendrücken zu jeder Seite und Funktion der App â wie bei Linear, Notion oder Stripe.`,icon:`â¡`,naechstes:`Geöffnet wird sie mit einem Knopf oder per Tastatur.`},{seite:`/`,element:`[data-tour-id="toolbar-suche"]`,titel:`Klick hier: Schnellsuche`,beschreibung:`Klick oben rechts auf das Lupen-Symbol. Schneller geht es mit der Tastatur â Strg+K (oder Cmd+K am Mac) öffnet die Suche von überall. Der Rundgang geht danach von selbst weiter.`,icon:`ð`,interaktiv:!0},{seite:`/`,element:`[data-tour-id="cmdk-suchfeld"]`,titel:`Einfach tippen`,beschreibung:`Tipp ein paar Buchstaben â die Suche filtert sofort. Du musst den Namen nicht genau treffen: "rechn" findet die Buchhaltung, "stat" die Statistik.`,icon:`â¨ï¸`,naechstes:`Darunter erscheinen die Treffer.`},{seite:`/`,element:`[data-tour-id="cmdk-ergebnisliste"]`,titel:`Treffer öffnen`,beschreibung:`Die Treffer sind nach Apps, Einstellungen und Aktionen gruppiert. Mit den Pfeiltasten wählst du einen aus, mit Enter springst du hin â komplett ohne Maus.`,icon:`ð¯`,aktion:`Probier es aus: Strg+K drücken, Seitenname tippen, Enter.`}]}};async function hr(e){try{await fetch(`${z()}/api/quests/${encodeURIComponent(e)}/abhaken`,{method:`POST`,credentials:`include`}),window.dispatchEvent(new CustomEvent(`quest-abgehakt`,{detail:e}))}catch{}}function gr(){let[e,t]=$e(),n=e.get(`spotlight`),r=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(!n){r.current=null;return}if(r.current===n)return;r.current=n;let e=()=>{let e=new URLSearchParams(window.location.search);e.delete(`spotlight`),t(e,{replace:!0})},i=pr[n];if(i){dr(i,{beiEnde:()=>{i.abhaken&&hr(n),window.dispatchEvent(new CustomEvent(`quest-abgehakt`,{detail:n}))}}),e();return}let a=mr[n];if(!a){e();return}let o=a.detailTour?mt[a.detailTour]??[]:a.stationen??[];if(o.length===0){e();return}ut(o,{beiEnde:()=>{a.abhaken&&hr(n)}}),e()},[n,t])}function _r(){if(typeof window>`u`)return!1;let e=navigator.userAgent||``,t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(e),n=/Macintosh/.test(e)&&navigator.maxTouchPoints>1;return t||n}function vr(){let[e,t]=(0,K.useState)(()=>_r());return(0,K.useEffect)(()=>{let e=()=>t(_r());return window.addEventListener(`resize`,e),window.addEventListener(`orientationchange`,e),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`orientationchange`,e)}},[]),e}var yr=`mp3_mobile_hinweis_dismissed_until`,br=7,xr=new Set([`/mobile`,`/quests`,`/benachrichtigungen`,`/hilfe`,`/einstellungen`]);function Sr(){let e=H(),t=vr(),n=Qe(),[r,a]=(0,K.useState)(()=>{try{let e=localStorage.getItem(yr);if(!e)return!1;let t=parseInt(e,10);return!isNaN(t)&&t>Date.now()}catch{return!1}}),[o,s]=(0,K.useState)(!1);return(0,K.useEffect)(()=>{xr.has(n.pathname)},[n.pathname]),!t||r||xr.has(n.pathname)?null:(0,q.jsx)(`div`,{className:`bg-petrol-500/15 border border-petrol-500/30 rounded-xl p-4 mb-4`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:`flex-shrink-0 w-10 h-10 rounded-lg bg-petrol-500/20 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(Te,{className:`w-5 h-5`})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-text-primary`,children:e(`Du bist auf dem Smartphone`)}),(0,q.jsxs)(`button`,{onClick:()=>s(!o),className:`ml-auto inline-flex items-center gap-1 text-[11px] text-petrol-300 hover:text-petrol-200`,children:[e(
177o?`Weniger`:`Was geht hier?`),o?(0,q.jsx)(i,{className:`w-3 h-3`}):(0,q.jsx)(oe,{className:`w-3 h-3`})]})]}),(0,q.jsxs)(`p`,{className:`text-xs text-text-muted mt-1 leading-relaxed`,children:[e(`Die meisten Sachen gehen direkt am Handy. Fuer Artikel-Erfassung mobil nutze den`),` `,(0,q.jsx)(R,{to:`/mobile`,className:`text-petrol-300 underline`,children:e(`Check-In`)}),`.`]}),o&&(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 mt-3`,children:[(0,q.jsxs)(`div`,{className:`bg-success/10 border border-success/20 rounded p-2`,children:[(0,q.jsx)(`div`,{className:`text-[10px] font-semibold text-success mb-1`,children:e(`Geht hier`)}),(0,q.jsxs)(`ul`,{className:`text-[10px] text-text-muted space-y-0.5`,children:[(0,q.jsx)(`li`,{children:e(`⢠Verkaeufe sehen`)}),(0,q.jsx)(`li`,{children:e(`⢠Nachrichten beantworten`)}),(0,q.jsx)(`li`,{children:e(`⢠Rechnungen, Buchhaltung`)}),(0,q.jsx)(`li`,{children:e(`⢠Versand markieren`)}),(0,q.jsx)(`li`,{children:e(`⢠Check-In neue Artikel`)})]})]}),(0,q.jsxs)(`div`,{className:`bg-amber-500/10 border border-amber-500/20 rounded p-2`,children:[(0,q.jsx)(`div`,{className:`text-[10px] font-semibold text-amber-400 mb-1`,children:e(`Am Desktop`)}),(0,q.jsxs)(`ul`,{className:`text-[10px] text-text-muted space-y-0.5`,children:[(0,q.jsx)(`li`,{children:e(`⢠Neue Listings hochladen`)}),(0,q.jsx)(`li`,{children:e(`⢠Mass-Upload (Bulk)`)}),(0,q.jsx)(`li`,{children:e(`⢠Token-Refresh (~30 Tage)`)})]})]})]})]}),(0,q.jsx)(`button`,{onClick:()=>{a(!0);let e=Date.now()+br*24*60*60*1e3;try{localStorage.setItem(yr,String(e))}catch{}},title:U(`Hinweis ausblenden (7 Tage)`),"aria-label":U(`Hinweis ausblenden`),className:`flex-shrink-0 w-8 h-8 rounded-lg bg-white/5 hover:bg-white/10 text-text-muted flex items-center justify-center`,children:(0,q.jsx)(j,{className:`w-4 h-4`})})]})})}function Cr(e,t={},n=2500){return new Promise(r=>{let i=`${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,a=!1,o=window.setTimeout(()=>{a||(a=!0,window.removeEventListener(`vinted-upload-response`,s),r(null))},n);function s(e){let t=e.detail;!t||t.requestId!==i||a||(a=!0,window.clearTimeout(o),window.removeEventListener(`vinted-upload-response`,s),r(t.data??null))}window.addEventListener(`vinted-upload-response`,s),window.dispatchEvent(new CustomEvent(`vinted-upload-request`,{detail:{requestId:i,action:e,data:t}}))})}async function wr(){let e=await Cr(`echte-eingaben-status`);return e&&typeof e.erteilt==`boolean`?e:null}async function Tr(){return Cr(`erweiterung-neu-laden`,{},8e3)}var Er=new Set,Dr=!1;function Or(){Dr||typeof window>`u`||(Dr=!0,window.addEventListener(`vinted-upload-response`,e=>{let t=e.detail?.bridge_id;typeof t==`string`&&t.length>0&&Er.add(t)}))}Or();function kr(){return[...Er]}function Ar(){return Er.size>=2}var jr=[`/preisanpassung`,`/automatisierung`,`/volt`,`/volt-modus`,`/kommunikation`,`/online`,`/verkauf`,`/artikel`];function Mr(){let e=H(),{pathname:t}=Qe(),[n,r]=(0,K.useState)(`unbekannt`),i=jr.some(e=>t.startsWith(e));if((0,K.useEffect)(()=>{if(!i)return;let e=!0,t=async()=>{let t=await wr();if(e){if(Ar()){r(`doppelt`);return}r(t===null?`keine-erweiterung`:t.erteilt?`an`:`aus`)}};t();let n=window.setInterval(t,12e4);return()=>{e=!1,window.clearInterval(n)}},[i,t]),!i||n===`an`||n===`unbekannt`)return null;let a=n===`keine-erweiterung`,o=n===`doppelt`;return(0,q.jsx)(`div`,{role:`alert`,className:`mb-4 rounded-xl border border-amber-500/40 bg-amber-500/10 p-4`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsx)(N,{className:`mt-0.5 h-5 w-5 flex-shrink-0 text-amber-500`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`p`,{className:`text-sm font-semibold text-text-primary`,children:e(o?`Zwei GenV-Erweiterungen sind gleichzeitig aktiv â jede Aktion läuft doppelt oder meldet einen Fehler, obwohl sie bei Vinted rausging.`:a?`Die GenV-Erweiterung antwortet nicht â Vinted-Aktionen laufen nicht.`:`âEchte Eingaben" ist aus. Vinted sieht deine Automatisierung.`)}),o&&(0,q.jsxs)(`p`,{className:`mt-1.5 text-[13px] leading-relaxed text-text-secondary`,children:[e(`Unter chrome://extensions eine der beiden deaktivieren â meist die aus dem Web Store, wenn du eine entpackte Entwicklerfassung nutzt. Danach diese Seite neu laden. Kennungen:`),` `,(0,q.jsx)(`span`,{className:`font-mono`,children:kr().map(e=>e.slice(0,10)+`â¦`).join(` · `)})]}
177),!a&&!o&&(0,q.jsx)(`p`,{className:`mt-1.5 text-[13px] leading-relaxed text-text-secondary`,children:e(`Ohne diese Berechtigung erzeugt GenV keine echten Tastendrücke und keine echten Klicks, sondern nachgebaute Ereignisse. Vinteds Sensor verwirft die zu 100 % â gemessen, nicht vermutet. Er sieht dann eine Sitzung, in der Artikel bearbeitet und Nachrichten geschrieben werden und in der es weder Maus noch Tastatur gibt. Genau daran erkennt man Automatisierung.`)}),!a&&!o&&(0,q.jsxs)(`ol`,{className:`mt-3 space-y-1 text-[13px] text-text-secondary`,children:[(0,q.jsx)(`li`,{children:e(`1. chrome://extensions öffnen (Adresse unten kopieren).`)}),(0,q.jsx)(`li`,{children:e(`2. Bei âVinted Session Manager" auf das Neu-laden-Symbol â³ klicken â oder oben auf âAktualisieren".`)}),(0,q.jsx)(`li`,{children:e(`3. Fragt Chrome nach der neuen Berechtigung âZugriff auf das Debugger-Backend", diese annehmen. Danach zeigt Chrome am Automatik-Tab dauerhaft eine Hinweisleiste â die gehört dazu und darf nicht geschlossen werden.`)})]}),a&&(0,q.jsx)(`p`,{className:`mt-1.5 text-[13px] leading-relaxed text-text-secondary`,children:e(`Ist sie installiert und aktiv? Prüfe chrome://extensions â ohne die Erweiterung kann GenV bei Vinted nichts hochladen, ändern oder löschen.`)}),(0,q.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-3`,children:[(0,q.jsxs)(`a`,{href:`/hilfe?suche=Echte%20Eingaben`,className:`inline-flex items-center gap-1.5 rounded-lg bg-amber-500/20 px-3 py-1.5 text-[13px] font-medium text-text-primary hover:bg-amber-500/30`,children:[e(`Schritt für Schritt in der Hilfe`),(0,q.jsx)(qe,{className:`h-3.5 w-3.5`})]}),(0,q.jsx)(`a`,{href:`chrome://extensions`,onClick:e=>{e.preventDefault(),navigator.clipboard?.writeText(`chrome://extensions`)},className:`text-[13px] text-text-secondary underline hover:text-text-primary`,children:e(`chrome://extensions kopieren`)})]})]})]})})}var Nr=`ios-a2h-dismissed-am`,Pr=14;function Fr(){let e=H(),[t,n]=(0,K.useState)(!1);return(0,K.useEffect)(()=>{if(typeof window>`u`)return;let e=navigator.userAgent||``,t=/iPad|iPhone|iPod/.test(e)&&!window.MSStream,r=window.navigator.standalone===!0||window.matchMedia(`(display-mode: standalone)`).matches;if(!t||r)return;let i=localStorage.getItem(Nr);i&&(Date.now()-new Date(i).getTime())/(1e3*60*60*24)<Pr||n(!0)},[]),t?(0,q.jsxs)(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+5rem)] inset-x-3 z-40 bg-petrol-500/15 border border-petrol-500/40 rounded-2xl p-4 shadow-xl backdrop-blur-md`,children:[(0,q.jsx)(`button`,{onClick:()=>{localStorage.setItem(Nr,new Date().toISOString()),n(!1)},"aria-label":U(`Schliessen`),className:`absolute top-2 right-2 min-w-[44px] min-h-11 flex items-center justify-center text-text-muted hover:text-text-primary`,children:(0,q.jsx)(j,{className:`w-5 h-5`})}),(0,q.jsx)(`h3`,{className:`text-sm font-semibold text-petrol-200 pr-10 mb-2`,children:e(`GenV als App installieren`)}),(0,q.jsx)(`p`,{className:`text-xs text-text-secondary leading-snug mb-3`,children:e(`Damit Push-Benachrichtigungen auf iPhone/iPad funktionieren, fuege GenV zum Home-Bildschirm hinzu:`)}),(0,q.jsxs)(`ol`,{className:`text-xs text-text-secondary space-y-2 mb-3`,children:[(0,q.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(`span`,{className:`text-petrol-400 font-bold`,children:`1.`}),(0,q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[e(`Unten in Safari aufs Teilen-Symbol tippen`),` `,(0,q.jsx)(Ye,{className:`w-4 h-4 inline text-blue-400`})]})]}),(0,q.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(`span`,{className:`text-petrol-400 font-bold`,children:`2.`}),(0,q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[e(`"Zum Home-Bildschirm" auswaehlen`),` `,(0,q.jsx)(Me,{className:`w-4 h-4 inline text-blue-400`})]})]}),(0,q.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(`span`,{className:`text-petrol-400 font-bold`,children:`3.`}),(0,q.jsx)(`span`,{children:e(`"Hinzufuegen" bestaetigen â GenV erscheint auf dem Home-Bildschirm`)})]})]}),(0,q.jsx)(`p`,{className:`text-[11px] text-text-muted`,children:e(`Push-Notifications funktionieren erst nach der Installation.`)})]}):null}var Ir=768;function Lr(){let[e,t]=(0,K.useState)(()=>typeof window<`u`?window.innerWidth<Ir:!1);return(0,K.useEffect)(()=>{let e=()=>t(window.innerWidth<Ir);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var Rr=300*1e3,zr=`vinted-token-banner-dismissed-am`,Br=1;function Vr(){let e=Lr(),[t,n]=(0,K.useState)(null),[r,i]=(0,K.useState)(!1);if((0,K.useEffect)(()=>
177{if(!e)return;let t=localStorage.getItem(zr);if(t){let e=new Date(t);(Date.now()-e.getTime())/(1e3*60*60*24)<Br&&i(!0)}let r=async()=>{try{let e=await fetch(`/api/vinted/token-status`);e.ok&&n(await e.json())}catch{}};r();let a=setInterval(r,Rr);return()=>clearInterval(a)},[e]),!e||r||!t)return null;let a=()=>{localStorage.setItem(zr,new Date().toISOString()),i(!0)};if(!t.vorhanden)return(0,q.jsx)(Hr,{farbe:`amber`,text:U(`Vinted-Funktionen brauchen einmalige Einrichtung am Desktop. Bitte oeffne die App dort und installiere die Browser-Erweiterung.`),onDismiss:a});if(t.tage_verbleibend!=null&&t.tage_verbleibend<7){let e=t.tage_verbleibend;return(0,q.jsx)(Hr,{farbe:e<=2?`red`:`amber`,text:U(`Vinted-Verbindung laeuft in {{tage}} Tagen ab â bitte am Desktop kurz die App oeffnen damit die Extension den Token erneuern kann.`,{tage:e}),onDismiss:a})}return t.letzter_status===`401`||t.letzter_status===`cloudflare-block`?(0,q.jsx)(Hr,{farbe:`red`,text:U(`Vinted hat die Verbindung abgelehnt. Bitte am Desktop die Extension neu laden + auf vinted.de einloggen.`),onDismiss:a}):null}function Hr({farbe:e,text:t,onDismiss:n}){return(0,q.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3 border-b ${{amber:`bg-amber-500/15 border-amber-500/40 text-amber-200`,red:`bg-red-500/15 border-red-500/40 text-red-200`}[e]}`,children:[(0,q.jsx)(N,{className:`w-5 h-5 flex-shrink-0 mt-0.5`}),(0,q.jsx)(`p`,{className:`text-sm flex-1 leading-snug`,children:t}),(0,q.jsx)(`button`,{onClick:n,"aria-label":U(`Schliessen`),className:`min-w-[44px] min-h-11 -mr-2 flex items-center justify-center hover:opacity-70`,children:(0,q.jsx)(j,{className:`w-5 h-5`})})]})}function Ur({onMehrKlick:e}){let t=H(),n=({isActive:e})=>M(`flex flex-col items-center justify-center gap-0.5 flex-1 h-full`,`text-[10px] font-medium transition-colors`,e?`text-petrol-300`:`text-text-muted hover:text-text-primary`);return(0,q.jsxs)(`nav`,{className:M(`fixed bottom-0 left-0 right-0 z-40`,`bg-sidebar/95 backdrop-blur border-t border-white/10`,`h-12 flex items-stretch`,`pb-[env(safe-area-inset-bottom)]`),children:[(0,q.jsxs)(F,{to:`/`,end:!0,className:n,children:[(0,q.jsx)(O,{className:`w-5 h-5`}),(0,q.jsx)(`span`,{children:t(`Start`)})]}),(0,q.jsxs)(F,{to:`/verkauf`,className:n,children:[(0,q.jsx)(ne,{className:`w-5 h-5`}),(0,q.jsx)(`span`,{children:t(`Verkauf`)})]}),(0,q.jsxs)(F,{to:`/online`,className:n,children:[(0,q.jsx)(we,{className:`w-5 h-5`}),(0,q.jsx)(`span`,{children:t(`Online`)})]}),(0,q.jsxs)(F,{to:`/quests`,className:n,children:[(0,q.jsx)(We,{className:`w-5 h-5`}),(0,q.jsx)(`span`,{children:t(`Quest`)})]}),(0,q.jsxs)(`button`,{onClick:e,className:`flex flex-col items-center justify-center gap-0.5 flex-1 h-full text-[10px] font-medium text-text-muted hover:text-text-primary transition-colors`,children:[(0,q.jsx)(s,{className:`w-5 h-5`}),(0,q.jsx)(`span`,{children:t(`Mehr`)})]})]})}function Wr(){return(0,q.jsxs)(`header`,{className:`sticky top-0 z-30 bg-sidebar/95 backdrop-blur border-b border-white/10 h-12 flex items-center px-4 pt-[env(safe-area-inset-top)]`,children:[(0,q.jsx)(F,{to:`/`,className:`font-bold text-text-primary text-base`,children:`GenV`}),(0,q.jsx)(St,{kompakt:!0}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-3`,children:[(0,q.jsx)(F,{to:`/benachrichtigungen`,className:`w-9 h-9 flex items-center justify-center text-text-muted hover:text-text-primary`,"aria-label":U(`Benachrichtigungen`),children:(0,q.jsx)(Ve,{className:`w-4 h-4`})}),(0,q.jsx)(F,{to:`/profil`,className:`w-9 h-9 flex items-center justify-center text-text-muted hover:text-text-primary`,"aria-label":U(`Profil`),children:(0,q.jsx)(ye,{className:`w-4 h-4`})})]})]})}function Gr({offen:e,onClose:t}){let n=H(),{t:i}=V([`nav`]),{istAdmin:a}=G();if(!e)return null;let o=({isActive:e})=>M(`flex items-center gap-3 px-4 py-3 rounded-lg text-sm font-medium transition-all`,e?`bg-petrol-500/10 text-petrol-300`:`text-text-secondary hover:bg-bg-secondary hover:text-text-primary`);return(0,q.jsxs)(`div`,{className:`fixed inset-0 z-50 flex`,onClick:t,children:[(0,q.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`}),(0,q.jsxs)(`aside`,{className:`relative bg-sidebar border-r border-white/10 w-72 h-full overflow-y-auto pb-[env(safe-area-inset-bottom)]`,onClick:e=>e.stopPropagation(),children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-white/10`,children:[(0,q.jsx)(`h2`,{className:`font-bold text-text-primary text-sm`,children:n(`Alle Bereiche`)}),(0,q.jsx)(`button`,{onClick:t,className:`text-text-muted hover:text-text-primary`,children:(0,q.jsx)(j,{className:`w-5 h-5`})})]}),(0,q.jsxs)(`nav`,{className:`p-3 space-y-1`,children:[(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2`,children:n(`Verkauf`)}),(0,q.jsxs)(F,{to:`/einkauf`,className:o,onClick:t,children:[(0,q.jsx)(C,{className:`w-4 h-4`}),n(`Einkauf`)]}),(0,q.jsxs)(F,{to:`/artikel`,className:o,onClick:t,children:[(0,q.jsx)(Se,{className:`w-4 h-4`}),n(`Bulk-Manager`)]}),(0,q.jsxs)(F,{to:`/cross-lister`,className:o,onClick:t,children:[(0,q.jsx)(D,{className:`w-4 h-4`}),n(`Cross-Lister`)]}),(0,q.jsxs)(F,{to:`/zuordnen`,className:o,onClick:t,children:[(0,q.jsx)(x,{className:`w-4 h-4`}),n(`Bestellungen zuordnen`)]}),(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2 mt-3`,children:n(`Workflow`)}),(0,q.jsxs)(F,{to:`/foto-workflow`,className:o,onClick:t,children:[(0,q.jsx)(Fe,{className:`w-4 h-4`}),n(`Foto-Workflow`)]}),(0,q.jsxs)(F,{to:`/mobile-workflow`,className:o,onClick:t,children:[(0,q.jsx)(Fe,{className:`w-4 h-4`}),n(`Check-in`)]}),a&&(0,q.jsxs)(F,{to:`/admin/video-einlauf`,className:o,onClick:t,children:[(0,q.jsx)(He,{className:`w-4 h-4`}),n(`Video-Einlauf`)]}),(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2 mt-3`,children:n(`Buchhaltung`)}),(0,q.jsxs)(F,{to:`/buchhaltung`,className:o,onClick:t,children:[(0,q.jsx)(ve,{className:`w-4 h-4`}),n(`Buchhaltung`)]}),(0,q.jsxs)(F,{to:`/ebay-rechnungen`,className:o,onClick:t,children:[(0,q.jsx)(ve,{className:`w-4 h-4`}
177),n(`eBay-Rechnungen`)]}),(0,q.jsxs)(F,{to:`/archiv`,className:o,onClick:t,children:[(0,q.jsx)(Pe,{className:`w-4 h-4`}),n(`Archiv`)]}),(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2 mt-3`,children:n(`Kommunikation`)}),(0,q.jsxs)(F,{to:`/kommunikation`,className:o,onClick:t,children:[(0,q.jsx)(ie,{className:`w-4 h-4`}),n(`Kommunikation`)]}),(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2 mt-3`,children:n(`Analyse`)}),(0,q.jsxs)(F,{to:`/statistik`,className:o,onClick:t,children:[(0,q.jsx)(y,{className:`w-4 h-4`}),n(`Statistik`)]}),(0,q.jsxs)(F,{to:`/lieferanten`,className:o,onClick:t,children:[(0,q.jsx)(je,{className:`w-4 h-4`}),n(`Lieferanten`)]}),(0,q.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-text-muted px-4 py-2 mt-3`,children:n(`Account`)}),(0,q.jsxs)(F,{to:`/einstellungen`,className:o,onClick:t,children:[(0,q.jsx)(r,{className:`w-4 h-4`}),n(`Einstellungen`)]}),(0,q.jsxs)(F,{to:`/administration`,className:o,onClick:t,children:[(0,q.jsx)(Re,{className:`w-4 h-4`}),i(`nav:service_manager`,`Service Manager`)]}),(0,q.jsxs)(F,{to:`/hilfe`,className:o,onClick:t,children:[(0,q.jsx)(E,{className:`w-4 h-4`}),n(`Hilfe`)]})]})]})]})}function Kr(){let{uebersicht:e}=ht(),[t,n]=(0,K.useState)([]),[r,i]=(0,K.useState)(null),a=(0,K.useRef)(new Set),o=(0,K.useRef)(new Set),s=(0,K.useRef)(!0);return(0,K.useEffect)(()=>{if(!e)return;let t=new Set(e.quests.filter(e=>e.erledigt).map(e=>e.id)),r=new Set(e.badges.filter(e=>e.freigeschaltet).map(e=>e.id));if(s.current){a.current=t,o.current=r,s.current=!1;return}let c=e.quests.filter(e=>e.erledigt&&!a.current.has(e.id));for(let e of c){let t=`${e.id}_${Date.now()}`;n(n=>[...n,{id:t,titel:U(`Quest erledigt!`),beschreibung:e.titel,icon:`â`}]),setTimeout(()=>{n(e=>e.filter(e=>e.id!==t))},4e3)}let l=e.badges.filter(e=>e.freigeschaltet&&!o.current.has(e.id));if(l.length>0){let e=l.find(e=>[`schnaeppchen-spuerer`,`hobby-reseller`,`side-hustler`,`reseller-mogul`].includes(e.id))||l[0];i({id:e.id,name:e.name,icon:e.icon}),setTimeout(()=>i(null),3e3)}a.current=t,o.current=r},[e]),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`fixed bottom-6 right-6 z-[9000] flex flex-col gap-2 pointer-events-none`,children:t.map(e=>(0,q.jsx)(qr,{toast:e,onDismiss:()=>n(t=>t.filter(t=>t.id!==e.id))},e.id))}),r&&(0,q.jsx)(Jr,{badge:r,onClose:()=>i(null)})]})}function qr({toast:e,onDismiss:t}){return(0,q.jsxs)(`div`,{className:`pointer-events-auto bg-petrol-500 text-white rounded-xl shadow-2xl px-5 py-4 min-w-[280px] max-w-[360px] relative qt-slide-in`,style:{boxShadow:`0 12px 32px rgba(0,0,0,0.4), 0 0 40px rgba(26,161,161,0.4)`}
177,children:[(0,q.jsx)(`div`,{className:`absolute inset-0 overflow-hidden pointer-events-none rounded-xl`,children:[...Array(8)].map((e,t)=>(0,q.jsx)(`span`,{className:`absolute text-lg qt-confetti`,style:{left:`${10+t*12}%`,top:`50%`,animationDelay:`${t*60}ms`},children:[`â¨`,`ð`,`â`,`â¨`,`ð`,`â`,`â¨`,`ð`][t]},t))}),(0,q.jsxs)(`div`,{className:`relative flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:`w-8 h-8 rounded-full bg-white/20 flex items-center justify-center text-lg font-bold flex-shrink-0`,children:e.icon||`â`}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`font-semibold text-sm`,children:e.titel}),e.beschreibung&&(0,q.jsx)(`div`,{className:`text-xs text-white/90 mt-0.5 truncate`,children:e.beschreibung})]}),(0,q.jsx)(`button`,{onClick:t,className:`text-white/70 hover:text-white flex-shrink-0`,"aria-label":U(`Schliessen`),children:(0,q.jsx)(j,{className:`w-4 h-4`})})]})]})}function Jr({badge:e,onClose:t}){let n=H();return(0,q.jsxs)(`div`,{className:`fixed inset-0 z-[9500] flex items-center justify-center pointer-events-none`,role:`dialog`,"aria-live":`assertive`,children:[(0,q.jsx)(`div`,{className:`absolute inset-0 bg-black/30 qt-backdrop-fade pointer-events-auto`,onClick:t}),(0,q.jsxs)(`div`,{className:`relative pointer-events-auto qt-badge-pop bg-gradient-to-br from-petrol-500 to-marine-500 text-white rounded-3xl px-12 py-10 max-w-md mx-4 text-center shadow-2xl`,style:{boxShadow:`0 30px 80px rgba(0,0,0,0.6), 0 0 100px rgba(26,161,161,0.6)`},children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-center gap-3 text-xs uppercase tracking-widest text-white/80 mb-3`,children:[(0,q.jsx)(We,{className:`w-4 h-4`}),(0,q.jsx)(`span`,{children:n(`Badge freigeschaltet`)})]}),(0,q.jsx)(`div`,{className:`text-7xl mb-4 qt-badge-icon`,children:e.icon}),(0,q.jsx)(`div`,{className:`text-2xl font-bold`,children:e.name}),(0,q.jsx)(`button`,{onClick:t,className:`mt-6 px-4 py-2 bg-white/20 hover:bg-white/30 rounded-lg text-sm font-medium transition-colors`,children:n(`Weiter`)})]})]})}var Yr=`https://images.unsplash.com/photo-1441984904996-e0b6ba687e04?auto=format&fit=crop&w=1600&q=80`,Xr={instagram:`https://instagram.com/genv.reselling`,facebook:``,twitter:``,youtube:``};function Zr({formTitel:e,formUntertitel:t,children:n,formFooter:r}){let i=H();return(0,q.jsxs)(`div`,{className:`min-h-screen flex flex-col lg:flex-row bg-background text-text-primary`,children:[(0,q.jsxs)(`div`,{className:`relative lg:w-1/2 min-h-[260px] sm:min-h-[320px] lg:min-h-screen overflow-hidden`,children:[(0,q.jsx)(`div`,{className:`absolute inset-0 bg-cover bg-center`,style:{backgroundImage:`url("${Yr}")`},"aria-hidden":`true`}),(0,q.jsx)(`div`,{className:`absolute inset-0`,style:{background:`linear-gradient(135deg, rgba(7, 8, 15, 0.80) 0%, rgba(91, 33, 182, 0.55) 50%, rgba(124, 58, 237, 0.40) 100%)`},"aria-hidden":`true`}),(0,q.jsxs)(`div`,{className:`relative z-10 h-full min-h-[260px] sm:min-h-[320px] lg:min-h-screen flex flex-col justify-between p-6 sm:p-10 lg:p-14`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`div`,{className:`w-11 h-11 rounded-xl flex items-center justify-center shadow-lg shadow-black/30`,style:{background:`linear-gradient(135deg, #a78bfa 0%, #7c3aed 100%)`},children:(0,q.jsx)(`span`,{className:`text-white font-black text-[15px] tracking-tighter leading-none`,children:`GenV`})}),(0,q.jsxs)(`div`,{className:`leading-tight`,children:[(0,q.jsx)(`div`,{className:`font-bold text-white text-base`,children:`GenV`}),(0,q.jsx)(`div`,{className:`text-[11px] text-white/70`,children:`Reselling-Automation`})]})]}),(0,q.jsxs)(`div`,{className:`space-y-4 max-w-md hidden lg:block`,children:[(0,q.jsxs)(`h1`,{className:`text-5xl xl:text-6xl font-bold text-white leading-tight tracking-tight`,style:{textShadow:`0 4px 24px rgba(0,0,0,0.4)`},children:[i(`Willkommen bei`),(0,q.jsx)(`br`,{}),(0,q.jsx)(`span`,{className:`text-petrol-300`,children:`GenV.`})]}),(0,q.jsx)(`p`,{className:`text-white/85 leading-relaxed text-base`,children:i(`Verkaufen auf Vinted und eBay â komplett automatisiert. Du fokussierst dich auf den Einkauf, GenV erledigt den Rest.`)}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-white/70 pt-2`,children:[(0,q.jsx)(te,{className:`w-4 h-4 text-petrol-300`}),(0,q.jsx)(`span`,{children:i(`DSGVO-konform · Made in Germany · 2-Faktor-Login`)})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(Qr,{href:Xr.instagram,label:`Instagram`,children:(0,q.jsx)(Ie,{className:`w-4 h-4`})}),(0,q.jsx)(Qr,{href:Xr.facebook,label:`Facebook`,children:(0,q.jsx)(Ge,{className:`w-4 h-4`})}),(0,q.jsx)(Qr,{href:Xr.twitter,label:`X / Twitter`,children:(0,q.jsx)(be,{className:`w-4 h-4`})}),(0,q.jsx)(Qr,{href:Xr.youtube,label:`YouTube`,children:(0,q.jsx)(me,{className:`w-4 h-4`})}),(0,q.jsxs)(`span`,{className:`ml-auto text-[11px] text-white/60 hidden sm:inline`,children:[`© `,new Date().getFullYear(),` GenV`]})]})]})]}),(0,q.jsxs)(`div`,{className:`relative flex-1 flex items-center justify-center p-4 sm:p-8 lg:p-14 bg-background`,children:[(0,q.jsx)(`div`,{className:`absolute top-4 right-4 z-20`,children:(0,q.jsx)(vt,{})}),(0,q.jsxs)(`div`,{className:`w-full max-w-md`,children:[(0,q.jsxs)(`div`,{className:`space-y-2 mb-7`,children:[(0,q.jsx)(`h2`,{className:`text-3xl sm:text-4xl font-bold text-text-primary tracking-tight`,children:e}),t&&(0,q.jsx)(`p`,{className:`text-sm text-text-muted leading-relaxed`,children:t})]}),(0,q.jsx)(`div`,{className:`space-y-5`,children:n}),r&&(0,q.jsx)(`div`,{className:`mt-7 pt-6 border-t border-white/5`,children:r}),(0,q.jsxs)(`div`,{className:`mt-8 text-center text-[11px] text-text-muted`,children:[(0,q.jsx)(R,{to:`/datenschutz`,className:`hover:text-text-secondary transition-colors`,children:i(`Datenschutz`)}),(0,q.jsx)(`span`,{className:`mx-2 opacity-50`,children:`·`}),(0,q.jsx)(R,{to:`/impressum`,className:`hover:text-text-secondary transition-colors`,children:i(`Impressum`)}),(0,q.jsx)(`span`,{className:`mx-2 opacity-50`,children:`·`}),(0,q.jsx)(R,{to:`/widerrufen`,className:`hover:text-text-secondary transition-colors`,children:i(`Vertrag widerrufen`)}),(0,q.jsx)(`span`,{className:`mx-2 opacity-50`,children:`·`}),(0,q.jsx)(R,{to:`/kuendigen`,className:`hover:text-text-secondary transition-colors`,children:i(`Verträge hier kündigen`)})]})]})]})]})}function Qr({href:e,label:t,children:n}){let r=!!e&&e.trim()!==``,i=r?`w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 backdrop-blur text-white flex items-center justify-center transition-colors`:`w-9 h-9 rounded-full bg-white/5 text-white/30 flex items-center justify-center cursor-default`;return r?(0,q.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:i,title:t,"aria-label":t,children:n}):(0,q.jsx)(`span`,{className:i,title:`${t} â folgt bald`,"aria-label":t,children:n})}var $r=z;function ei(){let[e,t]=(0,K.useState)(!1);return(0,K.useEffect)(()=>{let e=!0;return fetch(`${$r()}/api/auth/google-status`,{credentials:`include`}).then(e=>e.json()).then(n=>{e&&t(n?.aktiv===!0)}).catch(()=>{}),()=>{e=!1}},[]),e?(0,q.jsxs)(`div`,{className:`space-y-4`,children:[(0,q.jsxs)(`a`,{href:`${$r()}/api/auth/google-start`,className:`w-full inline-flex items-center justify-center gap-3 py-3 bg-white hover:bg-gray-50 text-gray-900 font-semibold text-sm rounded-lg border border-gray-200 transition-all hover:shadow-md`,children:[(0,q.jsxs)(`svg`,{viewB
177ox:`0 0 24 24`,className:`w-5 h-5`,children:[(0,q.jsx)(`path`,{fill:`#4285F4`,d:`M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z`}),(0,q.jsx)(`path`,{fill:`#34A853`,d:`M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z`}),(0,q.jsx)(`path`,{fill:`#FBBC05`,d:`M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z`}),(0,q.jsx)(`path`,{fill:`#EA4335`,d:`M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z`})]}),`Mit Google fortfahren`]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`div`,{className:`flex-1 h-px bg-white/10`}),(0,q.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-text-muted font-medium`,children:`oder`}),(0,q.jsx)(`div`,{className:`flex-1 h-px bg-white/10`})]})]}):null}function ti(){let{login:e}=G(),t=I(),{t:r}=V([`pages`,`common`]),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(!1),[m,h]=(0,K.useState)(null),[g,_]=(0,K.useState)(null),[v,y]=(0,K.useState)(!1);async function b(n){n.preventDefault(),h(null),_(null),y(!0);let r=await e(i.trim(),o,f?u.trim():void 0);if(y(!1),r){if(r.tfa_required){p(!0),h(null),_(null);return}h(r.fehler),_(r.feld||null);return}t(`/`)}let x=`w-full bg-background/60 border border-white/10 rounded-lg pl-10 pr-3 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:border-petrol-500/50 focus:ring-2 focus:ring-petrol-500/15 transition-all`;return(0,q.jsxs)(Zr,{formTitel:r(`anmelden.titel`),formUntertitel:r(`anmelden.untertitel`,`Logg dich ein und verwalte deine Vinted- und eBay-Artikel.`),formFooter:(0,q.jsxs)(`div`,{className:`space-y-1.5 text-sm text-text-muted text-center`,children:[(0,q.jsxs)(`p`,{children:[r(`anmelden.noch_kein_konto`),` `,(0,q.jsx)(R,{to:`/registrieren`,className:`text-petrol-400 hover:text-petrol-300 font-medium`,children:r(`anmelden.registrieren_link`)})]}),(0,q.jsx)(`p`,{children:(0,q.jsx)(R,{to:`/passwort-vergessen`,className:`text-text-muted hover:text-text-secondary text-xs underline-offset-4 hover:underline`,children:r(`anmelden.passwort_vergessen`)})})]}),children:[(0,q.jsx)(ei,{}),(0,q.jsxs)(`form`,{onSubmit:b,className:`space-y-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`anmelden-email`,className:`block text-xs font-medium text-text-secondary mb-1.5`,children:r(`anmelden.email_label`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(n,{className:`w-4 h-4 text-text-muted absolute left-3 top-1/2 -translate-y-1/2`}),(0,q.jsx)(`input`,{type:`email`,id:`anmelden-email`,value:i,onChange:e=>a(e.target.value),required:!0,autoFocus:!0,autoComplete:`email`,className:x,placeholder:`[email protected]`,disabled:v||f,"aria-invalid":g===`email`||void 0,"aria-describedby":g===`email`&&m?`anmelden-email-fehler`:void 0})]}),g===`email`&&m&&(0,q.jsx)(`p`,{id:`anmelden-email-fehler`,className:`mt-1.5 text-xs text-danger`,children:m})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`anmelden-passwort`,className:`block text-xs font-medium text-text-secondary mb-1.5`,children:r(`anmelden.passwort_label`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(w,{className:`w-4 h-4 text-text-muted absolute left-3 top-1/2 -translate-y-1/2`}),(0,q.jsx)(`input`,{type:c?`text`:`password`,id:`anmelden-passwort`,value:o,onChange:e=>s(e.target.value),required:!0,autoComplete:`current-password`,className:x.replace(`pr-3`,`pr-10`),placeholder:`********`,disabled:v||f,"aria-invalid":g===`passwort`||void 0,"aria-describedby":g===`passwort`&&m?`anmelden-passwort-fehler`:void 0}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),"aria-label":c?r(`anmelden.passwort_verbergen`,`Passwort verbergen`):r(`anmelden.passwort_anzeigen`,`Passwort anzeigen`),tabIndex:-1,disabled:v||f,className:`absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary transition-colors disabled:opacity-40`,children:c?(0,q.jsx)(ge,{className:`w-4 h-4`}):(0,q.jsx)(Je,{className:`w-4 h-4`})})]}),g===`passwort`&&m&&(0,q.jsx)(`p`,{id:`anmelden-passwort-fehler`,className:`mt-1.5 text-xs text-danger`,children:m})]}),f&&(0,q.jsxs)(`div`,{className:`p-3 bg-petrol-500/10 border border-petrol-500/30 rounded-lg space-y-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(te,{className:`w-4 h-4 text-petrol-300`}),(0,q.jsx)(`label`,{htmlFor:`anmelden-totp`,className:`text-xs font-medium text-text-primary`,children:`2-Faktor-Code aus deiner Authenticator-App`})]}),(0,q.jsx)(`input`,{type:`text`,id:`anmelden-totp`,value:u,onChange:e=>d(e.target.value.replace(/\D/g,``).slice(0,6)),autoFocus:!0,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`000000`,maxLength:6,className:`w-full bg-background/60 border border-white/10 rounded-lg px-3 py-2 text-center text-lg font-mono tracking-widest text-text-primary focus:outline-none focus:border-petrol-500/50 focus-visible:ring-2 focus-visible:ring-petrol-500`,disabled:v,"aria-invalid":g===`totp`||void 0,"aria-describedby":g===`totp`&&m?`anmelden-totp-fehler`:void 0}),(0,q.jsx)(`p`,{className:`text-[11px] text-text-muted`,children:`Ãffne Google Authenticator, Authy oder 1Password und gib den aktuellen 6-stelligen Code ein.`}),g===`totp`&&m&&(0,q.jsx)(`p`,{id:`anmelden-totp-fehler`,className:`text-xs text-danger`,children:m})]}),m&&!g&&(0,q.jsx)(`div`,{className:`p-3 bg-danger/10 border border-danger/30 rounded-lg text-sm text-danger`,children:m}),(0,q.jsx)(`button`,{type:`submit`,disabled:v||f&&u.length!==6,className:`press-scale w-full py-2.5 bg-petrol-500 hover:bg-petrol-600 disabled:bg-white/5 disabled:text-text-muted disabled:cursor-not-allowed text-white font-semibold rounded-lg transition-colors shadow-lg`,children:v?r(`anmelden.anmelden_laeuft`):f?r(`anmelden.mit_2fa_anmelden`,`Mit 2FA-Code anmelden`):r(`anmelden.anmelden_button`)})]})]})}function ni(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function ri(e,t){if(e.length<8)return{wert:0,text:t(`pages:registrieren.staerke_zu_kurz`,`Zu kurz`),farbe:`bg-danger`};let n=0;return e.length>=12&&n++,/[A-Z]/.test(e)&&/[a-z]/.test(e)&&n++,/\d/.test(e)&&n++,/[^A-Za-z0-9]/.test(e)&&n++,n<=1?{wert:0,text:t(`pages:registrieren.staerke_schwach`,`Schwach`),farbe:`bg-danger`}:n<=2?{wert:1,text:t(`pages:registrieren.staerke_ok`,`OK`),farbe:`bg-amber-400`}:{wert:2,text:t(`pages:registrieren.staerke_stark`,`Stark`),farbe:`bg-success`}}function ii(){let{register:e}=G(),t=I(),[r]=$e(),{t:i}=V([`pages`,`errors`,`common`]),[a,o]=(0,K.useState)(()=>{let e=(r.get(`email`)||``).trim();return ni(e)?e:``}),[s,c]=(0,K.useState)(``),[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(!1),[p,m]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),[_,v]=(0,K.useState)(!1),[y,x]=(0,K.useState)(!1),[S,C]=(0,K.useState)(``),T=(0,K.useMemo)(()=>ri(s,i),[s,i]),E=s.length>0&&s===l;async function D(n){if(n.preventDefault(),m(null),g(null),s.length<8){m(i(`errors:passwort_zu_kurz`)),g(`passwort`);return}if(s!==l){m(i(`errors:passwoerter_stimmen_nicht`)),g(`passwortBestaetigen`);return}v(!0);let o=a.trim(),c=await e(o,s);if(v(!1),c){m(c.fehler),g(c.feld||null);return}if(r.get(`newsletter`)===`ja`&&ni(o))try{await B(`${z()}/api/newsletter/anmelden`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({email:o})},8e3)}catch{}let u=S.trim();if(u){try{await B(`${z()}/api/lizenz/aktivieren`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({lizenz_schluessel:u})},1e4)}catch{}t(`/`);return}t(`/bestaetigen`)}let ee=`w-full bg-background/60 border border-white/10 rounded-lg pl-10 pr-3 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:border-petrol-500/50 focus:ring-2 focus:ring-petrol-500/15 transition-all`;return(0,q.jsxs)(Zr,{formTitel:i(`pages:registrieren.titel`),formUntertitel:i(`pages:registrieren.untertitel`,`Erstell dein kostenloses GenV-Konto und leg in 2 Minuten los.`),formFooter:(0,q.jsxs)(`div`,{className:`text-sm text-text-muted text-center`,children:[i(`pages:registrieren.schon_konto`),` `,(0,q.jsx)(R,{to:`/anmelden`,className:`text-petrol-400 hover:text-petrol-300 font-medium`,children:i(`pages:registrieren.anmelden_link`)})]}),children:[(0,q.jsx)(ei,{}),(0,q.jsxs)(`form`,{onSubmit:D,className:`space-y-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`reg-email`,className:`block text-xs font-medium text-text-secondary mb-1.5`,children:i(`pages:registrieren.email_label`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(n,{className:`w-4 h-4 text-text-muted absolute left-3 top-1/2 -translate-y-1/2`}),(0,q.jsx)(`input`,{type:`email`,id:`reg-email`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,autoComplete:`email`,className:ee,placeholder:`[email protected]`,disabled:_,"aria-invalid":h===`email`||void 0,"aria-describedby":h===`email`&&p?`reg-email-fehler`:void 0})]}),h===`email`&&p&&(0,q.jsx)(`p`,{id:`reg-email-fehler`,className:`mt-1.5 text-xs text-danger`,children:p})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`label`,{htmlFor:`reg-passwort`,className:`block text-xs font-medium text-text-secondary mb-1.5`,children:[i(`pages:registrieren.passwort_label`),` `,(0,q.jsx)(`span`,{className:`text-text-muted`,children:i(`pages:registrieren.min_8_zeichen`,`(min. 8 Zeichen)`)})]}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(w,{className:`w-4 h-4 text-text-muted absolute left-3 top-1/2 -translate-y-1/2`}),(0,q.jsx)(`input`,{type:d?`text`:`password`,id:`reg-passwort`,value:s,onChange:e=>c(e.target.value),required:!0,autoComplete:`new-password`,minLength:8,className:ee.replace(`pr-3`,`pr-10`),placeholder:`â¢â¢â¢â¢â¢â¢â¢â¢`,disabled:_,"aria-invalid":h===`passwort`||void 0,"aria-describedby":h===`passwort`&&p?`reg-passwort-fehler`:void 0}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>f(e=>!e),"aria-label":d?i(`pages:registrieren.passwort_verbergen`,`Passwort verbergen`):i(`pages:registrieren.passwort_anzeigen`,`Passwort anzeigen`),tabIndex:-1,disabled:_,className:`absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary transition-colors disabled:opacity-40`,children:d?(0,q.jsx)(ge,{className:`w-4 h-4`}):(0,q.jsx)(Je,{className:`w-4 h-4`})})]}),s.length>0&&(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`flex-1 h-1 rounded-full bg-white/5 overflow-hidden`,children:(0,q.jsx)(`div`,{className:`h-full transition-all duration-300 ${T.farbe}`,style:{width:`${(T.wert+1)*33.33}%`}})}),(0,q.jsx)(`span`,{className:`text-[11px] text-text-muted shrink-0`,children:T.text})]}),h===`passwort`&&p&&(0,q.jsx)(`p`,{id:`reg-passwort-fehler`,className:`mt-1.5 text-xs text-danger`,children:p})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`reg-passwort2`,className:`block text-xs font-medium text-text-secondary mb-1.5`,children:i(`pages:registrieren.passwort_bestaetigen`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(w,{className:`w-4 h-4 text-text-muted absolute left-3 top-1/2 -translate-y-1/2`}),(0,q.jsx)(`input`,{type:d?`text`:`password`,id:`reg-passwort2`,value:l,onCh
177ange:e=>u(e.target.value),required:!0,autoComplete:`new-password`,minLength:8,className:ee,placeholder:`â¢â¢â¢â¢â¢â¢â¢â¢`,disabled:_,"aria-invalid":h===`passwortBestaetigen`||void 0,"aria-describedby":h===`passwortBestaetigen`&&p?`reg-passwort2-fehler`:void 0}),l.length>0&&(0,q.jsx)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2`,children:E?(0,q.jsx)(A,{className:`w-4 h-4 text-success`}):(0,q.jsx)(j,{className:`w-4 h-4 text-danger`})})]}),h===`passwortBestaetigen`&&p&&(0,q.jsx)(`p`,{id:`reg-passwort2-fehler`,className:`mt-1.5 text-xs text-danger`,children:p})]}),p&&!h&&(0,q.jsx)(`div`,{className:`p-3 bg-danger/10 border border-danger/30 rounded-lg text-sm text-danger`,children:p}),(0,q.jsxs)(`div`,{className:`border border-white/10 rounded-lg`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>x(e=>!e),"aria-expanded":y,className:`w-full flex items-center gap-2 px-3 py-2.5 text-sm text-text-secondary hover:text-text-primary transition-colors`,children:[(0,q.jsx)(b,{className:`w-4 h-4 text-text-muted`}),i(`pages:registrieren.lizenz_optional`,`Lizenz-Schlüssel? (optional)`),(0,q.jsx)(`span`,{className:`ml-auto text-text-muted`,children:y?`â`:`+`})]}),y&&(0,q.jsxs)(`div`,{className:`px-3 pb-3 space-y-1.5`,children:[(0,q.jsx)(`label`,{htmlFor:`reg-lizenz`,className:`sr-only`,children:i(`pages:registrieren.lizenz_optional`,`Lizenz-Schlüssel? (optional)`)}),(0,q.jsx)(`input`,{type:`text`,id:`reg-lizenz`,value:S,onChange:e=>C(e.target.value),placeholder:`GENV-XXXX-XXXX-XXXX`,className:`w-full bg-background/60 border border-white/10 rounded-lg px-3 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:border-petrol-500/50 focus-visible:ring-2 focus-visible:ring-petrol-500 font-mono`,disabled:_}),(0,q.jsx)(`p`,{className:`text-[11px] text-text-muted`,children:i(`pages:registrieren.lizenz_hinweis`,`Nur falls du einen Schlüssel hast. Wer über die Webseite bezahlt, wird automatisch freigeschaltet.`)})]})]}),(0,q.jsx)(`button`,{type:`submit`,disabled:_||!E||T.wert===0,className:`press-scale w-full py-2.5 bg-petrol-500 hover:bg-petrol-600 disabled:bg-white/5 disabled:text-text-muted disabled:cursor-not-allowed text-white font-semibold rounded-lg transition-colors shadow-lg shadow-petrol-500/20`,children:_?i(`pages:registrieren.konto_wird_erstellt`):i(`pages:registrieren.kostenlos_registrieren`,`Kostenlos registrieren`)}),(0,q.jsxs)(`p`,{className:`text-[11px] text-text-muted text-center leading-relaxed`,children:[i(`pages:registrieren.agb_hinweis_pre`,`Mit der Registrierung akzeptierst du unsere`),` `,(0,q.jsx)(`a`,{href:`https://www.genv-resellingautomation.com/agb/`,target:`_blank`,rel:`noopener noreferrer`,className:`underline hover:text-text-secondary`,children:i(`pages:registrieren.agb_link`,`AGB`)}),` & `,(0,q.jsx)(R,{to:`/datenschutz`,className:`underline hover:text-text-secondary`,children:i(`pages:registrieren.datenschutz_link`,`Datenschutzerklärung`)}),`.`,` `,i(`pages:registrieren.keine_kreditkarte`,`Keine Kreditkarte nötig. Lizenz aktivierst du nach der Registrierung.`)]})]})]})}var ai=`https://discord.gg/PYNJpaPY7`,oi=`https://www.genv-resellingautomation.com/genv%20links`;function si({variant:e=`reihe`}){let t=H(),n=(0,q.jsxs)(`a`,{href:ai,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-xl font-semibold text-white bg-petrol-500 hover:bg-petrol-600 transition-colors`,children:[(0,q.jsx)(l,{className:`w-4 h-4`,"aria-hidden":`true`}),t(`Discord beitreten`)]}),r=(0,q.jsxs)(`a`,{href:oi,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-xl font-semibold border border-petrol-500 text-petrol-500 hover:bg-petrol-500/10 transition-colors`,children:[(0,q.jsx)(o,{className:`w-4 h-4`,"aria-hidden":`true`}),t(`Alle GenV-Links`)]});return e===`karte`?(0,q.jsxs)(`div`,{className:`rounded-2xl border border-border-subtle bg-bg-secondary p-6`,children:[(0,q.jsx)(`h3`,{className:`text-lg font-bold text-text-primary`,children:t(`Werde Teil der GenV-Community`)}),(0,q.jsx)(`p`,{className:`mt-1 text-sm text-text-secondary`,children:t(`Tipps, Support und Giveaways â k
177omm in unseren Discord oder finde alle Kanäle an einem Ort.`)}),(0,q.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-3`,children:[n,r]})]}):e===`footer`?(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[n,r]}):(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[n,r]})}var ci=4e4,li=`[email protected]`;function ui(){let e=H(),[t,n]=(0,K.useState)(`laeuft`),[r,i]=(0,K.useState)(``),a=(0,K.useRef)(Date.now());return(0,K.useEffect)(()=>{let e=!0,t,r=async()=>{try{let t=await B(`${z()}/api/lizenz/status`,{credentials:`include`},6e3);if(t.ok){let r=await t.json().catch(()=>({}));if(vn(r?.status)||r?.pflicht===!1){window.location.href=`/`;return}r?.zahlung_wartet===!0&&r?.email_bestaetigt===!1?e&&n(`bestaetigen`):Date.now()-a.current>ci&&e&&n(`keine_zahlung`)}else if(t.status===401){window.location.href=`/anmelden`;return}}catch{}e&&(t=setTimeout(r,2e3))};return r(),()=>{e=!1,t&&clearTimeout(t)}},[]),(0,q.jsx)(`div`,{className:`min-h-screen w-full flex-1 flex items-center justify-center bg-background text-text-secondary p-6`,children:(0,q.jsxs)(`div`,{className:`text-center max-w-md`,children:[t===`laeuft`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`mx-auto mb-6 h-10 w-10 rounded-full border-2 border-petrol-500/30 border-t-petrol-500 animate-spin`}),(0,q.jsx)(`h1`,{className:`text-lg font-semibold mb-2`,children:e(`Einen Moment, wir aktivieren dein Kontoâ¦`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted`,children:e(`Deine Zahlung war erfolgreich. Du wirst gleich automatisch weitergeleitet.`)})]}),t===`bestaetigen`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`mx-auto mb-5 h-12 w-12 rounded-full bg-petrol-500/15 flex items-center justify-center text-2xl`,children:`âï¸`}),(0,q.jsx)(`h1`,{className:`text-lg font-semibold mb-2 text-text-primary`,children:e(`Deine Zahlung ist da â es fehlt nur ein Klick`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted mb-1`,children:e(`Wir haben dir einen sechsstelligen Code geschickt. Tippe ihn ein, dann ist dein Zugang sofort offen.`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted mb-5`,children:e(`Du musst nichts erneut bezahlen. Schau bitte auch im Spam-Ordner nach.`)}),(0,q.jsx)(`a`,{href:`/bestaetigen`,className:`inline-block px-4 py-2 rounded-lg bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium transition-colors`,children:e(`Code eingeben`)}),(0,q.jsx)(`button`,{onClick:async()=>{i(`sendet`);try{i((await B(`${z()}/api/auth/bestaetigungs-mail-neu`,{method:`POST`,credentials:`include`},1e4)).ok?`gesendet`:`fehler`)}catch{i(`fehler`)}},disabled:r===`sendet`,className:`block mx-auto mt-3 text-xs text-text-muted underline hover:text-text-primary disabled:opacity-60 transition-colors`,children:e(r===`sendet`?`Wird gesendetâ¦`:`Neuen Code senden`)}),r===`gesendet`&&(0,q.jsx)(`p`,{className:`mt-3 text-xs text-emerald-400`,children:e(`Neue E-Mail ist unterwegs.`)}),r===`fehler`&&(0,q.jsxs)(`p`,{className:`mt-3 text-xs text-amber-400`,children:[e(`Das hat gerade nicht geklappt. Schreib uns kurz:`),` `,li]}),(0,q.jsx)(`p`,{className:`mt-5 text-xs text-text-muted`,children:e(`Sobald du bestätigt hast, geht es hier von allein weiter.`)})]}),t===`keine_zahlung`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`mx-auto mb-5 h-12 w-12 rounded-full bg-amber-500/15 flex items-center justify-center text-2xl`,children:`ð`}),(0,q.jsx)(`h1`,{className:`text-lg font-semibold mb-2 text-text-primary`,children:e(`Wir können deine Zahlung noch nicht zuordnen`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted mb-1`,children:e(`Das passiert fast immer aus einem Grund: bei der Bezahlung wurde eine andere E-Mail-Adresse eingetragen als die deines Kontos.`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted mb-5`,children:e(`Dein Geld ist nicht weg. Schreib uns die Adresse, mit der du bezahlt hast â wir schalten dich sofort frei:`)}),(0,q.jsx)(`a`,{href:`mailto:${li}?subject=${encodeURIComponent(U(`Zahlung kommt nicht an`))}`,className:`inline-block px-4 py-2 rounded-lg bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium transition-colors`,children:li}),(0,q.jsx)(`p`,{className:`mt-5 text-xs text-text-muted`,children:e(`Diese Seite prüft weiter mit â sobald die Zahlung ankommt, geht es automatisch weiter.`)})]}),(0,q.jsx)(`div`,{className:`mt-7 flex justify-center`,children:(0,q.jsx)(si,{variant:`reihe`})})]})})}var X={cream:`#FAFAF7`,ink:`#1A1A1F`,night:`#0E0E10`,brand:`#7C3AED`,gain:`#16A34A`,gold:`#D4A017`,goldHell:`#E9C45A`,goldText:`#8A6D0F`,diamond:`#22B8D6`,diamondText:`#0E7C92`,diamondBg:`#0B1A22`,diamondCream:`#E7F4F8`,diamondHell:`#3FD3EF`},di={ZEIGEN:!1,vergeben:181,gesamt:214},fi=`24,50 â¬`,pi=`https://buy.stripe.com/4gMbJ35RjeG7ff7cACdZ601`,mi=`35,49 â¬`,hi=`https://buy.stripe.com/8x24gB7Zr55x7MF9oqdZ602`,gi=!1;function _i({text:e,farbe:t,fett:n}){return(0,q.jsxs)(`li`,{className:`flex gap-2.5 text-sm ${n?`font-medium`:``}`,children:[(0,q.jsx)(A,{size:18,strokeWidth:2.5,className:`shrink-0 mt-0.5`,style:{color:t}}),(0,q.jsx)(`span`,{children:e})]})}function vi({akzent:e,textColor:t,headerColor:n,titel:r,items:i}){return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex gap-2.5 items-center text-sm font-semibold`,style:{color:n},children:[(0,q.jsx)(h,{size:18,className:`shrink-0`,style:{color:e}}),(0,q.jsx)(`span`,{children:r})]}),(0,q.jsx)(`ul`,{className:`mt-3 space-y-2.5`,style:{paddingLeft:`14px`,marginLeft:`7px`,borderLeft:`2px solid ${e}55`,color:t},children:i.map(t=>(0,q.jsxs)(`li`,{className:`flex gap-2 text-[13px]`,children:[(0,q.jsx)(`span`,{className:`leading-5`,style:{color:e},children:`â¢`}),(0,q.jsx)(`span`,{children:t})]},t))})]})}function yi({text:e,farbe:t}){return(0,q.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-wider mb-3`,style:{color:t},children:e})}function bi(){let{benutzer:e}=G(),t=H(),[n,r]=(0,K.useState)(!1),i=[t(`Weltweite Discord-Community`),t(`All-in-One Reseller-Guide`),t(`Offene Lieferanten-Reviews`),t(`Gratis-Chancen bei Giveaways`),t(`GenV Software-Guides`),t(`Community-Support (Discord)`)],a=t(`Die komplette GenV-Software:`),o=[t(`KI-Listings â Foto rein, fertige Anzeige raus`),t(`Automatisches Crossposting (Vinted â eBay)`),t(`Auto-Uploads & Listing-Workflow`),t(`Inventar-, Verkaufs- & Label-Tracking`),t(`Buchhaltung, Archiv & Käufer-Chat`),t(`Automation-Tools & Newsletter`),t(`
177Support direkt in GenV`)],s=[t(`Persönliches Account-Review & 1:1-Feedback`),t(`Private Lieferanten-Gruppen`),t(`Exklusive Vinted-Tricks für bessere Listings`),t(`Höhere Gewinnchancen bei Giveaways`)],[c,l]=(0,K.useState)(null),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1),m=(e,t)=>{d(!1),p(!1),l({link:e,plan:t})},h=t=>{let n=t.includes(`?`)?`&`:`?`,r=e?.email?`${n}prefilled_email=${encodeURIComponent(e.email)}`:``;window.location.href=`${t}${r}`},g=async()=>{if(!(!c||!u||!f)){r(!0);try{await fetch(`${z()}/api/checkout/zustimmung`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({email:e?.email??null,plan:c.plan,sofort_beginn:!0,widerruf_erlischt:!0})})}catch{}h(c.link)}},_=()=>{window.open(`https://discord.gg/PYNJpaPY7`,`_blank`,`noopener,noreferrer`)},[v,y]=(0,K.useState)(!1);(0,K.useEffect)(()=>{let e=!0;return(async()=>{let t=await Cn();!e||t===null||y(t.zahlung_wartet===!0&&t.email_bestaetigt===!1)})(),()=>{e=!1}},[]);let b=Math.max(0,di.gesamt-di.vergeben),x=Math.min(100,Math.round(di.vergeben/di.gesamt*100));return(0,q.jsxs)(`div`,{className:`min-h-screen w-full px-5 py-16 md:py-24`,style:{background:X.cream,color:X.ink},children:[(0,q.jsxs)(`div`,{className:`max-w-5xl mx-auto`,children:[v&&(0,q.jsxs)(`div`,{className:`max-w-2xl mx-auto mb-10 rounded-2xl px-5 py-4 text-left`,style:{background:`rgba(124,58,237,0.08)`,border:`1px solid rgba(124,58,237,0.35)`},children:[(0,q.jsx)(`p`,{className:`font-semibold mb-1`,children:t(`Deine Zahlung ist bei uns angekommen.`)}),(0,q.jsx)(`p`,{className:`text-sm leading-relaxed`,style:{color:`rgba(26,26,31,0.75)`},children:t(`Es fehlt nur noch die Bestätigung deiner E-Mail-Adresse â wir haben dir dazu einen sechsstelligen Code geschickt (er steht schon im Betreff, bitte auch im Spam-Ordner schauen). Sobald du ihn eingibst, ist dein Zugang offen. Du musst hier nichts erneut kaufen.`)}),(0,q.jsx)(`a`,{href:`/bestaetigen`,className:`inline-block mt-3 px-4 py-2 rounded-lg text-white text-sm font-medium`,style:{background:X.brand},children:t(`Code eingeben`)})]}),(0,q.jsxs)(`div`,{className:`max-w-2xl mx-auto text-center mb-10`,children:[(0,q.jsx)(`p`,{className:`text-sm font-semibold uppercase tracking-wider mb-4`,style:{color:X.brand},children:t(`PREISE`)}),(0,q.jsx)(`h1`,{className:`text-4xl md:text-5xl font-extrabold tracking-tight leading-tight`,children:t(`Starte gratis. Sichere dir 50 % Rabatt.`)}),(0,q.jsx)(`p`,{className:`mt-4 text-lg leading-relaxed`,style:{color:`rgba(26,26,31,0.65)`},children:t(`Der Free-Tarif ist dauerhaft kostenlos. Gold und Diamond werden monatlich abgerechnet und sind jederzeit zum Ende der Abrechnungsperiode kündbar. Alle Preise inkl. gesetzlicher USt.`)})]}),di.ZEIGEN&&(0,q.jsxs)(`div`,{className:`max-w-xl mx-auto mb-12`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between text-sm mb-2`,children:[(0,q.jsx)(`span`,{className:`font-medium`,children:t(`ð 50 % Rabatt â Early-Bird-Plätze`)}),(0,q.jsxs)(`span`,{className:`font-semibold`,style:{color:X.brand},children:[t(`noch`),` `,b,` `,t(`frei`)]})]}),(0,q.jsx)(`div`,{className:`h-2.5 rounded-full overflow-hidden`,style:{background:`rgba(26,26,31,0.10)`},children:(0,q.jsx)(`div`,{className:`h-full rounded-full`,style:{width:`${x}%`,background:X.brand}})}),(0,q.jsxs)(`p`,{className:`mt-1.5 text-xs`,style:{color:`rgba(26,26,31,0.55)`},children:[di.vergeben,` / `,di.gesamt,` `,t(`Plätzen vergeben`)]})]}),(0,q.jsxs)(`div`,{className:`grid lg:grid-cols-3 gap-6 items-start`,children:[(0,q.jsxs)(`div`,{className:`bg-white rounded-3xl p-7 flex flex-col h-full`,style:{border:`1px solid rgba(26,26,31,0.10)`},children:[(0,q.jsx)(`h3`,{className:`text-lg font-bold`,children:`Free`}),(0,q.jsx)(`p`,{className:`mt-1 text-sm`,style:{color:`rgba(26,26,31,0.55)`},children:t(`Für Hobby-Reseller, die testen wollen.`)}),(0,q.jsx)(`div`,{className:`mt-6 text-4xl font-extrabold`,children:`0 â¬`}),(0,q.jsx)(`p`,{className:`mt-1.5 text-xs`,style:{color:`rgba(26,26,31,0.55)`},children:t(`dauerhaft kostenlos`)}),(0,q.jsx)(`ul`,{className:`mt-7 space-y-3 flex-1`,style:{color:`rgba(26,26,31,0.75)`},children:i.map(e=>(0,q.jsx)(_i,{text:e,farbe:X.gain},e))}),(0,q.jsx)(`button`,{onClick:_,className:`mt-8 w-full text-center font-semibold px-5 py-3 rounded-xl transition hover:bg-black/5`,style:{border:`1px solid rgba(26,26,31,0.20)`,color:X.ink},children:t(`Discord beitreten`)})]}),(0,q.jsxs)(`div`,{className:`relative rounded-3xl p-7 flex flex-col h-full lg:-mt-4 lg:mb-4 shadow-2xl`,style:{background:X.night,color:X.cream,boxShadow:`0 25px 50px -12px rgba(124,58,237,0.30)`,outline:`1px solid ${X.gold}66`},children:[(0,q.jsx)(`span`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 text-xs font-bold px-3 py-1 rounded-full whitespace-nowrap`,style:{background:X.gold,color:X.night},children:t(`Beliebteste Wahl`)}),(0,q.jsx)(`h3`,{className:`text-lg font-bold`,style:{color:X.goldHell},children:`Gold`}),(0,q.jsx)(`p`,{className:`mt-1 text-sm`,style:{color:`rgba(250,250,247,0.55)`},children:t(`Für Power-Reseller mit 50â200 Artikeln/Monat.`)}),(0,q.jsxs)(`div`,{className:`mt-6 flex items-baseline gap-1`,children:[(0,q.jsx)(`span`,{className:`text-4xl font-extrabold`,children:fi}),(0,q.jsx)(`span`,{className:`text-sm`,style:{color:`rgba(250,250,247,0.55)`},children:t(`/ Monat`)})]}),(0,q.jsx)(`p`,{className:`mt-1.5 text-xs`,style:{color:`rgba(250,250,247,0.60)`},children:t(`inkl. USt. · monatlich kündbar`)}),(0,q.jsxs)(`div`,{className:`mt-7 flex-1`,children:[(0,q.jsx)(`ul`,{className:`space-y-3`,style:{color:`rgba(250,250,247,0.92)`},children:(0,q.jsx)(_i,{text:t(`Alles aus Free, plus:`),farbe:X.gold,fett
177:!0})}),(0,q.jsx)(`div`,{className:`mt-4`,children:(0,q.jsx)(vi,{akzent:X.gold,textColor:`rgba(250,250,247,0.85)`,headerColor:`rgba(250,250,247,0.96)`,titel:a,items:o})})]}),(0,q.jsx)(`button`,{onClick:()=>m(pi,`gold`),disabled:n,className:`mt-8 w-full inline-flex items-center justify-center gap-2 font-semibold px-5 py-3.5 rounded-xl text-white transition disabled:opacity-50 disabled:cursor-not-allowed`,style:{background:X.brand},children:t(n?`Weiter zu Stripeâ¦`:`Zahlungspflichtig abonnieren`)})]}),(0,q.jsxs)(`div`,{className:`relative rounded-3xl p-7 flex flex-col h-full`,style:{background:X.diamondBg,color:X.diamondCream,outline:`1px solid ${X.diamond}66`,boxShadow:`0 25px 50px -12px ${X.diamond}40`},children:[gi,(0,q.jsx)(`h3`,{className:`text-lg font-bold`,style:{color:X.diamondHell},children:`Diamond`}),(0,q.jsx)(`p`,{className:`mt-1 text-sm`,style:{color:`rgba(220,238,244,0.55)`},children:t(`Für Vintage-Profis & Vollzeit-Reseller.`)}),(0,q.jsxs)(`div`,{className:`mt-6 flex items-baseline gap-1`,children:[(0,q.jsx)(`span`,{className:`text-4xl font-extrabold`,children:mi}),(0,q.jsx)(`span`,{className:`text-sm`,style:{color:`rgba(220,238,244,0.55)`},children:t(`/ Monat`)})]}),(0,q.jsx)(`p`,{className:`mt-1.5 text-xs`,style:{color:`rgba(220,238,244,0.55)`},children:t(`inkl. USt. · monatlich kündbar`)}),(0,q.jsxs)(`div`,{className:`mt-7 flex-1`,children:[(0,q.jsxs)(`div`,{className:`rounded-2xl p-4 mb-6`,style:{background:`${X.diamond}1A`,border:`1px solid ${X.diamond}59`,boxShadow:`0 0 0 1px ${X.diamond}26, 0 12px 32px -12px ${X.diamond}80`},children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,q.jsx)(je,{size:16,className:`shrink-0`,style:{color:X.diamondHell}}),(0,q.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider`,style:{color:X.diamondHell},children:t(`Exklusiv in Diamond`)})]}),(0,q.jsx)(`ul`,{className:`space-y-2.5`,children:s.map(e=>(0,q.jsxs)(`li`,{className:`flex gap-2.5 text-sm font-semibold`,style:{color:X.diamondCream},children:[(0,q.jsx)(A,{size:18,strokeWidth:3,className:`shrink-0 mt-0.5`,style:{color:X.diamondHell}}),(0,q.jsx)(`span`,{children:e})]},`d-x-${e}`))})]}),(0,q.jsx)(yi,{text:t(`Alles aus Free`),farbe:`rgba(220,238,244,0.45)`}),(0,q.jsx)(`ul`,{className:`space-y-3`,style:{color:`rgba(220,238,244,0.80)`},children:i.map(e=>(0,q.jsx)(_i,{text:e,farbe:X.gain},`d-f-${e}`))}),(0,q.jsx)(`div`,{className:`my-5 h-px`,style:{background:`rgba(220,238,244,0.14)`}}),(0,q.jsx)(yi,{text:t(`Alles aus Gold`),farbe:X.goldHell}),(0,q.jsx)(`div`,{className:`mt-1`,children:(0,q.jsx)(vi,{akzent:X.gold,textColor:`rgba(220,238,244,0.80)`,headerColor:`rgba(220,238,244,0.95)`,titel:a,items:o})})]}),(0,q.jsx)(`button`,{onClick:()=>m(hi,`diamond`),disabled:n,className:`mt-8 w-full inline-flex items-center justify-center gap-2 font-semibold px-5 py-3.5 rounded-xl transition disabled:opacity-50 disabled:cursor-not-allowed`,style:{background:X.diamond,color:X.diamondBg},children:t(n?`Weiter zu Stripeâ¦`:`Zahlungspflichtig abonnieren`)})]})]}),(0,q.jsxs)(`div`,{className:`mt-8 max-w-3xl mx-auto text-center text-xs leading-relaxed`,style:{color:`rgba(26,26,31,0.55)`},children:[(0,q.jsx)(`p`,{children:t(`Free dauerhaft kostenlos. Gold und Diamond: angegebene Preise inkl. gesetzlicher Umsatzsteuer, monatliche Abrechnung über unseren Zahlungsdienstleister Stripe, jederzeit zum Ende der bezahlten Abrechnungsperiode kündbar. Mit Klick auf âZahlungspflichtig abonnieren" gelangst du zur verbindlichen, zahlungspflichtigen Bestellung bei Stripe.`)}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[(0,q.jsx)(`strong`,{children:t(`Die Kosten für die KI-Funktionen (Foto-Analysen und erzeugte Bilder) sind NICHT im Abo enthalten und werden verbrauchsabhängig weiterberechnet.`)}),` `,t(`Was ein Bild und was eine Analyse kostet, steht jederzeit unter âKI-Kosten" im Dashboard â dort siehst du auch deinen offenen Betrag und kannst ihn begleichen. Bleibt er länger als 14 Tage offen, ruht der Zugang bis zur Zahlung.`)]}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[t(`Es gelten unsere`),` `,(0,q.jsx)(`a`,{href:`https://genv-resellingautomation.com/agb/`,target:`_blank`,rel:`noreferrer`,style:{color:X.brand,textDecoration:`underline`},children:t(`AGB`)}),` `,t(`und die`),` `,(0,q.jsx)(`a`,{href:`/widerrufen`,style:{color:X.brand,textDecoration:`underline`},children:t(`Widerrufsbelehrung`)}
177),`.`,` `,t(`Kündigung jederzeit über`),` `,(0,q.jsx)(`a`,{href:`/kuendigen`,style:{color:X.brand,textDecoration:`underline`},children:t(`âVerträge hier kündigen"`)}),`.`]})]})]}),c&&(0,q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center px-5`,style:{background:`rgba(14,14,16,0.6)`},role:`dialog`,"aria-modal":`true`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-lg rounded-2xl p-6 shadow-2xl`,style:{background:X.cream,color:X.ink},children:[(0,q.jsx)(`h2`,{className:`text-lg font-bold`,children:t(`Noch zwei Bestätigungen`)}),(0,q.jsx)(`p`,{className:`mt-2 text-sm`,style:{color:`rgba(26,26,31,0.7)`},children:t(`GenV ist eine digitale Leistung, die sofort nach dem Kauf nutzbar ist. Dafür brauchen wir deine ausdrückliche Zustimmung.`)}),e?.email&&(0,q.jsxs)(`div`,{className:`mt-4 rounded-xl px-4 py-3 text-sm`,style:{background:`rgba(124,58,237,0.08)`,border:`1px solid rgba(124,58,237,0.3)`},children:[t(`Wichtig: Bezahle bitte mit genau dieser E-Mail-Adresse, sonst können wir die Zahlung deinem Konto nicht zuordnen:`),(0,q.jsx)(`div`,{className:`mt-1 font-semibold break-all`,children:e.email})]}),(0,q.jsxs)(`label`,{className:`mt-5 flex items-start gap-3 cursor-pointer text-sm`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked),className:`mt-0.5 w-4 h-4 flex-shrink-0`}),(0,q.jsx)(`span`,{children:t(`Ich verlange ausdrücklich, dass GenV sofort mit der Ausführung des Vertrags beginnt â noch vor Ablauf der 14-tägigen Widerrufsfrist.`)})]}),(0,q.jsxs)(`label`,{className:`mt-4 flex items-start gap-3 cursor-pointer text-sm`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>p(e.target.checked),className:`mt-0.5 w-4 h-4 flex-shrink-0`}),(0,q.jsx)(`span`,{children:t(`Mir ist bekannt, dass ich mit dem vollständigen Beginn der Ausführung mein Widerrufsrecht verliere.`)})]}),(0,q.jsxs)(`p`,{className:`mt-4 text-xs`,style:{color:`rgba(26,26,31,0.55)`},children:[t(`Einzelheiten stehen in der`),` `,(0,q.jsx)(`a`,{href:`/widerrufen`,target:`_blank`,rel:`noreferrer`,style:{color:X.brand,textDecoration:`underline`},children:t(`Widerrufsbelehrung`)}),`.`]}),(0,q.jsxs)(`div`,{className:`mt-6 flex flex-col-reverse sm:flex-row gap-3 sm:justify-end`,children:[(0,q.jsx)(`button`,{onClick:()=>l(null),disabled:n,className:`px-5 py-3 rounded-xl font-semibold text-sm transition disabled:opacity-50`,style:{background:`rgba(26,26,31,0.08)`,color:X.ink},children:t(`Abbrechen`)}),(0,q.jsx)(`button`,{onClick:g,disabled:!u||!f||n,className:`px-5 py-3 rounded-xl font-semibold text-sm text-white transition disabled:opacity-40 disabled:cursor-not-allowed`,style:{background:X.brand},children:t(n?`Weiter zu Stripeâ¦`:`Zahlungspflichtig bestellen`)})]})]})})]})}function xi(){let e=I(),[t]=$e(),n=t.get(`token`),{t:r}=V([`pages`,`errors`]),{refresh:i}=G(),[a,o]=(0,K.useState)(`pruefend`),[s,c]=(0,K.useState)(null);return(0,K.useEffect)(()=>{if(!n){o(`fehler`),c(r(`errors:lizenz_ungueltig`));return}async function e(){try{let e=await fetch(`/api/auth/email-bestaetigen`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({token:n})});if(!e.ok){let t=await e.json();o(`fehler`),c(t.fehler||r(`pages:email_bestaetigen.fehler`));return}o(`erfolgreich`),i()}catch{o(`fehler`),c(r(`errors:netzwerk`))}}e()},[n,r]),(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background text-text-primary`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-md p-8 bg-surface rounded-lg shadow-xl border border-white/10`,children:[a===`pruefend`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2`,children:r(`pages:email_bestaetigen.titel`)}),(0,q.jsx)(`p`,{className:`text-text-muted text-sm mb-6`,children:r(`pages:email_bestaetigen.wird_geprueft`)}),(0,q.jsx)(`div`,{className:`flex justify-center`,children:(0,q.jsx)(`div`,{className:`w-8 h-8 border-4 border-petrol-500/20 border-t-petrol-500 rounded-full animate-spin`})})]}),a===`erfolgreich`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`text-center mb-4`,children:(0,q.jsx)(`div`,{className:`inline-flex w-12 h-12 bg-petrol-500/20 rounded-full items-center justify-center mb-3`,children:(0,q.jsx)(`span`,{className:`text-xl`,children:`â`})})}),(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2 text-center`,children:r(`pages:email_bestaetigen.erfolg`)}),(0,q.jsx)(`button`,{onClick:()=>e(`/`),className:`w-full py-2.5 bg-petrol-600 hover:bg-petrol-500 text-white font-medium rounded transition-colors mt-4`,children:r(`pages:email_bestaetigen.zum_dashboard`,`Zum Dashboard`)})]}),a===`fehler`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`text-center mb-4`,children:(0,q.jsx)(`div`,{className:`inline-flex w-12 h-12 bg-red-500/20 rounded-full items-center justify-center mb-3`,children:(0,q.jsx)(`span`,{className:`text-xl`,children:`â`})})}),(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2 text-center`,children:r(`pages:email_bestaetigen.fehler`)}),(0,q.jsx)(`p`,{className:`text-text-muted text-sm mb-4 text-center`,children:s}),(0,q.jsx)(`button`,{onClick:()=>e(`/registrieren`),className:`w-full py-2.5 bg-petrol-600 hover:bg-petrol-500 text-white font-medium rounded transition-colors`,children:r(`pages:email_bestaetigen.zur_registrierung`,`Zur Registrierung`)})]})]})})}var Si=`[email protected]`;function Ci(){let e=H(),{benutzer:t}=G(),[n,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(!1),[o,s]=(0,K.useState)(null),[c,l]=(0,K.useState)(``),[u,d]=(0,K.useState)(!1),f=(0,K.useRef)(``),p=(0,K.useRef)(null);(0,K.useEffect)(()=>{let e=!0;return(async()=>{let t=await Cn();e&&t!==null&&d(t.zahlung_wartet===!0)})(),()=>{e=!1}},[]);let m=async e=>{let t=e.replace(/\D/g,``);if(!(t.length!==6||i)){a(!0),s(null);try{let e=await B(`${z()}/api/auth/code-bestaetigen`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({code:t})},12e3),n=await e.json().catch(()=>({}));if(e.ok){window.location.href=`/`;return}s(n?.fehler??U(`Das hat nicht geklappt. Bitte nochmal versuchen.`)),r(``),f.current=``,p.current?.focus()}catch{s(U(`Keine Verbindung. Bitte nochmal versuchen.`)),r(``),f.current=``,p.current?.focus()}finally{a(!1)}}}
177,h=e=>{let t=e.replace(/\D/g,``).slice(0,6);r(t),t.length===6&&f.current!==t&&(f.current=t,m(t))},g=async()=>{l(`sendet`),s(null);try{let e=await B(`${z()}/api/auth/bestaetigungs-mail-neu`,{method:`POST`,credentials:`include`},12e3);l(e.ok?`gesendet`:`fehler`),e.ok&&(r(``),f.current=``)}catch{l(`fehler`)}};return(0,q.jsx)(`div`,{className:`min-h-screen w-full flex-1 flex items-center justify-center bg-background text-text-secondary p-6`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-md text-center`,children:[(0,q.jsx)(`div`,{className:`mx-auto mb-6 h-12 w-12 rounded-full bg-petrol-500/15 flex items-center justify-center`,children:(0,q.jsx)(De,{className:`w-6 h-6 text-petrol-400`})}),(0,q.jsx)(`h1`,{className:`text-xl font-semibold mb-2 text-text-primary`,children:e(u?`Deine Zahlung ist da â noch ein Schritt`:`Bestätige deine E-Mail-Adresse`)}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted mb-1`,children:e(`Wir haben dir einen sechsstelligen Code geschickt an:`)}),(0,q.jsx)(`p`,{className:`text-sm font-medium text-text-primary mb-6 break-all`,children:t?.email??``}),(0,q.jsx)(`input`,{ref:p,value:n,onChange:e=>h(e.target.value),inputMode:`numeric`,autoComplete:`one-time-code`,autoFocus:!0,placeholder:`000000`,"aria-label":U(`Bestätigungscode`),className:`w-full text-center text-3xl font-mono tracking-[0.4em] py-4 rounded-xl bg-surface border border-border focus:outline-none focus:border-petrol-500 text-text-primary placeholder:text-text-muted/40 transition-colors`}),(0,q.jsxs)(`div`,{className:`h-6 mt-3 flex items-center justify-center`,children:[i&&(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-xs text-text-muted`,children:[(0,q.jsx)(v,{className:`w-3.5 h-3.5 animate-spin`}),` `,e(`Wird geprüftâ¦`)]}),!i&&o&&(0,q.jsx)(`span`,{className:`text-xs text-amber-400`,children:o})]}),(0,q.jsx)(`button`,{onClick:()=>void m(n),disabled:n.length!==6||i,className:`w-full mt-2 px-4 py-3 rounded-xl bg-petrol-500 hover:bg-petrol-600 disabled:opacity-50 disabled:hover:bg-petrol-500 text-white text-sm font-medium transition-colors`,children:e(`Weiter`)}),(0,q.jsxs)(`div`,{className:`mt-6 text-xs text-text-muted space-y-2`,children:[(0,q.jsx)(`p`,{children:e(`Die Mail ist nicht da? Schau bitte auch im Spam-Ordner â der Code steht schon im Betreff.`)}),(0,q.jsx)(`button`,{onClick:()=>void g(),disabled:c===`sendet`,className:`underline hover:text-text-primary disabled:opacity-60 transition-colors`,children:e(c===`sendet`?`Wird gesendetâ¦`:`Neuen Code senden`)}),c===`gesendet`&&(0,q.jsx)(`p`,{className:`text-emerald-400`,children:e(`Neuer Code ist unterwegs.`)}),c===`fehler`&&(0,q.jsxs)(`p`,{className:`text-amber-400`,children:[e(`Das hat gerade nicht geklappt.`),` `,Si]})]}),u&&(0,q.jsx)(`p`,{className:`mt-6 text-xs text-text-muted`,children:e(`Du musst nichts erneut bezahlen. Sobald der Code stimmt, ist dein Zugang offen.`)})]})})}function wi(){let{t:e}=V([`pages`,`errors`,`common`]),[t,n]=(0,K.useState)(``),[r,i]=(0,K.useState)(`idle`),[a,o]=(0,K.useState)(null);async function s(r){r.preventDefault(),o(null),i(`sendend`);try{let r=await fetch(`/api/auth/passwort-vergessen`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({email:t.trim()})});if(!r.ok){let t=await r.json();i(`fehler`),o(t.fehler||e(`errors:speichern_fehlgeschlagen`));return}i(`gesendet`),n(``)}catch{i(`fehler`),o(e(`errors:netzwerk`))}}return(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background text-text-primary`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-md p-8 bg-surface rounded-lg shadow-xl border border-white/10`,children:[(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2`,children:e(`pages:passwort_vergessen.titel`)}),(0,q.jsx)(`p`,{className:`text-text-muted text-sm mb-6`,children:e(`pages:passwort_vergessen.untertitel`)}),r===`gesendet`&&(0,q.jsxs)(`div`,{className:`p-4 bg-teal-900/40 border border-teal-700 rounded text-teal-300 text-sm space-y-3`,children:[(0,q.jsx)(`p`,{children:e(`pages:passwort_vergessen.email_gesendet`)}),(0,q.jsx)(`button`,{onClick:()=>{i(`idle`),n(``)},className:`text-teal-400 hover:text-teal-300 underline text-sm`,children:e(`pages:passwort_vergessen.nochmal_versuchen`,`Nochmal versuchen`)})]}),r!==`gesendet`&&(0,q.jsxs)(`form`,{onSubmit:s,className:`space-y-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`pwv-email`,className:`block text-sm font-medium text-text-secondary mb-1`,children:e(`pages:passwort_vergessen.email_label`)}),(0,q.jsx)(`input`,{type:`email`,id:`pwv-email`,value:t,onChange:e=>n(e.target.value),required:!0,autoFocus:!0,autoComplete:`email`,className:`w-full px-3 py-2 bg-background border border-white/10 rounded text-text-primary focus:outline-none focus:border-teal-500 focus-visible:ring-2 focus-visible:ring-petrol-500`,placeholder:`[email protected]`,disabled:r===`sendend`,"aria-invalid":r===`fehler`||void 0,"aria-describedby":r===`fehler`&&a?`pwv-fehler`:void 0})]}),r===`fehler`&&a&&(0,q.jsx)(`div`,{id:`pwv-fehler`,className:`p-3 bg-red-900/40 border border-red-700 rounded text-red-300 text-sm`,children:a}),(0,q.jsx)(`button`,{type:`submit`,disabled:r===`sendend`,className:`press-scale w-full py-2.5 bg-teal-600 hover:bg-teal-500 disabled:bg-surface-hover disabled:cursor-not-allowed text-white font-medium rounded transition-colors`,children:e(r===`sendend`?`pages:passwort_vergessen.wird_gesendet`:`pages:passwort_vergessen.link_anfordern`)})]}),(0,q.jsx)(`div`,{className:`mt-6 pt-6 border-t border-white/10 text-sm text-text-muted`,children:(0,q.jsx)(R,{to:`/anmelden`,className:`text-teal-400 hover:text-teal-300 underline`,children:e(`pages:passwort_vergessen.zurueck_zur_anmeldung`)})})]})})}function Ti(e,t){if(e.length<8)return{wert:0,text:t(`pages:registrieren.staerke_zu_kurz`,`Zu kurz`),farbe:`bg-danger`};let n=0;return e.length>=12&&n++,/[A-Z]/.test(e)&&/[a-z]/.test(e)&&n++,/\d/.test(e)&&n++,/[^A-Za-z0-9]/.test(e)&&n++,n<=1?{wert:0,text:t(`pages:registrieren.staerke_schwach`,`Schwach`),farbe:`bg-danger`}:n<=2?{wert:1,text:t(`pages:registrieren.staerke_ok`,`OK`),farbe:`bg-amber-400`}:{wert:2,text:t(`pages:registrieren.staerke_stark`,`Stark`),farbe:`bg-success`}}function Ei(){let e=I(),[t]=$e(),n=t.get(`token`),{t:r}=V([`pages`,`errors`,`common`]),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(null),[f,p]=(0,K.useState)(null),[m,h]=(0,K.useState)(!1),[g,_]=(0,K.useState)(!1),v=(0,K.useMemo)(()=>Ti(i,r),[i,r]),y=i.length>0&&i===o;async function b(t){if(t.preventDefault(),d(null),p(null),i.length<8){d(r(`errors:passwort_zu_kurz`)),p(`passwort`);return}if(i!==o){d(r(`errors:passwoerter_stimmen_nicht`)),p(`passwortBestaetigen`);return}h(!0);try{let t=await fetch(`/api/auth/passwort-zuruecksetzen`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({token:n,neues_passwort:i})});if(!t.ok){let e=await t.json();h(!1),d(e.fehler||r(`errors:speichern_fehlgeschlagen`));return}_(!0),setTimeout(()=>e(`/anmelden`),2e3)}catch{h(!1),d(r(`errors:netzwerk`))}}return n?(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background text-text-primary`,children:(0,q.jsx)(`div`,{className:`w-full max-w-md p-8 bg-surface rounded-lg shadow-xl border border-white/10`,children:g?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`text-center mb-4`,children:(0,q.jsx)(`div`,{className:`inline-flex w-12 h-12 bg-teal-500/20 rounded-full items-center justify-center mb-3`,children:(0,q.jsx)(`span`,{className:`text-xl`,children:`â`})})}),(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2 text-center`,children:r(`pages:passwort_zuruecksetzen.erfolg`)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2`,children:r(`pages:passwort_zuruecksetzen.titel`)}),(0,q.jsx)(`p`,{className:`text-text-muted text-sm mb-6`,children:r(`pages:passwort_zuruecksetzen.untertitel`)}),(0,q.jsxs)(`form`,{onSubmit:b,className:`space-y-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`label`,{htmlFor:`pwr-passwort`,className:`block text-sm font-medium text-text-secondary mb-1`,children:[r(`pages:passwort_zuruecksetzen.neues_passwort`),` `,(0,q.jsx)(`span`,{className:`text-text-muted text-xs`,children:r(`pages:registrieren.min_8_zeichen`)})]}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`input`,{type:c?`text`:`password`,id:`pwr-passwort`,value:i,onChange:e=>a(e.target.value),required:!0,autoFocus:!0,autoComplete:`new-password`,minLength:8,className:`w-full px-3 pr-10 py-2 bg-background border border-white/10 rounded text-text-primary focus:outline-none focus:border-teal-500 focus-visible:ring-2 focus-visible:ring-petrol-500`,placeholder:`â¢â¢â¢â¢â¢â¢â¢â¢`,disabled:m,"aria-invalid":f===`passwort`||void 0,"aria-describedby":f===`passwort`&&u?`pwr-passwort-fehler`:void 0}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),"aria-label":c?r(`pages:registrieren.passwort_verbergen`,`Passwort verbergen`):r(`pages:registrieren.passwort_anzeigen`,`Passwort anzeigen`),tabIndex:-1,disabled:m,className:`absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary transition-colors disabled:opacity-40`,children:c?(0,q.jsx)(ge,{className:`w-4 h-4`}):(0,q.jsx)(Je,{className:`w-4 h-4`})})]}),i.length>0&&(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`flex-1 h-1 rounded-full bg-white/5 overflow-hidden`,children:(0,q.jsx)(`div`,{className:`h-full transition-all duration-300 ${v.farbe}`,style:{width:`${(v.wert+1)*33.33}%`}})}),(0,q.jsx)(`span`,{className:`text-[11px] text-text-muted shrink-0`,children:v.text})]}),f===`passwort`&&u&&(0,q.jsx)(`p`,{id:`pwr-passwort-fehler`,className:`mt-1 text-sm text-red-400`,children:u})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{htmlFor:`pwr-passwort2`,className:`block text-sm font-medium text-text-secondary mb-1`,children:r(`pages:passwort_zuruecksetzen.passwort_wiederholen`)}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`input`,{type:c?`text`:`password`,id:`pwr-passwort2`,value:o,onChange:e=>s(e.target.value),required:!0,autoComplete:`new-password`,minLength:8,className:`w-full px-3 pr-10 py-2 bg-background border border-white/10 rounded text-text-primary focus:outline-none focus:border-teal-500 focus-visible:ring-2 focus-visible:ring-petrol-500`,placeholder:`â¢â¢â¢â¢â¢â¢â¢â¢`,disabled:m,"aria-invalid":f===`passwortBestaetigen`||void 0,"aria-describedby":f===`passwortBestaetigen`&&u?`pwr-passwort2-fehler`:void 0}),o.length>0&&(0,q.jsx)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2`,children:y?(0,q.jsx)(A,{className:`w-4 h-4 text-success`}):(0,q.jsx)(j,{className:`w-4 h-4 text-danger`})})]}),f===`passwortBestaetigen`&&u&&(0,q.jsx)(`p`,{id:`pwr-passwort2-fehler`,className:`mt-1 text-sm text-red-400`,children:u})]}),u&&!f&&(0,q.jsx)(`div`,{className:`p-3 bg-red-900/40 border border-red-700 rounded text-red-300 text-sm`,children:u}),(0,q.jsx)(`button`,{type:`submit`,disabled:m,className:`press-scale w-full py-2.5 bg-teal-600 hover:bg-teal-500 disabled:bg-surface-hover disabled:cursor-not-allowed text-white font-medium rounded transition-colors`,children:r(m?`pages:passwort_zuruecksetzen.wird_gesetzt`:`pages:passwort_zuruecksetzen.passwort_setzen`)})]})]})})}):(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background text-text-primary`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-md p-8 bg-surface rounded-lg shadow-xl border border-white/10`,children:[(0,q.jsx)(`div`,{className:`text-center mb-4`,children:(0,q.jsx)(`div`,{className:`inline-flex w-12 h-12 bg-red-500/20 rounded-full items-center justify-center mb-3`,children:(0,q.jsx)(`span`,{className:`text-xl`,children:`â`})})}),(0,q.jsx)(`h1`,{className:`text-2xl font-bold mb-2 text-center`,children:r(`pages:passwort_zuruecksetzen.token_ungueltig`)}),(0,q.jsx)(`button`,{onClick:()=>e(`/passwort-vergessen`),className:`press-scale w-full py-2.5 bg-teal-600 hover:bg-teal-500 text-white font-medium rounded transition-colors mt-4 focus-visible:ring-2 focus-visible:ring-petrol-500`,children:r(`pages:passwort_zuruecksetzen.neuen_link_anfordern`,`Neuen Reset-Link anfordern`)})]})})}var Di=`14.05.2026`;function Oi(){return(0,q.jsxs)(`div`,{className:`min-h-screen bg-background text-text-secondary`,children:[(0,q.jsx)(`header`,{className:`border-b border-border-subtle bg-background/95 sticky top-0 z-10`,children:(0,q.jsxs)(`div`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-4 flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(g,{className:`w-5 h-5 text-petrol-400`}),(0,q.jsx)(`span`,{className:`font-semibold text-text-primary`,children:`Datenschutzerklärung`})]}),(0,q.jsxs)(R,{to:`/`,className:`text-sm text-text-muted hover:text-petrol-400 flex items-center gap-1.5 transition-colors`,children:[(0,q.jsx)(ke,{className:`w-4 h-4`}),` Zurück`]})]})}),(0,q.jsxs)(`main`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-8 space-y-8 text-sm leading-relaxed`,children:[(0,q.jsxs)(`p`,{className:`text-text-muted text-xs`,children:[`Stand: `,Di]}),(0,q.jsxs)(Z,{nummer:`1`,titel:`Verantwortlicher`,children:[(0,q.jsx)(`p`,{children:`Verantwortlich für die Datenverarbeitung auf dieser Website und in der Chrome-Erweiterung âVinted Session Manager" ist:`}),(0,q.jsxs)(`address`,{className:`not-italic mt-3 text-text-secondary`,children:[`Franziska Holland`,(0,q.jsx)(`br`,{}),`Im grünen Winkel 13`,(0,q.jsx)(`br`,{}),`53123 Bonn`,(0,q.jsx)(`br`,{}),`Deutschland`]}),(0,q.jsxs)(`p`,{className:`mt-3`,children:[`E-Mail:`,` `,(0,q.jsx)(`a`,{href:`mailto:[email protected]`,className:`text-petrol-400 hover:underline`,children:`[email protected]`})]})]}),(0,q.jsx)(Z,{nummer:`2`,titel:`Allgemeine Hinweise zur Datenverarbeitung`,children:(0,q.jsx)(`p`,{children:`Wir verarbeiten personenbezogene Daten unserer Nutzer ausschlieÃlich, soweit dies zur Bereitstellung der Plattform GenV Reselling-Automation sowie der zugehörigen Chrome-Erweiterung âVinted Session Manager" erforderlich ist. Die Verarbeitung erfolgt regelmäÃig nach Einwilligung des Nutzers (Art. 6 Abs. 1 lit. a DSGVO) oder zur Erfüllung eines Vertrags mit dem Nutzer (Art. 6 Abs. 1 lit. b DSGVO).`})}),(0,q.jsxs)(Z,{nummer:`3`,titel:`Erhebung und Speicherung personenbezogener Daten`,children:[(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-2`,children:`3.1 Beim Besuch der Plattform`}),(0,q.jsx)(`p`,{children:`Beim Aufruf der Plattform werden automatisch Informationen an unseren Server übermittelt, die in einem Logfile gespeichert werden:`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-1`,children:[(0,q.jsx)(`li`,{children:`IP-Adresse (anonymisiert)`}),(0,q.jsx)(`li`,{children:`Datum und Uhrzeit des Zugriffs`}),(0,q.jsx)(`li`,{children:`Verwendeter Browser-Typ`}),(0,q.jsx)(`li`,{children:`Verweisende URL`})]}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der technischen Bereitstellung und Sicherheit der Plattform). Speicherdauer: 30 Tage.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`3.2 Bei Registrierung und Nutzung der Plattform`}),(0,q.jsx)(`p`,{children:`Bei Anlage eines Nutzer-Kontos verarbeiten wir folgende Daten:`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-1`,children:[(0,q.jsx)(`li`,{children:`E-Mail-Adresse (Pflicht, für Login und Kommunikation)`}),(0,q.jsx)(`li`,{children:`Passwort (gehasht gespeichert)`}),(0,q.jsx)(`li`,{children:`Optional: Name, Adresse, Steuernummer, USt-IdNr., IBAN, BIC, Bankname, Telefonnummer (für die Rechnungs-Generierung)`}),(0,q.jsx)(`li`,{children:`Vinted-Session-Cookies (von der Chrome-Erweiterung übertragen)`}),(0,q.jsx)(`li`,{children:`eBay-Authentifizierungs-Token (nach OAuth-Bestätigung durch dich)`}),(0,q.jsx)(`li`,{children:`Bestellungen, Artikel, Verkäufe, Rechnungen (vom Nutzer in der Plattform angelegte Daten)`})]}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung). Speicherdauer: bis zur Löschung des Kontos durch den Nutzer. Steuerlich relevante Daten (Rechnungen) werden
177 10 Jahre aufbewahrt (§147 AO).`})]}),(0,q.jsxs)(Z,{nummer:`4`,titel:`Die Chrome-Erweiterung âVinted Session Manager"`,children:[(0,q.jsx)(`p`,{children:`Die Chrome-Erweiterung âVinted Session Manager" wird im Chrome Web Store angeboten. Sie wird ausschlieÃlich genutzt, um deinen Vinted-Account mit deinem Konto auf dieser Plattform zu verbinden.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`4.1 Welche Daten die Erweiterung verarbeitet`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-2`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`strong`,{className:`text-text-primary`,children:`Vinted-Authentifizierungs-Cookies`}),` `,`(Domain vinted.de, vinted.com, vinted.lt, vinted.fr): Werden ausgelesen, wenn der Nutzer auf Vinted eingeloggt ist und die Erweiterung im Popup âSession speichern" aktiviert. Die Cookies werden ausschlieÃlich an die Plattform-Domain (genv-resellingautomation.com) übertragen und dort verschlüsselt abgelegt.`]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`strong`,{className:`text-text-primary`,children:`Vinted-Sitzungsverlängerung`}),`: Alle 30 Minuten ruft die Erweiterung Vinted automatisch auf, um die Sitzungs-Cookies frisch zu halten. Es werden dabei keine zusätzlichen Daten gespeichert.`]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`strong`,{className:`text-text-primary`,children:`Versandlabel-Upload`}),`: Wenn der Nutzer in der Plattform den âVersandlabel-Bot" startet, lädt die Erweiterung Vinted-Versandlabel-PDFs über deinen aktiven Browser herunter.`]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`strong`,{className:`text-text-primary`,children:`Preisanpassung`}),`: Wenn du in der Plattform eine Preisanpassung anlegst, schreibt die Erweiterung den neuen Preis direkt in deine Vinted-Listings.`]})]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`4.2 Was die Erweiterung NICHT macht`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-1`,children:[(0,q.jsx)(`li`,{children:`Keine Tracking-Daten oder Analytics`}),(0,q.jsx)(`li`,{children:`Keine Werbung`}),(0,q.jsx)(`li`,{children:`Keine Ãbertragung von Daten an Dritte auÃer an die Plattform-Domain`}),(0,q.jsx)(`li`,{children:`Kein Zugriff auf andere Browser-Tabs oder Websites auÃerhalb von Vinted und der Plattform-Domain`}),(0,q.jsx)(`li`,{children:`Kein Auslesen von Inhalten ohne aktive Nutzer-Aktion`})]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`4.3 Datentransfer zwischen Extension und Plattform`}),(0,q.jsx)(`p`,{children:`Der Datentransfer erfolgt ausschlieÃlich über HTTPS (TLS-verschlüsselt) an die Plattform-Domain genv-resellingautomation.com. Die übertragenen Vinted-Cookies werden serverseitig verschlüsselt abgelegt und sind nur dem zugehörigen Plattform-Konto zugänglich.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`4.4 Datenlöschung`}),(0,q.jsx)(`p`,{children:`Wenn du deinen Plattform-Account löschst, werden auch die zugehörigen Vinted-Cookies und alle damit verbundenen Verbindungsdaten unwiderruflich gelöscht. Du kannst zusätzlich jederzeit die Chrome-Erweiterung deinstallieren â dann werden lokale Erweiterungs-Daten in deinem Browser sofort entfernt.`})]}),(0,q.jsxs)(Z,{nummer:`5`,titel:`Cookies und lokale Speicherung`,children:[(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-2`,children:`5.1 Auf der Plattform`}),(0,q.jsx)(`p`,{children:`Wir nutzen technisch notwendige Cookies, um deinen Login-Status zu halten. Diese Cookies werden gelöscht, wenn du dich abmeldest oder den Browser schlieÃt.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`5.2 In der Chrome-Erweiterung`}),(0,q.jsx)(`p`,{children:`Die Erweiterung nutzt das chrome.storage.local-API, um lokal in deinem Browser den Zeitpunkt der letzten Synchronisation und die Plattform-URL zu speichern. Diese Daten verlassen deinen Browser nicht und werden bei Deinstallation der Erweiterung gelöscht.`})]}),(0,q.jsxs)(Z,{nummer:`6`,titel:`Drittanbieter`,children:[(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-2`,children:`6.1 Hosting (Hetzner Online GmbH)`}),(0,q.jsx)(`p`,{children:`Die Plattform und Datenbank werden in Deutschland bei der Hetzner Online GmbH gehostet (Industriestr. 25, 91710 Gunzenhausen). Mit Hetzner besteht ein Auftragsverarbeitungsvertrag nach Art. 28 DSGVO.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.2 Content Delivery & DDoS-Schutz (Cloudflare)`}),(0,q.jsxs)(`p`,{children:[`Wir nutzen Cloudflare (Cloudflare, Inc., 101 Townsend Street, San Francisco, CA 94107, USA) als DNS- und Schutz-Provider. Beim Aufruf der Plattform wird deine IP-Adresse von Cloudflare verarbeitet, um den Datenverkehr vor Angriffen zu schützen. Cloudflare ist nach den EU-Standardvertragsklauseln zertifiziert. Mehr Infos:`,` `,(0,q.jsx)(`a`,{href:`https://www.cloudflare.com/de-de/privacypolicy/`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`cloudflare.com/de-de/privacypolicy`})]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.3 Backup-Speicher (Hetzner Object Storage)`}),(0,q.jsx)(`p`,{children:`Für tägliche Backups der Plattform-Daten nutzen wir den Object-Storage-Dienst von Hetzner (Nürnberg, Deutschland). Backups werden 30 Tage aufbewahrt und sind serverseitig verschlüsselt.`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.4 KI-A
177nbieter`}),(0,q.jsx)(`p`,{children:`Wenn du eine KI-Funktion von GenV nutzt, werden die dafür nötigen Artikel-Fotos und Artikeltexte an den jeweiligen KI-Anbieter übertragen. Die Verarbeitung erfolgt in unserem Auftrag; du musst dafür keine eigenen Zugangsdaten hinterlegen.`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-1`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`OpenAI`}),` â Analyse deiner Artikel-Fotos (Kategorie, Marke, Zustand) und Erzeugung der Anzeigentexte:`,` `,(0,q.jsx)(`a`,{href:`https://openai.com/policies/privacy-policy/`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`openai.com/policies/privacy-policy`})]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Runware`}),` â Erzeugung der Tragebilder und der Foto-Retusche aus deinen hochgeladenen Fotos:`,` `,(0,q.jsx)(`a`,{href:`https://runware.ai/privacy-policy`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`runware.ai/privacy-policy`})]})]}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Die Ãbertragung findet nur statt, wenn du die jeweilige Funktion selbst auslöst. Nutzt du keine KI-Funktion, werden deine Fotos nicht an diese Anbieter übermittelt.`}),(0,q.jsxs)(`p`,{className:`mt-3`,children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Kennzeichnung KI-erzeugter Bilder:`}),` `,`Jedes von GenV erzeugte oder veränderte Bild wird beim Speichern maschinenlesbar als KI-generiert markiert (XMP/EXIF nach IPT
177C-Standard, `,(0,q.jsx)(`em`,{children:`DigitalSourceType: trainedAlgorithmicMedia`}),`, zusätzlich ein Klartext-Hinweis âAI generated with GenV"). In der Anwendung sind solche Bilder auÃerdem sichtbar mit âKI-generiert" gekennzeichnet. Das setzt Art. 50 Abs. 2 der KI-Verordnung um.`]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.5 Spracheingabe im Volt-Modus (optional)`}),(0,q.jsxs)(`p`,{children:[`Im Volt-Modus kannst du den Autopiloten per Sprache bedienen. Die Funktion ist `,(0,q.jsx)(`span`,{className:`text-text-primary`,children:`standardmäÃig aus`}),` `,`und geht erst an, nachdem du den Hinweis dazu ausdrücklich bestätigt hast. Das Mikrofon läuft nur, solange du den Knopf (oder die Leertaste) gedrückt hältst â es gibt kein Aufweckwort und kein dauerhaftes Zuhören.`]}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[`Für die Umwandlung von Sprache in Text nutzen wir die in Chrome eingebaute Web-Speech-Schnittstelle.`,` `,(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Chrome überträgt die Audiodaten dafür an Google.`}),` `,`Auf diese Ãbertragung haben wir keinen Einfluss; sie findet zwischen deinem Browser und Google statt. Datenschutzerklärung von Google:`,` `,(0,q.jsx)(`a`,{href:`https://policies.google.com/privacy`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`policies.google.com/privacy`})]}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Wir speichern keine Audiodaten.`}),` `,`Der erkannte Text bleibt im Arbeitsspeicher deines Browsers. Nur wenn ein Satz nicht zu den festen Befehlen passt, wird der`,` `,(0,q.jsx)(`em`,{children:`Text`}),` (nicht der Ton) zur Auswertung an OpenAI übermittelt, um daraus einen Vorschlag für deine Tageslimits zu machen. Der Vorschlag wird dir vorgelesen und angezeigt; geändert wird erst nach deiner Bestätigung. Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO (Einwilligung) â du kannst sie jederzeit widerrufen, indem du die Sprachbedienung nicht mehr benutzt bzw. Chrome die Mikrofon-Freigabe entziehst.`]}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Kennzeichnung:`}),` Was dir im Sprachdialog antwortet, ist eine Automatik und kein Mensch. Das steht sowohl im Hinweis vor der ersten Nutzung als auch dauerhaft in der Sprachleiste (Art. 50 Abs. 1 KI-Verordnung). Jeder Sprachbefehl hat denselben Weg auch per Klick â die Sprache ist ein zweiter Bedienweg, kein einziger.`]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.6 Zahlungsabwicklung (Stripe)`}),(0,q.jsx)(`p`,{children:`Kostenpflichtige Abos werden über Stripe als Merchant of Record (Stripe Managed Payments) abgewickelt. Bei einem Kauf verarbeitet Stripe deine Zahlungsdaten (z.B. E-Mail-Adresse, Zahlungsmittel) in eigener Verantwortung. Wir selbst speichern keine Kreditkartendaten, sondern nur die zur Zuordnung deines Abos nötige Stripe-Kunden- und Abo-Kennung sowie den Abo-Status. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung).`}),(0,q.jsxs)(`p`,{className:`mt-2`,children:[`Stripe-Datenschutz:`,` `,(0,q.jsx)(`a`,{href:`https://stripe.com/privacy`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`stripe.com/privacy`})]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.7 Missbrauchsvermeidung (Trial-Schutz)`}),(0,q.jsx)(`p`,{children:`Der kostenlose Testlauf gilt einmalig pro verbundenem Vinted- bzw. eBay-Account. Um zu verhindern, dass derselbe Plattform-Account über mehrere Konten mehrfach kostenlos getestet wird, speichern wir beim Verbinden einen nicht umkehrbaren Hash (SHA-256) der Plattform-Kennung â ohne die Kennung selbst und ohne Verknüpfung zu deinem Konto. Dieser Hash bleibt aus genau diesem Grund auch nach einer Konto-Löschung erhalten. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Verhinderung von Mehrfach-Testnutzung).`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.8 Discord-Verknüpfung (optional)`}),(0,q.jsxs)(`p`,{children:[`Wenn du dein Konto freiwillig mit Discord verbindest, um Community-Rollen (z.B. Gold/Diamond) automatisch zu erhalten, verarbeiten wir deine Discord-User-ID, um dir die passende Rolle auf unserem Discord-Server zuzuweisen oder zu entziehen. Die Verbindung erfolgt über das OAuth-Verfahren von Discord; dabei werden Daten an die Discord Inc. (USA) übertragen. Rechtsgrundlage: Art. 6 Abs. 1 lit. a/b DSGVO (Einwilligung bzw. Vertragserfüllung). Du kannst die Verknüpfung jederzeit lösen; bei Konto-Löschung wird die Rolle entfernt und die Discord-User-ID gelöscht. Datenschutz von Discord:`,` `,(0,q.jsx)(`a`,{href:`https://discord.com/privacy`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`discord.com/privacy`})]}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.9 Zahlungsabwicklung als Merchant of Record`}),(0,q.jsx)(`p`,{children:`Die Zahlungsabwicklung läuft über Stripe als Merchant of Record (Stripe Managed Payments / âLink"). Gegenüber dir tritt dabei Stripe als Verkäufer der Zahlung auf und übernimmt Umsatzsteuer, Rechnungsstellung, Betrugsprävention und Zahlungs-Support. Wir selbst erhalten von Stripe nur die zur Zuordnung und Verwaltung deines Abos nötigen Daten (E-Mail, Abo-Status, Stripe-Kunden-/Abo-Kennung). Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung).`}),(0,q.jsx)(`h3`,{className:`font-semibold text-text-primary mt-5`,children:`6.10 E-Mail-Versand (Resend)`}),(0,q.jsxs)(`p`,{children:[`Transaktions-E-Mails (z.B. Registrierungs-Bestätigung, Passwort- Zurücksetzen, Kündigungs-/Widerrufs-Bestätigungen und Support-Antworten) versenden wir über den Auftragsverarbeiter Resend (Resend, Inc., 2261 Market Street #5039, San Francisco, CA 94114, USA). Dabei werden deine E-Mail-Adresse und der Inhalt der jeweiligen Nachricht an Re
177send übermittelt und in den USA verarbeitet. Es handelt sich um einen Drittlandtransfer in die USA, der durch die EU-Standardvertragsklauseln abgesichert ist. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung) bzw. Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an einem zuverlässigen E-Mail-Versand). Mehr Infos:`,` `,(0,q.jsx)(`a`,{href:`https://resend.com/legal/privacy-policy`,target:`_blank`,rel:`noreferrer`,className:`text-petrol-400 hover:underline`,children:`resend.com/legal/privacy-policy`})]})]}),(0,q.jsxs)(Z,{nummer:`7`,titel:`Deine Rechte als Nutzer`,children:[(0,q.jsx)(`p`,{children:`Du hast jederzeit das Recht:`}),(0,q.jsxs)(`ul`,{className:`list-disc list-inside mt-2 space-y-1`,children:[(0,q.jsx)(`li`,{children:`Auskunft über deine gespeicherten Daten zu erhalten (Art. 15 DSGVO)`}),(0,q.jsx)(`li`,{children:`Berichtigung unrichtiger Daten zu verlangen (Art. 16 DSGVO)`}),(0,q.jsx)(`li`,{children:`Löschung deiner Daten zu verlangen (Art. 17 DSGVO)`}),(0,q.jsx)(`li`,{children:`Einschränkung der Verarbeitung zu verlangen (Art. 18 DSGVO)`}),(0,q.jsx)(`li`,{children:`Datenübertragbarkeit (Art. 20 DSGVO)`}),(0,q.jsx)(`li`,{children:`Widerspruch gegen die Verarbeitung einzulegen (Art. 21 DSGVO)`}),(0,q.jsx)(`li`,{children:`Eine erteilte Einwilligung jederzeit zu widerrufen (Art. 7 Abs. 3 DSGVO)`})]}),(0,q.jsxs)(`p`,{className:`mt-3`,children:[`Für all diese Anfragen wende dich bitte an`,` `,(0,q.jsx)(`a`,{href:`mailto:[email protected]`,className:`text-petrol-400 hover:underline`,children:`[email protected]`}),`.`]})]}),(0,q.jsxs)(Z,{nummer:`8`,titel:`Beschwerderecht`,children:[(0,q.jsx)(`p`,{children:`Du hast das Recht, dich bei einer Datenschutz-Aufsichtsbehörde zu beschweren, wenn du der Auffassung bist, dass die Verarbeitung deiner Daten nicht DSGVO-konform erfolgt. Die für uns zuständige Aufsichtsbehörde ist:`}),(0,q.jsxs)(`address`,{className:`not-italic mt-3 text-text-secondary`,children:[`Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen`,(0,q.jsx)(`br`,{}),`Kavalleriestr. 2â4`,(0,q.jsx)(`br`,{}),`40213 Düsseldorf`,(0,q.jsx)(`br`,{}),`Telefon: 0211/38424-0`,(0,q.jsx)(`br`,{}),`E-Mail:`,` `,(0,q.jsx)(`a`,{href:`mailto:[email protected]`,className:`text-petrol-400 hover:underline`,children:`[email protected]`})]})]}),(0,q.jsx)(Z,{nummer:`9`,titel:`Datensicherheit`,children:(0,q.jsx)(`p`,{children:`Wir verwenden innerhalb des Plattform-Besuchs das verbreitete SSL/TLS-Verfahren in Verbindung mit der jeweils höchsten Verschlüsselungsstufe, die von deinem Browser unterstützt wird. Passwörter werden ausschlieÃlich gehasht (Argon2id) gespeichert. Backups sind verschlüsselt.`})}),(0,q.jsx)(Z,{nummer:`10`,titel:`Ãnderungen dieser Datenschutzerklärung`,children:(0,q.jsxs)(`p`,{children:[`Wir behalten uns vor, diese Datenschutzerklärung anzupassen, damit sie stets den aktuellen rechtlichen Anforderungen entspricht oder um Ãnderungen unserer Leistungen abzubilden. Die jeweils aktuelle Version findest du immer unter`,` `,(0,q.jsx)(R,{to:`/datenschutz`,className:`text-petrol-400 hover:underline`,children:`genv-resellingautomation.com/datenschutz`})]})}),(0,q.jsxs)(`footer`,{className:`pt-8 border-t border-border-subtle text-xs text-text-muted flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsxs)(R,{to:`/`,className:`hover:text-petrol-400 inline-flex items-center gap-1.5`,children:[(0,q.jsx)(ke,{className:`w-3 h-3`}),` Zurück zur Startseite`]}),(0,q.jsx)(R,{to:`/impressum`,className:`hover:text-petrol-400`,children:`Impressum`})]})]})]})}function Z({nummer:e,titel:t,children:n}){return(0,q.jsxs)(`section`,{children:[(0,q.jsxs)(`h2`,{className:`text-lg font-semibold text-text-primary mb-3`,children:[(0,q.jsxs)(`span`,{className:`text-petrol-400 mr-2`,children:[e,`.`]}),t]}),(0,q.jsx)(`div`,{className:`space-y-2 text-text-secondary`,children:n})]})}var ki=`14.05.2026`;function Ai(){return(0,q.jsxs)(`div`,{className:`min-h-screen bg-background text-text-secondary`,children:[(0,q.jsx)(`header`,{className:`border-b border-border-subtle bg-background/95 sticky top-0 z-10`,children:(0,q.jsxs)(`div`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-4 flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(Ne,{className:`w-5 h-5 text-petrol-400`}),(0,q.jsx)(`span`,{className:`font-semibold text-text-primary`,children:`Impressum`})]}),(0,q.jsxs)(R,{to:`/`,className:`text-sm text-text-muted hover:text-petrol-400 flex items-center gap-1.5 transition-colors`,children:[(0,q.jsx)(ke,{className:`w-4 h-4`}),` Zurück`]})]})}),(0,q.jsxs)(`main`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-8 space-y-8 text-sm leading-relaxed`,children:[(0,q.jsxs)(`p`,{className:`text-text-muted text-xs`,children:[`Stand: `,ki]}),(0,q.jsx)(Q,{titel:`Angaben gemäà § 5 DDG`,children:(0,q.jsxs)(`address`,{className:`not-italic text-text-secondary`,children:[`Franziska Holland`,(0,q.jsx)(`br`,{}),`GenV Reselling-Automation`,(0,q.jsx)(`br`,{}),`Im grünen Winkel 13`,(0,q.jsx)(`br`,{}),`53123 Bonn`,(0,q.jsx)(`br`,{}),`Deutschland`]})}),(0,q.jsx)(Q,{titel:`Kontakt`,children:(0,q.jsxs)(`p`,{children:[`E-Mail:`,` `,(0,q.jsx)(`a`,{href:`mailto:[email protected]`,className:`text-petrol-400 hover:underline`,children:`[email protected]`})]})}),(0,q.jsxs)(Q,{titel:`Steuerliche Angaben`,children:[(0,q.jsx)(`p`,{children:`Steuernummer: 206/5134/4799`}),(0,q.jsx)(`p`,{className:`text-text-muted text-xs mt-2`,children:`Eine Ums
177atzsteuer-Identifikationsnummer gemäà §27a Umsatzsteuergesetz wird derzeit nicht geführt (Kleinunternehmerregelung nach §19 UStG).`})]}),(0,q.jsx)(Q,{titel:`Inhaltlich Verantwortliche gemäà §18 Abs. 2 MStV`,children:(0,q.jsxs)(`address`,{className:`not-italic text-text-secondary`,children:[`Franziska Holland`,(0,q.jsx)(`br`,{}),`Im grünen Winkel 13`,(0,q.jsx)(`br`,{}),`53123 Bonn`]})}),(0,q.jsx)(Q,{titel:`Verbraucherstreitbeilegung`,children:(0,q.jsx)(`p`,{children:`Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.`})}),(0,q.jsxs)(Q,{titel:`Haftung für Inhalte`,children:[(0,q.jsx)(`p`,{children:`Als Diensteanbieter sind wir gemäà § 7 Abs. 1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.`}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.`})]}),(0,q.jsxs)(Q,{titel:`Haftung für Links`,children:[(0,q.jsx)(`p`,{children:`Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich.`}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche RechtsverstöÃe überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.`})]}),(0,q.jsxs)(Q,{titel:`Urheberrecht`,children:[(0,q.jsx)(`p`,{children:`Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung auÃerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers.`}),(0,q.jsx)(`p`,{className:`mt-3`,children:`Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Solltest du trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.`})]}),(0,q.jsx)(Q,{titel:`Datenschutz`,children:(0,q.jsxs)(`p`,{children:[`Informationen zum Datenschutz findest du in unserer`,` `,(0,q.jsx)(R,{to:`/datenschutz`,className:`text-petrol-400 hover:underline`,children:`Datenschutzerklärung`}),`.`]})}),(0,q.jsxs)(`footer`,{className:`pt-8 border-t border-border-subtle text-xs text-text-muted flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsxs)(R,{to:`/`,className:`hover:text-petrol-400 inline-flex items-center gap-1.5`,children:[(0,q.jsx)(ke,{className:`w-3 h-3`}),` Zurück zur Startseite`]}),(0,q.jsx)(R,{to:`/datenschutz`,className:`hover:text-petrol-400`,children:`Datenschutzerklärung`})]})]})]})}function Q({titel:e,children:t}){return(0,q.jsxs)(`section`,{children:[(0,q.jsx)(`h2`,{className:`text-lg font-semibold text-text-primary mb-3`,children:e}),(0,q.jsx)(`div`,{className:`space-y-2 text-text-secondary`,children:t})]})}function ji({typ:e}){let t=e===`widerruf`,n=t?`Vertrag widerrufen`:`Verträge hier kündigen`,r=t?`Widerruf bestätigen`:`jetzt kündigen`,[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(``),[d,f]=(0,K.useState)(`ordentlich`),[p,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(``),[_,v]=(0,K.useState)(!1),[y,b]=(0,K.useState)(null),[x,S]=(0,K.useState)(!1);async function C(){if(b(null),!i.trim()||!i.includes(`@`)){b(`Bitte gib die E-Mail-Adresse deines Kontos an.`);return}v(!0);try{let n=await fetch(`${z()}/api/public/widerruf-kuendigung`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({typ:e,email:i.trim(),name:o.trim()||null,vertrag:c.trim()||null,art:t?`widerruf`:d,grund:d===`ausserordentlich`&&p.trim()||null,beendigung_wunsch:h.trim()||null})}),r=await n.json().catch(()=>({}));if(!n.ok){b(r?.fehler||`Es ist ein Fehler aufgetreten. Bitte später erneut versuchen.`);return}S(!0)}catch{b(`Netzwerkfehler. Bitte später erneut versuchen.`)}finally{v(!1)}}return(0,q.jsxs)(`div`,{className:`min-h-screen bg-background text-text-secondary`,children:[(0,q.jsx)(`header`,{className:`border-b border-border-subtle bg-background/95 sticky top-0 z-10`,children:(0,q.jsxs)(`div`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-4 flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(ae,{className:`w-5 h-5 text-petrol-400`}),(0,q.jsx)(`span`,{className:`font-semibold text-text-primary`,children:n})]}),(0,q.jsxs)(R,{to:`/`,className:`text-sm text-text-muted hover:text-petrol-400 flex items-center gap-1.5 transition-colors`,children:[(0,q.jsx)(ke,{className:`w-4 h-4`}),` Zurück`]})]})}),(0,q.jsx)(`main`,{className:`max-w-3xl mx-auto px-4 sm:px-6 py-8 space-y-6 text-sm leading-relaxed`,children:x?(0,q.jsxs)(`div`,{className:`rounded-2xl border border-petrol-500/30 bg-petrol-500/10 p-6 flex items-start gap-3`,children:[(0,q.jsx)(u,{className:`w-6 h-6 text-petrol-400 shrink-0`}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-text-primary`,children:t?`Fast geschafft â bitte bestätige deinen Widerruf.`:`Fast geschafft â bitte bestätige deine Kündigung.`}),(0,q.jsxs)(`p`,{className:`text-text-secondary`,children:[`Wir haben dir soeben einen Bestätigungslink an`,(0,q.jsxs)(`span`,{className:`text-text-primary`,children:[` `,i.trim(),` `]}),`geschickt. Aus Sicherheitsgründen führen wir `,t?`deinen Widerruf`:`deine Kündigung`,` erst aus, wenn du in dieser E-Mail auf den Link klickst. Sie dient zugleich als Nachweis über den Eingang deiner Anfrage â bitte bewahre sie auf. Der Link ist 7 Tage gültig.`]})]})]}):(0,q.jsxs)(q.Fragment,{children:[t?(0,q.jsxs)(`section`,{className:`rounded-2xl border border-border-subtle bg-surface p-5 space-y-3`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-text-primary`,children:`Widerrufsbelehrung`}),(0,q.jsxs)(`p`,{children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Widerrufsrecht.`}),` Du hast das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen. Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag des Vertragsabschlusses.`]}),(0,q.jsx)(`p`,{children:`Um dein Widerrufsrecht auszuüben, musst du uns (Franziska Holland, Im grünen Winkel 13, 53123 Bonn, [email protected]) mittels einer eindeutigen Erklärung über deinen Entschluss informieren. Du kannst dafür das untenstehende Formular nutzen â das ist aber nicht vorgeschrieben.`}),(0,q.jsxs)(`p`,{children:[(0,q.jsx)(`span`,{className:`text-text-primary`,children:`Folgen des Widerrufs.`}),` Im Falle eines wirksamen Widerrufs erstatten wir dir alle erhaltenen Zahlungen unverzüglich und spätestens binnen vierzehn Tagen zurück.`]}),(0,q.jsxs)(`p`,{className:`text-text-muted`,children:[(0,q.jsx)(`span`,{className:`text-amber-300`,children:`Hinweis bei digitalen Dienstleistungen:`}),` Das Widerrufsrecht erlischt vorzeitig, wenn du ausdrücklich zugestimmt hast, dass wir mit der Leistung vor Ablauf der Widerrufsfrist beginnen, und du deine Kenntnis vom Erlöschen des Widerrufsrechts bestätigt hast.`]})]}):(0,q.jsxs)(`section`,{className:`rounded-2xl border border-border-subtle bg-surface p-5 space-y-2`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-text-primary`,children:`Vertrag kündigen`}),(0,q.jsx)(`p`,{children:`Hier kannst du dein laufendes Abo kündigen â ohne Login. Fülle die Felder aus und bestätige unten. Du erhältst sofort eine Kündigungsbestätigung mit Datum und Uhrzeit per E-Mail. Bei einer ordentlichen Kündigung bleibt dein Zugang bis zum Ende der bereits bezahlten Abrechnungsperiode bestehen.`})]}),(0,q.jsxs)(`section`,{className:`rounded-2xl border border-border-subtle bg-surface p-5 space-y-4`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-text-primary`,children:t?`Muster-Widerrufsformular`:`Kü
177ndigungsformular`}),(0,q.jsxs)(`div`,{className:`grid sm:grid-cols-2 gap-4`,children:[(0,q.jsxs)(`label`,{className:`block`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`E-Mail-Adresse deines Kontos *`}),(0,q.jsx)(`input`,{type:`email`,value:i,onChange:e=>a(e.target.value),className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`,placeholder:`[email protected]`,autoComplete:`email`})]}),(0,q.jsxs)(`label`,{className:`block`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`Name`}),(0,q.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`})]}),(0,q.jsxs)(`label`,{className:`block sm:col-span-2`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`Vertrag / Abo (z.B. âGold-Abo")`}),(0,q.jsx)(`input`,{type:`text`,value:c,onChange:e=>l(e.target.value),className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`})]}),!t&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`label`,{className:`block`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`Art der Kündigung`}),(0,q.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`,children:[(0,q.jsx)(`option`,{value:`ordentlich`,children:`Ordentlich (zum Periodenende)`}),(0,q.jsx)(`option`,{value:`ausserordentlich`,children:`AuÃerordentlich (fristlos)`})]})]}),(0,q.jsxs)(`label`,{className:`block`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`Gewünschter Beendigungszeitpunkt`}),(0,q.jsx)(`input`,{type:`text`,value:h,onChange:e=>g(e.target.value),className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`,placeholder:`z.B. zum nächstmöglichen Termin`})]}),d===`ausserordentlich`&&(0,q.jsxs)(`label`,{className:`block sm:col-span-2`,children:[(0,q.jsx)(`span`,{className:`block text-xs text-text-muted mb-1`,children:`Grund (bei auÃerordentlicher Kündigung)`}),(0,q.jsx)(`textarea`,{value:p,onChange:e=>m(e.target.value),rows:3,className:`w-full bg-background border border-border-subtle rounded-lg px-3 py-2 text-text-primary focus:outline-none focus:border-petrol-500`})]})]})]}),y&&(0,q.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-red-300 bg-red-500/10 border border-red-500/30 rounded-lg p-2`,children:[(0,q.jsx)(N,{className:`w-4 h-4 shrink-0 mt-0.5`}),` `,y]}),(0,q.jsx)(`button`,{type:`button`,onClick:C,disabled:_,className:`w-full sm:w-auto px-6 py-3 rounded-lg bg-petrol-500 hover:bg-petrol-600 disabled:bg-white/5 disabled:text-text-muted text-text-primary font-semibold transition-colors`,children:_?`Wird gesendet â¦`:r}),(0,q.jsxs)(`p`,{className:`text-xs text-text-muted`,children:[`Mit Klick auf â`,r,`" gibst du die `,t?`Widerrufs`:`Kündigungs`,`Âerklärung verbindlich ab. Du erhältst die Eingangsbestätigung per E-Mail.`]})]})]})})]})}function Mi(e,t){let n=e&&e.trim()||t.split(`@`)[0]||t,r=n.split(/[\s._-]+/).filter(Boolean);return r.length>=2?(r[0][0]+r[1][0]).toUpperCase():r.length===1&&r[0].length>=2?r[0].slice(0,2).toUpperCase():n.slice(0,2).toUpperCase()}var Ni=[[`#0d7a85`,`#ffffff`],[`#0f4c81`,`#ffffff`],[`#7c3aed`,`#ffffff`],[`#db2777`,`#ffffff`],[`#ea580c`,`#ffffff`],[`#65a30d`,`#ffffff`],[`#0891b2`,`#ffffff`],[`#9333ea`,`#ffffff`]];function Pi(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;let[n,r]=Ni[t%Ni.length];return{bg:n,fg:r}}function Fi({email:e,anzeigename:t,badgeId:n,groesse:r=44,rundung:i=`rounded-full`,className:a}){let{uebersicht:o}=ht(),s=Mi(t,e),c=Pi(e),l=n?o?.badges.find(e=>e.id===n&&e.freigeschaltet)??null:null,u=Math.max(15,Math.round(r*.46));return(0,q.jsxs)(`div`,{className:M(`relative inline-flex shrink-0 select-none`,a),style:{width:r,height:r},children:[(0,q.jsx)(`div`,{className:M(`w-full h-full flex items-center justify-center font-bold`,i),style:{backgroundColor:c.bg,color:c.fg,fontSize:Math.round(r*.38)},children:s}),l&&(0,q.jsx)(`span`,{title:`Badge: ${l.name}`,"aria-label":`Badge: ${l.name}`,className:`absolute bottom-0 right-0 flex items-center justify-center rounded-full bg-surface border border-white/20 shadow-md`,style:{width:u,height:u,fontSize:Math.round(u*.6),lineHeight:1},children:l.icon})]})}var Ii=z;function Li(){let{t:e}=V([`nav`,`common`]),{benutzer:n,logout:i}=G(),{uebersicht:a}=ht(),o=I(),{oeffnen:s,ungeleseneAnzahl:c}=Ln(),{oeffnen:l}=Hn(),[u,d]=(0,K.useState)(!1),[f,m]=(0,K.useState)(0),[h,g]=(0,K.useState)(()=>localStorage.getItem(`mp3_theme`)===`dark`?`dark`:`light`),_=(0,K.useRef)(null);if((0,K.useEffect)(()=>{function e(e){_.current&&!_.current.contains(e.target)&&d(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,K.useEffect)(()=>{h===`light`?document.documentElement.classList.remove(`dark`):document.documentElement.classList.add(`dark`),localStorage.setItem(`mp3_theme`,h)}
177,[h]),(0,K.useEffect)(()=>{if(!n)return;let e=!0,t=0,r=0,i=async()=>{try{let t=await fetch(`${Ii()}/api/benachrichtigungen/ungelesen`,{credentials:`include`});return e?t.ok?(m((await t.json()).ungelesen??0),!0):!1:!0}catch{return!1}},a=async()=>{if(!e||document.hidden||(r++,r%Math.min(2**t,5)!==0))return;let n=await i();e&&(t=n?0:t+1)};i();let o=setInterval(a,3e4);return()=>{e=!1,clearInterval(o)}},[n]),!n)return null;async function v(){d(!1),await i(),o(`/anmelden`,{replace:!0})}function y(){let e=h===`dark`?`light`:`dark`;fetch(`${Ii()}/api/quests/q27-theme/abhaken`,{method:`POST`,credentials:`include`,keepalive:!0}).catch(()=>{}),localStorage.setItem(`mp3_theme`,e),setTimeout(()=>window.location.reload(),60),g(e)}let b=`flex items-center justify-center w-10 h-10 sm:w-11 sm:h-11 rounded-xl bg-surface border border-white/5 text-text-secondary hover:bg-petrol-500/15 hover:border-petrol-500/40 hover:text-petrol-300 transition-all`,x=n.anzeigename?.trim()||n.email;return(0,q.jsxs)(`div`,{ref:_,style:{top:`calc(var(--mp3-oben, 0px) + 16px)`},className:`fixed right-3 sm:right-4 z-50 flex items-center gap-1.5 sm:gap-2`,children:[(0,q.jsx)(vt,{variante:`kompakt`}),(0,q.jsx)(`button`,{type:`button`,"data-tour-id":`toolbar-suche`,onClick:l,title:e(`nav:schnellsuche_titel`,`Schnellsuche (Strg+K oder /)`),"aria-label":e(`nav:schnellsuche_label`,`Schnellsuche`),className:b,children:(0,q.jsx)(p,{className:`w-5 h-5`})}),(0,q.jsxs)(`button`,{type:`button`,"data-tour-id":`toolbar-glocke`,onClick:()=>o(`/chat`),title:e(`nav:benachrichtigungen`),"aria-label":e(`nav:benachrichtigungen`),className:`relative ${b}`,children:[(0,q.jsx)(Ve,{className:`w-5 h-5`}),f>0&&(0,q.jsx)(`span`,{className:`absolute -top-1 -right-1 min-w-[18px] h-[18px] px-1 rounded-full bg-red-500 text-white text-[10px] font-bold flex items-center justify-center`,children:f>99?`99+`:f})]}),a&&(0,q.jsxs)(`button`,{type:`button`,"data-tour-id":`toolbar-quests`,onClick:()=>o(`/quests`),title:e(`nav:quests_status`,{defaultValue:`Quests: {{erledigt}} von {{gesamt}} erledigt`,erledigt:a.erledigt,gesamt:a.gesamt}),"aria-label":e(`nav:quests`),className:`relative ${b}`,children:[(0,q.jsx)(We,{className:`w-5 h-5 ${a.erledigt===a.gesamt?`text-yellow-400`:``}`}),a.erledigt<a.gesamt&&(0,q.jsx)(`span`,{className:`absolute -top-1 -right-1 min-w-[18px] h-[18px] px-1 rounded-full bg-petrol-500 text-white text-[10px] font-bold flex items-center justify-center`,children:a.gesamt-a.erledigt})]}),(0,q.jsx)(`button`,{type:`button`,"data-tour-id":`toolbar-hilfe`,onClick:()=>o(`/hilfe`),title:e(`nav:hilfe_faq`,`Hilfe und FAQ`),"aria-label":e(`nav:hilfe`),className:b,children:(0,q.jsx)(E,{className:`w-5 h-5`})}),(0,q.jsx)(`button`,{type:`button`,"data-tour-id":`toolbar-einstellungen`,onClick:()=>o(`/administration`),title:e(`nav:service_manager_titel`,`Service Manager (Verbindungen, Einstellungen, Stammdaten)`),"aria-label":e(`nav:service_manager`),className:b,children:(0,q.jsx)(r,{className:`w-5 h-5`})}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(`button`,{type:`button`,"data-tour-id":`toolbar-avatar`,onClick:()=>d(e=>!e),title:e(`nav:eingeloggt_als`,{defaultValue:`Eingeloggt als {{name}}`,name:x}),"aria-label":e(`nav:konto_menu`,`Konto-Menü`),className:`flex items-center justify-center w-11 h-11 rounded-xl border border-white/5 hover:border-petrol-500/40 transition-all`,children:(0,q.jsx)(Fi,{email:n.email,anzeigename:n.anzeigename,badgeId:n.profil_badge,groesse:40,rundung:`rounded-lg`})}),u&&(0,q.jsxs)(`div`,{className:`absolute right-0 mt-2 w-72 bg-surface border border-white/10 rounded-xl shadow-xl overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`p-4 border-b border-white/10 flex items-center gap-3`,children:[(0,q.jsx)(Fi,{email:n.email,anzeigename:n.anzeigename,badgeId:n.profil_badge,groesse:48}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-text-primary truncate`,title:x,children:x}),(0,q.jsx)(`div`,{className:`text-xs text-text-muted truncate`,title:n.email,children:n.email}),(0,q.jsxs)(`div`,{className:`text-xs text-text-muted mt-1 flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:n.rolle}),!n.bestaetigt&&(0,q.jsx)(`span`,{className:`text-amber-400`,children:e(`nav:nicht_bestaetigt`,`nicht bestätigt`)})]})]})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{d(!1),o(`/profil`)},className:`w-full flex items-center gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-surface-hover/50 transition-colors`,children:[(0,q.jsx)(ye,{className:`w-4 h-4 text-text-muted`}),(0,q.jsx)(`span`,{children:e(`nav:profil`)})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{d(!1),o(`/einstellungen`)},className:`w-full flex items-center gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-surface-hover/50 transition-colors`,children:[(0,q.jsx)(r,{className:`w-4 h-4 text-text-muted`}),(0,q.jsx)(`span`,{children:e(`nav:stammdaten`,`Stammdaten`)})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{d(!1),o(`/hilfe`)},className:`w-full flex items-center gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-surface-hover/50 transition-colors`,children:[(0,q.jsx)(E,{className:`w-4 h-4 text-text-muted`}),(0,q.jsx)(`span`,{children:e(`nav:hilfe_faq`,`Hilfe und FAQ`)})]}),(0,q.jsxs)(`button`,{type:`button`,"data-tour-id":`toolbar-theme-toggle`,onClick:y,className:`w-full flex items-center justify-between gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-surface-hover/50 transition-colors`,children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[h===`dark`?(0,q.jsx)(re,{className:`w-4 h-4 text-text-muted`}):(0,q.jsx)(pe,{className:`w-4 h-4 text-text-muted`}),(0,q.jsx)(`span`,{children:h===`dark`?e(`nav:hell_modus`,`Hell-Modus`):e(`nav:dunkel_modus`,`Dunkel-Modus`)})]}),(0,q.jsx)(`span`,{className:`text-xs text-text-muted`,children:h===`dark`?e(`nav:aktiv_dunkel`,`aktiv: dunkel`):e(`nav:aktiv_hell`,`aktiv: hell`)})]}),(0,q.jsxs)(`button`,{type:`button`,"data-tour-id":`toolbar-changelog`,onClick:()=>{d(!1),s()},className:`w-full flex items-center justify-between gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-surface-hover/50 transition-colors`,children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(t,{className:`w-4 h-4 text-text-muted`}),(0,q.jsx)(`span`,{children:e(`nav:neuigkeiten`)})]}),c>0&&(0,q.jsx)(`span`,{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded-full bg-petrol-500 text-white`,children:e(`nav:neu_count`,{defaultValue:`{{count}} neu`,count:c}
177)})]}),(0,q.jsx)(`div`,{className:`border-t border-white/10`}),(0,q.jsxs)(`button`,{type:`button`,onClick:v,className:`w-full flex items-center gap-2 px-4 py-2.5 text-left text-sm text-text-primary hover:bg-red-900/30 transition-colors`,children:[(0,q.jsx)(S,{className:`w-4 h-4 text-red-400`}),(0,q.jsx)(`span`,{children:e(`nav:abmelden`)})]})]})]})]})}var Ri=(0,K.lazy)(()=>P(()=>import(`./C1sDIVLv2.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))),zi=(0,K.lazy)(()=>P(()=>import(`./CF8ZNmxR2.js`),__vite__mapDeps([15,1,2,3,4,5,6,16,17,7,8,9,10,11,18,19,14,20,21]))),Bi=(0,K.lazy)(()=>P(()=>import(`./-tzA8xmx2.js`),__vite__mapDeps([22,1,2,3,4,5,6,16,17,23,8,9,10,11,18,24,25,26,19,14,27,28,21]))),Vi=(0,K.lazy)(()=>P(()=>import(`./Bg9bbV1m.js`),__vite__mapDeps([29,1,2,3,4,5,6,16,17,30,23,9,7,8,10,11,18,24,31,19,14,32,21]))),Hi=(0,K.lazy)(()=>P(()=>import(`./BEJSTErc.js`),__vite__mapDeps([33,1,2,3,4,5,6,16,17,30,23,9,7,8,10,11,31,12,14,34,21]))),Ui=(0,K.lazy)(()=>P(()=>import(`./Bq8Efofs2.js`),__vite__mapDeps([35,1,2,3,4,5,6,16,17,30,23,9,7,8,10,11,24,25,19,14,36]))),Wi=(0,K.lazy)(()=>P(()=>import(`./QNK6UnUz2.js`),__vite__mapDeps([37,1,2,3,4,5,6,38,9,7,8,10,11]))),Gi=(0,K.lazy)(()=>P(()=>import(`./DknJxl9Q.js`),__vite__mapDeps([39,1,2,3,4,5,6,17,7,8,9,10,11,18,14,21]))),Ki=(0,K.lazy)(()=>P(()=>import(`./CexpIumw.js`),__vite__mapDeps([40,1,2,3,4,5,6,16,30,23,9,7,8,10,11,14,21]))),qi=(0,K.lazy)(()=>P(()=>import(`./C2a1Wk4x.js`),__vite__mapDeps([41,1,2,3,4,5,6,42,12,9,7,8,10,11,21]))),Ji=(0,K.lazy)(()=>P(()=>import(`./B-5mcytn.js`),__vite__mapDeps([43,1,2,3,4,5,6,42,12,9,7,8,10,11,21]))),Yi=(0,K.lazy)(()=>P(()=>import(`./DyA5OB6u.js`),__vite__mapDeps([44,1,2,3,4,5,6,42,12,9,7,8,10,11]))),Xi=(0,K.lazy)(()=>P(()=>import(`./DelWcisK.js`),__vite__mapDeps([45,1,2,3,4,5,6,42,12,9,7,8,10,11]))),Zi=(0,K.lazy)(()=>P(()=>import(`./Rjy2HMPg.js`),__vite__mapDeps([46,1,2,3,4,5,6,42,12,9,7,8,10,11]))),Qi=(0,K.lazy)(()=>P(()=>import(`./geXW8bCj.js`),__vite__mapDeps([47,1,2,3,4,5,6,42,12,9,7,8,10,11]))),$i=(0,K.lazy)(()=>P(()=>import(`./DZgVSNTn.js`),__vite__mapDeps([48,1,2,3,4,5,6,42,12,9,7,8,10,11]))),ea=(0,K.lazy)(()=>P(()=>import(`./C_j9Cd9D.js`),__vite__mapDeps([49,1,2,3,4,5,6,42,12,9,7,8,10,11]))),ta=(0,K.lazy)(()=>P(()=>import(`./Duh5dnmS.js`),__vite__mapDeps([50,1,2,3,4,5,6,42,12,9,7,8,10,11]))),na=(0,K.lazy)(()=>P(()=>import(`./CNwSyGOv.js`),__vite__mapDeps([51,1,2,3,4,5,6,42,12,9,52,7,8,10,11]))),ra=(0,K.lazy)(()=>P(()=>import(`./C0TFom1P.js`),__vite__mapDeps([53,1,2,3,4,5,6,42,12,9,52,7,8,10,11]))),ia=(0,K.lazy)(()=>P(()=>import(`./Dx8mk5W5.js`),__vite__mapDeps([54,1,2,3,4,5,6,42,12,9,7,8,10,11]))),aa=(0,K.lazy)(()=>P(()=>import(`./CLbbYhGx.js`),__vite__mapDeps([55,1,2,3,4,5,6,42,12,9,7,8,10,11]))),oa=(0,K.lazy)(()=>P(()=>import(`./4XFN28Fd.js`),__vite__mapDeps([56,1,2,3,4,5,6,7,8,9,10,11]))),sa=(0,K.lazy)(()=>P(()=>import(`./DcdXn-Mz2.js`),__vite__mapDeps([57,1,2,3,4,5,6,7,8,9,10,11]))),ca=(0,K.lazy)(()=>P(()=>import(`./DnDvKuYy.js`),__vite__mapDeps([58,2,3,4,5]))),la=(0,K.lazy)(()=>P(()=>import(`./jFtZ7YOQ2.js`),__vite__mapDeps([59,1,2,3,4,5,6,7,8,9,10,11,32]))),ua=(0,K.lazy)(()=>P(()=>import(`./BSmeP8Qg.js`),__vite__mapDeps([60,1,2,3,4,5,6,7,8,9,10,11,12,13]))),da=(0,K.lazy)(()=>P(()=>import(`./mwodE9d3.js`),__vite__mapDeps([61,1,2,3,4,5,6,7,8,9,10,11]))),fa=(0,K.lazy)(()=>P(()=>import(`./CChBuVQX2.js`),__vite__mapDeps([62,1,2,3,4,5,6,16,30,23,9,7,8,10,11,12,28]))),pa=(0,K.lazy)(()=>P(()=>import(`./AM4M_HjM.js`),__vite__mapDeps([63,1,2,3,4,5,6,7,8,9,10,11]))),ma=(0,K.lazy)(()=>P(()=>import(`./DehSf-Xf2.js`),__vite__mapDeps([64,1,2,3,4,5,6,7,8,9,10,11,26]))),ha=(0,K.lazy)(()=>P(()=>import(`./verRBsFt.js`),__vite__mapDeps([65,1,2,3,4,5,6,7,8,9,10,11,26,14]))),ga=(0,K.lazy)(()=>P(()=>import(`./BCem1_0X2.js`),__vite__mapDeps([66,1,2,3,4,5,6,16,30,23,9,7,8,10,11,14,20,21]))),_a=(0,K.lazy)(()=>P(()=>import(`./Dq_wBDP82.js`),__vite__mapDeps([67,1,2,3,4,5,6,16,17,30,23,9,7,8,10,11,14,21]))),va=(0,K.lazy)(()=>P(()=>import(`./Apjs38NJ.js`),__vite__mapDeps([68,1,2,3,4,5,6,16,30,23,9,7,8,10,11,69,14]))),ya=(0,K.lazy)(()=>P(()=>import(`./Bh1dvv_v2.js`),__vite__mapDeps([70,1,2,3,4,5,6,17,30,23,9,7,8,10,11,69,14,21,36]))),ba=(0,K.lazy)(()=>P(()=>import(`./C_WR1Iqv.js`),__vite__mapDeps([71,1,2,3,4,5,6,16,7,8,9,10,11,12,19]))),xa=(0,K.lazy)(()=>P(()=>import(`./CHAb7F8R.js`),__vite__mapDeps([72,1,2,3,4,5,6,12,9,19,34,73]))),Sa=(0,K.lazy)(()=>P(()=>import(`./GOnMqwbt.js`),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,11]))),Ca=(0,K.lazy)(()=>P(()=>import(`./DKN0O7ra.js`),__vite__mapDeps([75,1,2,3,4,5,6,7,8,9,10,11,14]))),wa=(0,K.lazy)(()=>P(()=>import(`./DSghTrZq2.js`),__vite__mapDeps([76,1,2,3,4,5,6,16,7,8,9,10,11]))),Ta=(0,K.lazy)(()=>P(()=>import(`./BRyAbvaS.js`),__vite__mapDeps([77,1,2,3,4,5,6,7,8,9,10,11]))),Ea=(0,K.lazy)(()=>P(()=>import(`./BVPTpTzM.js`),__vite__mapDeps([78,2,3,4,5,6,38,9,12,13]))),Da=(0,K.lazy)(()=>P(()=>import(`./CLapvluq.js`),__vite__mapDeps([79,1,2,3,4,5,6,9]))),Oa=(0,K.lazy)(()=>P(()=>import(`./BD1mHGB_2.js`),__vite__mapDeps([80,1,2,3,4,5,6,7,8,9,10,11]))),ka=(0,K.lazy)(()=>P(()=>import(`./B6LQdhGo2.js`),__vite__mapDeps([81,1,2,3,4,5,6,7,8,9,10,11]))),Aa=(0,K.lazy)(()=>P(()=>import(`./Bfbr1oiy2.js`),__vite__mapDeps([82,1,2,3,4,5,6,7,8,9,10,11,12])));function ja(){let e=Qe(),t=I(),n=e.pathname.startsWith(`/mobile`),r=Lr(),[i,a]=(0,K.useState)(!1);(0,K.useEffect)(()=>{dt(e=>t(e))},[t]);let[o,s]=(0,K.useState)(null),c=(0,K.useCallback)((e,t=0)=>{s({bilder:e,index:t})},[]),l=(0,K.useCallback)(()=>s(null),[]),u=(0,K.useCallback)(e=>{s(t=>t?{...t,index:e}:null)},[]),d=(0,K.useMemo)(()=>({openLightbox:c}),[c]),{benutzer:f,ladeStatus:p}=G(),[m,h]=(0,K.useState)(`pruef`),[g,_]=(0,K.useState)(`pruef`),[v,y]=(0,K.useState)(`pruef`);(0,K.useEffect)(()=>
177{if(!f){h(`ok`),_(`ok`),y(`ok`);return}let e=!0;h(`pruef`),_(`pruef`),y(`pruef`);let t=f.rolle===`admin`||f.rolle===`superadmin`;return(async()=>{try{let n=await Cn();if(!e)return;let r=n!==null&&vn(n.status);n!==null&&n.pflicht===!0&&!r?h(`zahlen`):h(`ok`),_(!f.bestaetigt&&!t&&!r?`code`:`ok`),y(n?.ki_gesperrt===!0&&!t?`zahlen`:`ok`)}catch{e&&(h(`ok`),_(`ok`),y(`ok`))}})(),()=>{e=!1}},[f]);let b=e.pathname===`/anmelden`||e.pathname===`/registrieren`||e.pathname===`/email-bestaetigen`||e.pathname===`/passwort-vergessen`||e.pathname===`/passwort-zuruecksetzen`;return e.pathname===`/datenschutz`||e.pathname===`/impressum`||e.pathname===`/widerrufen`||e.pathname===`/kuendigen`?(0,q.jsxs)(nt,{children:[(0,q.jsx)(L,{path:`/datenschutz`,element:(0,q.jsx)(Oi,{})}),(0,q.jsx)(L,{path:`/impressum`,element:(0,q.jsx)(Ai,{})}),(0,q.jsx)(L,{path:`/widerrufen`,element:(0,q.jsx)(ji,{typ:`widerruf`})}),(0,q.jsx)(L,{path:`/kuendigen`,element:(0,q.jsx)(ji,{typ:`kuendigung`})})]}):p===`pruefend`?(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-slate-900 text-slate-400`,children:(0,q.jsx)(`div`,{className:`text-sm`,children:`Lade â¦`})}):f?b?(0,q.jsx)(Ze,{to:`/`,replace:!0}):g===`code`&&e.pathname!==`/email-bestaetigen`?(0,q.jsx)(Ci,{}):e.pathname===`/willkommen`?(0,q.jsx)(ui,{}):e.pathname===`/preise`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(wt,{}),(0,q.jsx)(bi,{})]}):m===`pruef`?(0,q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-slate-900 text-slate-400`,children:(0,q.jsx)(`div`,{className:`text-sm`,children:`Lade â¦`})}):m===`zahlen`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(wt,{}),(0,q.jsx)(bi,{})]}):v===`zahlen`?(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(Na,{}),children:(0,q.jsx)(Da,{})}):n?(0,q.jsx)(`div`,{className:`min-h-screen bg-background`,children:(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(Na,{}),children:(0,q.jsx)(nt,{children:(0,q.jsx)(L,{path:`/mobile`,element:(0,q.jsx)(ca,{})})})})}):(0,q.jsx)(Qn,{children:(0,q.jsx)(Pt,{children:(0,q.jsx)(gn,{children:(0,q.jsx)(Et.Provider,{value:d,children:(0,q.jsx)(gt,{children:(0,q.jsx)(In,{children:(0,q.jsx)(Vn,{children:(0,q.jsxs)(Ma,{children:[(0,q.jsx)(Mn,{}),(0,q.jsx)(Kr,{}),(0,q.jsx)(kn,{}),(0,q.jsx)(wn,{}),(0,q.jsx)(En,{}),!r&&(0,q.jsx)(Li,{}),(0,q.jsx)(Ct,{}),!r&&(0,q.jsx)(St,{}),r&&(0,q.jsx)(Wr,{}),(0,q.jsxs)(`div`,{className:`flex flex-col min-h-screen bg-background flex-1 w-full`,children:[(0,q.jsx)(`a`,{href:`#hauptinhalt`,className:`mp3-skip-link`,children:`Zum Hauptinhalt springen`}),(0,q.jsxs)(`main`,{id:`hauptinhalt`,className:r?`flex-1 w-full px-3 pt-3 pb-20`:`flex-1 w-full px-3 sm:px-6 lg:px-8 pt-20 sm:pt-24 pb-8`,children:[(0,q.jsx)(Pa,{}),(0,q.jsx)(Mr,{}),(0,q.jsx)(Sr,{}),(0,q.jsx)(Vr,{}),(0,q.jsx)(Fr,{}),(0,q.jsx)(Qn,{fallback:(e,t)=>(0,q.jsxs)(`div`,{className:`max-w-md mx-auto mt-12 bg-surface border border-white/10 rounded-2xl p-6 text-center space-y-4`,children:[(0,q.jsx)(`p`,{className:`text-sm text-text-secondary`,children:U(`Diese Seite konnte nicht geladen werden. Deine Daten sind sicher â versuch es nochmal oder wechsle ueber die Navigation zu einer anderen Seite.`)}),e?.message&&(0,q.jsxs)(`details`,{className:`text-left`,children:[(0,q.jsx)(`summary`,{className:`cursor-pointer text-xs text-text-muted hover:text-text-secondary`,children:U(`Technische Details`)}),(0,q.jsx)(`pre`,{className:`mt-2 whitespace-pre-wrap break-words rounded-lg bg-black/30 p-3 text-[11px] text-amber-300/90`,children:String(e.message)})]}),(0,q.jsx)(`button`,{onClick:t,className:`px-4 py-2 bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium rounded-lg`,children:U(`Neu laden`)})]}),children:(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(Na,{}),children:(0,q.jsxs)(nt,{children:[(0,q.jsx)(L,{path:`/`,element:(0,q.jsx)(Ri,{})}),(0,q.jsx)(L,{path:`/einkauf`,element:(0,q.jsx)(zi,{})}),(0,q.jsx)(L,{path:`/artikel`,element:(0,q.jsx)(Bi,{})}),(0,q.jsx)(L,{path:`/online`,element:(0,q.jsx)(Vi,{})}),(0,q.jsx)(L,{path:`/cross-lister`,element:(0,q.jsx)(Ui,{})}),(0,q.jsx)(L,{path:`/verkauf`,element:(0,q.jsx)(Hi,{})}),(0,q.jsx)(L,{path:`/checkin`,element:(0,q.jsx)(Wi,{})}),(0,q.jsx)(L,{path:`/statistik`,element:(0,q.jsx)(Gi,{})}),(0,q.jsx)(L,{path:`/kommunikation`,element:(0,q.jsx)(Ki,{})}),(0,q.jsx)(L,{path:`/kategorien`,element:(0,q.jsx)(oa,{})}),(0,q.jsx)(L,{path:`/ebay-kategorien`,element:(0,q.jsx)(sa,{})}),(0,q.jsx)(L,{path:`/foto-ki`,element:(0,q.jsx)(fa,{})}),(0,q.jsx)(L,{path:`/administration`,element:(0,q.jsx)(qi,{})}),(0,q.jsx)(L,{path:`/admin/lizenzen`,element:(0,q.jsx)($,{children:(0,q.jsx)(Ji,{})})}),(0,q.jsx)(L,{path:`/einladen/:token`,element:(0,q.jsx)(bt,{})}),(0,q.jsx)(L,{path:`/admin/benutzer`,element:(0,q.jsx)($,{children:(0,q.jsx)(Yi,{})})}),(0,q.jsx)(L,{path:`/admin/audit-log`,element:(0,q.jsx)($,{children:(0,q.jsx)(Xi,{})})}),(0,q.jsx)(L,{path:`/admin/extension-test`,element:(0,q.jsx)($,{children:(0,q.jsx)(Zi,{})})}),(0,q.jsx)(L,{path:`/admin/volt-testlabor`,element:(0,q.jsx)($,{children:(0,q.jsx)(Qi,{})})}),(0,q.jsx)(L,{path:`/admin/support`,element:(0,q.jsx)($,{children:(0,q.jsx)($i,{})})}),(0,q.jsx)(L,{path:`/admin/newsletter`,element:(0,q.jsx)($,{children:(0,q.jsx)(ea,{})})}),(0,q.jsx)(L,{path:`/admin/rueckrufe`,element:(0,q.jsx)($,{children:(0,q.jsx)(ta,{})})}),(0,q.jsx)(L,{path:`/admin/video-einlauf`,element:(0,q.jsx)($,{children:(0,q.jsx)(na,{})})}),(0,q.jsx)(L,{path:`/admin/video-transfer`,element:(0,q.jsx)($,{children:(0,q.jsx)(ra,{})})}),(0,q.jsx)(L,{path:`/admin/recherche`,element:(0,q.jsx)($,{children:(0,q.jsx)(ia,{})})}),(0,q.jsx)(L,{path:`/admin/verkaeufe`,element:(0,q.jsx)($,{children:(0,q.jsx)(aa,{})})}),(0,q.jsx)(L,{path:`/einstellungen`,element:(0,q.jsx)(la,{})}),(0,q.jsx)(L,{path:`/profil`,element:(0,q.jsx)(ua,{})}),(0,q.jsx)(L,{path:`/einstellungen/kommunikation`,element:(0,q.jsx)(da,{})}),(0,q.jsx)(L,{path:`/listing-templates`,element:(0,q.jsx)(pa,{})}),(0,q.jsx)(L,{path:`/hilfstabellen`,element:(0,q.jsx)(ma,{})}),(0,q.jsx)(L,{path:`/gekauft`,element:(0,q.jsx)(ga,{})}),(0,q.jsx)(L,{path:`/buchhaltung`,element:(0,q.jsx)(_a,{})}),(0,q.jsx)(L,{path:`/ebay-rechnungen`,element:(0,q.jsx)(_a,{})}),(0,q.jsx)(L,{path:`/preisanpassung`,element:(0,q.jsx)(va,{})}),(0,q.jsx)(L,{path:`/automatisierung`,element:(0,q.jsx)(ya,{})}),(0,q.jsx)(L,{path:`/volt`,element:(0,q.jsx)(ba,{})}),(0,q.jsx)(L,{path:`/volt-modus`,element:(0,q.jsx)(xa,{})}),(0,q.jsx)(L,{path:`/lieferanten`,element:(0,q.jsx)(Sa,{})}),(0,q.jsx)(L,{path:`/zuordnen`,element:(0,q.jsx)(Ca,{})}),(0,q.jsx)(L,{path:`/archiv`,element:(0,q.jsx)(ha,{})}),(0,q.jsx)(L,{path:`/feld-mapping`,element:(0,q.jsx)(wa,{})}),(0,q.jsx)(L,{path:`/kategorie-training`,element:(0,q.jsx)(Ta,{})}),(0,q.jsx)(L,{path:`/benachrichtigungen`,element:(0,q.jsx)(Oa,{})}),(0,q.jsx)(L,{path:`/chat`,element:(0,q.jsx)(ka,{})}),(0,q.jsx)(L,{path:`/hilfe`,element:(0,q.jsx)(Aa,{})}),(0,q.jsx)(L,{path:`/quests`,element:(0,q.jsx)(Ea,{})}),(0,q.jsx)(L,{path:`/ki-kosten`,element:(0,q.jsx)(Da,{})}),(0,q.jsx)(L,{path:`*`,element:(0,q.jsx)(Ze,{to:`/`,replace:!0})})]})})})]}),(0,q.jsx)(Dn,{}),(0,q.jsx)(Tt,{state:o,onClose:l,onChange:u}),r&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Ur,{onMehrKlick:()=>a(!0)}),(0,q.jsx)(Gr,{offen:i,onClose:()=>a(!1)})]})]})]})})})})})})})}):(0,q.jsxs)(nt,{children:[(0,q.jsx)(L,{path:`/registrieren`,element:(0,q.jsx)(ii,{})}),(0,q.jsx)(L,{path:`/email-bestaetigen`,element:(0,q.jsx)(xi,{})}),(0,q.jsx)(L,{path:`/bestaetigen`,element:(0,q.jsx)(Ci,{})}),(0,q.jsx)(L,{path:`/passwort-vergessen`,element:(0,q.jsx)(wi,{})}),(0,q.jsx)(L,{path:`/passwort-zuruecksetzen`,element:(0,q.jsx)(Ei,{})}),(0,q.jsx)(L,{path:`/datenschutz`,element:(0,q.jsx)(Oi,{})}),(0,q.jsx)(L,{path:`/impressum`,element:(0,q.jsx)(Ai,{})}),(0,q.jsx)(L,{path:`/einladen/:token`,element:(0,q.jsx)(bt,{})}),(0,q.jsx)(L,{path:`*`,element:(0,q.jsx)(ti,{})})]})}function Ma({children:e}){let{status:t,loading:n,backendUnreachable:r,refresh:i}=_n();return n?(0,q.jsx)(`div`,{className:`min-h-screen bg-background flex items-center justify-center`,children:(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 text-text-muted`,children:[(0,q.jsx)(`div`,{className:`w-8 h-8 border-2 border-petrol-500/30 border-t-petrol-500 rounded-full animate-spin`}),(0,q.jsx)(`span`,{className:`text-sm`,children:`Wird geladenâ¦`})]})}):r?(0,q.jsx)(`div`,{className:`min-h-screen bg-background flex items-center justify-center px-6`,children:(0,q.jsxs)(`div`,{className:`max-w-md text-center space-y-4`,children:[(0,q.jsx)(`div`,{className:`text-amber-300 text-2xl`,children:`â `}),(0,q.jsx)(`h1`,{className:`text-xl font-semibold text-text-primary`,children:`Backend nicht erreichbar`}),(0,q.jsx)(`p`,{className:`text-sm text-text-muted`,children:`Die App konnte nach mehreren Versuchen keinen Status vom Backend holen. Vielleicht startet es gerade neu â warte ein paar Sekunden, dann âErneut versuchen" klicken. Deine Sessions bleiben gespeichert.`}),(0,q.jsx)(`button`,{onClick:i,className:`px-4 py-2 bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium rounded-lg`,children:`Erneut versuchen`})]})}):t&&!t.onboarding_abgeschlossen?(0,q.jsx)(Wt,{beiAbschluss:()=>{i()},startSchritt:t.onboarding_schritt}):(0,q.jsx)(q.Fragment,{children:e})}function Na(){return(0,q.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,q.jsx)(`div`,{className:`w-8 h-8 border-2 border-petrol-500/30 border-t-petrol-500 rounded-full animate-spin`,role:`status`,"aria-label":`Seite wird geladen`})})}function Pa(){return gr(),null}function $({children:e}){let{benutzer:t,ladeStatus:n,istAdmin:r}=G(),i=I();return(0,K.useEffect)(()=>
177{if(n!==`pruefend`){if(!t){i(`/anmelden`,{replace:!0});return}r||i(`/`,{replace:!0})}},[t,n,r,i]),n===`pruefend`||!t||!r?null:(0,q.jsx)(q.Fragment,{children:e})}var Fa=`mp3_cookie_consent`;function Ia(){let{t:e}=V(`common`),[t,n]=(0,K.useState)(!1);(0,K.useEffect)(()=>{try{if(!localStorage.getItem(Fa)){let e=setTimeout(()=>n(!0),600);return()=>clearTimeout(e)}}catch{n(!0)}},[]);let r=e=>{try{localStorage.setItem(Fa,e)}catch{}n(!1)};return t?(0,q.jsx)(`div`,{role:`dialog`,"aria-label":e(`cookie_banner.titel`,`Cookie-Hinweis`),className:`fixed bottom-0 left-0 right-0 z-[9000] p-4 sm:p-6`,children:(0,q.jsxs)(`div`,{className:`max-w-3xl mx-auto bg-surface border border-white/10 rounded-2xl shadow-2xl p-5 sm:p-6`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,q.jsx)(`div`,{className:`shrink-0 w-10 h-10 rounded-xl bg-petrol-500/15 border border-petrol-500/30 flex items-center justify-center text-petrol-300`,children:(0,q.jsx)(c,{className:`w-5 h-5`})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`h2`,{className:`text-sm font-semibold text-text-primary mb-1`,children:e(`cookie_banner.headline`,`Wir respektieren deine Privatsphäre`)}),(0,q.jsxs)(`p`,{className:`text-xs text-text-secondary leading-relaxed`,children:[e(`cookie_banner.text_pre`,`Wir nutzen nur die`),` `,(0,q.jsx)(`span`,{className:`text-text-primary`,children:e(`cookie_banner.notwendige_cookies`,`technisch notwendigen Cookies`)}),` `,e(`cookie_banner.text_mitte`,`(für Login + Session). Kein Tracking, keine Werbung. Mehr Details in unserer`),` `,(0,q.jsx)(R,{to:`/datenschutz`,className:`text-petrol-400 hover:text-petrol-300 underline`,children:e(`cookie_banner.datenschutz_link`,`Datenschutzerklärung`)}),`.`]})]}),(0,q.jsx)(`button`,{onClick:()=>r(`minimal`),className:`shrink-0 -mt-1 -mr-1 sm:hidden text-text-muted hover:text-text-primary`,"aria-label":e(`schliessen`),children:(0,q.jsx)(j,{className:`w-5 h-5`})})]}),(0,q.jsxs)(`div`,{className:`mt-4 flex flex-col sm:flex-row gap-2`,children:[(0,q.jsx)(`button`,{onClick:()=>r(`minimal`),className:`flex-1 px-4 py-2.5 bg-petrol-500 hover:bg-petrol-600 text-white text-sm font-medium rounded-lg transition-colors`,children:e(`cookie_banner.verstanden`,`Verstanden`)}),(0,q.jsx)(R,{to:`/datenschutz`,className:`flex-1 px-4 py-2.5 bg-white/5 hover:bg-white/10 text-text-primary text-sm font-medium rounded-lg text-center transition-colors`,children:e(`cookie_banner.mehr_erfahren`,`Mehr erfahren`)})]})]})}):null}async function La(){if(!(`serviceWorker`in navigator))return console.warn(`[SW] Service-Worker nicht unterstuetzt`),null;try{let e=await navigator.serviceWorker.register(`/sw.js`,{scope:`/`});return e.waiting&&(()=>{})(`[SW] Update wartet auf Reload`),e.addEventListener(`updatefound`,()=>{let t=e.installing;t&&t.addEventListener(`statechange`,()=>{t.state===`installed`&&navigator.serviceWorker.controller&&(()=>{})(`[SW] Neue Version installiert â Reload empfohlen`)})}),e}catch(e){return console.error(`[SW] Registrierung fehlgeschlagen:`,e),null}}var Ra=`genv_eingaben`,za=1800*1e3,Ba=5e3,Va=new Set([`password`,`file`,`hidden`,`submit`,`button`,`reset`,`image`,`search`]);function Ha(e){if(!e)return!1;let t=e.tagName;if(t!==`INPUT`&&t!==`TEXTAREA`&&t!==`SELECT`||e.closest(`[data-nicht-merken]`)||e.dataset?.nichtMerken!==void 0)return!1;let n=(e.type||`text`).toLowerCase();if(Va.has(n))return!1;let r=(e.getAttribute(`autocomplete`)||``).toLowerCase();return r.includes(`password`)||r.includes(`cc-`)||r===`one-time-code`?!1:Ua(e)!==null}function Ua(e){let t=e;if(t.name)return`n:`+t.name;if(t.id)return`i:`+t.id;let n=(t.type||e.tagName).toLowerCase(),r=t.placeholder||t.getAttribute(`aria-label`)||``,i=e.closest(`[data-tour-id],[id]`),a=i?i.getAttribute(`data-tour-id`)||i.id:``;if(!r&&!a)return null;let o=0,s=e.parentElement;return s&&(o=Array.from(s.children).filter(t=>t.tagName===e.tagName).indexOf(e)),`a:${a}|${n}|${r}|${o}`}function Wa(e){return e.startsWith(`n:`)||e.startsWith(`i:`)}function Ga(e=document){let t=new Map;
177return e.querySelectorAll(`input, textarea, select`).forEach(e=>{let n=Ua(e);n&&t.set(n,(t.get(n)||0)+1)}),t}function Ka(e,t){return Wa(e)?!0:(t.get(e)||0)<=1}function qa(e){let t=e,n=(t.type||``).toLowerCase();return n===`checkbox`||n===`radio`?t.checked?`1`:`0`:String(t.value??``)}function Ja(){try{let e=sessionStorage.getItem(Ra);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`?{}:t}catch{return{}}}function Ya(e){try{sessionStorage.setItem(Ra,JSON.stringify(e))}catch{try{let t=Object.keys(e);if(t.length>1){let n=t[0],r=1/0;for(let i of t){let t=Object.values(e[i]).map(e=>e.zeit),a=t.length?Math.max(...t):0;a<r&&(r=a,n=i)}delete e[n],sessionStorage.setItem(Ra,JSON.stringify(e))}}catch{}}}function Xa(e=Date.now()){let t=Ja(),n=!1;for(let r of Object.keys(t)){for(let i of Object.keys(t[r]))e-t[r][i].zeit>za&&(delete t[r][i],n=!0);Object.keys(t[r]).length===0&&(delete t[r],n=!0)}n&&Ya(t)}function Za(e,t,n,r,i=Date.now()){if(n.length>Ba)return;let a=Ja();a[e]||(a[e]={}),a[e][t]={wert:n,art:r,zeit:i},Ya(a)}function Qa(e){return Ja()[e]||{}}function $a(e){let t=Ja();t[e]&&(delete t[e],Ya(t))}function eo(e,t){let n=e,r=(n.type||``).toLowerCase();try{if(r===`checkbox`||r===`radio`){let e=t===`1`;return n.checked===e?!1:((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`checked`)?.set)?.call(n,e),n.dispatchEvent(new Event(`click`,{bubbles:!0})),n.dispatchEvent(new Event(`change`,{bubbles:!0})),!0)}if(n.value===t)return!1;let i=e.tagName===`TEXTAREA`?HTMLTextAreaElement.prototype:e.tagName===`SELECT`?HTMLSelectElement.prototype:HTMLInputElement.prototype,a=Object.getOwnPropertyDescriptor(i,`value`)?.set;return a?(a.call(n,t),n.dispatchEvent(new Event(`input`,{bubbles:!0})),n.dispatchEvent(new Event(`change`,{bubbles:!0})),!0):!1}catch{return!1}}function to(){let e=H(),t=Qe().pathname,[n,r]=(0,K.useState)(0),i=(0,K.useRef)(new Set),a=(0,K.useRef)({});return(0,K.useEffect)(()=>{Xa();let e=e=>{if(!e.isTrusted)return;let n=e.target;if(!Ha(n))return;let r=Ua(n);if(!r)return;let i=qa(n),o=(n.type||n.tagName).toLowerCase(),s=t+`|`+r;window.clearTimeout(a.current[s]),a.current[s]=window.setTimeout(()=>{Ka(r,Ga())&&Za(t,r,i,o)},300)};return document.addEventListener(`input`,e,!0),document.addEventListener(`change`,e,!0),()=>{document.removeEventListener(`input`,e,!0),document.removeEventListener(`change`,e,!0);for(let e of Object.values(a.current))window.clearTimeout(e);a.current={}}},[t]),(0,K.useEffect)(()=>{i.current=new Set,r(0);let e=Qa(t);if(Object.keys(e).length===0)return;let n=!0,a=()=>{if(!n)return;let t=0,a=document.querySelectorAll(`input, textarea, select`),o=Ga();a.forEach(n=>{if(!Ha(n))return;let r=Ua(n);if(!r||i.current.has(r))return;let a=e[r];if(a){if(qa(n)===a.wert){i.current.add(r);return}if(!Wa(r)&&qa(n).trim()!==``){i.current.add(r);return}if(!Ka(r,o)){i.current.add(r);return}eo(n,a.wert)&&(i.current.add(r),t++)}}),t>0&&r(e=>e+t)},o=[150,400,900,1800,3500].map(e=>window.setTimeout(a,e)),s=new MutationObserver(()=>a());s.observe(document.body,{childList:!0,subtree:!0});let c=window.setTimeout(()=>s.disconnect(),4e3);return()=>{n=!1,o.forEach(e=>window.clearTimeout(e)),window.clearTimeout(c),s.disconnect()}},[t]),n===0?null:(0,q.jsxs)(`div`,{className:`fixed bottom-4 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-3 py-2 rounded-xl bg-surface border border-marine-400/30 shadow-lg max-w-[92vw]`,children:[(0,q.jsx)(le,{className:`w-3.5 h-3.5 text-marine-400 shrink-0`}),(0,q.jsx)(`span`,{className:`text-[11px] text-text-secondary`,children:U(`{{n}} Eingaben von vorhin wiederhergestellt.`,{n})}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{$a(t),window.location.reload()},className:`text-[11px] font-semibold text-marine-400 px-2 py-1 rounded-lg border border-marine-400/30`,children:e(`Verwerfen`)}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(0),"aria-label":e(`SchlieÃen`),className:`text-text-muted p-1`,children:(0,q.jsx)(j,{className:`w-3.5 h-3.5`})})]})}Zn(),La().catch(e=>console.error(`[Main] SW-Registrierung fehlgeschlagen:`,e)),window.addEventListener(`vite:preloadError`,e=>{let t=`genv_chunk_neu_geladen`,n=0;try{n=Number(sessionStorage.getItem(t)||0)}catch{}if(!(n&&Date.now()-n<3e4)){try{sessionStorage.setItem(t,String(Date.now()))}catch{}e.preventDefault(),window.location.reload()}}),(0,_t.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(K.StrictMode,{children:(0,q.jsx)(et,{children:(0,q.jsxs)(pt,{children:[(0,q.jsx)(ja,{}),(0,q.jsx)(Ia,{}),(0,q.jsx)(to,{})]})})}));export{wr as a,dr as c,It as d,Dt as f,Tr as i,_n as l,si as n,vr as o,Lr as r,pr as s,Fi as t,zt as u};
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.