PageSourceSearch

https://tommsel.com/_next/static/immutable/chunks/3n4jzfaui1nhj.js

js tommsel.com collected 2026-09-24 14:54:56 UTC 271,029 bytes, 5 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,85437,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Image",{enumerable:!0,get:function(){return w}});let i=e.r(55682),r=e.r(90809),a=e.r(43476),s=r._(e.r(71645)),o=i._(e.r(74080)),l=i._(e.r(25633)),d=e.r(8927),c=e.r(87690),u=e.r(18556),h=e.r(65856),p=i._(e.r(35420)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function f(e,t,n,i,r,a,s){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&r(!0),n?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,r=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>r,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{r=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function b(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let v="u"<typeof window?s.useEffect:s.useLayoutEffect,y=(0,s.forwardRef)(({src:e,srcSet:t,sizes:n,height:i,width:r,decoding:o,className:l,style:d,fetchPriority:c,placeholder:u,loading:h,unoptimized:p,fill:m,onLoadRef:y,onLoadingCompleteRef:k,setBlurComplete:w,setShowAltText:x,sizesInput:S,onLoad:A,onError:z,...j},P)=>{let N=(0,s.useRef)(!1),D=(0,s.useRef)(null);v(()=>{let{current:e}=N,{current:t}=D;e||null===t||(z&&(t.src=t.src),t.complete&&f(t,u,y,k,w,p,S),N.current=!0)},[e,u,y,k,z,p,S]);let W=(0,g.useMergedRef)(P,D);return(0,a.jsx)("img",{...j,...b(c),loading:h,width:r,height:i,decoding:o,"data-nimg":m?"fill":"1",className:l,style:d,sizes:n,srcSet:t,src:e,ref:W,onLoad:e=>{f(e.currentTarget,u,y,k,w,p,S)},onError:e=>{x(!0),"empty"!==u&&w(!0),z&&z(e)}})});function k({isAppRouter:e,imgAttributes:t}){let n={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...b(t.fetchPriority)};return e&&o.default.preload?(o.default.preload(t.src,n),null):(0,a.jsx)(l.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...n},"__nimg-"+t.src+t.srcSet+t.sizes)})}let w=(0,s.forwardRef)((e,t)=>{let n=(0,s.useContext)(h.RouterContext),i=(0,s.useContext)(u.ImageConfigContext),r=(0,s.useMemo)(()=>{let e=m||i||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),n=e.deviceSizes.sort((e,t)=>e-t),r=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:n,qualities:r,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:o,onLoadingComplete:l}=e,g=(0,s.useRef)(o);(0,s.useEffect)(()=>{g.current=o},[o]);let f=(0,s.useRef)(l);(0,s.useEffect)(()=>{f.current=l},[l]);let[b,v]=(0,s.useState)(!1),[w,x]=(0,s.useState)(!1),{props:S,meta:A}=(0,d.getImgProps)(e,{defaultLoader:p.default,imgConf:r,blurComplete:b,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{...S,unoptimized:A.unoptimized,placeholder:A.placeholder,fill:A.fill,onLoadRef:g,onLoadingCompleteRef:f,setBlurComplete:v,setShowAltText:x,sizesInput:e.sizes,ref:t}),A.preload?(0,a.jsx)(k,{isAppRouter:!n,imgAttributes:S}):null]})});("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},94909,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0});var i={default:function(){return c},getImageProps:function(){return d}};for(var r in i)Object.defineProperty(n,r,{enumerable:!0,get:i[r]});let a=e.r(55682),s=e.r(8927),o=e.r(85437),l=a._(e.r(35420));function d(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qual
1ities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}}let c=o.Image},57688,(e,t,n)=>{t.exports=e.r(94909)},25633,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return u}};for(var r in i)Object.defineProperty(n,r,{enumerable:!0,get:i[r]});let a=e.r(55682),s=e.r(90809),o=e.r(43476),l=s._(e.r(71645)),d=a._(e.r(98879)),c=e.r(42732);function u(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function h(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,n,i,r;return e.reduce(h,[]).reverse().concat(u().reverse()).filter((t=new Set,n=new Set,i=new Set,r={},e=>{let a=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let n=e.key.slice(e.key.indexOf("$")+1);t.has(n)?a=!1:t.add(n)}switch(e.type){case"title":case"base":n.has(e.type)?a=!1:n.add(e.type);break;case"meta":for(let t=0,n=p.length;t<n;t++){let n=p[t];if(e.props.hasOwnProperty(n))if("charSet"===n)i.has(n)?a=!1:i.add(n);else{let t=e.props[n],i=r[n]||new Set;("name"!==n||!s)&&i.has(t)?a=!1:(i.add(t),r[n]=i)}}}return a})).reverse().map((e,t)=>{let n=e.key||t;return l.default.cloneElement(e,{key:n})})}let m=function({children:e}){let t=(0,l.useContext)(c.HeadManagerContext);return(0,o.jsx)(d.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18556,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let i=e.r(55682)._(e.r(71645)),r=e.r(87690),a=i.default.createContext(r.imageConfigDefault)},65856,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,n)=>{"use strict";function i(e,t){let n=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-n)<Math.abs(e-n)?t:e,t.qualities[0]):n}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"findClosestQuality",{enumerable:!0,get:function(){return i}})},35420,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return s}});let i=e.r(70965),r=e.r(43369);function a({config:e,src:t,width:n,quality:s}){let o=(0,r.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//"))if(t.includes("/_next/static/immutable")&&!(0,r.getAssetToken)())o=void 0;else{let e=t.indexOf("?");if(-1!==e){let n=new URLSearchParams(t.slice(e+1)),i=n.get("dpl");if(i){o=i,n.delete("dpl");let r=n.toString();t=t.slice(0,e)+(r?"?"+r:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
2Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,i.findClosestQuality)(s,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${l}${t.startsWith("/")&&o?`&dpl=${o}`:""}`}a.__next_img_default=!0;let s=a},88143,(e,t,n)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:n,blurHeight:r,blurDataURL:a,objectFit:s}){let o=n?40*n:e,l=r?40*r:t,d=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${d}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3Cfe
2ColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${d?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${a}'/%3E%3C/svg%3E`}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return a},imageConfigDefault:function(){return s}};for(var r in i)Object.defineProperty(n,r,{enumerable:!0,get:i[r]});let a=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImgProps",{enumerable:!0,get:function(){return d}});let i=e.r(43369),r=e.r(88143),a=e.r(87690),s=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function d({src:e,sizes:t,unoptimized:n=!1,priority:c=!1,preload:u=!1,loading:h,className:p,quality:g,width:m,height:f,fill:b=!1,style:v,overrideSrc:y,onLoad:k,onLoadingComplete:w,placeholder:x="empty",blurDataURL:S,fetchPriority:A,decoding:z="async",layout:j,objectFit:P,objectPosition:N,lazyBoundary:D,lazyRoot:W,...C},T){var E;let F,M,V,{imgConf:L,showAltText:K,blurComplete:I,defaultLoader:B}=T,O=L||a.imageConfigDefault;if("allSizes"in O)F=O;else{let e=[...O.deviceSizes,...O.imageSizes].sort((e,t)=>e-t),t=O.deviceSizes.sort((e,t)=>e-t),n=O.qualities?.sort((e,t)=>e-t);F={...O,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===B)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let G=C.loader||B;delete C.loader,delete C.srcSet;let R="__next_img_default"in G;if(R){if("custom"===F.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
3Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=G;G=t=>{let{config:n,...i}=t;return e(i)}}if(j){"fill"===j&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[j];e&&(v={...v,...e});let n={responsive:"100vw",fill:"100vw"}[j];n&&!t&&(t=n)}let q="",H=l(m),U=l(f);if((E=e)&&"object"==typeof E&&(o(E)||void 0!==E.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(M=t.blurWidth,V=t.blurHeight,S=S||t.blurDataURL,q=t.src,!b)if(H||U){if(H&&!U){let e=H/t.width;U=Math.round(t.height*e)}else if(!H&&U){let e=U/t.height;H=Math.round(t.width*e)}}else H=t.width,U=t.height}let _=!c&&!u&&("lazy"===h||void 0===h);(!(e="string"==typeof e?e:q)||e.startsWith("data:")||e.startsWith("blob:"))&&(n=!0,_=!1),F.unoptimized&&(n=!0),R&&!F.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(n=!0);let J=l(g),Z=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:P,objectPosition:N}:{},K?{}:{color:"transparent"},v),$=I||"empty"===x?null:"blur"===x?`url("data:image/svg+xml;charset=utf-8,${(0,r.getImageBlurSvg)({widthInt:H,heightInt:U,blurWidth:M,blurHeight:V,blurDataURL:S||"",objectFit:Z.objectFit})}")`:`url("${x}")`,Y=s.includes(Z.objectFit)?"fill"===Z.objectFit?"100% 100%":"cover":Z.objectFit,Q=$?{backgroundSize:Y,backgroundPosition:Z.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:$}:{},X=function({config:e,src:t,unoptimized:n,width:r,quality:a,sizes:s,loader:o}){if(n){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(t.includes("/_next/static/immutable")&&!(0,i.getAssetToken)())e=void 0;else if(e){let n=t.indexOf("?");if(-1!==n){let i=new URLSearchParams(t.slice(n+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,n)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:d}=function({deviceSizes:e,allSizes:t},n,i){if(i){let n=/(^|\s)(1?\d?\d)vw/g,r=[];for(let e;e=n.exec(i);)r.push(parseInt(e[2]));if(r.length){let n=.01*Math.min(...r);return{widths:t.filter(t=>t>=e[0]*n),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,r,s),c=l.length-1;return{sizes:s||"w"!==d?s:"100vw",srcSet:l.map((n,i)=>`${o({config:e,src:t,quality:a,width:n})} ${"w"===d?n:i+1}${d}`).join(", "),src:o({config:e,src:t,quality:a,width:l[c]})}}({config:F,src:e,unoptimized:n,width:H,quality:J,sizes:t,loader:G}),ee=_?"lazy":h;return{props:{...C,loading:ee,fetchPriority:A,width:H,height:U,decoding:z,className:p,style:{...Z,...Q},sizes:X.sizes,srcSet:X.srcSet,src:y||X.src},meta:{unoptimized:n,preload:u||c,placeholder:x,fill:b}}}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return d}});let i=e.r(43476),r=e.r(71645),a=e.r(67585),s=e.r(52157);function o(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},d=function(e){let t={...l,...e},n=(0,r.lazy)(()=>t.loader().then(o)),d=t.loading;function c(e){let o=d?(0,i.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,c=l?r.Suspense:r.Fragment,u=t.ssr?(0,i.jsxs)(i.Fragment,{children:["u"<typeof window?(0,i.jsx)(s.PreloadChunks,{moduleIds:t.modules}):null,(0,i.jsx)(n,{...e})]}):(0,i.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,i.jsx)(n,{...e})});return(0,i.jsx)(c,{...l?{fallback:o}:{},children:u})}return c.displayName="LoadableComponent",c}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let i=e.r(55682)._(e.r(69093));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,i.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esMo
3dule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},98879,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return o}});let i=e.r(71645),r="u"<typeof window,a=r?()=>{}:i.useLayoutEffect,s=r?()=>{}:i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:n}=e;function o(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(e))}}return r&&(t?.mountedInstances?.add(e.children),o()),a(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),a(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},10988,e=>{"use strict";var t=e.i(43476),n=e.i(61745),i=e.i(48148),r=e.i(70703),a=e.i(46932),s=e.i(25138),o=e.i(57688),l=e.i(3116),d=e.i(75254);let c=(0,d.default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);var u=e.i(78917);let h=(0,d.default)("earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),p=(0,d.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),g=(0,d.default)("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);var m=e.i(75157),f=e.i(427),b=e.i(35497);function v({project:e}){let r=(0,n.useLocale)(),s=(0,i.useTranslations)("project"),d=(0,i.useTranslations)("projects.categories"),y=(0,i.useTranslations)("project.app"),k=e.longDescription?.[r]??e.description[r],w=(0,b.getProcessingModelLabel)(e,r),x=(0,b.getPrimaryExternalTarget)(e),S=(0,b.hasLiveExternalTarget)(e),A=(0,b.isNonLiveProject)(e),z=e.plannedLaunchDate,j="sweatkey"===e.slug;return(0,t.jsxs)("section",{id:"overview",className:"relative overflow-hidden py-16 sm:py-24 scroll-mt-24",children:[(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 opacity-[0.06]",style:{background:`radial-gradient(ellipse at 50% 0%, ${e.color} 0%, transparent 60%)`}}),(0,t.jsxs)("div",{className:"relative mx-auto max-w-6xl px-4 sm:px-6",children:[A&&(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.4},role:"status",className:"mb-6 flex items-start gap-3 rounded-xl border border-amber-500/40 bg-amber-500/10 p-4",children:[(0,t.jsx)(l.Clock,{className:"mt-0.5 h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400","aria-hidden":"true"}),(0,t.jsxs)("p",{className:"text-sm leading-relaxed text-amber-800 dark:text-amber-200",children:[(0,t.jsx)("span",{className:"font-semibold",children:s(`availability.${e.status}`)}),e.availabilityNote&&(0,t.jsxs)(t.Fragment,{children:[" ",e.availabilityNote[r]]}),z&&(0,t.jsxs)(t.Fragment,{children:[" ",s("plannedLaunch",{date:new Date(z).toLocaleDateString("de"===r?"de-DE":"en-US",{month:"long",year:"numeric"})})]})]})]}),j&&(0,t.jsx)(a.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.25,duration:.45},className:"absolute right-0 top-16 hidden w-[300px] overflow-hidden rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-2 shadow-2xl shadow-black/15 lg:block xl:w-[340px]",children:(0,t.jsx)(o.default,{src:"/images/projects/sweatkey/01_Today_Zeitguthaben_Schritte.png",alt:"de"===r?"SweatKey Heute Ansicht mit Zeitguthaben, Schritten und geschützten Apps":"SweatKey Today screen showing time balance, steps and protected apps",width:1179,height:2556,priority:!0,sizes:"(max-width: 1279px) 300px, 340px",className:"h-auto w-full rounded-2xl object-contain"})}),(0,t.jsxs)("div",{className:j?"lg:pr-[380px]":"",children:[(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:15}
3,animate:{opacity:1,y:0},transition:{delay:.1,duration:.4},className:"flex flex-wrap items-center gap-3 sm:gap-4",children:[(0,t.jsx)("span",{className:"flex h-12 w-12 sm:h-16 sm:w-16 items-center justify-center rounded-2xl text-2xl sm:text-3xl",style:{backgroundColor:`${e.color}15`},"aria-hidden":"true",children:e.icon}),(0,t.jsx)(f.StatusDot,{status:e.status,className:"rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5"}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)]",children:[(0,t.jsx)(p,{className:"h-3.5 w-3.5","aria-hidden":"true"}),d(e.category)]}),e.appPlatform&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)]",children:[(0,t.jsx)(g,{className:"h-3.5 w-3.5","aria-hidden":"true"}),y(`platform.${e.appPlatform}`)]}),e.appStoreState&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)]",children:[(0,t.jsx)(g,{className:"h-3.5 w-3.5","aria-hidden":"true"}),y(`storeState.${e.appStoreState}`)]}),e.labels?.map(e=>(0,t.jsx)("span",{className:"inline-flex items-center rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)]",children:e[r]},e.en)),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)]",children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5","aria-hidden":"true"}),w]}),S&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-emerald-500/25 bg-emerald-500/10 px-3 py-1.5 text-xs font-semibold text-emerald-700 dark:text-emerald-300",children:[(0,t.jsx)(h,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"app"===e.category&&e.appStoreUrl?y("appStore"):"de"===r?"Live-URL":"Live URL"]}),e.plannedDomain&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-amber-500/25 bg-amber-500/10 px-3 py-1.5 text-xs font-semibold text-amber-700 dark:text-amber-300",children:[(0,t.jsx)(h,{className:"h-3.5 w-3.5","aria-hidden":"true"}),s("app"===e.category?"plannedLandingPage":"plannedDomain"),": ",e.plannedDomain]})]}),(0,t.jsx)(a.motion.h1,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{delay:.2,duration:.4},className:"mt-4 sm:mt-6 text-2xl sm:text-4xl md:text-5xl font-bold tracking-tight",style:{color:e.color},children:e.name}),(0,t.jsx)(a.motion.p,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{delay:.3,duration:.4},className:"mt-2 text-lg font-medium text-[var(--color-text)]",children:e.tagline[r]}),"live"===e.status&&e.launchDate||z||e.developmentStage||e.appPlatform||e.appStoreState||e.appStoreStatus?(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{delay:.35,duration:.4},className:"mt-3 flex flex-wrap gap-3",children:["live"===e.status&&e.launchDate&&(0,t.jsx)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:s("launchDate",{date:new Date(e.launchDate).toLocaleDateString("de"===r?"de-DE":"en-US",{month:"long",year:"numeric"})})}),z&&(0,t.jsx)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:s("plannedLaunch",{date:new Date(z).toLocaleDateString("de"===r?"de-DE":"en-US",{month:"long",year:"numeric"})})}),e.developmentStage&&(0,t.jsxs)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:[s("developmentStage"),": ",e.developmentStage[r]]}),e.appPlatform&&(0,t.jsxs)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:[y("platformLabel"),":"," ",y(`platform.${e.appPlatform}`)]}),e.appStoreState&&(0,t.jsxs)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:[s("appStoreStatus"),":"," ",y(`storeState.${e.appStoreState}`)]}),e.appStoreStatus&&!e.appStoreState&&(0,t.jsxs)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:[s("appStoreStatus"),": ",e.appStoreStatus[r]]}),e.lastUpdate&&e.lastUpdate!==e.launchDate&&(0,t.jsx)("span",{className:"text-xs font-mono text-[var(--color-muted)]",children:s("lastUpdate",{date:new Date(e.lastUpdate).toLocaleDateString("de"===r?"de-DE":"en-US",{month:"long",year:"numeric"})})})]}):null,(0,t.jsx)(a.motion.p,{initial:{opacity:0,y:15}
3,animate:{opacity:1,y:0},transition:{delay:.4,duration:.4},className:"mt-4 max-w-2xl text-base leading-relaxed text-[var(--color-muted)]",children:k}),(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{delay:.5,duration:.4},className:"mt-6 sm:mt-8 flex flex-col sm:flex-row gap-3",children:["live"===e.status&&e.url&&(0,t.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("inline-flex items-center justify-center gap-2 rounded-xl px-5 py-3 min-h-[48px] text-sm font-semibold text-white","transition-all duration-200","hover:-translate-y-0.5 hover:shadow-lg active:translate-y-0","focus-visible:outline-2 focus-visible:outline-offset-2"),style:{backgroundColor:e.color,boxShadow:`0 4px 14px ${e.color}30`,outlineColor:e.color},children:[s("app"===e.category?"officialWebsite":"useNow"),(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"}),(0,t.jsx)("span",{className:"sr-only",children:"(opens in new tab)"})]}),"live"===e.status&&e.chromeUrl&&(0,t.jsxs)("a",{href:e.chromeUrl,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("inline-flex items-center justify-center gap-2 rounded-xl border border-[var(--color-border)] px-5 py-3 min-h-[48px] text-sm font-semibold","text-[var(--color-text)] transition-all duration-200","hover:-translate-y-0.5 hover:border-[var(--color-accent)] hover:text-[var(--color-accent)]","active:translate-y-0","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:["🌐 ",s("chromeStore")]}),"live"===e.status&&e.firefoxUrl&&(0,t.jsxs)("a",{href:e.firefoxUrl,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("inline-flex items-center justify-center gap-2 rounded-xl border border-[var(--color-border)] px-5 py-3 min-h-[48px] text-sm font-semibold","text-[var(--color-text)] transition-all duration-200","hover:-translate-y-0.5 hover:border-[var(--color-accent)] hover:text-[var(--color-accent)]","active:translate-y-0","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:["🦊 ",s("firefoxAddons")]}),"live"===e.status&&e.appStoreUrl&&(0,t.jsxs)("a",{href:e.appStoreUrl,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("inline-flex items-center justify-center gap-2 rounded-xl border border-[var(--color-border)] px-5 py-3 min-h-[48px] text-sm font-semibold","text-[var(--color-text)] transition-all duration-200","hover:-translate-y-0.5 hover:border-[var(--color-accent)] hover:text-[var(--color-accent)]","active:translate-y-0","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:[y("viewOnAppStore"),(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"}),(0,t.jsx)("span",{className:"sr-only",children:"(opens in new tab)"})]}),A&&!x&&(0,t.jsxs)("span",{className:(0,m.cn)("inline-flex items-center justify-center gap-2 rounded-xl border px-5 py-3 min-h-[48px] text-sm font-semibold","border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-muted)]"),children:[(0,t.jsx)(l.Clock,{className:"h-4 w-4","aria-hidden":"true"}),s(`actions.${e.status}`)]})]}),j&&(0,t.jsx)(a.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.55,duration:.45},className:"mx-auto mt-8 w-full max-w-[320px] overflow-hidden rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-2 shadow-xl shadow-black/10 lg:hidden",children:(0,t.jsx)(o.default,{src:"/images/projects/sweatkey/01_Today_Zeitguthaben_Schritte.png",alt:"de"===r?"SweatKey Heute Ansicht mit Zeitguthaben, Schritten und geschützten Apps":"SweatKey Today screen showing time balance, steps and protected apps",width:1179,height:2556,priority:!0,sizes:"(max-width: 767px) 88vw, 320px",className:"h-auto w-full rounded-2xl object-contain"})})]})]})]})}let y={description:{de:"Details",en:"Details"},"how-it-works":{de:"Ablauf",en:"How it works"},workflow:{de:"Workflow",en:"Workflow"},"use-cases":{de:"Use Cases",en:"Use cases"},tech:{de:"Tech",en:"Tech"},privacy:{de:"Datenschutz",en:"Privacy"},highlights:{de:"Highlights",en:"Highlights"},"how-to-install":{de:"Installation",en:"Install"}};function k({project:e,locale:n}){let i=[{href:"#overview",label:"de"===n?"Überblick":"Overview",visible:!0},...(e.sections??[]).map(e=>({href:`#${e.id}`,label:y[e.id]?.[n]??e.title[n],visible:!0})),{href:"#features",label:"Features",visible:!!e.features?.length},{href:"#screenshots",label:"de"===n?"Einblicke":"Screenshots",visible:!!e.screenshotSlots?.length},{href:"#architecture",label:"de"===n?"Architektur":"Architecture",visible:!!e.architecture},{href:"#roadmap",label:"Roadmap",visible:!!e.roadmap?.length},{href:"#faq",label:"FAQ",visible:!!e.faq?.length}].filter(e=>e.visible);return i.length<=1?null:(0,t.jsx)("nav",{"aria-label":"de"===n?"Projektseiten-Navigation":"Project page navigation",className:"sticky top-14 z-20 border-y border-[var(--color-border)] bg-[var(--color-bg)]
3/92 backdrop-blur supports-[backdrop-filter]:bg-[var(--color-bg)]/78",children:(0,t.jsx)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:(0,t.jsx)("div",{className:"flex min-h-12 items-center gap-2 overflow-x-auto py-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:i.map(e=>(0,t.jsx)("a",{href:e.href,className:"inline-flex shrink-0 items-center rounded-full border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-1.5 text-xs font-semibold text-[var(--color-muted)] transition-colors hover:border-[var(--color-accent)] hover:text-[var(--color-accent)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]",children:e.label},e.href))})})})}let w=(0,d.default)("lock-keyhole",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]]),x=(0,d.default)("radio-tower",[["path",{d:"M4.9 16.1C1 12.2 1 5.8 4.9 1.9",key:"s0qx1y"}],["path",{d:"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5",key:"1idnkw"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}],["path",{d:"M16.2 4.8c2 2 2.26 5.11.8 7.47",key:"ojru2q"}],["path",{d:"M19.1 1.9a9.96 9.96 0 0 1 0 14.1",key:"rhi7fg"}],["path",{d:"M9.5 18h5",key:"mfy3pd"}],["path",{d:"m8 22 4-11 4 11",key:"25yftu"}]]),S=(0,d.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);function A({project:e,locale:n}){let i=(0,b.getAccountRequirement)(e,n),r=(0,b.hasLiveExternalTarget)(e),a=[{label:"Status",value:(0,t.jsx)(f.StatusDot,{status:e.status}),icon:x},{label:"de"===n?"Verarbeitung":"Processing",value:e.signalSummary?.[n]??(0,b.getProcessingModelLabel)(e,n),icon:S},{label:"Account",value:"unknown"===i?"de"===n?"Nicht angegeben":"Not specified":(0,b.getAccountRequirementLabel)(e,n),icon:w},{label:"de"===n?"Live-Version":"Live version",value:r?"de"===n?"Vorhanden":"Available":e.plannedDomain?"app"===e.category?"de"===n?"Geplante Landingpage":"Planned landing page":"de"===n?"Geplante Domain":"Planned domain":"de"===n?"Keine Live-URL":"No live URL",icon:u.ExternalLink}];return(0,t.jsx)("section",{"aria-label":"de"===n?"Technische Projektzusammenfassung":"Technical project summary",className:"-mt-8 pb-6 sm:-mt-10 sm:pb-10",children:(0,t.jsx)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:(0,t.jsx)("div",{className:"grid gap-3 rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)] p-3 shadow-sm sm:grid-cols-2 sm:p-4 lg:grid-cols-4",children:a.map(n=>{let i=n.icon;return(0,t.jsxs)("div",{className:"flex min-h-[72px] items-center gap-3 rounded-xl bg-[var(--color-bg)] px-3 py-3",children:[(0,t.jsx)("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${e.color}14`},"aria-hidden":"true",children:(0,t.jsx)(i,{className:"h-4 w-4",style:{color:e.color}})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--color-muted)]",children:n.label}),(0,t.jsx)("div",{className:"mt-1 text-sm font-semibold text-[var(--color-text)]",children:n.value})]})]},n.label)})})})})}function z({project:e}){let r=(0,i.useTranslations)("project.preview"),s=(0,n.useLocale)();if("live"!==e.status||!e.url)return null;let o=e.url.replace(/^https?:\/\//,"").replace(/\/$/,""),l=e.features?.slice(0,3);return(0,t.jsx)("section",{className:"py-8 sm:py-12",children:(0,t.jsx)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:(0,t.jsx)(a.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:(0,t.jsxs)("div",{className:(0,m.cn)("overflow-hidden rounded-2xl border border-[var(--color-border)]","bg-[var(--color-card)] shadow-lg"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3 border-b border-[var(--color-border)] bg-[var(--color-card)] px-3 py-2.5 sm:px-4 sm:py-3",children:[(0,t.jsxs)("div",{className:"flex gap-1.5","aria-hidden":"true",children:[(0,t.jsx)("span",{className:"h-2 w-2 rounded-full bg-red-400/80 sm:h-3 sm:w-3"}),(0,t.jsx)("span",{className:"h-2 w-2 rounded-full bg-yellow-400/80 sm:h-3 sm:w-3"}),(0,t.jsx)("span",{className:"h-2 w-2 rounded-full bg-green-400/80 sm:h-3 sm:w-3"})]}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 rounded-lg bg-[var(--color-bg)] px-3 py-1.5",children:(0,t.jsx)("span",{className:"truncate text-xs text-[var(--color-muted)]",children:o})}),(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[var(--color-muted)] transition-colors hover:bg-[var(--color-border)] hover:text-[var(--color-text)] focu
3s-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]","aria-label":`${r("openExternal")}: ${e.name} (opens in new tab)`,children:(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]}),(0,t.jsxs)("div",{className:"relative aspect-[16/11] min-h-[360px] bg-[var(--color-bg)] sm:aspect-[16/9] sm:min-h-[520px]",children:[(0,t.jsx)("iframe",{src:e.url,title:`${e.name} live website preview`,loading:"lazy",referrerPolicy:"strict-origin-when-cross-origin",sandbox:"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts",className:"h-full w-full border-0"}),(0,t.jsxs)("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 flex flex-col gap-3 bg-gradient-to-t from-[var(--color-card)] via-[var(--color-card)]/86 to-transparent p-4 pt-16 sm:flex-row sm:items-end sm:justify-between sm:p-5 sm:pt-20",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-bold text-[var(--color-text)]",children:e.name}),(0,t.jsx)("p",{className:"mt-1 max-w-2xl text-xs leading-relaxed text-[var(--color-muted)] sm:text-sm",children:e.tagline[s]}),l&&l.length>0&&(0,t.jsx)("div",{className:"mt-3 flex flex-wrap gap-2",children:l.map((e,n)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border)] bg-[var(--color-card)]/90 px-3 py-1 text-[11px] font-medium text-[var(--color-muted)] backdrop-blur-sm",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:e.icon}),e.title[s]]},n))})]}),(0,t.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("pointer-events-auto inline-flex min-h-[44px] shrink-0 items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold text-white","transition-all duration-200","hover:-translate-y-0.5 hover:shadow-lg","focus-visible:outline-2 focus-visible:outline-offset-2"),style:{backgroundColor:e.color,boxShadow:`0 4px 14px ${e.color}30`,outlineColor:e.color},children:[r("fallbackButton"),(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"}),(0,t.jsx)("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]})]})})})})}var j=e.i(71645);let P={};function N({project:e}){let i=(0,n.useLocale)(),r=P[e.slug];if(!r)return null;let a=(0,j.lazy)(r),s="live"===e.status?e.url?.replace(/^https?:\/\//,"").replace(/\/$/,""):void 0;return(0,t.jsx)("section",{className:"py-8 sm:py-12",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsx)("h2",{className:"text-xl font-bold tracking-tight text-[var(--color-text)] sm:text-2xl mb-6",children:"de"===i?"Demo ausprobieren":"Try the demo"}),(0,t.jsxs)("div",{className:(0,m.cn)("overflow-hidden rounded-2xl border border-[var(--color-border)]","bg-[var(--color-card)] shadow-lg"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3 border-b border-[var(--color-border)] bg-[var(--color-card)] px-3 sm:px-4 py-2.5 sm:py-3",children:[(0,t.jsxs)("div",{className:"flex gap-1.5","aria-hidden":"true",children:[(0,t.jsx)("span",{className:"h-2 w-2 sm:h-3 sm:w-3 rounded-full bg-red-400/80"}),(0,t.jsx)("span",{className:"h-2 w-2 sm:h-3 sm:w-3 rounded-full bg-yellow-400/80"}),(0,t.jsx)("span",{className:"h-2 w-2 sm:h-3 sm:w-3 rounded-full bg-green-400/80"})]}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 rounded-lg bg-[var(--color-bg)] px-3 py-1.5",children:(0,t.jsx)("span",{className:"truncate text-xs text-[var(--color-muted)]",children:s||e.slug})}),"live"===e.status&&e.url&&(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[var(--color-muted)] hover:bg-[var(--color-border)] hover:text-[var(--color-text)] transition-colors","aria-label":"de"===i?"Website öffnen":"Open website",children:(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5"})})]}),(0,t.jsx)("div",{className:"p-4 sm:p-6",children:(0,t.jsx)(j.Suspense,{fallback:(0,t.jsx)("div",{className:"flex h-32 items-center justify-center",children:(0,t.jsx)("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-[var(--color-accent)] border-t-transparent"})}),children:(0,t.jsx)(a,{})})})]})]})})}let D=(0,d.default)("book-open-text",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M16 12h2",key:"7q9ll5"}],["path",{d:"M16 8h2",key:"msurwy"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}],["path",{d:"M6 12h2",key:"32wvfc"}],["path",{d:"M6 8h2",key:"30oboj"}]]),W=(0,d.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),C=(0,d.default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]),T=(0,d.default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 
31.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]),E=(0,d.default)("users-round",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]),F=(0,d.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);var M=e.i(9305);let V={description:{icon:W,tone:"neutral"},"how-it-works":{icon:C,tone:"neutral"},workflow:{icon:C,tone:"neutral"},"use-cases":{icon:E,tone:"neutral"},tech:{icon:c,tone:"technical"},privacy:{icon:S,tone:"privacy"},highlights:{icon:T,tone:"neutral"},"how-to-install":{icon:F,tone:"neutral"}};function L(e){return V[e]??{icon:D,tone:"neutral"}}function K({project:e}){let i=(0,n.useLocale)();return e.sections?.length?(0,t.jsx)("div",{className:"py-6 sm:py-12",children:(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"w-full space-y-5 sm:space-y-6",children:e.sections.map((n,r)=>{let a;return(0,t.jsx)(M.AnimatedSection,{delay:.05*r,children:(0,t.jsxs)("section",{id:n.id,className:(0,m.cn)("scroll-mt-28 rounded-2xl border bg-[var(--color-card)] p-5 sm:p-7","border-[var(--color-border)]","technical"===L(n.id).tone&&"border-sky-500/25 bg-sky-500/[0.04]","privacy"===L(n.id).tone&&"border-emerald-500/25 bg-emerald-500/[0.04]"),"aria-labelledby":`${n.id}-heading`,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",style:{backgroundColor:`${e.color}14`},"aria-hidden":"true",children:(a=L(n.id).icon,(0,t.jsx)(a,{className:"h-4 w-4",style:{color:e.color}}))}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--color-muted)]",children:String(r+1).padStart(2,"0")}),(0,t.jsx)("h2",{id:`${n.id}-heading`,className:"mt-1 text-xl font-bold tracking-tight text-[var(--color-text)] sm:text-2xl",children:n.title[i]})]})]}),(0,t.jsx)("div",{className:"mt-5 space-y-4",children:n.content[i].split("\n\n").map((e,n)=>(0,t.jsx)("p",{className:(0,m.cn)("text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",0===n&&"text-[var(--color-text)]"),children:e},n))})]})},n.id)})})})}):null}var I=e.i(60630);let B={user:{bg:"#64748b20",border:"#64748b",text:"#475569",tkey:"legendUser"},client:{bg:"#10b98120",border:"#10b981",text:"#059669",tkey:"legendLocal"},server:{bg:"#eab30820",border:"#eab308",text:"#a16207",tkey:"legendServer"},database:{bg:"#3b82f620",border:"#3b82f6",text:"#2563eb",tkey:"legendDatabase"},external:{bg:"#a855f720",border:"#a855f7",text:"#9333ea",tkey:"legendExternal"},storage:{bg:"#14b8a620",border:"#14b8a6",text:"#0d9488",tkey:"legendStorage"}};function O(e,t,n,i){let r=n-e,a=i-t;if(0===r&&0===a)return{x:e,y:t};let s=Math.abs(r)||1,o=Math.abs(a)||1,l=s/81>o/45?81/s:45/o;return{x:e+r*l,y:t+a*l}}function G({project:e,locale:n}){let r,s=(0,i.useTranslations)("project.architecture"),o=(0,I.useReducedMotion)(),[l,d]=(0,j.useState)(null),[c,u]=(0,j.use
3State)(null);if(!e.architecture)return null;let{architecture:h}=e,p=l??c,g=new Map;for(let e of h.nodes)g.set(e.id,e);let m=e=>({cx:e.x/100*900,cy:e.y/100*460,x:e.x/100*900-75,y:e.y/100*460-39}),f=Array.from(new Set(h.nodes.map(e=>e.type))),b=h.nodes.map(e=>`${e.label[n]}: ${e.description[n]}`).join(". ");return(0,t.jsx)("section",{id:"architecture","aria-labelledby":"architecture-heading",className:"scroll-mt-28 py-12 sm:py-16",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsxs)(M.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"architecture-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:h.title[n]}),(0,t.jsx)("p",{className:"mt-3 max-w-2xl text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:h.description[n]}),(0,t.jsx)("p",{className:"mt-2 text-xs text-[var(--color-muted)]",children:s("hoverHint")})]}),(0,t.jsx)(M.AnimatedSection,{delay:.1,children:(0,t.jsxs)("div",{className:"mt-6 overflow-x-auto rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)] p-3 sm:p-6",children:[(0,t.jsxs)("svg",{viewBox:"0 0 900 460",className:"w-full h-auto",role:"img","aria-label":h.title[n],style:{minWidth:560},children:[(0,t.jsx)("title",{children:h.title[n]}),(0,t.jsx)("desc",{children:b}),(0,t.jsxs)("defs",{children:[(0,t.jsx)("marker",{id:`arrow-${e.slug}`,viewBox:"0 0 10 10",refX:"9",refY:"5",markerUnits:"strokeWidth",markerWidth:"6",markerHeight:"6",orient:"auto",children:(0,t.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--color-muted)"})}),(0,t.jsx)("marker",{id:`arrow-start-${e.slug}`,viewBox:"0 0 10 10",refX:"1",refY:"5",markerUnits:"strokeWidth",markerWidth:"6",markerHeight:"6",orient:"auto",children:(0,t.jsx)("path",{d:"M 10 0 L 0 5 L 10 10 z",fill:"var(--color-muted)"})})]}),(0,t.jsx)("g",{children:h.connections.map((n,i)=>{let r=g.get(n.from),s=g.get(n.to);if(!r||!s)return null;let l=m(r),d=m(s),c=O(l.cx,l.cy,d.cx,d.cy),u=O(d.cx,d.cy,l.cx,l.cy),h=p===n.from||p===n.to,f=2*Math.hypot(u.x-c.x,u.y-c.y);return(0,t.jsx)(a.motion.line,{x1:c.x,y1:c.y,x2:u.x,y2:u.y,stroke:"var(--color-muted)",strokeWidth:h?2.5:1.8,strokeOpacity:h?1:.5,markerEnd:`url(#arrow-${e.slug})`,markerStart:n.bidirectional?`url(#arrow-start-${e.slug})`:void 0,strokeDasharray:o?void 0:f,initial:o?void 0:{strokeDashoffset:f},whileInView:{strokeDashoffset:0},viewport:{once:!0,margin:"-50px"},transition:{duration:.8,delay:.1*i}},`${n.from}-${n.to}-${i}`)})}),(0,t.jsx)("g",{children:h.nodes.map((e,i)=>{let r=m(e),s=B[e.type],l=p===e.id,h=()=>u(t=>t===e.id?null:e.id);return(0,t.jsxs)(a.motion.g,{initial:o?void 0:{opacity:0,scale:.9},whileInView:{opacity:1,scale:1},viewport:{once:!0,margin:"-50px"},transition:{duration:.35,delay:.2+.08*i},tabIndex:0,role:"button","aria-label":`${e.label[n]}: ${e.description[n]}`,"aria-pressed":l,onMouseEnter:()=>d(e.id),onMouseLeave:()=>d(null),onFocus:()=>u(e.id),onBlur:()=>u(null),onClick:h,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),h())},style:{cursor:"pointer",transform:l&&!o?`translate(${r.cx}px, ${r.cy}px) scale(1.05) translate(${-r.cx}px, ${-r.cy}px)`:void 0,transition:o?void 0:"transform 0.2s ease"},children:[c===e.id&&(0,t.jsx)("rect",{x:r.x-4,y:r.y-4,width:158,height:86,rx:14,ry:14,fill:"none",stroke:"var(--color-accent)",strokeWidth:3,pointerEvents:"none"}),(0,t.jsx)("rect",{x:r.x,y:r.y,width:150,height:78,rx:12,ry:12,fill:s.bg,stroke:s.border,strokeWidth:l?3:2}),(0,t.jsx)("text",{x:r.cx,y:r.cy-8,fontSize:"26",textAnchor:"middle",dominantBaseline:"middle","aria-hidden":"true",children:e.icon}),(0,t.jsx)("text",{x:r.cx,y:r.cy+20,fontSize:"16",fontWeight:"700",textAnchor:"middle",dominantBaseline:"middle",fill:"var(--color-text)",children:e.label[n]})]},e.id)})})]}),p&&((r=g.get(p))?(0,t.jsxs)("div",{className:"mt-4 rounded-lg bg-[var(--color-section-alt)] p-3 text-sm text-[var(--color-text)]",role:"status","aria-live":"polite",children:[(0,t.jsxs)("strong",{children:[r.label[n],":"]})," ",(0,t.jsx)("span",{className:"text-[var(--color-muted)]",children:r.description[n]})]}):null)]})}),(0,t.jsx)(M.AnimatedSection,{delay:.12,children:(0,t.jsx)("div",{className:"mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:h.nodes.map(e=>{let i=B[e.type],r=p===e.id;return(0,t.jsxs)("button",{type:"button","aria-pressed":r,onMouseEnter:()=>d(e.id),onMouseLeave:()=>d(null),onFocus:()=>u(e.id),onBlur:()=>u(null),onClick:()=>u(t=>t===e.id?null:e.id),className:"group min-h-[132px] rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-left transition-colors hover:border-[var(--color-accent)] focu
3s-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]",children:[(0,t.jsxs)("span",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl text-xl",style:{backgroundColor:i.bg,border:`1px solid ${i.border}55`},"aria-hidden":"true",children:e.icon}),(0,t.jsxs)("span",{className:"min-w-0",children:[(0,t.jsx)("span",{className:"block text-sm font-bold text-[var(--color-text)] group-hover:text-[var(--color-accent)]",children:e.label[n]}),(0,t.jsx)("span",{className:"mt-0.5 block text-[11px] font-semibold uppercase tracking-wider text-[var(--color-muted)]",children:s(i.tkey)})]})]}),(0,t.jsx)("span",{className:"mt-3 block text-sm leading-relaxed text-[var(--color-muted)]",children:e.description[n]})]},e.id)})})}),(0,t.jsx)(M.AnimatedSection,{delay:.15,children:(0,t.jsxs)("div",{className:"mt-4",children:[(0,t.jsx)("p",{className:"sr-only",children:s("legend")}),(0,t.jsx)("ul",{className:"flex flex-wrap gap-x-4 gap-y-2 list-none p-0 m-0",children:f.map(e=>{let n=B[e];return(0,t.jsxs)("li",{className:"flex items-center gap-2 text-xs text-[var(--color-muted)]",children:[(0,t.jsx)("span",{className:"inline-block h-3 w-3 rounded",style:{backgroundColor:n.bg,border:`2px solid ${n.border}`},"aria-hidden":"true"}),s(n.tkey)]},e)})})]})})]})})}let R=(0,d.default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),q=(0,d.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),H=(0,d.default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);function U({item:e}){return"done"===e.status?(0,t.jsx)(R,{className:"h-4 w-4 text-emerald-500"}):"in-progress"===e.status?(0,t.jsx)(H,{className:"h-4 w-4 text-sky-500"}):(0,t.jsx)(q,{className:"h-4 w-4 text-[var(--color-muted)]"})}function _({project:e}){let r=(0,n.useLocale)(),a=(0,i.useTranslations)("project.roadmap");return e.roadmap?.length?(0,t.jsx)("section",{id:"roadmap",className:"scroll-mt-28 py-12 sm:py-16",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:a("title")})}),(0,t.jsx)("div",{className:"mt-8 grid gap-3",children:e.roadmap.map((n,i)=>(0,t.jsxs)("div",{className:(0,m.cn)("flex gap-3 rounded-2xl border border-[var(--color-border)]","bg-[var(--color-card)] p-4"),children:[(0,t.jsx)("span",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-xl",style:{backgroundColor:`${e.color}14`},"aria-hidden":"true",children:(0,t.jsx)(U,{item:n})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h3",{className:"text-sm font-bold text-[var(--color-text)]",children:n.title[r]}),n.description&&(0,t.jsx)("p",{className:"mt-1 text-sm leading-relaxed text-[var(--color-muted)]",children:n.description[r]})]})]},`${n.title.en}-${i}`))})]})}):null}var J=e.i(72520);let Z=(0,d.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);function $({title:e,description:n,children:i}){return(0,t.jsx)("section",{className:"py-12 sm:py-16",children:(0,t.jsxs)("div",{className:"mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8",children:[(0,t.jsxs)(M.AnimatedSection,{children:[(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:e}),n&&(0,t.jsx)("p",{className:"mt-3 w-full text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:n})]}),(0,t.jsx)("div",{className:"mt-6 sm:mt-8",children:i})]})})}function Y({data:e,color:i}){let r=(0,n.useLocale)(),s=(0,I.useReducedMotion)();return(0,t.jsx)($,{title:e.title[r],description:e.description?.[r],children:(0,t.jsx)("ol",{className:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-stretch sm:gap-4 list-none p-0",children:e.steps.map((n,o)=>(0,t.jsxs)("li",{className:"flex flex-col sm:flex-row sm:items-stretch sm:flex-1 sm:min-w-[180px]",children:[(0,t.jsxs)(a.motion.div,{initial:s?{}:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-30px"},transition:{duration:.3,delay:.08*o},className:"flex flex-1 flex-col rounded-xl border border-[var(--color-border)] bg-[var(--color-card)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full font-mono text-xs font-bold text-white",style:{backgroundColor:i},"aria-hidden":"true",children:o+1}),(0,t.jsx)("span",{className:"text-lg","aria-hidden":"true",children:n.icon}),(0,t.jsx)("h3",{className:"text-sm font-bold text-[var(--color-text)]",children:n.label[r]})]}),n.description&&(0,t.jsx)("p",{className:"mt-3 text-xs leading-relaxed text-[var(--color-muted)] sm:text-sm",children:n.description[r]}),n.duration&&(0,t.jsx)("p",{className:"mt-3 font-mono text-[10px] uppercase tracking-wider text-[var(--color-muted)]",children:n.duration[r]})]}),o<e.steps.length-1&&(0,t.jsxs)("div",{className:"flex items-center justify-center p-2 text-[var(--color-muted)]","aria-hidden":"true",children:[(0,t.jsx)(Z,{className:"h-4 w-4 sm:hidden"}),(0,t.jsx)(J.ArrowRight,{className:"hidden h-4 w-4 sm:block"})]})]},o))})})}function Q({data:e,color:i}){let r=(0,n.useLocale)(),s=(0,I.useReducedMotion)();return(0,t.jsx)($,{title:e.title[r],description:e.description?.[r],children:(0,t.jsx)("div",{className:"w-full",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)] p-6 sm:p-8",children:[(0,t.jsxs)(a.motion.div,{initial:s?{}:{opacity:0,scale:.9},whileInView:{opacity:1,scale:1},viewport:{once:!0},transition:{duration:.3},className:"mx-auto flex max-w-xs items-center gap-3 rounded-xl border-2 p-4",style:{borderColor:i,backgroundColor:`${i}10`},children:[(0,t.jsx)("span",{className:"text-2xl","aria-hidden":"true",children:e.center.icon}),(0,t.jsx)("span",{className:"text-base font-bold text-[var(--color-text)]",children:e.center.label[r]})]}),(0,t.jsx)("ul",{className:"mt-6 grid grid-cols-1 gap-3 list-none p-0 sm:grid-cols-2 lg:grid-cols-3",children:e.items.map((e,n)=>(0,t.jsxs)(a.motion.li,{initial:s?{}:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-30px"},transition:{duration:.25,delay:.05+.03*n},className:"rounded-lg border border-[var(--color-border)] bg-[var(--color-bg)] p-3 transition-colors hover:border-[var(--color-accent)]/40",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-base","aria-hidden":"true",children:e.icon}),(0,t.jsx)("h4",{className:"text-sm font-semibold text-[var(--color-text)]",children:e.label[r]})]}),e.description&&(0,t.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[var(--color-muted)]",children:e.description[r]})]},n))})]})})})}let X=[{bg:"#10b98115",border:"#10b981",text:"#059669"},{bg:"#3b82f615",border:"#3b82f6",text:"#2563eb"},{bg:"#a855f715",border:"#a855f7",text:"#9333ea"},{bg:"#eab30815",border:"#eab308",text:"#a16207"},{bg:"#14b8a615",border:"#14b8a6",text:"#0d9488"},{bg:"#f4716615",border:"#f47166",text:"#dc2626"}];function ee({data:e}){let i=(0,n.useLocale)(),r=(0,I.useReducedMotion)();return(0,t.jsx)($,{title:e.title[i],description:e.description?.[i],children:(0,t.jsx)("ol",{className:"flex w-full flex-col gap-2 list-none p-0",children:[...e.layers].reverse().map((n,s)=>{let o=e.layers.length-1-s,l=X[o%X.length];return(0,t.jsxs)(a.motion.li,{initial:r?{}:{opacity:0,y:12},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-30px"},transition:{duration:.3,delay:.07*s},className:"rounded-xl border-2 p-4",style:{backgroundColor:l.bg,borderColor:l.border},children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-wider",style:{color:l.text},children:n.name}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:n.tech.map(e=>(0,t.jsx)("span",{className:"rounded-md bg-[var(--color-card)] px-2 py-0.5 font-mono text-[11px] text-[var(--color-text)]",children:e},e))})]}),n.description&&(0,t.jsx)("p",{className:"mt-2 text-xs leading-relaxed text-[var(--color-muted)] sm:text-sm",children:n.description[i]})]},o)})})})}function et({data:e,color:i}){let r=(0,n.useLocale)(),s=(0,I.useReducedMotion)();return(0,t.jsx)($,{title:e.title[r],description:e.description?.[r],children:(0,t.jsx)("div",{className:"w-full",children:(0,t.jsx)("ol",{className:"flex flex-col gap-0 list-none p-0",children:e.states.map((n,o)=>{var l;let d="start"===(l=n.kind)?{bg:"#10b98115",border:"#10b981"}:"end"===l?{bg:"#14b8a615",border:"#14b8a6"}:"error"===l?{bg:"#f4716615",border:"#f47166"}:{bg:`${i}10`,border:i}
3,c=e.transitions.filter(e=>e.from===n.id);return(0,t.jsxs)(a.motion.li,{initial:s?{}:{opacity:0,x:-10},whileInView:{opacity:1,x:0},viewport:{once:!0,margin:"-30px"},transition:{duration:.3,delay:.1*o},children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-xl border-2 p-4 "+("end"===n.kind?"ring-2 ring-offset-2 ring-[var(--color-accent)]/20 ring-offset-[var(--color-bg)]":""),style:{backgroundColor:d.bg,borderColor:d.border},children:["start"===n.kind&&(0,t.jsx)("span",{className:"font-mono text-[10px] font-bold uppercase tracking-wider text-emerald-600 dark:text-emerald-400","aria-hidden":"true",children:"START"}),"end"===n.kind&&(0,t.jsx)(R,{className:"h-4 w-4 text-teal-600 dark:text-teal-400","aria-hidden":"true"}),(0,t.jsx)("span",{className:"text-sm font-bold text-[var(--color-text)]",children:n.label[r]}),n.description&&(0,t.jsxs)("span",{className:"hidden text-xs text-[var(--color-muted)] sm:inline",children:["— ",n.description[r]]})]}),c.length>0&&(0,t.jsx)("ol",{className:"ml-4 list-none p-0",children:c.map((n,i)=>{let a=e.states.find(e=>e.id===n.to);return(0,t.jsxs)("li",{className:"flex items-center gap-2 py-2 text-xs text-[var(--color-muted)]",children:[(0,t.jsx)(Z,{className:"h-3 w-3 shrink-0","aria-hidden":"true"}),(0,t.jsx)("span",{className:"rounded bg-[var(--color-card)] px-2 py-0.5 font-mono text-[11px]",children:n.label[r]}),a&&(0,t.jsxs)("span",{className:"text-[var(--color-muted)]",children:["→ ",a.label[r]]})]},i)})})]},n.id)})})})})}function en({data:e,color:i}){let r=(0,n.useLocale)(),s=(0,I.useReducedMotion)();return(0,t.jsx)($,{title:e.title[r],description:e.description?.[r],children:(0,t.jsx)("div",{className:"rounded-2xl border-2 p-4 sm:p-6",style:{borderColor:i},children:(0,t.jsx)("ul",{className:"grid grid-cols-1 gap-4 list-none p-0 sm:grid-cols-2 lg:grid-cols-3",children:e.groups.map((e,n)=>(0,t.jsxs)(a.motion.li,{initial:s?{}:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-30px"},transition:{duration:.3,delay:.06*n},className:"rounded-xl border border-[var(--color-border)] bg-[var(--color-card)] p-4",children:[(0,t.jsx)("h3",{className:"font-mono text-[11px] font-bold uppercase tracking-wider",style:{color:i},children:e.name[r]}),(0,t.jsx)("ul",{className:"mt-3 space-y-2 list-none p-0",children:e.components.map(e=>(0,t.jsxs)("li",{className:"rounded-lg border border-[var(--color-border)] bg-[var(--color-bg)] p-2.5",children:[(0,t.jsx)("span",{className:"font-mono text-xs font-semibold text-[var(--color-text)]",children:e.name}),(0,t.jsx)("p",{className:"mt-1 text-[11px] leading-relaxed text-[var(--color-muted)]",children:e.description[r]})]},e.name))})]},n))})})})}function ei({project:e}){let r=(0,n.useLocale)(),s=(0,i.useTranslations)("project");return e.features?.length?(0,t.jsx)("section",{id:"features",className:"scroll-mt-28 py-16 sm:py-20",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:s("features")})}),(0,t.jsx)("div",{className:"mt-8 grid gap-4 sm:grid-cols-2",children:e.features.map((n,i)=>(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:.08*i,duration:.4},className:(0,m.cn)("group rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)] p-5","transition-all duration-300","hover:border-opacity-50 hover:-translate-y-0.5"),style:{"--hover-border":`${e.color}50`},onMouseEnter:t=>{t.currentTarget.style.borderColor=`${e.color}50`},onMouseLeave:e=>{e.currentTarget.style.borderColor=""},children:[(0,t.jsx)("span",{className:"text-2xl","aria-hidden":"true",children:n.icon}),(0,t.jsx)("h3",{className:"mt-3 text-sm font-bold text-[var(--color-text)]",children:n.title[r]}),(0,t.jsx)("p",{className:"mt-1.5 text-sm leading-relaxed text-[var(--color-muted)]",children:n.desc[r]})]},i))})]})}):null}let er=(0,d.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);function ea({screenshots:e,slots:r,color:a="var(--color-accent)",appName:s}){let o=(0,i.useTranslations)("project"),l=(0,n.useLocale)();return e?.length||r?.length?r?.length?(0,t.jsx)("section",{id:"screenshots",className:"scroll-mt-28 py-16 sm:py-20","aria-labelledby":"screenshots-heading",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsxs)(M.AnimatedSection,{children:[(0,t.jsx)("h2",{id:"screenshots-heading",className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:"de"===l?`${s??"Die App"} in Aktion`:`${s??"The app"} in action`}),(0,t.jsx)("p",{className:"mt-3 max-w-2xl text-sm leading-relaxed text-[var(--color-muted)]",children:"de"===l?"Echte App-Screenshots werden vor der Veröffentlichung ergänzt.":"Real app screenshots will be added before release."})]}),(0,t.jsx)("div",{className:"mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:r.map((e,n)=>(0,t.jsx)("article",{className:"overflow-hidden rounded-2xl border border-[var(--color-border)] bg-[var(--color-card)]",children:(0,t.jsx)("div",{className:"flex aspect-[9/16] items-center justify-center bg-[var(--color-section-alt)] p-5 text-center","aria-label":e.alt[l],children:(0,t.jsxs)("div",{children:[(0,t.jsx)(er,{className:"mx-auto h-8 w-8",style:{color:a},"aria-hidden":"true"}),(0,t.jsx)("p",{className:"mt-3 text-xs font-bold uppercase tracking-wider text-[var(--color-muted)]",children:String(n+1).padStart(2,"0")}),(0,t.jsx)("p",{className:"mt-2 text-sm font-semibold text-[var(--color-text)]",children:e.caption[l]})]})})},e.id))})]})}):(0,t.jsx)("section",{className:"py-16 sm:py-20",children:(0,t.jsx)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center rounded-2xl border border-dashed border-[var(--color-border)] bg-[var(--color-card)]/50 py-20",children:[(0,t.jsx)(er,{className:"h-10 w-10 text-[var(--color-muted)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm text-[var(--color-muted)]",children:o("screenshotsSoon")})]})})})}):null}let es=(0,d.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);function eo({project:e}){let r=(0,n.useLocale)(),s=(0,i.useTranslations)("project");return e.pricing?.length?(0,t.jsx)("section",{className:"py-16 sm:py-20",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:s("pricing")})}),(0,t.jsx)("div",{className:(0,m.cn)("mt-8 grid gap-4",2===e.pricing.length?"sm:grid-cols-2":"sm:grid-cols-3"),children:e.pricing.map((n,i)=>{let o=e.pricing.length>1&&i===e.pricing.length-1;return(0,t.jsxs)(a.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:.1*i,duration:.4},className:(0,m.cn)("relative rounded-2xl border p-6",o?"border-2 bg-[var(--color-card)]":"border-[var(--color-border)] bg-[var(--color-card)]"),style:o?{borderColor:e.color}:void 0,children:[o&&(0,t.jsx)("span",{className:"absolute -top-3 left-1/2 -translate-x-1/2 roun
3ded-full px-3 py-1 text-[11px] font-bold uppercase tracking-wider text-white",style:{backgroundColor:e.color},children:s("recommended")}),(0,t.jsx)("h3",{className:"text-lg font-bold text-[var(--color-text)]",children:n.name}),(0,t.jsx)("div",{className:"mt-2 flex items-baseline gap-1",children:(0,t.jsx)("span",{className:"text-3xl font-extrabold",style:{color:e.color},children:n.price})}),(0,t.jsx)("ul",{className:"mt-6 space-y-3",children:n.features.map((n,i)=>(0,t.jsxs)("li",{className:"flex items-start gap-2.5 text-sm text-[var(--color-muted)]",children:[(0,t.jsx)(es,{className:"mt-0.5 h-4 w-4 shrink-0",style:{color:e.color}}),n[r]]},i))})]},n.name)})})]})}):null}let el=(0,d.default)("life-buoy",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);var ed=e.i(98919),ec=e.i(44705),eu=e.i(22016);let eh="[email protected]",ep=`Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany.
4Email: ${eh}
5Supervisory authority: LDI NRW, D\xfcsseldorf.`,eg="You have the right to access, rectification, deletion, restriction, data portability, and objection regarding your personal data. Contact us via email.",em="The right of withdrawal expires for digital content once the contract execution begins, provided the consumer has given prior consent (§ 356 Abs. 5 BGB).",ef=[{slug:"sweatkey",name:"SweatKey",color:"#f97316",email:eh,sections:[{title:{de:"1. Verantwortlicher",en:"1. Data controller"},content:{de:"Verantwortlich für die SweatKey App ist Tom Silas Helmke, c/o Online Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the SweatKey app is Tom Silas Helmke, c/o Online Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Diese Hinweise beschreiben die Verarbeitung durch die SweatKey App. Die Verarbeitung beim Besuch von Tommsel.com, einschließlich Einwilligungen für Website Dienste, ist in der allgemeinen Datenschutzerklärung von Tommsel.com beschrieben.",en:"These notices describe processing by the SweatKey app. Processing when visiting Tommsel.com, including consent for website services, is described in the general Tommsel.com privacy policy."}},{title:{de:"3. Keine Registrierung",en:"3. No registration"},content:{de:"Für die Kernfunktion von SweatKey ist kein Nutzerkonto und kein eigenes Serverkonto vorgesehen.",en:"No user account or custom backend account is planned for the core function of SweatKey."}},{title:{de:"4. Lokale Speicherung",en:"4. Local storage"},content:{de:"Konfiguration, Fortschritt, Regeln, Ziele und Guthabenstand können lokal auf dem Gerät gespeichert werden. Eine Cloud Synchronisierung wird hier nicht beschrieben.",en:"Configuration, progress, rules, challenges, and wallet state can be stored locally on the device. Cloud synchronization is not described here."}},{title:{de:"5. Motion and Fitness",en:"5. Motion and Fitness"},content:{de:"In Version 1 verarbeitet SweatKey Schritte über Motion and Fitness, um Fortschritt und Zeitguthaben zu berechnen. HealthKit ist nicht Bestandteil von Version 1.",en:"In version 1, SweatKey processes steps through Motion and Fitness to calculate progress and time credit. HealthKit is not part of version 1."}},{title:{de:"6. Screen Time und FamilyControls",en:"6. Screen Time and FamilyControls"},content:{de:"Für geschützte Apps verwendet SweatKey Apple FamilyControls, ManagedSettings und DeviceActivity. SweatKey verarbeitet hierfür die von Apple bereitgestellten Auswahl Tokens. Diese Hinweise beschreiben keine Verarbeitung durch Apple Systemdienste.",en:"For protected apps, SweatKey uses Apple FamilyControls, ManagedSettings, and DeviceActivity. SweatKey processes the selection tokens provided by Apple for this purpose. These notices do not describe processing by Apple system services."}},{title:{de:"7. Kamera und lokale Körperposenerkennung",en:"7. Camera and local pose processing"},content:{de:"Unterstützte Übungen können die Kamera und Apple Vision für lokale Körperposenerkennung verwenden. Kamera und Pose Verarbeitung erfolgen durch SweatKey auf dem Gerät.",en:"Supported workouts can use the camera and Apple Vision for local body pose recognition. Camera and pose processing take place on device by SweatKey."}},{title:{de:"8. Optionale Trainingsaufnahme und Fotos",en:"8. Optional workout recording and photos"},content:{de:"Trainingsvideos werden standardmäßig nicht gespeichert. Eine optionale Trainingsaufnahme kann in Pro verfügbar sein und bleibt lokal, bis du sie selbst in Fotos speicherst. Audio kann nur verwendet werden, wenn du es für eine Aufnahme aktivierst.",en:"Workout videos are not stored by default. An optional workout recording can be available in Pro and remains local until you choose to save it to Photos. Audio can only be used when you enable it for a recording."}},{title:{de:"9. StoreKit Käufe",en:"9. StoreKit purchases"},content:{de:"Pro wird ausschließlich durch ein verifiziertes aktives StoreKit Entitlement freigeschaltet. Ohne gültiges Entitlement bleibt die App Free. Bei Ablauf oder Widerruf werden Pro Funktionen gesperrt, lokale Daten bleiben erhalten. Kaufabwicklung und Zahlungen erfolgen über Apple.",en:"Pro unlocks exclusively through a verified active StoreKit entitlement. Without a valid entitlement, the app remains Free. When it expires or is revoked, Pro functions are locked and local data remains available. Purchase processing and payments take place through Apple."}},{title:{de:"10. Keine Nutzungsanalyse, Werbung oder Werbetracking",en:"10. No app analytics, advertising, or advertising tracking"},content:{de:"SweatKey verwendet keine Nutzungsanalyse, keine Werbung und kein Werbetracking.",en:"SweatKey uses no app analytics, advertising, or advertising tracking."}},{title:{de:"11. Lokale Daten löschen",en:"11. Delete local data"},content:{de:"Lokale App Daten können über die Funktionen und Einstellungen der App sowie durch das Entfernen der App vom Gerät gelöscht werden. Die jeweils verfügbaren iOS Optionen können sich unter
5scheiden.",en:"Local app data can be deleted through the app functions and settings, as well as by removing the app from the device. Available iOS options can differ."}},{title:{de:"12. Rechte und Kontakt",en:"12. Rights and contact"},content:{de:"Du kannst dich mit Fragen zu Datenschutz und deinen Rechten per E Mail an [email protected] wenden.",en:"You can contact [email protected] by email with questions about privacy and your rights."}},{title:{de:"13. Änderungen dieser Datenschutzerklärung",en:"13. Changes to this privacy policy"},content:{de:"Diese Datenschutzerklärung kann angepasst werden, wenn sich Funktionen oder Datenverarbeitung von SweatKey ändern.",en:"This privacy policy can be updated when SweatKey functions or data processing change."}}]},{slug:"linksentry",name:"LinkSentry",color:"#e94560",email:eh,sections:[{title:"1. No Data Collection",content:"LinkSentry does not collect, store, or transmit any personal data. All protection features run locally in your browser."},{title:"2. Blocklist Downloads",content:"The extension downloads blocklists from public security feeds (phishing.army, openphish.com, urlhaus.abuse.ch). Your IP address is transmitted as part of standard HTTP requests."},{title:"3. Domain Checks",content:"For domain age checks, public RDAP servers (rdap.org) and crt.sh are queried. Only the domain name is transmitted."},{title:"4. Payment Processing",content:"Pro purchases are processed through ExtensionPay and Stripe. LinkSentry does not store any payment information."},{title:"5. Local Storage",content:"Settings, statistics, and caches are stored exclusively in your browser (chrome.storage). This data never leaves your computer."},{title:"6. Cookies",content:"LinkSentry does not read cookies. The cookies permission is used exclusively to delete cookies from suspicious domains at the user's explicit request."},{title:"7. Withdrawal",content:em},{title:"8. Responsible Party",content:ep},{title:"9. Your Rights",content:eg}]},{slug:"bayscope",name:"BayScope",color:"#0064D2",email:eh,sections:[{title:"1. Data Collection",content:"BayScope analyzes publicly available eBay listing data directly in your browser. No personal data is collected, stored, or transmitted to our servers."},{title:"2. Local Storage",content:"All analysis results, settings, and cached data are stored exclusively in your browser using chrome.storage. This data never leaves your computer."},{title:"3. eBay Data Access",content:"BayScope reads publicly visible listing information (titles, prices, item specifics, images) from eBay pages you visit. This data is processed locally and is not sent to any external server."},{title:"4. Payment Processing",content:"Pro purchases are processed through ExtensionPay (extensionpay.com) and Stripe. Your email address and payment details are handled directly by Stripe. BayScope does not store any payment information."},{title:"5. No Tracking",content:"BayScope does not use analytics, tracking pixels, or any form of user monitoring. We do not know which eBay pages you visit."},{title:"6. Cookies",content:"BayScope does not read, set, or modify any cookies."},{title:"7. Withdrawal",content:em},{title:"8. Responsible Party",content:ep},{title:"9. Your Rights",content:eg}]},{slug:"fixcosts",name:"FixCosts",color:"#10B981",email:eh,sections:[{title:"1. Data Collection",content:"FixCosts stores your subscription and cost data exclusively in your browser or in your personal Supabase account. We do not share your financial data with third parties."},{title:"2. Account Data",content:"When you create an account, your email address is stored in our authentication system (Supabase Auth). This is required for login functionality."},{title:"3. Financial Data",content:"Your subscription costs, categories, and payment dates are stored in your personal database. This data is only accessible to you and is not shared with third parties."},{title:"4. Payment Processing",content:"Payments are processed through Stripe. Your payment details are handled directly by Stripe. FixCosts does not store credit card numbers or bank details."},{title:"5. Analytics",content:"FixCosts uses Google AdSense for ad display and may use Google Analytics for anonymous usage statistics. You can opt out via the cookie banner."},{title:"6. Hosting",content:"FixCosts is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"7. Withdrawal",content:em},{title:"8. Responsible Party",content:ep},{title:"9. Your Rights",content:eg}]},{slug:"aidetego",name:"AIDetego",color:"#8B5CF6",email:eh,sections:[{title:"1. Data Collection",content:"AIDetego processes text exclusively in your browser. Text you submit for AI detection analysis is NOT sent to external servers. All processing happens locally."},{title:"2. No Text Storage",content:"AIDetego does not store, log, or transmit the text you analyze. Once you close the page, all analyzed content is deleted from memory."},{title:"3. Analytics & Ads",content:"AIDetego uses Google AdSense for ad display. AdSense may use cookies to show personalized ads. You can opt out via the cookie banner."},{title:"4. Hosting",content:"AIDetego is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"5. Withdrawal",content:em},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"companyscontroll",name:"CompanysControll",color:"#F59E0B",email:eh,sections:[{title:"1. Data Collection",content:"CompanysControll stores your business data exclusively in your personal Supabase account. We do not share your business data with third parties."},{title:"2. Account Data",content:"When you create an account, your email address is stored in our authentication system (Supabase Auth). This is required for login functionality."},{title:"3. Business Data",content:"Your company information, invoices, contacts, and financial data are stored in your personal database. This data is only accessible to you and is not shared with third parties."},{title:"4. Payment Processing",content:"Payments are processed through Stripe. Your payment details are handled directly by Stripe. CompanysControll does not store credit card numbers or bank details."},{title:"5. Hosting",content:"CompanysControll is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"6. Withdrawal",content:em},{title:"7. Responsible Party",content:ep},{title:"8. Your Rights",content:eg}]},{slug:"formidex",name:"Formidex",color:"#8b5cf6",email:eh,sections:[{title:"1. No Data Collection",content:"Formidex does not collect, store, or transmit any personal data. All image processing runs entirely in your browser. No images are uploaded to any server."},{title:"2. AI Model Downloads",content:"AI-powered tools (background removal, OCR, upscaling, face detection, alt text) download machine learning models on first use. These models are fetched from Hugging Face, Google and npm CDN servers. Your IP address is transmitted as part of standard HTTP requests. Models are cached in your browser for offline use."},{title:"3. Local Processing",content:"All image processing, including AI-powered features, runs locally in your browser using Canvas API, WebAssembly and WebGPU. No images, results or metadata are sent to any server."},{title:"4. Advertising",content:"Formidex is funded through Google AdSense. Google may use cookies and tracking technologies to display personalized ads. Cookie consent is managed via Google Consent Mode v2."},{title:"5. Hosting",content:"Formidex is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"6. Withdrawal",content:em},{title:"7. Responsible Party",content:ep},{title:"8. Your Rights",content:eg}]},{slug:"piktokoli",name:"Piktokoli",color:"#7c3aed",email:eh,sections:[{title:"1. Local Storage",content:"Piktokoli stores all projects exclusively in your browser's localStorage. No project data is sent to any server. All ranking, voting and decision tools run entirely in your browser."},{title:"2. No Data Collection",content:"Piktokoli does not collect, store, or transmit any personal data. No account or registration is required. You can use all 18 tools without providing any personal information."},{title:"3. Advertising",content:"In the Free Tier, Piktokoli displays ads via Google AdSense. Google may use cookies and tracking technologies to display personalized ads. Ads are only loaded after cookie consent is given. The Pro version is completely ad-free."},{title:"4. Pro License",content:"Pro purchases are processed through LemonSqueezy (Lemon Squeezy LLC). Only the license key is validated via the LemonSqueezy API. Piktokoli does not store payment information."},{title:"5. Hosting",content:"Piktokoli is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"6. Withdrawal",content:em},{title:"7. Responsible Party",content:ep},{title:"8. Your Rights",content:eg}]},{slug:"timermood",name:"TimerMood",color:"#f97316",email:eh,sections:[{title:"1. Local Timer Processing",content:"TimerMood runs timer sessions in the browser. Timer duration, active mode and current session state are processed locally and do not require a user account or central user database."},{title:"2. Local Settings",content:"Where settings such as preferred durations, display options or sound preferences are saved, they are stored locally in the browser. Clearing browser storage may remove these settings."},{title:"3. No Accounts",content:"TimerMood does not require registration, user profiles or personal accounts for timer usage."},{title:"4. Hosting and Static Content",content:"The public website, guide pages and legal pages may be hosted through Vercel. Vercel may process IP addresses and technical request data as part of standard hosting logs."},{title:"5. Advertising and Analytics",content:"If advertising or analytics are enabled on TimerMood, Google scripts are only loaded after consent where required. No personalized advertising should be loaded without the necessary consent."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"cliptoss",name:"ClipToss",color:"#14b8a6",email:eh,sections:[{title:"1. Account Data",content:"ClipToss uses Supabase Auth to connect devices to a user account. The account is required so content is delivered to the correct signed-in devices instead of being exposed through public transfer codes."},{title:"2. Realtime Transfer",content:"Texts and links are synchronized through Supabase Realtime channels. Transfer data can briefly pass through backend infrastru
5cture because ClipToss is a cross-device service, not a purely local browser tool."},{title:"3. Temporary File Storage",content:"Files are temporarily stored through Supabase Storage for transfer to the receiving device. ClipToss is designed for short transfers and not as a permanent cloud archive."},{title:"4. Clipboard Content",content:"Clipboard content is not described as a permanent profile or archive and is not used for content analysis. Users should still avoid sending sensitive data unless the transfer is necessary."},{title:"5. Hosting and Processors",content:"ClipToss may use Vercel for hosting and Supabase for authentication, realtime messaging and temporary storage. These providers may process technical request data such as IP addresses as part of service operation."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"gridomus",name:"Gridomus",color:"#22c55e",email:eh,sections:[{title:"1. Local Calculations",content:"Gridomus calculates electricity, PV, storage, EV charging and financial scenarios in the browser. Entered scenario values do not require a user account or central project database."},{title:"2. No Binding Advice",content:"Calculation results are scenario models for orientation. They do not replace professional energy advice, quotes, local grid requirements or legal/tax assessment."},{title:"3. Local Storage",content:"If Gridomus stores preferences or scenario state, this happens locally in the browser unless a feature explicitly states otherwise. Clearing browser data can remove locally stored values."},{title:"4. Hosting",content:"The public website and knowledge pages may be hosted through Vercel. Vercel may process IP addresses and technical request data in standard server logs."},{title:"5. Advertising and Analytics",content:"If Gridomus uses advertising or analytics, those services should only load after consent where required. No guarantees are made about third-party websites linked from knowledge content."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"sitepreviewkit",name:"SitePreviewKit",color:"#0ea5e9",email:eh,sections:[{title:"1. Browser-Based Import",content:"SitePreviewKit is designed to import ZIP files, HTML files and local demo assets in the browser. Files should not be uploaded to a server for normal preview workflows."},{title:"2. Safe Preview Limits",content:"The tool uses type detection, filtering and a constrained preview frame to reduce risk. It is not a complete sandbox for arbitrary untrusted code and does not replace a professional security review."},{title:"3. Local Assets",content:"CSS, images and fonts from imported packages are resolved locally where supported. Backend routes, databases and production server functions are not simulated."},{title:"4. Hosting",content:"The public SitePreviewKit website may be hosted through Vercel. Vercel may process IP addresses and technical request data in standard hosting logs."},{title:"5. Advertising and Analytics",content:"If advertising or analytics are used, those scripts should only load after consent where required. Imported website files are not used for advertising profiles by SitePreviewKit."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"scanbeforeopen",name:"ScanBeforeOpen",color:"#ef4444",email:eh,sections:[{title:"1. Local Pattern Checks",content:"ScanBeforeOpen is designed to check visible link and QR-code patterns locally where possible. Entered links or QR contents should not be stored as a personal user profile."},{title:"2. Security Limits",content:"ScanBeforeOpen provides risk hints and awareness information. It cannot reliably detect all malware, does not guarantee that a destination is safe and does not replace antivirus software or professional security tools."},{title:"3. No Account Requirement",content:"The tool is intended to work without user accounts, registration or a central database of scans."},{title:"4. Hosting",content:"The public website may be hosted through Vercel. Vercel may process IP addresses and technical request data in standard hosting logs."},{title:"5. Advertising and Analytics",content:"If advertising or analytics are enabled, those services should only load after consent where required. Link checks should remain data-minimal by design."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]}
5,{slug:"safecodescan",name:"SafeCodeScan",color:"#8b5cf6",email:eh,sections:[{title:"1. Local Scanning and Generation",content:"SafeCodeScan scans, decodes, generates and designs QR codes and barcodes in the browser. Code contents are not intended to be uploaded to a backend API for normal workflows."},{title:"2. Camera Access",content:"Camera access is controlled by the browser and requires user permission. Camera frames are used for local scanning and should not be stored by SafeCodeScan."},{title:"3. No Accounts or Central Code Database",content:"SafeCodeScan is intended to work without accounts, registration or a central database of scanned or generated codes."},{title:"4. Exports and Printing",content:"Generated codes and print layouts are rendered locally and exported by the browser. Users are responsible for checking code contents before printing or publishing them."},{title:"5. Hosting and Optional Third Parties",content:"The public website may be hosted through Vercel. If advertising or analytics are used, those scripts should only load after consent where required."},{title:"6. Responsible Party",content:ep},{title:"7. Your Rights",content:eg}]},{slug:"summatio",name:"Summatio",color:"#0ea5e9",email:eh,sections:[{title:"1. No Data Collection",content:"Summatio does not collect, store, or transmit any personal data. All calculations run entirely in your browser. Entered salaries, property prices and other financial data never leave your device."},{title:"2. Local Storage",content:"Saved calculations are stored exclusively in your browser's IndexedDB. This data is only accessible to you and is never sent to any server."},{title:"3. Advertising",content:"In the Free Tier, Summatio displays ads via Google AdSense. Google may use cookies and tracking technologies to display personalized ads. Ads are only loaded after cookie consent is given. The Pro version is completely ad-free."},{title:"4. Pro License",content:"Pro purchases are processed through LemonSqueezy (Lemon Squeezy LLC). Only the license key is validated via the LemonSqueezy API. Summatio does not store payment information."},{title:"5. Hosting",content:"Summatio is hosted on Vercel (Vercel Inc., San Francisco, CA). Vercel may process IP addresses for server logs."},{title:"6. Withdrawal",content:em},{title:"7. Responsible Party",content:ep},{title:"8. Your Rights",content:eg}]},{slug:"wakegate",name:"WakeGate",color:"#14b8a6",email:eh,lastUpdated:{de:"September 2026",en:"September 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die WakeGate App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the WakeGate app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Diese Erklärung beschreibt die Verarbeitung durch die WakeGate App. Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und etwaiger Website-Dienste, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"This policy describes processing by the WakeGate app. Processing when visiting tommsel.com, including hosting and any website services, is described in the general tommsel.com privacy policy."}},{title:{de:"3. Local First und kein Konto",en:"3. Local first and no account"},content:{de:"WakeGate ist lokal orientiert. Die App verwendet kein Nutzerkonto, kein eigenes Backend, keine eigene Serverdatenbank und keine eigene Cloud-Synchronisierung.",en:"WakeGate is locally oriented. The app uses no user account, no custom backend, no custom server database, and no custom cloud synchronization."}},{title:{de:"4. Lokal gespeicherte App-Daten",en:"4. App data stored locally"},content:{de:"WakeGate speichert auf dem Gerät unter anderem Alarmzeiten, Alarmnamen, Wiederholungsregeln, Snooze-Einstellungen, Alarmton-Auswahl, Mission- und Exercise-Einstellungen, NFC-Konfigurationen, Wake History und App-Einstellungen. Diese Daten werden von WakeGate nicht an eigene Server übertragen.",en:"WakeGate stores data on the device including alarm times, alarm names, repeat rules, snooze settings, alarm-sound selection, mission and exercise settings, NFC configurations, wake history, and app settings. WakeGate does not transmit this data to its own servers."}},{title:{de:"5. Kamera und Exercise Missions",en:"5. Camera and exercise missions"},content:{de:"Die Kamera wird ausschließlich während einer Exercise Mission verwendet. WakeGate verarbeitet Kamerabilder beziehungswe
5ise Frames mit AVFoundation und Apple Vision Human Body Pose Detection auf dem Gerät, um die für die Mission nötige Bewegung zu zählen oder zu bewerten. Bilder oder Frames werden nicht gespeichert, hochgeladen, an eigene Server gesendet oder für Werbung verwendet. WakeGate nutzt keine Gesichtserkennung, identifiziert keine Personen und nimmt keine medizinische oder Fitnessdiagnose vor.",en:"The camera is used only during an Exercise Mission. WakeGate processes camera images or frames with AVFoundation and Apple Vision Human Body Pose Detection on the device to count or assess movement needed for the mission. Images and frames are not stored, uploaded, sent to custom servers, or used for advertising. WakeGate does not use facial recognition, identify people, or perform medical or fitness diagnosis."}},{title:{de:"6. NFC und NDEF-Daten",en:"6. NFC and NDEF data"},content:{de:"WakeGate uses CoreNFC for NFC missions. It writes a WakeGate NDEF record with a randomly generated WakeGate token to compatible tags. For assignment, only the SHA-256 hash of that token is stored locally. A hardware UID is not used as an identity, and no location data is automatically obtained from a tag. Optional tag names, such as Küche, are assigned locally by the user. Existing writable tags are overwritten only after explicit confirmation; the NDEF area can be cleared only on user action. This is not a factory reset or deletion of all physical tag memory.",en:"WakeGate uses CoreNFC for NFC missions. It writes a WakeGate NDEF record with a randomly generated WakeGate token to compatible tags. Only the SHA-256 hash of that token is stored locally for assignment. A hardware UID is not used as an identity, and no location data is automatically obtained from a tag. Optional tag names, such as Kitchen, are assigned locally by the user. Existing writable tags are overwritten only after explicit confirmation; the NDEF area can be cleared only on user action. This is not a factory reset or deletion of all physical tag memory."}},{title:{de:"7. AlarmKit, Widgets und Systemfunktionen",en:"7. AlarmKit, widgets, and system functions"},content:{de:"WakeGate verwendet Apples AlarmKit, um Alarme über die System-Alarm-Infrastruktur zu planen. Widgets, Live Activities, eine Control Center Control und der Status der aktuellen System-Medienlautstärke können für die App-Funktionen verwendet werden. WakeGate kann die System-Medienlautstärke nicht auf einen festen Wert setzen. Die Verarbeitung durch iOS und Apple-Systemdienste liegt außerhalb der eigenen Verarbeitung durch WakeGate.",en:"WakeGate uses Apple’s AlarmKit to schedule alarms through the system alarm infrastructure. Widgets, Live Activities, a Control Center control, and the current system media-volume status may be used for app functions. WakeGate cannot set system media volume to a fixed value. Processing by iOS and Apple system services is separate from WakeGate’s own processing."}},{title:{de:"8. StoreKit und Käufe",en:"8. StoreKit and purchases"},content:{de:"WakeGate verwendet Apple StoreKit 2 für optionale Pro-Abonnements. Käufe, Zahlungen, die Anzeige von Preis und Währung sowie die Verwaltung und Wiederherstellung erfolgen über Apple und die Apple ID. WakeGate verarbeitet keine Zahlungsdaten selbst. Die Verarbeitung durch Apple richtet sich nach Apples Datenschutzinformationen.",en:"WakeGate uses Apple StoreKit 2 for optional Pro subscriptions. Purchases, payments, price and currency display, management, and restoration are handled through Apple and the Apple ID. WakeGate does not process payment data itself. Apple’s processing is governed by Apple’s privacy information."}},{title:{de:"9. Keine Analytics, Werbung oder Tracking",en:"9. No analytics, advertising, or tracking"},content:{de:"WakeGate verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"WakeGate uses no app analytics, tracking, or advertising."}},{title:{de:"10. Nicht verwendete Datenquellen",en:"10. Data sources not used"},content:{de:"WakeGate verwendet kein Mikrofon, keine Standorterfassung, keine Kontakte, keine Fotomediathek und kein HealthKit. Diese Aussage ist vor einer Veröffentlichung erneut gegen den finalen App-Code zu prüfen.",en:"WakeGate uses no microphone, location collection, contacts, photo library, or HealthKit. This statement must be checked again against the final app code before release."}},{title:{de:"11. Daten löschen",en:"11. Deleting data"},content:{de:"Lokale Daten können über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät gelöscht werden. Die verfügbaren iOS-Optionen können sich unter
5scheiden.",en:"Local data can be deleted through app functions and settings and by removing the app from the device. Available iOS options can differ."}},{title:{de:"12. Ihre Rechte und Beschwerderecht",en:"12. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"13. Stand dieser Erklärung",en:"13. Effective date"},content:{de:"Stand: September 2026. Diese Erklärung wird angepasst, wenn sich WakeGate-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 2026. This policy will be updated if WakeGate features or data processing change."}}]},{slug:"jotcue",name:"JotCue",color:"#0ea5e9",email:eh,lastUpdated:{de:"September 2026",en:"September 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die JotCue App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the JotCue app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Diese Erklärung beschreibt die Verarbeitung durch die JotCue App. Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und etwaiger Website-Dienste, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"This policy describes processing by the JotCue app. Processing when visiting tommsel.com, including hosting and any website services, is described in the general tommsel.com privacy policy."}},{title:{de:"3. Local First und kein Konto",en:"3. Local first and no account"},content:{de:"JotCue ist lokal orientiert. Die App verwendet kein Nutzerkonto und keinen eigenen Backend-Dienst für deine persönlichen Inhalte. JotCue überträgt deine Notizen, Aufgaben, Aufnahmen und Anhänge nicht an eigene Server.",en:"JotCue is locally oriented. The app uses no user account and no custom backend service for your personal content. JotCue does not transmit your notes, tasks, recordings, or attachments to its own servers."}},{title:{de:"4. Sprachaufnahmen und Mikrofon",en:"4. Voice recordings and microphone"},content:{de:"Mikrofonzugriff wird für die Sprachaufnahme benötigt und von dir erteilt. Aufnahmen werden zunächst lokal auf dem Gerät gespeichert und dienen als Quelle für die Transkription sowie für eine mögliche Wiederherstellung. Nach einer erfolgreich verifizierten Transkription kann die Audiodatei automatisch gelöscht werden. Schlägt die Transkription fehl, fehlt ein benötigtes Sprachmodell oder wird der Vorgang unterbrochen, bleibt die Aufnahme zur Wiederherstellung erhalten. Du kannst Aufnahmen zusätzlich optional dauerhaft behalten.",en:"Microphone access is required for voice capture and is granted by you. Recordings are first stored locally on the device and serve as the source for transcription and for possible recovery. After a successfully verified transcription, the audio file can be deleted automatically. If transcription fails, a required speech model is missing, or the process is interrupted, the recording is kept for recovery. You can also choose to keep recordings permanently."}},{title:{de:"5. Lokale Transkription und Apple Speech Services",en:"5. Local transcription and Apple Speech services"},content:{de:"JotCue nutzt unterstützte Apple-Speech-Technologien für die Transkription auf dem Gerät. JotCue betreibt keine eigenen Speech-Server und verwendet keine externe KI und keine eigene Cloud-Transkription für deine Aufnahmen. iOS kann zur Bereitstellung unterstützter Sprachressourcen Apple-Systemdienste verwenden; diese Verarbeitung durch Apple liegt außerhalb der eigenen Verarbeitung durch JotCue.",en:"JotCue uses supported Apple speech technologies for on-device transcription. JotCue does not operate its own speech servers and does not use external AI or its own cloud transcription for your recordings. iOS may use Apple system services to provide supported speech resources; this processing by Apple is separate from JotCue's own processing."}},{title:{de:"6. Notizen, Aufgaben, Projekte, Threads und Kategorien",en:"6. Notes, tasks, projects, threads, and categories"},content:{de:"Inhalte, die du in der Inbox, als Notiz oder Aufgabe anlegst, sowie Projekte, Threads und Kategorien werden lokal auf deinem Gerät gespeichert und verarbeitet.",en:"Content you create in the inbox, as a note or task, as well as projects, threads, and categories, is stored and processed locally on your device."}},{title:{de:"7. Fotos und Kamera",en:"7. Photos and camera"},content:{de:"Du wählst Fotos bewusst über die Systemauswahl (PhotosPicker) aus; JotCue benötigt dafür keinen pauschalen Vollzugriff auf deine Fotomediathek. JotCue speichert eine lokale, optimierte Kopie des ausgewählten Fotos und entfernt dabei nicht benötigte Metadaten; Standort-/GPS-Metadaten werden nicht in diese lokale Kopie übernommen. Das Original in deiner Fotomediathek wird nicht verändert. Die Kamera wird nur nach bewusster Nutzeraktion verwendet.",en:"You choose photos deliberately through the system picker (PhotosPicker); JotCue does not require blanket access to your entire photo library for this. JotCue stores a local, optimized copy of the selected photo and removes unnecessary metadata; location/GPS metadata is not carried over into this local copy. The original in your photo library is not modified. The camera is used only after a deliberate user action."}},{title:{de:"8. Links",en:"8. Links"},content:{de:"Links, die du in JotCue speicherst, werden lokal auf deinem Gerät abgelegt. JotCue führt standardmäßig kein Crawling, kein automatisches Abrufen von Open-Graph-Daten, keinen Favicon-Download und keine automatische Analyse der verlinkten Website durch. Ein Link wird nur nach deiner bewussten Aktion geöffnet.",en:"Links you save in JotCue are stored locally on your device. By default, JotCue does not crawl, automatically fetch Open Graph data, download favicons, or automatically analyze the linked website. A link is opened only after your deliberate action."}},{title:{de:"9. Share Extension",en:"9. Share extension"},content:{de:"Über das iOS-Teilen-Menü kannst du bewusst Text, URLs oder Fotos an JotCue übergeben. JotCue verarbeitet dabei ausschließlich die von dir explizit geteilten Inhalte.",en:"Through the iOS share sheet, you can deliberately hand off text, URLs, or photos to JotCue. JotCue processes only the content you explicitly shared."}},{title:{de:"10. Lokale Erinnerungen",en:"10. Local reminders"},content:{de:"Erinnerungen zu datierten Aufgaben werden als lokale Benachrichtigungen auf deinem Gerät geplant. JotCue betreibt hierfür kein eigenes Push-Backend.",en:"Reminders for dated tasks are scheduled as local notifications on your device. JotCue does not operate its own push backend for this."}},{title:{de:"11. Widgets, Lock Screen, Live Activities, App Intents und Action Button",en:"11. Widgets, Lock Screen, Live Activities, App Intents, and Action Button"},content:{de:"Widgets, Lock-Screen-Widgets, Live Activities, App Intents/App-Kurzbefehle und die Zuweisung zum Action Button greifen auf lokal in JotCue gespeicherte Inhalte zu und werden über iOS-Systemschnittstellen bereitgestellt. Während einer laufenden Aufnahme kann eine Live Activity Aufnahmestatus und Timer anzeigen; Transkript- oder Notizinhalte werden dabei nicht auf dem Lock Screen angezeigt. Die Zuordnung von JotCue zum Action Button nimmst du selbst in den iOS-Einstellungen vor; JotCue verändert die Action-Button-Belegung nicht selbst.",en:"Widgets, Lock Screen widgets, Live Activities, App Intents/app shortcuts, and the Action Button assignment access content stored locally in JotCue and are provided through iOS system interfaces. During an active recording, a Live Activity can show recording status and a timer; transcript or note content is not shown on the Lock Screen. You assign JotCue to the Action Button yourself in 
5iOS Settings; JotCue does not change the Action Button assignment itself."}},{title:{de:"12. Backup und Restore",en:"12. Backup and restore"},content:{de:"JotCue bietet ein lokales, versioniertes Backup-Format (.jotcuebackup) an, das Daten und Anhänge umfasst; Audio kann optional eingeschlossen werden. Eine Wiederherstellung erfolgt lokal auf dem Gerät. JotCue betreibt keinen eigenen Cloud-Backup-Dienst.",en:"JotCue offers a local, versioned backup format (.jotcuebackup) that includes data and attachments; audio can optionally be included. Restoring a backup happens locally on the device. JotCue does not operate its own cloud backup service."}},{title:{de:"13. StoreKit und Käufe",en:"13. StoreKit and purchases"},content:{de:"Käufe für JotCue Pro werden über Apples App Store und StoreKit abgewickelt. JotCue betreibt kein eigenes Zahlungssystem und erhält dabei keine Zahlungsdaten wie Kreditkartennummern. Die Verarbeitung durch Apple richtet sich nach Apples eigenen Datenschutzinformationen.",en:"Purchases for JotCue Pro are processed through Apple's App Store and StoreKit. JotCue does not operate its own payment system and does not receive payment data such as credit card numbers. Apple's processing is governed by Apple's own privacy information."}},{title:{de:"14. Keine Analytics, Werbung oder Tracking",en:"14. No analytics, advertising, or tracking"},content:{de:"JotCue verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"JotCue uses no app analytics, tracking, or advertising."}},{title:{de:"15. Daten löschen",en:"15. Deleting data"},content:{de:"Gelöschte Inhalte landen zunächst im Papierkorb und können von dort wiederhergestellt oder endgültig entfernt werden. Lokale Daten können darüber hinaus über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät gelöscht werden. Die verfügbaren iOS-Optionen können sich unterscheiden.",en:"Deleted content first goes to the trash, where it can be restored or permanently removed. Local data can also be deleted through app functions and settings and by removing the app from the device. Available iOS options can differ."}},{title:{de:"16. Ihre Rechte und Beschwerderecht",en:"16. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"17. Stand dieser Erklärung",en:"17. Effective date"},content:{de:"Stand: September 2026. Diese Erklärung wird angepasst, wenn sich JotCue-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 2026. This policy will be updated if JotCue features or data processing change."}}]},{slug:"voxavo",name:"Voxavo",color:"#0284c7",email:eh,lastUpdated:{de:"September 2026",en:"September 2026"},sections:[{title:{de:"1. Verantwortlicher und Geltungsbereich",en:"1. Data controller and scope"},content:{de:"Verantwortlich für die Voxavo App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected]. Diese Erklärung beschreibt die Verarbeitung durch die Voxavo App. Die Datenverarbeitung beim Besuch von tommsel.com ist in Abschnitt 11 sowie in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"The controller for the Voxavo app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]. This policy describes processing by the Voxavo app. Processing when visiting tommsel.com is described in section 11 and in the general tommsel.com privacy policy."}},{title:{de:"2. Datenschutz in der Voxavo-App",en:"2. Privacy in the Voxavo app"},content:{de:"Voxavo ist local-first. Die App verwendet kein Nutzerkonto, kein eigenes Backend, keine eigene Cloud-Datenbank und keine eigene Cloud-KI. Voxavo erfasst keine Standortdaten, keine Kontakte und keine Werbe-ID.",en:"Voxavo is local-first. The app uses no user account, no custom backend, no custom cloud database, and n
5o cloud AI. Voxavo does not collect location data, contacts, or an advertising identifier."}},{title:{de:"3. Lokal gespeicherte Daten",en:"3. Data stored locally"},content:{de:"Auf deinem Gerät werden Einstellungen, eigene Sätze, Favoriten samt Reihenfolge sowie, sofern aktiviert, der Verlauf gespeichert. Diese Daten werden von Voxavo nicht an eigene Server übertragen.",en:"Your device stores settings, your own phrases, favorites including their order, and, if enabled, the history. This data is not transmitted by Voxavo to its own servers."}},{title:{de:"4. Mikrofon und Stimmverstärkung",en:"4. Microphone and voice amplification"},content:{de:"Voxavo verwendet das Mikrofon ausschließlich für die aktive Stimmverstärkung und nur während der tatsächlichen Nutzung dieser Funktion; es findet kein Zugriff im Hintergrund statt. Das Audiosignal wird zur Wiedergabe über den Lautsprecher verarbeitet.",en:"Voxavo uses the microphone exclusively for active voice amplification and only while this feature is actually in use; there is no background access. The audio signal is processed for playback through the speaker."}},{title:{de:"5. Keine Audioaufzeichnung",en:"5. No audio recording"},content:{de:"Voxavo speichert keine Audioaufzeichnungen und keine Audiodateien. Die Stimme oder das Gespräch deines Gegenübers wird nicht aufgenommen oder gespeichert.",en:"Voxavo does not store audio recordings or audio files. The voice or conversation of the person you are speaking with is not recorded or stored."}},{title:{de:"6. Verlauf",en:"6. History"},content:{de:"Der optionale Verlauf enthält ausschließlich von dir eingegebenen oder gesprochenen Text. Er wird lokal gespeichert, lässt sich abschalten und jederzeit löschen.",en:"The optional history contains only text you have entered or spoken. It is stored locally, can be turned off, and can be deleted at any time."}},{title:{de:"7. Abonnements, StoreKit und Apple",en:"7. Subscriptions, StoreKit, and Apple"},content:{de:"Voxavo Pro wird als automatisch verlängerndes Monats- oder Jahresabo über Apple StoreKit 2 angeboten. Käufe und Abonnements werden durch Apple verarbeitet; Voxavo betreibt dafür keine eigene Zahlungsdatenbank und verarbeitet keine Zahlungsdaten selbst. Die Verarbeitung durch Apple richtet sich nach Apples eigenen Datenschutzinformationen.",en:"Voxavo Pro is offered as an auto-renewing monthly or yearly subscription through Apple StoreKit 2. Purchases and subscriptions are processed by Apple; Voxavo does not operate its own payment database for this and does not process payment data itself. Apple's processing is governed by Apple's own privacy information."}},{title:{de:"8. Keine Analytics, Werbung oder Tracking",en:"8. No analytics, advertising, or tracking"},content:{de:"Voxavo verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"Voxavo uses no app analytics, tracking, or advertising."}},{title:{de:"9. Keine Cloud-Verarbeitung durch Voxavo",en:"9. No cloud processing by Voxavo"},content:{de:"Voxavo synchronisiert Inhalte nicht über iCloud oder CloudKit und betreibt keine eigene Cloud-Synchronisierung.",en:"Voxavo does not sync content through iCloud or CloudKit and does not operate its own cloud synchronization."}},{title:{de:"10. Löschen lokaler Daten",en:"10. Deleting local data"},content:{de:"Lokale Daten können über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät gelöscht werden. Die verfügbaren iOS-Optionen können sich unterscheiden.",en:"Local data can be deleted through app functions and settings and by removing the app from the device. Available iOS options can differ."}},{title:{de:"11. Website tommsel.com",en:"11. The tommsel.com website"},content:{de:"Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und Server-Logs, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben und nicht Gegenstand dieser App-spezifischen Erklärung.",en:"Data processing when visiting tommsel.com, including hosting and server logs, is described in the general tommsel.com privacy policy and is not covered by this app-specific policy."}}
5,{title:{de:"12. Ihre Rechte und Beschwerderecht",en:"12. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"13. Änderungen dieser Datenschutzerklärung",en:"13. Changes to this privacy policy"},content:{de:"Stand: September 2026. Diese Erklärung wird angepasst, wenn sich Voxavo-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 2026. This policy will be updated if Voxavo features or data processing change."}}]},{slug:"wavevra",name:"Wavevra",color:"#c026d3",email:eh,lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die Wavevra App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the Wavevra app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Wavevra wurde so entwickelt, dass Audio, Video, Analysedaten und Projekte grundsätzlich lokal auf deinem iPhone verarbeitet werden. Die App benötigt kein Benutzerkonto, verwendet keine eigene Cloud, keine Werbung, kein Tracking und keine Analytics. Wavevra überträgt deine aufgenommenen oder importierten Medien nicht an Tommsel-Server.\nDiese Datenschutzhinweise erklären, welche Daten Wavevra auf deinem Gerät verarbeitet, wann Daten an Apple oder an von dir ausgewählte Ziele gelangen können und welche Rechte du hast. Die Datenverarbeitung beim Besuch von tommsel.com ist in Abschnitt 11 sowie in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"Wavevra was designed so that audio, video, analysis data, and projects are generally processed locally on your iPhone. The app requires no user account, uses no custom cloud, no advertising, no tracking, and no analytics. Wavevra does not transmit your recorded or imported media to Tommsel servers.\nThis privacy notice explains what data Wavevra processes on your device, when data can reach Apple or destinations you choose yourself, and what rights you have. Processing when visiting tommsel.com is described in section 11 and in the general tommsel.com privacy policy."}},{title:{de:"3. Lokale Verarbeitung von Audio, Video und Analysedaten",en:"3. Local processing of audio, video, and analysis data"},content:{de:"Wavevra verarbeitet für seine Funktionen Audio, Video, Analyseergebnisse, Projekteinstellungen, Vorschaubilder und Exporte lokal auf deinem Gerät. Diese Inhalte werden von Wavevra nicht an eigene Server von Tommsel übertragen.\nZu den lokal verarbeiteten Informationen können insbesondere Mikrofonaufnahmen, Kameravideos, importierte Mediendateien, Wellenformen, Spektraldaten, Frequenzwerte, digitale Pegelwerte, Projekteinstellungen und erzeugte Exporte gehören.\nSoweit diese Verarbeitung ausschließlich lokal auf deinem Gerät stattfindet, erhält Tommsel diese Inhalte nicht.",en:"Wavevra processes audio, video, analysis results, project settings, thumbnails, and exports locally on your device for its functions. This content is not transmitted by Wavevra to Tommsel's own servers.\nLocally processed information can include, in particular, microphone recordings, camera videos, imported media files, waveforms, spectral data, frequency values, digital level values, project settings, and generated exports.\nAs far as this processing takes place exclusively locally on your device, Tommsel does not receive this content."}},{title:{de:"4. Mikrofon-, Kamera- und Fotomediathek-Berechtigung",en:"4. Microphone, camera, and photo library permission"},content:{de:"Wavevra fragt Mikrofonzugriff für Live-Audio und Aufnahmen sowie Kamerazugriff für Videoaufnahmen an; beide Berechtigungen erteilst du bewusst über iOS. Für das Sichern eines Exports in deiner Fotomediathek fragt Wavevra die iOS-Berechtigung zum Hinzufügen von Fotos an (Photos-Add-Berechtigung), nicht den vollständigen Lesezugriff auf deine Mediathek.",en:"Wavevra requests microphone access for live audio and recordings and camera access for video recordings; you grant both permissions deliberately through iOS. To save an export to your photo library, Wavevra requests the iOS add-only photos permission, not full read access to your library."}},{title:{de:"5. Import, Share und Files",en:"5. Import, Share, and Files"},content:{de:"Wenn du vorhandene Audio- oder Videodateien importierst, verarbeitet Wavevra diese lokal für Analyse, Studio und Export. Wenn du einen Export bewusst über Teilen, In Fotos sichern oder In Dateien sichern weitergibst, verlässt genau diese Datei die App im Rahmen der von dir gewählten Aktion und des von dir gewählten Ziels.",en:"When you import existing audio or video files, Wavevra processes them locally for analysis, Studio, and export. When you deliberately hand off an export via Share, Save to Photos, or Save to Files, that specific file leaves the app as part of the action and destination you chose."}},{title:{de:"6. Apple StoreKit und Käufe",en:"6. Apple StoreKit and purchases"},content:{de:"Wavevra Pro wird über Apples In-App-Purchase- und StoreKit-System angeboten. Kaufabwicklung, Zahlungsdaten und die Verwaltung deines Apple-Accounts erfolgen durch Apple. Wavevra erhält lokal die für die Freischaltung notwendigen Informationen über gültige Käufe beziehungswe
5ise Abonnementberechtigungen.\nWavevra betreibt hierfür kein eigenes Zahlungs-Backend und speichert keine Kreditkarten oder sonstigen Zahlungsdaten.",en:"Wavevra Pro is offered through Apple's in-app purchase and StoreKit system. Purchase processing, payment data, and management of your Apple Account are handled by Apple. Wavevra receives locally the information necessary to unlock features based on valid purchases or subscription entitlements.\nWavevra does not operate its own payment backend for this and does not store credit card or other payment data."}},{title:{de:"7. Keine Analytics, Werbung oder Tracking",en:"7. No analytics, advertising, or tracking"},content:{de:"Wavevra verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"Wavevra uses no app analytics, tracking, or advertising."}},{title:{de:"8. Support-Kontakt per E-Mail",en:"8. Support contact by email"},content:{de:"Wenn du Wavevra per E-Mail kontaktierst, verarbeiten wir deine Kontaktdaten und deine Nachricht zur Bearbeitung deiner Anfrage. Rechtsgrundlage ist bei vertragsbezogenen Anfragen Art. 6 Abs. 1 lit. b DSGVO und bei allgemeinen Supportanfragen Art. 6 Abs. 1 lit. f DSGVO.",en:"If you contact Wavevra by email, we process your contact details and message to handle your request. The legal basis is Art. 6(1)(b) GDPR for contract-related inquiries and Art. 6(1)(f) GDPR for general support inquiries."}},{title:{de:"9. Speicherdauer und Löschung",en:"9. Storage duration and deletion"},content:{de:"Lokale Wavevra-Inhalte bleiben auf deinem Gerät gespeichert, bis du sie selbst löschst oder die App entfernst. Da diese Medien ausschließlich auf deinem Gerät liegen, besitzt Tommsel sie nicht und kann sie daher nicht aus der Ferne für dich löschen oder herausgeben.",en:"Local Wavevra content stays stored on your device until you delete it yourself or remove the app. Since this media resides exclusively on your device, Tommsel does not possess it and therefore cannot remotely delete or hand it over on your behalf."}},{title:{de:"10. Website tommsel.com",en:"10. The tommsel.com website"},content:{de:"Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und Server-Logs, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben und nicht Gegenstand dieser App-spezifischen Erklärung.",en:"Data processing when visiting tommsel.com, including hosting and server logs, is described in the general tommsel.com privacy policy and is not covered by this app-specific policy."}},{title:{de:"11. Ihre Rechte und Beschwerderecht",en:"11. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit, Widerspruch sowie Widerruf einer erteilten Einwilligung. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, objection, and withdrawal of any consent given. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"12. Änderungen dieser Datenschutzerklärung",en:"12. Changes to this privacy policy"},content:{de:"Stand: 21. September 2026. Diese Erklärung wird angepasst, wenn sich Wavevra-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 21, 2026. This policy will be updated if Wavevra features or data processing change."}}]},{slug:"chessmachina",name:"ChessMachina",color:"#44403c",email:eh,lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die ChessMachina App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the ChessMachina app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Diese Erklärung beschreibt die Verarbeitung durch die ChessMachina App. Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und etwaiger Website-Dienste, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"This policy describes processing by the ChessMachina app. Processing when visiting tommsel.com, including hosting and any website services, is described 
5in the general tommsel.com privacy policy."}},{title:{de:"3. Local First und kein Konto",en:"3. Local first and no account"},content:{de:"ChessMachina ist lokal orientiert. Die App verwendet kein Nutzerkonto, keinen eigenen Backend-Server, keine eigene Cloud-Synchronisierung und keine eigene Cloud-Schach-Engine. Sowohl die rekonstruierten historischen Maschinen als auch die moderne Reference Engine rechnen lokal auf deinem Gerät.",en:"ChessMachina is locally oriented. The app uses no user account, no custom backend server, no custom cloud synchronization, and no custom cloud chess engine. Both the reconstructed historical machines and the modern reference engine compute locally on your device."}},{title:{de:"4. Lokal gespeicherte App-Daten",en:"4. App data stored locally"},content:{de:"ChessMachina speichert auf deinem Gerät unter anderem App-Einstellungen sowie lokale Spielaufzeichnungen: Startpositionen beziehungsweise die dafür nötigen Angaben, Zugfolgen, Ergebnisse sowie Gegner- und Engine-Version. Aus diesen Angaben lassen sich Replays deterministisch rekonstruieren; dabei handelt es sich nicht um separat hochgeladene Zusatzdaten, sondern um lokal aus der gespeicherten Partie abgeleitete Informationen. Diese Daten werden von ChessMachina nicht an eigene Server übertragen.",en:"ChessMachina stores on your device, among other things, app settings and local game records: starting positions or the information needed for them, move sequences, results, and opponent and engine version. Replays can be deterministically reconstructed from this information; this is not separately uploaded additional data but information derived locally from the saved game. ChessMachina does not transmit this data to its own servers."}},{title:{de:"5. Historische Rekonstruktionen und moderne Engine",en:"5. Historical reconstructions and modern engine"},content:{de:"Die historischen Schachmaschinen in ChessMachina sind algorithmische Clean-Room-Rekonstruktionen auf Basis verfügbarer historischer Dokumentation und keine Übernahme von Originalcode oder Originaldaten Dritter. Die moderne Reference Engine in Compute Mode ist eine eigene Entwicklung von ChessMachina.",en:"The historical chess machines in ChessMachina are algorithmic clean-room reconstructions based on available historical documentation, not a reuse of third-party original code or original data. The modern reference engine in Compute Mode is ChessMachina's own development."}},{title:{de:"6. Teilen über die iOS-Systemfunktion",en:"6. Sharing through the iOS system feature"},content:{de:"Wenn du die native iOS-Teilen-Funktion verwendest, werden Inhalte ausschließlich durch die von dir gewählte Share-Aktion an das von dir ausgewählte Ziel übergeben. ChessMachina betreibt dafür keinen eigenen Share-Server.",en:"If you use the native iOS share feature, content is handed off only through the share action you choose to the destination you select. ChessMachina does not operate its own share server for this."}},{title:{de:"7. Externe Links",en:"7. External links"},content:{de:"Links zu historischen Quellen, Apple-Seiten oder anderen externen Zielen unterliegen den jeweiligen Datenschutzbestimmungen der externen Anbieter.",en:"Links to historical sources, Apple pages, or other external destinations are subject to the respective external providers' privacy terms."}},{title:{de:"8. Keine Analytics, Werbung oder Tracking",en:"8. No analytics, advertising, or tracking"},content:{de:"ChessMachina verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"ChessMachina uses no app analytics, tracking, or advertising."}},{title:{de:"9. Daten löschen",en:"9. Deleting data"},content:{de:"Lokale Daten können über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät gelöscht werden. Die verfügbaren iOS-Optionen können sich unterscheiden.",en:"Local data can be deleted through app functions and settings and by removing the app from the device. Available iOS options can differ."}},{title:{de:"10. Website tommsel.com",en:"10. The tommsel.com website"},content:{de:"Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und Server-Logs, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben und nicht Gegenstand dieser App-spezifischen Erklärung.",en:"Data processing when visiting tommsel.com, including hosting and server logs, is described 
5in the general tommsel.com privacy policy and is not covered by this app-specific policy."}},{title:{de:"11. Ihre Rechte und Beschwerderecht",en:"11. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"12. Änderungen dieser Datenschutzerklärung",en:"12. Changes to this privacy policy"},content:{de:"Stand: 21. September 2026. Diese Erklärung wird angepasst, wenn sich ChessMachina-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 21, 2026. This policy will be updated if ChessMachina features or data processing change."}}]},{slug:"nuptava",name:"Nuptava",color:"#57534e",email:eh,lastUpdated:{de:"September 2026",en:"September 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die Nuptava App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the Nuptava app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich und Zweck",en:"2. Scope and purpose"},content:{de:"Diese Erklärung beschreibt die Verarbeitung durch die Nuptava App, einen lokalen Hochzeitsplaner für Aufgaben, Gäste, Dienstleister, Budget und den Hochzeitstag. Die Datenverarbeitung beim Besuch von tommsel.com ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"This policy describes processing by the Nuptava app, a local wedding planner for tasks, guests, vendors, budget, and the wedding day. Processing when visiting tommsel.com is described in the general tommsel.com privacy policy."}},{title:{de:"3. Local First, kein Konto, kein eigener Cloud-Sync",en:"3. Local first, no account, no custom cloud sync"},content:{de:"Nuptava ist lokal orientiert. Die App verwendet kein Nutzerkonto und keinen eigenen Cloud-Sync-Dienst des Entwicklers. Deine Hochzeitsdaten werden auf deinem Gerät verarbeitet.",en:"Nuptava is locally oriented. The app uses no user account and no custom cloud sync service run by the developer. Your wedding data is processed on your device."}},{title:{de:"4. Lokal gespeicherte Hochzeitsdaten",en:"4. Wedding data stored locally"},content:{de:"Nuptava speichert auf deinem Gerät unter anderem: Hochzeitsprojekte, Aufgaben und Checklisten, Gästedaten (Personen, Haushalte, RSVP-Status für mehrere Events), Ernährungs- und Allergiehinweise, Unterkunfts-, Transport- und Sitzplandaten, Dienstleisterinformationen samt Angeboten, Verträgen und Dokumenten sowie Budget- und Zahlungsdaten (geplante und vertraglich gebundene Kosten, Zahlungen, offene Beträge, Fälligkeiten). Diese Daten werden von Nuptava nicht an eigene Server übertragen.",en:"Nuptava stores on your device, among other things: wedding projects, tasks and checklists, guest data (people, households, RSVP status for multiple events), dietary and allergy notes, accommodation, transport, and seating data, vendor information including quotes, contracts, and documents, and budget and payment data (planned and contractually committed costs, payments, outstanding amounts, due dates). This data is not transmitted by Nuptava to its own servers."}},{title:{de:"5. Widgets und lokale Mitteilungen",en:"5. Widgets and local notifications"},content:{de:"Widgets greifen auf lokal in Nuptava gespeicherte Daten über eine geräteinterne App-Gruppe zu. Lokale Mitteilungen werden direkt auf deinem Gerät geplant; Nuptava betreibt dafür keinen eigenen Push-Dienst.",en:"Widgets access data stored locally in Nuptava through an on-device app group. Local notifications are scheduled directly on your device; Nuptava does not operate its own push service for this."}},{title:{de:"6. Backup und Export",en:"6. Backup and export"},content:{de:"Nuptava kann lokale, verschlüsselte Backups erstellen, die du selbst verwaltest. Zusätzlich kannst du deine Daten bewusst manuell exportieren. Systemseitige Geräte- oder iCloud-Backups von Apple sind davon unabhängig und unterliegen Apples eigenen Bedingungen.",en:"Nuptava can create local, encrypted backups that you manage yourself. You can also deliberately export your data manually. Apple's system-level device or iCloud backups are independent of this and are subject to Apple's own terms."}},{title:{de:"7. Apple App Store und StoreKit",en:"7. Apple App Store and StoreKit"},content:{de:"Der optionale Nuptava-Pro-Kauf (einmaliger Lifetime-Kauf) wird über Apples App Store und StoreKit abgewickelt. Nuptava betreibt kein eigenes Zahlungssystem und erhält keine Zahlungsdaten wie Kreditkartennummern. Die Verarbeitung durch Apple richtet sich nach Apples eigenen Datenschutzinformationen.",en:"The optional Nuptava Pro purchase (a one-time lifetime purchase) is processed through Apple's App Store and StoreKit. Nuptava does not operate its own payment system and does not receive payment data such as credit card numbers. Apple's processing is governed by Apple's own privacy information."}},{title:{de:"8. Keine Analytics, Werbung oder Tracking",en:"8. No anal
5ytics, advertising, or tracking"},content:{de:"Nuptava verwendet keine App-Analytics, kein Tracking und keine Werbung.",en:"Nuptava uses no app analytics, tracking, or advertising."}},{title:{de:"9. Aufbewahrung und Datenlöschung",en:"9. Retention and deleting data"},content:{de:"Lokale Hochzeitsdaten bleiben auf deinem Gerät gespeichert, bis du sie selbst löschst oder die App entfernst. Lokale Backups verwaltest du selbst und kannst sie jederzeit löschen. Die verfügbaren iOS-Optionen können sich unterscheiden.",en:"Local wedding data stays stored on your device until you delete it yourself or remove the app. You manage local backups yourself and can delete them at any time. Available iOS options can differ."}},{title:{de:"10. Website tommsel.com",en:"10. The tommsel.com website"},content:{de:"Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und Server-Logs, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben und nicht Gegenstand dieser App-spezifischen Erklärung.",en:"Data processing when visiting tommsel.com, including hosting and server logs, is described in the general tommsel.com privacy policy and is not covered by this app-specific policy."}},{title:{de:"11. Ihre Rechte und Beschwerderecht",en:"11. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"12. Änderungen dieser Datenschutzerklärung",en:"12. Changes to this privacy policy"},content:{de:"Stand: September 2026. Diese Erklärung wird angepasst, wenn sich Nuptava-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 2026. This policy will be updated if Nuptava features or data processing change."}}]},{slug:"mentelys",name:"Mentelys",color:"#7c3aed",email:eh,lastUpdated:{de:"September 2026",en:"September 2026"},sections:[{title:{de:"1. Verantwortlicher und Kontakt",en:"1. Data controller and contact"},content:{de:"Verantwortlich für die Mentelys App ist Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin. Kontakt: [email protected].",en:"The controller for the Mentelys app is Tom Silas Helmke, c/o Online-Impressum #4746, Europaring 90, 53757 Sankt Augustin, Germany. Contact: [email protected]."}},{title:{de:"2. Geltungsbereich",en:"2. Scope"},content:{de:"Diese Erklärung beschreibt die Verarbeitung durch die Mentelys App. Die Datenverarbeitung beim Besuch von tommsel.com, einschließlich Hosting und etwaiger Website-Dienste, ist in der allgemeinen Datenschutzerklärung von tommsel.com beschrieben.",en:"This policy describes processing by the Mentelys app. Processing when visiting tommsel.com, including hosting and any website services, is described in the general tommsel.com privacy policy."}},{title:{de:"3. Kein Konto und lokale Speicherung",en:"3. No account and local storage"},content:{de:"Mentelys verwendet kein Nutzerkonto und kein Login. Es gibt kein eigenes Backend und keine eigene Cloud-Synchronisation. Trainingsdaten werden lokal auf deinem Gerät gespeichert.",en:"Mentelys uses no user account and no login. There is no custom backend and no custom cloud sync. Training data is stored locally on your device."}},{title:{de:"4. Training Records und Checkpoint Records",en:"4. Training records and checkpoint records"},content:{de:"Ergebnisse deiner Trainingsübungen und Checkpoints werden lokal auf deinem Gerät verarbeitet und gespeichert.",en:"Results from your training exercises and checkpoints are processed and stored locally on your device."}},{title:{de:"5. Progress, Streak, XP und Achievements",en:"5. Progress, streak, XP, and achievements"},content:{de:"Training Balance, Training Level, Streak, Engagement XP, Engagement Level, Achievements sowie Personal Bests und Weekly/Monthly Reviews werden lokal auf deinem Gerät berechnet und gespeichert. Diese Werte stehen ausschließlich für Nutzung und Aktivität und sind keine Aussage über Intelligenz oder kognitive Fähigkeit.",en:"Training Balance, Training Level, Streak, Engagement XP, Engagement Level, Achievements, Personal Bests, and Weekly/Monthly Reviews are calculated and stored locally on your device. The
5se values reflect usage and activity only and are not a statement about intelligence or cognitive ability."}},{title:{de:"6. Personal Recall",en:"6. Personal Recall"},content:{de:"Von dir eingegebene Personal-Recall-Inhalte (Cue und Antwort) werden lokal auf deinem Gerät gespeichert. Personal-Recall-Inhalte erscheinen nicht automatisch in Widgets, Notification Previews, Share Cards, Analytics oder Logs.",en:"Personal Recall content you enter (cue and answer) is stored locally on your device. Personal Recall content does not automatically appear in widgets, notification previews, share cards, analytics, or logs."}},{title:{de:"7. Lokale Benachrichtigungen",en:"7. Local notifications"},content:{de:"Mentelys kann optionale lokale Benachrichtigungen verwenden, etwa einen Daily-Training-Reminder, einen Streak-Reminder oder eine Personal-Recall-Fälligkeit. Eine Personal-Recall-Benachrichtigung wird generisch formuliert und nennt weder Cue noch Antwort auf dem Sperrbildschirm.",en:"Mentelys can use optional local notifications, such as a daily training reminder, a streak reminder, or a Personal Recall due notice. A Personal Recall notification is worded generically and does not name the cue or answer on the lock screen."}},{title:{de:"8. Widgets",en:"8. Widgets"},content:{de:"Widgets zeigen nur aggregierte, privacy-sichere Daten wie Daily Training, Streak oder Fortschritt und keine Personal-Recall-Inhalte.",en:"Widgets show only aggregated, privacy-safe data such as Daily Training, streak, or progress, and no Personal Recall content."}},{title:{de:"9. Share Cards",en:"9. Share cards"},content:{de:"Share Cards entstehen lokal auf deinem Gerät und verlassen es erst durch deine explizite Nutzeraktion, etwa beim Teilen.",en:"Share cards are created locally on your device and leave it only through your explicit user action, such as sharing."}},{title:{de:"10. Lokale Backup-Dateien",en:"10. Local backup files"},content:{de:"Mentelys unterstützt einen lokalen Backup- und Restore-Export als lokale Datei. Es gibt keinen eigenen Cloud-Service und keinen automatischen Server-Upload. Ein exportiertes Backup kann persönliche Erinnerungsinhalte enthalten. Bewahre die Datei sicher auf.",en:"Mentelys supports a local backup and restore export as a local file. There is no custom cloud service and no automatic server upload. An exported backup may contain personal recall content. Keep the file secure."}},{title:{de:"11. StoreKit und Käufe",en:"11. StoreKit and purchases"},content:{de:"Der optionale einmalige Full Unlock wird über Apples App Store und StoreKit als Non-Consumable abgewickelt. Mentelys betreibt kein eigenes Zahlungssystem und erhält dabei keine Zahlungsdaten wie Kreditkartennummern. Die Verarbeitung durch Apple richtet sich nach Apples eigenen Datenschutzinformationen.",en:"The optional one-time Full Unlock is processed as a non-consumable through Apple's App Store and StoreKit. Mentelys does not operate its own payment system and does not receive payment data such as credit card numbers. Apple's processing is governed by Apple's own privacy information."}},{title:{de:"12. Keine Analytics, Werbung oder externe KI",en:"12. No anal
5ytics, advertising, or external AI"},content:{de:"Mentelys verwendet keine Analytics, kein Tracking, keine Werbung und keine externe KI.",en:"Mentelys uses no analytics, no tracking, no advertising, and no external AI."}},{title:{de:"13. Daten löschen und zurücksetzen",en:"13. Deleting and resetting data"},content:{de:"Lokale Daten können über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät gelöscht werden. Die verfügbaren iOS-Optionen können sich unterscheiden.",en:"Local data can be deleted through app functions and settings and by removing the app from the device. Available iOS options can differ."}},{title:{de:"14. Ihre Rechte und Beschwerderecht",en:"14. Your rights and right to lodge a complaint"},content:{de:"Sie haben, soweit die gesetzlichen Voraussetzungen vorliegen, Rechte auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Sie können sich an [email protected] wenden und haben ein Beschwerderecht bei einer Datenschutzaufsichtsbehörde.",en:"Where the legal requirements are met, you have rights of access, rectification, erasure, restriction of processing, data portability, and objection. You can contact [email protected] and have the right to lodge a complaint with a data-protection supervisory authority."}},{title:{de:"15. Änderungen dieser Datenschutzerklärung",en:"15. Changes to this privacy policy"},content:{de:"Stand: September 2026. Diese Erklärung wird angepasst, wenn sich Mentelys-Funktionen oder die Datenverarbeitung ändern.",en:"Last updated: September 2026. This policy will be updated if Mentelys features or data processing change."}}]}],eb=[{slug:"wakegate",name:"WakeGate",color:"#14b8a6",intro:{de:"WakeGate ist eine native iPhone-Wecker-App in 
5Entwicklung. Hier findest du Hilfe zu Alarmen, Wake Missions, NFC und Pro.",en:"WakeGate is a native iPhone alarm app in development. Find help with alarms, Wake Missions, NFC, and Pro here."},items:[{question:{de:"Der Alarm klingelt nicht",en:"My alarm does not ring"},answer:{de:"Prüfe die AlarmKit-Berechtigung, ob der Alarm aktiv ist, und teste den Alarm auf deinem Gerät. Ein echter Alarmtest ist aussagekräftiger als die angezeigte Medienlautstärke. iOS und Gerätezustand können das Verhalten beeinflussen.",en:"Check AlarmKit permission, whether the alarm is active, and test the alarm on your device. A real alarm test is more meaningful than the displayed media volume. iOS and device state can affect behaviour."}},{question:{de:"Wie wirken sich Lautlosmodus und Fokus aus?",en:"What about Silent Mode and Focus?"},answer:{de:"WakeGate plant Alarme über Apples System-Alarm-Infrastruktur. Prüfe die iOS-Einstellungen und teste deinen Alarm in deinem üblichen Gerätezustand.",en:"WakeGate schedules alarms through Apple’s system alarm infrastructure. Check iOS settings and test your alarm in your usual device state."}},{question:{de:"Wie funktioniert Snooze?",en:"How does snooze work?"},answer:{de:"Snooze richtet sich nach der Einstellung des jeweiligen Alarmprofils. Prüfe diese Einstellung beim Bearbeiten des Alarms.",en:"Snooze follows the setting of the relevant alarm profile. Check that setting when editing the alarm."}},{question:{de:"Warum startet eine Wake Mission?",en:"Why does a Wake Mission start?"},answer:{de:"Nach dem System-Stopp kann WakeGate eine konfigurierte Wake Mission öffnen. Apple entscheidet auf einem gesperrten Gerät über Entsperren und die Darstellung im Vordergrund.",en:"After the system stop, WakeGate can open a configured Wake Mission. On a locked device, Apple decides about unlocking and foreground presentation."}},{question:{de:"Wofür braucht WakeGate die Kamera?",en:"Why does WakeGate need the camera?"},answer:{de:"Nur für eine Exercise Mission. Die Bewegung für Push-ups oder Squats wird auf dem Gerät ausgewertet; Bilder und Frames werden nicht gespeichert oder hochgeladen. Prüfe Kamera-Berechtigung und ausreichendes Licht, wenn Wiederholungen nicht erkannt werden.",en:"Only for an Exercise Mission. Movement for push-ups or squats is assessed on device; images and frames are not stored or uploaded. Check camera permission and sufficient light when repetitions are not recognised."}},{question:{de:"Wie richte ich einen NFC-Tag ein?",en:"How do I set up an NFC tag?"},answer:{de:"Für eine Neueinrichtung muss der Tag NDEF-kompatibel und beschreibbar sein. NTAG213, NTAG215 und NTAG216 sind typische Beispiele, aber nicht die einzigen möglichen unterstützten Tags.",en:"For new setup, a tag must be NDEF-compatible and writable. NTAG213, NTAG215, and NTAG216 are typical examples, but not the only potentially supported tags."}},{question:{de:"Was passiert mit einem bereits beschriebenen oder Read-Only-Tag?",en:"What happens with an already written or read-only tag?"},answer:{de:"Ein bereits beschreibbarer Tag wird nur nach deiner ausdrücklichen Bestätigung überschrieben. Bestehende WakeGate-Tags können importiert und Read-Only-WakeGate-Tags gelesen werden. Read-Only-Tags können nicht neu beschrieben oder geleert werden.",en:"An already writable tag is overwritten only after your explicit confirmation. Existing WakeGate tags can be imported and read-only WakeGate tags can be read. Read-only tags cannot be rewritten or cleared."}},{question:{de:"Kann ich einen Tag ersetzen, entfernen oder leeren?",en:"Can I replace, remove, or clear a tag?"},answer:{de:"Du kannst einen Tag lokal aus WakeGate entfernen. Auf Nutzeraktion kann WakeGate den NDEF-Bereich eines beschreibbaren Tags leeren; dies ist kein Factory Reset und löscht nicht den gesamten physischen Speicher.",en:"You can remove a tag locally from WakeGate. On user action, WakeGate can clear the NDEF area of a writable tag; this is not a factory reset and does not erase all physical memory."}},{question:{de:"Wie funktionieren Pro, Wiederherstellung und Kündigung?",en:"How do Pro, restore, and cancellation work?"},answer:{de:"Free erlaubt bis zu drei aktive Alarmprofile. Pro ermöglicht unbegrenzt aktive Alarmprofile und wird als monatliches oder jährliches, automatisch verlängerndes Apple-Abonnement angeboten. Kauf, Wiederherstellung, Verwaltung und Kündigung erfolgen über Apple; Preis und Währung zeigt Apple an.",en:"Free allows up to three active alarm profiles. Pro enables unlimited active alarm profiles and is offered as a monthly or annual auto-renewing Apple subscription. Purchase, restore, management, and cancellation are handled through Apple; Apple displays price and currency."}},{question:{de:"Wie lösche ich Daten und wo finde ich Datenschutz?",en:"How do I delete data and find privacy information?"},answer:{de:"Lokale Daten lassen sich über App-Funktionen und durch Entfernen der App löschen. Details stehen in der WakeGate-Datenschutzerklärung.",en:"Local data can be deleted through app functions and by removing the app. Details are in the WakeGate privacy policy."}}]},{slug:"sweatkey",name:"SweatKey",color:"#f97316",intro:{de:"SweatKey verbindet Bewegung mit bewusster Bildschirmzeit. Hier findest du Hinweise zu Berechtigungen, Fortschritt, geschützten Apps und Pro.",en:"SweatKey connects movement with intentional screen time. Here you can find help with permissions, progress, protected apps, and Pro."},items:[{question:{de:"Wie funktioniert die Screen Time Berechtigung?",en:"How does Screen Time permission work?"}
5,answer:{de:"SweatKey verwendet Apple FamilyControls, ManagedSettings und DeviceActivity für geschützte Apps. Erteile die Berechtigung nur, wenn du diese Funktion nutzen möchtest. Das Verhalten kann in einzelnen iOS Situationen technisch bedingt abweichen.",en:"SweatKey uses Apple FamilyControls, ManagedSettings, and DeviceActivity for protected apps. Grant permission only when you want to use this function. Behaviour can vary in individual iOS situations for technical reasons."}},{question:{de:"Warum braucht SweatKey Motion and Fitness?",en:"Why does SweatKey need Motion and Fitness?"},answer:{de:"In Version 1 verarbeitet SweatKey Schritte über Motion and Fitness, damit Fortschritt und Zeitguthaben berechnet werden können.",en:"In version 1, SweatKey processes steps through Motion and Fitness so progress and time credit can be calculated."}},{question:{de:"Wofür wird die Kamera verwendet?",en:"What is the camera used for?"},answer:{de:"Unterstützte Übungen können die Kamera und lokale Körperposenerkennung nutzen. Trainingsvideos werden standardmäßig nicht gespeichert.",en:"Supported workouts can use the camera and local body pose recognition. Workout videos are not stored by default."}},{question:{de:"Was gilt für Fotos, Aufnahmen und Audio?",en:"What applies to photos, recordings, and audio?"},answer:{de:"Eine optionale Trainingsaufnahme kann in Pro verfügbar sein. Sie bleibt lokal, bis du sie selbst in Fotos speicherst. Audio kann nur verwendet werden, wenn du es für eine Aufnahme aktivierst.",en:"An optional workout recording can be available in Pro. It remains local until you choose to save it to Photos. Audio can only be used when you enable it for a recording."}},{question:{de:"Warum werden meine geschützten Apps nicht wie erwartet gesteuert?",en:"Why are my protected apps not controlled as expected?"},answer:{de:"Prüfe die Screen Time Berechtigung und die ausgewählten Regeln. Die Funktionen verwenden Apple Frameworks und können technisch bedingte Abweichungen zeigen.",en:"Check Screen Time permission and the selected rules. The functions use Apple frameworks and can show technical variation."}},{question:{de:"Warum werden Schritte nicht aktualisiert?",en:"Why are steps not updating?"},answer:{de:"Prüfe die Motion and Fitness Berechtigung und ob das iPhone Bewegungsdaten erfassen kann. Schrittwerte können technisch bedingte Abweichungen haben.",en:"Check Motion and Fitness permission and whether the iPhone can capture movement data. Step values can vary for technical reasons."}},{question:{de:"Warum wird ein Workout nicht erkannt?",en:"Why is a workout not recognized?"},answer:{de:"Prüfe die Kameraberechtigung, ausreichendes Licht und ob die unterstützte Übung sichtbar erfasst werden kann. Wiederholungen können technisch bedingte Abweichungen haben.",en:"Check camera permission, sufficient light, and whether the supported exercise can be captured visibly. Repetitions can vary for technical reasons."}},{question:{de:"Wie funktionieren Kauf und Wiederherstellung?",en:"How do purchase and restore work?"},answer:{de:"Pro wird durch ein verifiziertes aktives StoreKit Entitlement freigeschaltet. Für eine Wiederherstellung nutze die Wiederherstellungsfunktion in der App und melde dich bei Bedarf beim Apple Support.",en:"Pro unlocks through a verified active StoreKit entitlement. To restore, use the restore function in the app and contact Apple Support if needed."}}
5,{question:{de:"Was passiert, wenn Pro endet?",en:"What happens when Pro ends?"},answer:{de:"Bei Ablauf oder Widerruf werden Pro Funktionen gesperrt und die App kehrt zu Free zurück. Deine lokalen Daten bleiben erhalten.",en:"When Pro expires or is revoked, Pro functions are locked and the app returns to Free. Your local data remains available."}},{question:{de:"Was umfasst Free?",en:"What does Free include?"},answer:{de:"Free schützt bis zu zwei einzelne Apps. Kategorien und Websites sind nicht enthalten. Schritte, Liegestütze, grundlegender Fortschritt und die vorhandenen Free Funktionen bleiben nutzbar.",en:"Free protects up to two individual apps. Categories and websites are not included. Steps, push ups, basic progress, and the available Free functions remain usable."}}]},{slug:"jotcue",name:"JotCue",color:"#0ea5e9",intro:{de:"JotCue ist eine native iPhone-App zum schnellen Festhalten von Sprach- und Texteingaben, aktuell in Entwicklung. Hier findest du Hilfe zu Aufnahme, Transkription, Systemintegration und Pro.",en:"JotCue is a native iPhone app for quickly capturing voice and text input, currently in development. Find help with recording, transcription, system integration, and Pro here."},items:[{question:{de:"Wie starte ich eine Sprachaufnahme?",en:"How do I start a voice recording?"},answer:{de:"Öffne JotCue und tippe auf die Aufnahmefunktion in der Inbox, oder nutze den zugewiesenen Action Button beziehungsweise App-Kurzbefehl, sofern eingerichtet.",en:"Open JotCue and tap the recording control in the inbox, or use the assigned Action Button or app shortcut, if set up."}},{question:{de:"Mikrofonzugriff wurde verweigert – was tun?",en:"Microphone access was denied — what now?"},answer:{de:"Öffne die iOS-Einstellungen für JotCue und aktiviere den Mikrofonzugriff. Ohne diese Berechtigung kann keine Sprachaufnahme gestartet werden.",en:"Open iOS Settings for JotCue and enable microphone access. Without this permission, voice recording cannot start."}},{question:{de:"Die Transkription ist nicht verfügbar",en:"Transcription is not available"},answer:{de:"Lokale Transkription setzt ein unterstütztes Gerät und iOS voraus. Prüfe, ob ein benötigtes Sprachmodell noch von iOS vorbereitet wird, und versuche es anschließend erneut.",en:"Local transcription requires a supported device and iOS version. Check whether a required speech model is still being prepared by iOS, then try again."}},{question:{de:"Das Sprachmodell wird vorbereitet oder fehlt",en:"The speech model is being prepared or is missing"},answer:{de:"iOS kann unterstützte Sprachressourcen im Hintergrund bereitstellen. Warte, bis die Bereitstellung abgeschlossen ist, und stelle eine bestehende Internetverbindung für den Download durch iOS sicher.",en:"iOS can provide supported speech resources in the background. Wait until preparation is complete and make sure a network connection is available for iOS to download the resource."}},{question:{de:"Was passiert mit meiner Aufnahme nach der Transkription?",en:"What happens to my recording after transcription?"},answer:{de:"Nach einer erfolgreich verifizierten Transkription kann die Audiodatei automatisch gelöscht werden. Schlägt die Transkription fehl oder wird unterbrochen, bleibt die Aufnahme zur Wiederherstellung erhalten. Du kannst Aufnahmen zusätzlich optional dauerhaft behalten.",en:"After a successfully verified transcription, the audio file can be deleted automatically. If transcription fails or is interrupted, the recording is kept for recovery. You can also choose to keep recordings permanently."}},{question:{de:"Wie richte ich den Action Button für JotCue ein?",en:"How do I set up the Action Button for JotCue?"},answer:{de:"Öffne auf einem unterstützten iPhone die iOS-Einstellungen, wähle Action Button, dann Kurzbefehl, und wähle den JotCue-Kurzbefehl „Gedanken aufnehmen“ aus.",en:"On a supported iPhone, open iOS Settings, choose Action Button, then Shortcut, and select the JotCue “Capture Thought” shortcut."}},{question:{de:"Der Action Button startet JotCue nicht wie erwartet",en:"The Action Button does not start JotCue as expected"},answer:{de:"Prüfe die Zuweisung in den iOS-Einstellungen. Je nach Sperr- oder Systemzustand kann iOS ein Entsperren oder eine zusätzliche Interaktion verlangen; ein vollständig verdeckter Start ist nicht in jeder Situation garantiert.",en:"Check the assignment in iOS Settings. Depending on lock or system state, iOS may require unlocking or an additional interaction; a fully hidden start is not guaranteed in every situation."}},{question:{de:"Was gilt bei gesperrtem Gerät oder im Hintergrund?",en:"What applies on a locked device or in the background?"},answer:{de:"iOS setzt hier Systemgrenzen, die JotCue nicht umgehen kann. Verhalten kann sich je nach Gerät, iOS-Version und Zustand unterscheiden.",en:"iOS enforces system boundaries here that JotCue cannot bypass. Behavior can vary by device, iOS version, and state."}},{question:{de:"Wie funktioniert die Live Activity beim Aufnehmen?",en:"How does the Live Activity work while recording?"},answer:{de:"Während einer laufenden Aufnahme kann JotCue Aufnahmestatus und Timer über eine Live Activity auf dem Lock Screen anzeigen. Transkript- oder Notizinhalte werden dort nicht angezeigt.",en:"While a recording is active, JotCue can show recording status and a timer through a Live Activity on the Lock Screen. Transcript or note content is not shown there."}},{question:{de:"Meine Widgets zeigen keine aktuellen Inhalte",en:"My widgets do not show current content"},answer:{de:"Prüfe, ob das Widget korrekt zu deinem Home- oder Sperrbildschirm hinzugefügt wurde. iOS aktualisiert Widgets n
5ach eigenen Systemregeln.",en:"Check whether the widget was correctly added to your Home Screen or Lock Screen. iOS updates widgets according to its own system rules."}},{question:{de:"Wie füge ich JotCue zum Control Center hinzu?",en:"How do I add JotCue to Control Center?"},answer:{de:"Öffne die iOS-Einstellungen für das Control Center und füge die verfügbare JotCue-Steuerung hinzu, sofern dein Gerät und deine iOS-Version dies unterstützen.",en:"Open iOS Settings for Control Center and add the available JotCue control, provided your device and iOS version support it."}},{question:{de:"Wie füge ich einer Aufgabe Datum und Uhrzeit hinzu?",en:"How do I add a date and time to a task?"},answer:{de:"Öffne eine Aufgabe in JotCue und tippe auf das Datum-/Uhrzeit-Feld. Du kannst Datum, Uhrzeit und eine lokale Erinnerung festlegen.",en:"Open a task in JotCue and tap the date/time field. You can set a date, time, and a local reminder."}},{question:{de:"Wie funktionieren lokale Erinnerungen?",en:"How do local reminders work?"},answer:{de:"Datierte Aufgaben können lokal auf deinem Gerät Erinnerungen auslösen. JotCue nutzt hierfür lokale Benachrichtigungen und kein Push-Backend. Erinnerungen werden direkt auf dem Gerät geplant.",en:"Dated tasks can trigger reminders locally on your device. JotCue uses local notifications for this and no push backend. Reminders are scheduled directly on your device."}},{question:{de:"Wie füge ich ein Foto hinzu?",en:"How do I add a photo?"},answer:{de:"Wähle ein Foto bewusst über die Systemauswahl aus. JotCue speichert eine lokale, optimierte Kopie; unnötige Metadaten werden entfernt und das Original bleibt unverändert.",en:"Choose a photo deliberately through the system picker. JotCue stores a local, optimized copy; unnecessary metadata is removed and the original stays unchanged."}},{question:{de:"Wie nutze ich die Kamera in JotCue?",en:"How do I use the camera in JotCue?"},answer:{de:"Die Kamera öffnet sich nur nach deiner bewussten Nutzeraktion, zum Beispiel um ein Foto direkt an einen Eintrag anzuhängen.",en:"The camera opens only after your deliberate action, for example to attach a photo directly to an entry."}},{question:{de:"Wie teile ich Inhalte über die Share Extension an JotCue?",en:"How do I share content to JotCue via the share extension?"},answer:{de:"Wähle in einer anderen App Text, eine URL oder ein Foto aus, öffne das iOS-Teilen-Menü und wähle JotCue aus. Nur der geteilte Inhalt wird übernommen.",en:"Select text, a URL, or a photo in another app, open the iOS share sheet, and choose JotCue. Only the shared content is imported."}},{question:{de:"Wie erstelle ich ein Backup?",en:"How do I create a backup?"},answer:{de:"Erstelle über die Backup-Funktion in JotCue eine lokale .jotcuebackup-Datei mit deinen Daten und Anhängen. Audio kann optional eingeschlossen werden.",en:"Use the backup function in JotCue to create a local .jotcuebackup file with your data and attachments. Audio can optionally be included."}},{question:{de:"Wie stelle ich ein Backup wieder her?",en:"How do I restore a backup?"},answer:{de:"Wähle die gewünschte .jotcuebackup-Datei über die Wiederherstellungsfunktion in JotCue aus. Die Wiederherstellung erfolgt lokal auf dem Gerät.",en:"Select the desired .jotcuebackup file through the restore function in JotCue. Restoring happens locally on the device."}},{question:{de:"Gibt es einen Papierkorb?",en:"Is there a trash?"},answer:{de:"Ja. Gelöschte Inhalte landen zunächst im Papierkorb und können dort wiederhergestellt oder endgültig entfernt werden.",en:"Yes. Deleted content first goes to the trash, where it can be restored or permanently deleted."}},{question:{de:"Wie stelle ich gelöschte Inhalte wieder her?",en:"How do I restore deleted content?"},answer:{de:"Öffne den Papierkorb in JotCue und stelle die gewünschten Einträge wieder her. Wiederhergestellte Inhalte kehren an ihren ursprünglichen Ort zurück.",en:"Open the trash in JotCue and restore the desired entries. Restored content returns to its original location."}},{question:{de:"Was ist JotCue Free?",en:"What is JotCue Free?"},answer:{de:"JotCue ist kostenlos nutzbar. Free umfasst unbegrenzte Aufnahmen, Notizen und Aufgaben, 1 aktives Projekt, 1 aktiven Thread, 3 aktive Kategorien sowie alle weiteren Kernfunktionen.",en:"JotCue is free to use. Free includes unlimited captures, notes, and tasks, 1 active project, 1 active thread, 3 active categories, and all other core features."}},{question:{de:"Das Limit für Projekte, Threads oder Kategorien ist erreicht",en:"The limit for projects, threads, or categories is reached"},answer:{de:"In Free sind 1 aktives Projekt, 1 aktiver Thread und 3 aktive Kategorien verfügbar. Schalte JotCue Pro frei, um unbegrenzte Projekte, Threads und Kategorien zu nutzen. Bestehende Inhalte bleiben auch bei Ablauf von Pro vollständig erhalten.",en:"Free includes 1 active project, 1 active thread, and 3 active categories. Unlock JotCue Pro for unlimited projects, threads, and categories. Existing content remains fully intact even if Pro expires."}},{question:{de:"Wie organisiere ich Projekte und Threads?",en:"How do I organize projects and threads?"},answer:{de:"Ordne Notizen und Aufgaben in der App einem Projekt oder Thread zu. In Free steht je ein aktives Projekt und ein aktiver Thread zur Verfügung; JotCue Pro schaltet unbegrenzte Projekte und Threads frei.",en:"Assign notes and tasks to a project or thread within the app. Free includes one active project and one active thread; JotCue Pro unlocks unlimited projects and threads."}},{question:{de:"Was bietet JotCue Pro?",en:"What does JotCue Pro offer?"},answer:{de:"JotCue Pro schaltet unbegrenzte Projekte, unbegrenzte Threads, unbegrenzte Kategorien und erweiterte Exporte frei. Optionale JotCue-Pro-Funktionen werden über den App Store angeboten.",en:"JotCue Pro unlocks unlimited projects, unlimited threads, unlimited categories, and advanced exports. Optional JotCue Pro features are available through the App Store."}},{question:{de:"Wie stelle ich einen Kauf wieder her?",en:"How do I restore a purchase?"},answer:{de:"Nutze die Wiederherstellungsfunktion in JotCue, um Käufe über StoreKit mit deiner Apple ID wiederherzustellen.",en:"Use the restore function in JotCue to restore purchases through StoreKit with your Ap
5ple ID."}},{question:{de:"Wie verwalte ich mein Abonnement?",en:"How do I manage my subscription?"},answer:{de:"Verwaltung und Kündigung eines JotCue-Pro-Abonnements erfolgen über die Apple-ID-Einstellungen deines Geräts.",en:"Managing and canceling a JotCue Pro subscription is done through your device's Apple ID settings."}},{question:{de:"Was ist der Unterschied zwischen Abo und Lifetime?",en:"What is the difference between subscription and Lifetime?"},answer:{de:"Monatliches und jährliches Pro sind automatisch verlängernde Abonnements über Apple. Lifetime ist ein einmaliger Kauf über den App Store, der Pro dauerhaft freischaltet.",en:"Monthly and yearly Pro are auto-renewing subscriptions through Apple. Lifetime is a one-time purchase through the App Store that unlocks Pro permanently."}}]},{slug:"voxavo",name:"Voxavo",color:"#0284c7",intro:{de:"Voxavo ist eine native iPhone-Kommunikationshilfe zum Tippen & Sprechen und Verstärken der eigenen Stimme, aktuell in Entwicklung. Hier findest du Hilfe zu Stimme, Sprache und Pro.",en:"Voxavo is a native iPhone communication aid for typing and speaking aloud and amplifying your voice, currently in development. Find help with voice, language, and Pro here."},items:[{question:{de:"Was ist Voxavo?",en:"What is Voxavo?"},answer:{de:"Voxavo ist eine lokale Kommunikationshilfe, mit der du Text laut ausgeben lassen, deine eigene Stimme verstärken und häufig verwendete Sätze speichern kannst.",en:"Voxavo is a local communication aid that lets you have text spoken aloud, amplify your own voice, and save frequently used phrases."}},{question:{de:"Wie funktioniert Tippen & sprechen?",en:"How does type & speak work?"},answer:{de:"Gib Text ein und lasse ihn über eine verfügbare Systemstimme laut ausgeben. Sprechgeschwindigkeit und Stimme kannst du in den Einstellungen anpassen.",en:"Enter text and have it spoken aloud through an available system voice. You can adjust the speaking speed and voice in the settings."}},{question:{de:"Wie verstärke ich meine Stimme?",en:"How do I amplify my voice?"},answer:{de:"Aktiviere die Stimmverstärkung in Voxavo Pro. Deine Stimme wird während der Nutzung über den Lautsprecher verstärkt.",en:"Enable voice amplification in Voxavo Pro. Your voice is amplified through the speaker while the feature is in use."}},{question:{de:"Warum benötigt Voxavo Mikrofonzugriff?",en:"Why does Voxavo need microphone access?"},answer:{de:"Das Mikrofon wird ausschließlich für die aktive Stimmverstärkung benötigt und nur während der tatsächlichen Nutzung verwendet.",en:"The microphone is needed exclusively for active voice amplification and is used only while the feature is actually in use."}},{question:{de:"Wird Audio aufgenommen oder gespeichert?",en:"Is audio recorded or stored?"},answer:{de:"Nein. Voxavo speichert keine Audioaufzeichnungen oder Audiodateien. Die Stimme deines Gegenübers wird nicht aufgenommen.",en:"No. Voxavo does not store audio recordings or audio files. The voice of the person you are speaking with is not recorded."}},{question:{de:"Was ist der Unterschied zwischen App-Sprache und Kommunikationssprache?",en:"What is the difference between app language and communication language?"},answer:{de:"Die App-Sprache betrifft die Bedienoberfläche (Deutsch oder Englisch). Die Kommunikationssprache betrifft die gesprochene Ausgabe und lässt sich unabhängig davon einstellen.",en:"The app language affects the interface (German or English). The communication language affects the spoken output and can be set independently."}},{question:{de:"Wie ändere ich Stimme und Kommunikationssprache?",en:"How do I change the voice and communication language?"},answer:{de:"Öffne die Einstellungen in Voxavo und wähle dort die gewünschte Systemstimme sowie die Kommunikationssprache aus.",en:"Open Settings in Voxavo and select the desired system voice and communication language there."}},{question:{de:"Wie funktioniert die Hörprobe?",en:"How does the voice sample work?"},answer:{de:"In den Stimmeinstellungen kannst du eine kurze Hörprobe der ausgewählten Stimme abspielen, bevor du sie festlegst.",en:"In the voice settings, you can play a short sample of the selected voice before setting it."}},{question:{de:"Was ist „Groß & deutlich“?",en:"What is “Large & Clear”?"},answer:{de:"Groß & deutlich vergrößert Text und Bedienelemente für eine bessere Lesbarkeit.",en:"Large & Clear enlarges text and controls for better readability."}},{question:{de:"Wie ändere ich die Akzentfarbe?",en:"How do I change the accent color?"},answer:{de:"Wähle in den Einstellungen eine der verfügbaren Akzentfarben aus.",en:"Choose one of the available accent colors in Settings."}},{question:{de:"Wie funktionieren „Meine Sätze“?",en:"How do “My Phrases” work?"},answer:{de:"In Voxavo Pro kannst du häufig verwendete Sätze speichern, als Favoriten markieren und manuell in einer eigenen Reihenfolge anordnen.",en:"In Voxavo Pro, you can save frequently used phrases, mark them as favorites, and manually arrange them in your own order."}},{question:{de:"Wie funktioniert der Verlauf?",en:"How does history work?"},answer:{de:"Der optionale Verlauf in Voxavo Pro zeigt zuvor gesprochenen Text lokal auf deinem Gerät. Du kannst ihn abschalten, löschen oder Einträge in Meine Sätze übernehmen.",en:"The optional history in Voxavo Pro shows previously spoken text locally on your device. You can turn it off, delete it, or move entries into My Phrases."}},{question:{de:"Was ist kostenlos?",en:"What is free?"},answer:{de:"Voxavo Free umfasst Tippen & Sprechen, Stimmauswahl mit Hörprobe, Sprechgeschwindigkeit, Groß & deutlich, Akzentfarben und die DE/EN-Oberfläche.",en:"Voxavo Free includes type & speak, voice selection with a sample, speaking speed, Large & Clear, accent colors, and the German/English interface."}},{question:{de:"Was bietet Voxavo Pro?",en:"What does Voxavo Pro offer?"},answer:{de:"Pro ergänzt Stimmverstärkung, Meine Sätze, Favoriten, manuelle Reihenfolge, Verlauf und Verstärkungsprofile. Voxavo Pro ist als Monats- oder Jahresabo über den App Store erhältlich.",en:"Pro adds voice amplification, My Phrases, favorites, manual ordering, history, and amplification profiles. Voxavo Pro is available as a monthly or yearly subscription through the App Store."}}
5,{question:{de:"Wie stelle ich Käufe wieder her?",en:"How do I restore purchases?"},answer:{de:"Nutze die Wiederherstellungsfunktion in Voxavo, um dein Abonnement über StoreKit mit deiner Apple ID wiederherzustellen.",en:"Use the restore function in Voxavo to restore your subscription through StoreKit with your Apple ID."}},{question:{de:"Was passiert, wenn Pro ausläuft?",en:"What happens when Pro expires?"},answer:{de:"Bei Ablauf oder Widerruf werden Pro-Funktionen wie Stimmverstärkung, Meine Sätze und Verlauf gesperrt; die App kehrt zu Free zurück. Lokal gespeicherte Daten bleiben erhalten.",en:"When Pro expires or is revoked, Pro features such as voice amplification, My Phrases, and history are locked; the app returns to Free. Locally stored data remains available."}},{question:{de:"Funktioniert Voxavo mit Bluetooth- oder externen Audiogeräten?",en:"Does Voxavo work with Bluetooth or external audio devices?"},answer:{de:"Voxavo nutzt die vom iPhone bereitgestellten Audioausgänge. Das Verhalten mit externen Geräten hängt von den jeweiligen iOS-Systemeinstellungen ab.",en:"Voxavo uses the audio outputs provided by the iPhone. Behavior with external devices depends on the respective iOS system settings."}},{question:{de:"Wie lösche ich meine Daten?",en:"How do I delete my data?"},answer:{de:"Lokale Daten lassen sich über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät löschen.",en:"Local data can be deleted through the app's functions and settings, as well as by removing the app from the device."}},{question:{de:"Wie bekomme ich Support?",en:"How do I get support?"},answer:{de:"Melde Fragen oder Probleme direkt per E-Mail über den Kontakt auf dieser Seite.",en:"Send questions or issues directly by email using the contact on this page."}}]},{slug:"wavevra",name:"Wavevra",color:"#c026d3",intro:{de:"Wavevra ist eine native iPhone-App für Audioanalyse und Visualisierung, aktuell in Entwicklung. Nenne uns bei Problemen möglichst dein iPhone-Modell, deine iOS-Version, die Wavevra-Version und eine kurze Fehlerbeschreibung – ohne private Audio- oder Videodateien.",en:"Wavevra is a native iPhone app for audio analysis and visualization, currently in development. If you run into an issue, please include your iPhone model, iOS version, Wavevra version, and a short description of the problem — no need to send private audio or video files."},items:[{question:{de:"Das Mikrofon funktioniert nicht",en:"The microphone does not work"},answer:{de:"Öffne die iOS-Einstellungen für Wavevra und aktiviere den Mikrofonzugriff. Ohne diese Berechtigung kann keine Live-Analyse oder Aufnahme über das Mikrofon starten.",en:"Open iOS Settings for Wavevra and enable microphone access. Without this permission, live analysis or recording through the microphone cannot start."}},{question:{de:"Die Kamera funktioniert nicht",en:"The camera does not work"},answer:{de:"Öffne die iOS-Einstellungen für Wavevra und aktiviere den Kamerazugriff. Prüfe zusätzlich, ob eine andere App die Kamera gerade blockiert.",en:"Open iOS Settings for Wavevra and enable camera access. Also check whether another app is currently using the camera."}},{question:{de:"Der Import funktioniert nicht",en:"Import does not work"},answer:{de:"Prüfe, ob die Datei ein von Wavevra unterstütztes Audio- oder Videoformat besitzt und ob genügend Speicherplatz auf deinem Gerät verfügbar ist.",en:"Check whether the file uses an audio or video format supported by Wavevra and whether enough storage is available on your device."}},{question:{de:"Der Export schlägt fehl",en:"Export fails"},answer:{de:"Prüfe verfügbaren Speicherplatz und Akkustand und versuche den Export erneut. Nenne uns bei wiederholten Problemen Seitenverhältnis, Qualitätsstufe und Gerätemodell.",en:"Check available storage and battery level, then try the export again. If the problem persists, tell us the aspect ratio, quality level, and device model."}},{question:{de:"Ich finde ein Projekt nicht wieder",en:"I cannot find a project again"},answer:{de:"Öffne die Projektübersicht in Wavevra. Projekte werden lokal auf deinem Gerät gespeichert; das Entfernen der App löscht auch lokal gespeicherte Projekte.",en:"Open the project overview in Wavevra. Projects are stored locally on your device; removing the app also deletes locally stored projects."}},{question:{de:"Wie sichere ich einen Export in Fotos?",en:"How do I save an export to Photos?"},answer:{de:"Wähle nach dem Export die Option In Fotos sichern. Wavevra fragt dafür die Berechtigung zum Hinzufügen von Fotos an, nicht den vollständigen Lesezugriff auf deine Mediathek.",en:"After exporting, choose Save to Photos. Wavevra requests the add-only photos permission for this, not full read access to your library."}},{question:{de:"Pro bleibt trotz Kauf gesperrt",en:"Pro stays locked despite purchasing"},answer:{de:"Nutze zunächst die Wiederherstellungsfunktion in Wavevra. Prüfe außerdem, ob du mit der Apple-ID angemeldet bist, mit der du gekauft hast.",en:"First use the restore function in Wavevra. Also check that you are signed in with the Apple ID you purchased with."}}
5,{question:{de:"Wie stelle ich Käufe wieder her?",en:"How do I restore purchases?"},answer:{de:"Nutze die Wiederherstellungsfunktion in Wavevra, um dein Abonnement über StoreKit mit deiner Apple ID wiederherzustellen.",en:"Use the restore function in Wavevra to restore your subscription through StoreKit with your Apple ID."}},{question:{de:"Wie verwalte ich mein Abonnement?",en:"How do I manage my subscription?"},answer:{de:"Verwaltung und Kündigung eines Wavevra-Pro-Abonnements erfolgen über die Apple-ID-Einstellungen deines Geräts. Wavevra speichert keine Zahlungsdaten.",en:"Managing and canceling a Wavevra Pro subscription is done through your device's Apple ID settings. Wavevra does not store payment data."}},{question:{de:"Wie funktioniert Datenschutz bei Wavevra?",en:"How does privacy work in Wavevra?"},answer:{de:"Audio, Video, Analysedaten und Projekte werden lokal auf deinem Gerät verarbeitet. Details findest du in der Wavevra-Datenschutzerklärung.",en:"Audio, video, analysis data, and projects are processed locally on your device. Details are in the Wavevra privacy policy."}}]},{slug:"chessmachina",name:"ChessMachina",color:"#44403c",intro:{de:"ChessMachina ist eine native iPhone-App zum Schachspielen gegen rekonstruierte historische Maschinen und eine moderne lokale Engine, aktuell in Entwicklung. Hier findest du Hilfe zu Historical Mode, Compute Mode und Replay.",en:"ChessMachina is a native iPhone app for playing chess against reconstructed historical machines and a modern local engine, currently in development. Find help with Historical Mode, Compute Mode, and Replay here."},items:[{question:{de:"Die App startet nicht oder eine Partie lässt sich nicht beginnen",en:"The app does not start or a game will not begin"},answer:{de:"Stelle sicher, dass die App auf dem neuesten Stand ist, starte das 
5iPhone neu und versuche es erneut. Prüfe außerdem, ob genügend Speicherplatz auf dem Gerät verfügbar ist.",en:"Make sure the app is up to date, restart your iPhone, and try again. Also check that enough storage is available on your device."}},{question:{de:"Was ist der Unterschied zwischen Historical und Compute?",en:"What is the difference between Historical and Compute?"},answer:{de:"Historical Mode lässt dich gegen rekonstruierte historische Schachmaschinen von 1912 bis 1997 antreten. Compute Mode nutzt ChessMachinas eigene moderne lokale Reference Engine mit einstellbarem Rechenbudget.",en:"Historical Mode lets you play against reconstructed historical chess machines from 1912 to 1997. Compute Mode uses ChessMachina's own modern local reference engine with an adjustable compute budget."}},{question:{de:"Warum verhält sich eine historische Maschine ungewöhnlich?",en:"Why does a historical machine behave unusually?"},answer:{de:"Historische Algorithmen besitzen bewusst andere Grenzen als moderne Engines. Ein ungewöhnliches Verhalten kann Teil der rekonstruierten historischen Logik sein.",en:"Historical algorithms deliberately have different limits than modern engines. Unusual behavior can be part of the reconstructed historical logic."}},{question:{de:"Warum kann eine historische Partie gestoppt werden?",en:"Why can a historical game be stopped?"},answer:{de:"Wenn ein rekonstruierter historischer Algorithmus einen nicht dokumentierten Zustand erreicht, erfindet ChessMachina nicht still einen modernen Ersatzweg.",en:"When a reconstructed historical algorithm reaches an undocumented state, ChessMachina does not silently invent a modern workaround."}},{question:{de:"Werden historische Maschinen absichtlich schwächer gemacht?",en:"Are historical machines deliberately weakened?"},answer:{de:"Nein. Sie folgen ihrer jeweils rekonstruierten historischen Logik und bekommen keine künstlichen Zufallsfehler.",en:"No. They follow their respective reconstructed historical logic and are not given artificial random mistakes."}},{question:{de:"Wo liegen meine Spiele?",en:"Where are my games stored?"},answer:{de:"Lokal auf deinem Gerät.",en:"Locally on your device."}},{question:{de:"Wie funktioniert Replay?",en:"How does replay work?"},answer:{de:"Ein gespeichertes Spiel wird aus Startposition und Zugfolge rekonstruiert und erneut abgespielt.",en:"A saved game is reconstructed from its starting position and move sequence and played back again."}},{question:{de:"Funktioniert ChessMachina offline?",en:"Does ChessMachina work offline?"},answer:{de:"Kern-Gameplay sowie die historischen und modernen lokalen Engines benötigen keinen eigenen Online-Dienst. Einzelne externe Links außerhalb der App können weiterhin eine Internetverbindung voraussetzen.",en:"Core gameplay and the historical and modern local engines do not require a custom online service. Individual external links outside the app may still require an internet connection."}},{question:{de:"Warum gibt es keine Elo-Angabe?",en:"Why is there no Elo rating?"},answer:{de:"ChessMachina zeigt keine unkalibrierten oder erfundenen Elo-Werte an.",en:"ChessMachina does not display uncalibrated or invented Elo ratings."}},{question:{de:"Wie funktionieren Challenge-Links?",en:"How do challenge links work?"},answer:{de:"Diese Funktion ist für den aktuellen Entwicklungsstand nicht bestätigt und wird hier nicht beschrieben, bis sie im finalen App-Build verifiziert ist.",en:"This feature is not confirmed for the current development status and is not described here until it is verified in the final app build."}},{question:{de:"Wie bekomme ich Support?",en:"How do I get support?"},answer:{de:"Melde Fragen oder Probleme direkt per E-Mail über den Kontakt auf dieser Seite.",en:"Send questions or issues directly by email using the contact on this page."}}]},{slug:"nuptava",name:"Nuptava",color:"#57534e",intro:{de:"Nuptava ist ein lokaler Hochzeitsplaner für iPhone und iPad, aktuell in Entwicklung. Hier findest du Hilfe zu Backup, Wiederherstellung und den wichtigsten Funktionen.",en:"Nuptava is a local wedding planner for iPhone and iPad, currently in development. Find help with backup, restore, and the core features here."},items:[{question:{de:"Bleiben meine Daten auf meinem Gerät?",en:"Does my data stay on my device?"},answer:{de:"Ja. Nuptava speichert deine Hochzeitsdaten lokal auf deinem iPhone oder iPad und betreibt keinen eigenen Cloud-Sync.",en:"Yes. Nuptava stores your wedding data locally on your iPhone or iPad and runs no custom cloud sync."}},{question:{de:"Wie erstelle ich ein Backup?",en:"How do I create a backup?"},answer:{de:"Nutze die Backup-Funktion in Nuptava, um ein lokales, verschlüsseltes Backup zu erstellen. Zusätzlich kannst du deine Daten manuell exportieren.",en:"Use the backup function in Nuptava to create a local, encrypted backup. You can also export your data manually."}},{question:{de:"Wie stelle ich ein Backup wieder her?",en:"How do I restore a backup?"},answer:{de:"Wähle das gewünschte Backup über die Wiederherstellungsfunktion in Nuptava aus. Die Wiederherstellung erfolgt lokal auf dem Gerät.",en:"Select the desired backup through the restore function in Nuptava. Restoring happens locally on the device."}},{question:{de:"Wie stelle ich meinen Nuptava-Pro-Kauf wieder her?",en:"How do I restore my Nuptava Pro purchase?"},answer:{de:"Nutze die Wiederherstellungsfunktion in Nuptava, um deinen Lifetime-Kauf über StoreKit mit deiner Apple ID wiederherzustellen.",en:"Use the restore function in Nuptava to restore your lifetime purchase through StoreKit with your Ap
5ple ID."}},{question:{de:"Mitteilungen funktionieren nicht",en:"Notifications are not working"},answer:{de:"Öffne die iOS-Einstellungen für Nuptava und aktiviere Mitteilungen. Prüfe außerdem, ob der Fokus-/Nicht-stören-Modus aktiv ist.",en:"Open iOS Settings for Nuptava and enable notifications. Also check whether a Focus or Do Not Disturb mode is active."}},{question:{de:"Das Widget aktualisiert sich nicht",en:"The widget does not update"},answer:{de:"Prüfe, ob das Widget korrekt zu deinem Home-Bildschirm hinzugefügt wurde. iOS aktualisiert Widgets nach eigenen Systemregeln.",en:"Check whether the widget was correctly added to your Home Screen. iOS updates widgets according to its own system rules."}},{question:{de:"Wie ändere ich die Sprache?",en:"How do I change the language?"},answer:{de:"Nuptava folgt der in iOS eingestellten Sprache. Ändere die Sprache für Nuptava in den iOS-Einstellungen unter Sprache und Region.",en:"Nuptava follows the language set in iOS. Change the language for Nuptava in iOS Settings under Language & Region."}},{question:{de:"Wie ändere ich Region oder Währung?",en:"How do I change region or currency?"},answer:{de:"Region und Währungsdarstellung richten sich nach den iOS-Regionseinstellungen deines Geräts.",en:"Region and currency display follow your device's iOS region settings."}},{question:{de:"Wie wechsle ich zwischen Hell, Dunkel und System?",en:"How do I switch between light, dark, and system appearance?"},answer:{de:"Nuptava folgt standardmäßig der iOS-Systemeinstellung für Hell und Dunkel. Prüfe die Anzeige- und Helligkeitseinstellungen in iOS.",en:"Nuptava follows the iOS system setting for light and dark appearance by default. Check the Display & Brightness settings in iOS."}},{question:{de:"Wie exportiere ich meine Daten?",en:"How do I export my data?"},answer:{de:"Nutze die Exportfunktion in Nuptava, um deine Hochzeitsdaten bewusst als Datei zu sichern oder weiterzugeben.",en:"Use the export function in Nuptava to deliberately save or share your wedding data as a file."}},{question:{de:"Ich habe Probleme mit Dokumenten von Dienstleistern",en:"I am having trouble with vendor documents"},answer:{de:"Prüfe, ob das Dokumentformat unterstützt wird und ob genügend Speicherplatz auf deinem Gerät verfügbar ist.",en:"Check whether the document format is supported and whether enough storage is available on your device."}},{question:{de:"Wie lösche ich meine Daten?",en:"How do I delete my data?"},answer:{de:"Lokale Daten lassen sich über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät löschen.",en:"Local data can be deleted through the app's functions and settings, as well as by removing the app from the device."}},{question:{de:"Wie bekomme ich Support?",en:"How do I get support?"},answer:{de:"Melde Fragen oder Probleme direkt per E-Mail über den Kontakt auf dieser Seite.",en:"Send questions or issues directly by email using the contact on this page."}}]},{slug:"mentelys",name:"Mentelys",color:"#7c3aed",intro:{de:"Mentelys ist eine native iPhone-App für kognitives Training und persönliche Fortschrittsverfolgung, aktuell in Entwicklung. Hier findest du Hilfe zu Training, Fortschritt, Personal Recall, Backup und Full Unlock.",en:"Mentelys is a native iPhone app for cognitive training and personal progress tracking, currently in development. Find help with training, progress, Personal Recall, backup, and Full Unlock here."},items:[{question:{de:"Training startet nicht",en:"Training does not start"},answer:{de:"Schließe die App vollständig und öffne sie erneut. Prüfe außerdem, ob eine ausstehende iOS-Aktualisierung verfügbar ist.",en:"Fully close the app and reopen it. Also check whether a pending iOS update is available."}},{question:{de:"Wie verstehe ich meinen Fortschritt?",en:"How do I understand my progress?"},answer:{de:"Training Balance zeigt, wie ausgewogen die sechs Bereiche trainiert wurden. Training Level zeigt deine aktuelle Challenge-Stufe. Checkpoint Trends sind separate persönliche Verlaufsmessungen. Keiner dieser Werte ist ein Intelligenz- oder Diagnosescore.",en:"Training Balance shows how evenly the six areas have been trained. Training Level shows your current challenge stage. Checkpoint Trends are separate personal progress measurements. None of these values are an intelligence or diagnostic score."}},{question:{de:"Was ist Calibration?",en:"What is calibration?"},answer:{de:"Calibration hilft dabei, die anfängliche Schwierigkeit an dich anzupassen. Danach passt sich die Herausforderung adaptiv weiter an.",en:"Calibration helps set the initial difficulty to fit you. After that, the challenge keeps adapting automatically."}},{question:{de:"Wie funktioniert Personal Recall?",en:"How does Personal Recall work?"},answer:{de:"Hinterlege einen Cue und die passende Antwort. Mentelys fragt später zuerst den Cue ab und zeigt die Antwort erst auf Wunsch. In Free stehen bis zu 5 Einträge zur Verfügung, Full Unlock schaltet unbegrenztes Personal Recall frei.",en:"Save a cue and its matching answer. Mentelys later asks the cue first and shows the answer only on request. Free includes up to 5 entries; Full Unlock enables unlimited Personal Recall."}},{question:{de:"Wie stelle ich Benachrichtigungen ein?",en:"How do I set up notifications?"},answer:{de:"Aktiviere gewünschte Erinnerungen wie den Daily Training Reminder, den Streak Reminder oder Personal Recall Due in den Mentelys-Einstellungen sowie in den iOS-Benachrichtigungseinstellungen.",en:"Enable the reminders you want, such as the Daily Training Reminder, the Streak Reminder, or Personal Recall Due, in Mentelys settings and in iOS notification settings."}},{question:{de:"Meine Widgets zeigen keine aktuellen Inhalte",en:"My widgets do not show current content"},answer:{de:"Prüfe, ob das Widget korrekt zu deinem Home-Bildschirm hinzugefügt wurde. iOS aktualisiert Widgets n
5ach eigenen Systemregeln.",en:"Check whether the widget was correctly added to your Home Screen. iOS updates widgets according to its own system rules."}},{question:{de:"Wie erstelle und öffne ich ein Backup?",en:"How do I create and restore a backup?"},answer:{de:"Nutze die Backup-Funktion in Mentelys, um eine lokale Sicherungsdatei zu erstellen, und die Restore-Funktion, um sie wiederherzustellen. Ein Backup kann Personal-Recall-Inhalte enthalten; bewahre die Datei sicher auf.",en:"Use the backup function in Mentelys to create a local backup file, and the restore function to bring it back. A backup may contain Personal Recall content; keep the file secure."}},{question:{de:"Was ist im Full Unlock enthalten?",en:"What is included in Full Unlock?"},answer:{de:"Full Unlock schaltet alle 12 Trainingsübungen, Deep Think, Focus Area, alle 6 Checkpoints, die vollständige Progress History, unbegrenztes Personal Recall, Weekly und Monthly Reports, Share Cards sowie erweiterte Widgets frei. Es ist ein einmaliger Kauf über den App Store, kein Abonnement.",en:"Full Unlock enables all 12 training exercises, Deep Think, Focus Area, all 6 checkpoints, full progress history, unlimited Personal Recall, weekly and monthly reports, share cards, and extended widgets. It is a one-time App Store purchase, not a subscription."}},{question:{de:"Wie stelle ich einen Kauf wieder her?",en:"How do I restore a purchase?"},answer:{de:"Nutze die Wiederherstellungsfunktion in Mentelys, um den Full Unlock über StoreKit mit deiner Apple ID wiederherzustellen.",en:"Use the restore function in Mentelys to restore Full Unlock through StoreKit with your Apple ID."}},{question:{de:"Was ist der Unterschied zwischen Training Level und Checkpoint?",en:"What is the difference between Training Level and Checkpoint?"},answer:{de:"Training Level zeigt die aktuelle Challenge-Stufe innerhalb der Mentelys-Übungen. Ein Checkpoint ist eine separate, eigenständige Verlaufsmessung für einen Trainingsbereich.",en:"Training Level shows the current challenge stage within the Mentelys exercises. A checkpoint is a separate, standalone progress measurement for a training area."}},{question:{de:"Wie lösche ich meine Daten vollständig?",en:"How do I delete all my data?"},answer:{de:"Lokale Daten lassen sich über die Funktionen und Einstellungen der App sowie durch Entfernen der App vom Gerät löschen.",en:"Local data can be deleted through the app's functions and settings, as well as by removing the app from the device."}},{question:{de:"Funktioniert Mentelys offline?",en:"Does Mentelys work offline?"},answer:{de:"Das Kerntraining funktioniert offline. App-Store-Käufe erfordern eine Verbindung über Apple.",en:"Core training works offline. App Store purchases require a connection through Apple."}}]}],ev=[{slug:"wakegate",name:"WakeGate",lastUpdated:{de:"September 2026",en:"September 2026"},sections:{de:[{title:"1. Anwendungsbereich",text:"Diese Nutzungsbedingungen gelten für die WakeGate iPhone-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Funktion der App",text:"WakeGate ist eine lokal orientierte Wecker-App mit Alarmen, Snooze, Wake Missions, Exercise- und NFC-Missions, Verlauf sowie Systemintegrationen. Die App ist kein medizinisches Produkt, keine Therapie, keine Fitnessdiagnostik, keine Notfallalarmierung und kein sicherheitskritisches Alarmsystem."},{title:"3. Voraussetzungen und AlarmKit",text:"WakeGate setzt ein kompatibles Apple-Gerät und die von iOS bereitgestellten Voraussetzungen voraus. Alarme werden über Apples AlarmKit und System-Alarm-Infrastruktur geplant. WakeGate kann den Apple-System-Stopp nicht entfernen oder blockieren. Nach dem System-Stopp kann eine Wake Mission geöffnet werden; iOS entscheidet auf gesperrten Geräten über Entsperren und Vordergrunddarstellung. Ein Weckerfolg oder eine Auslösung unter jeder Geräte- und Systembedingung wird nicht garantiert."},{title:"4. Wake Missions",text:"Exercise Missions dienen ausschließlich als Aufstehaufgabe. Die Kamera wird nur hierfür verwendet; sie dient nicht der Personenidentifikation oder medizinischen Analyse. NFC Missions verwenden kompatible Tags. Du bist verantwortlich, vor dem Überschreiben fremder Inhalte zu prüfen, ob du dazu berechtigt bist. WakeGate weist vor dem Überschreiben eines beschreibbaren Tags auf die Bestätigung hin."},{title:"5. Free und WakeGate Pro",text:"Die Free-Version erlaubt bis zu drei aktive Alarmprofile. Alle eigentlichen Wake Challenges bleiben Free. WakeGate Pro ermöglicht unbegrenzt aktive Alarmprofile."},{title:"6. Abonnements und Zahlungen",text:"WakeGate Pro kann als monatliches oder jährliches automatisch verlängerndes Abonnement angeboten werden. Zahlung und automatische Verlängerung erfolgen über deine Apple ID gemäß den Bedingungen des App Stores. Apple zeigt den jeweils aktuellen Preis und die Währung an; diese können regional abweichen. Käufe können über StoreKit wiederhergestellt werden. Verwaltung und Kündigung erfolgen über Apple. Rückerstattungen werden nach Apples Verfahren und den gesetzlichen Rechten behandelt; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"7. Verfügbarkeit und Änderungen",text:"Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"8. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"9. Kontakt",text:"Fragen zu WakeGate richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the WakeGate iPhone app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. App functionality",text:"WakeGate is a locally oriented alarm app with alarms, snooze, Wake Missions, exercise and NFC missions, history, and system integrations. It is not a medical product, therapy, fitness diagnosis, emergency alert service, or safety-critical alarm system."},{title:"3. Requirements and AlarmKit",text:"WakeGate requires a compatible Apple device and the conditions provided by iOS. Alarms are scheduled through Apple’s AlarmKit and system alarm infrastru
5cture. WakeGate cannot remove or block Apple’s system stop. After the system stop, it can open a Wake Mission; iOS decides unlocking and foreground presentation on locked devices. WakeGate does not guarantee a wake-up result or alarm delivery under every device and system condition."},{title:"4. Wake Missions",text:"Exercise Missions are solely a getting-up task. The camera is used only for this purpose; it is not used to identify people or provide medical analysis. NFC Missions use compatible tags. You are responsible for ensuring that you are entitled to overwrite third-party content. WakeGate asks for confirmation before overwriting a writable tag."},{title:"5. Free and WakeGate Pro",text:"The Free version permits up to three active alarm profiles. All core Wake Challenges remain Free. WakeGate Pro enables unlimited active alarm profiles."},{title:"6. Subscriptions and payments",text:"WakeGate Pro may be offered as a monthly or annual auto-renewing subscription. Payment and automatic renewal are handled through your Ap
5ple ID under App Store terms. Apple displays the current price and currency, which can vary by region. Purchases can be restored through StoreKit. Management and cancellation are handled through Apple. Refunds are subject to Apple’s process and statutory rights; Tommsel does not offer a separate refund guarantee."},{title:"7. Availability and changes",text:"Features may be developed, changed, or discontinued where legally permitted and with due regard to users’ legitimate interests."},{title:"8. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded. Mandatory consumer rights remain unaffected."},{title:"9. Contact",text:"Send WakeGate questions to [email protected]."}]}},{slug:"jotcue",name:"JotCue",lastUpdated:{de:"September 2026",en:"September 2026"},sections:{de:[{title:"1. Anwendungsbereich",text:"Diese Nutzungsbedingungen gelten für die JotCue iPhone-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Leistungsbeschreibung",text:"JotCue ist eine lokal orientierte iPhone-App zum schnellen Festhalten von Sprach- und Texteingaben. Erfasste Inhalte lassen sich als Notiz oder Aufgabe organisieren, Projekten und Threads zuordnen und mit Fotos oder Links ergänzen. JotCue ist kein medizinisches Produkt, kein Diktiergerät für professionelle Transkriptionsdienste und kein Ersatz für ein eigenständiges Erinnerungs- oder Kalendersystem."},{title:"3. Systemvoraussetzungen",text:"JotCue setzt ein kompatibles iPhone und die von iOS bereitgestellten Voraussetzungen voraus. Einzelne Funktionen wie lokale Transkription, Action Button, Live Activities, Widgets oder Kurzbefehle stehen nur auf unterstützten Geräten und iOS-Versionen zur Verfügung und können je nach Gerät und Systemzustand variieren. Eine dauerhafte Kompatibilität mit allen zukünftigen Geräten oder iOS-Versionen wird nicht zugesichert."},{title:"4. Lokale Datenspeicherung und Backups",text:"Notizen, Aufgaben, Projekte, Threads, Anhänge und Einstellungen werden lokal auf deinem Gerät gespeichert. JotCue bietet ein lokales, versioniertes Backup-Format (.jotcuebackup) sowie eine Wiederherstellungsfunktion an. Für die Erstellung, Aufbewahrung und Wiederherstellung eigener Backups bist du selbst verantwortlich; JotCue betreibt keinen eigenen Cloud-Backup-Dienst."},{title:"5. Spracherkennung",text:"Die lokale Transkription nutzt unterstützte Apple-Speech-Technologien. Spracherkennung kann Fehler enthalten, Wörter falsch erkennen oder in bestimmten Situationen nicht verfügbar sein. JotCue übernimmt keine Gewähr für die vollständige oder fehlerfreie Erkennung gesprochener Inhalte."},{title:"6. Systemfunktionen und -grenzen",text:"Action Button, Live Activities, Widgets, Kontrollzentrum-Steuerung und App-Kurzbefehle werden über iOS-Systemschnittstellen bereitgestellt. Verfügbarkeit und Verhalten die
5ser Funktionen hängen vom jeweiligen Gerät, der iOS-Version sowie vom Sperr- und Systemzustand ab und können sich unterscheiden. JotCue garantiert keinen Funktionsstart unter jeder Sperr- oder Hintergrundbedingung."},{title:"7. Free und JotCue Pro",text:"Free umfasst unter anderem unbegrenzte Sprach- und Texteingaben, Inbox, Notizen, Aufgaben mit Datum und Uhrzeit, lokale Erinnerungen, ein aktives Projekt, einen aktiven Thread und drei aktive Kategorien. JotCue Pro schaltet unter anderem unbegrenzte Projekte, unbegrenzte Threads, unbegrenzte Kategorien und erweiterte Exporte frei. Endet oder verfällt ein Pro-Abonnement, bleiben bestehende Projekte, Threads und Kategorien vollständig erhalten; nur die Erstellung neuer Organisationsobjekte oberhalb des Free-Limits wird eingeschränkt. Der Funktionsumfang von Free und Pro kann sich mit künftigen App-Versionen ändern."},{title:"8. Abonnements und Zahlungen",text:"JotCue Pro kann als monatliches oder jährliches automatisch verlängerndes Abonnement sowie als einmaliger Lifetime-Kauf (Non-Consumable) angeboten werden. Zahlung und automatische Verlängerung erfolgen über deine Apple ID gemäß den Bedingungen des App Stores. Der jeweils vor dem Kauf im App Store angezeigte Preis gilt; Preis und Währung können regional abweichen und sich ändern. Käufe können über StoreKit wiederhergestellt werden. Verwaltung und Kündigung von Abonnements erfolgen über Apple. Rückerstattungen werden nach Apples Verfahren und den gesetzlichen Rechten behandelt; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"9. Verfügbarkeit und Änderungen",text:"Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"10. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen, insbesondere für Datenverlust, soweit du keine eigenen Backups vorgehalten hast. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"11. Kontakt",text:"Fragen zu JotCue richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the JotCue iPhone app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. Description of the service",text:"JotCue is a locally oriented iPhone app for quickly capturing voice and text input. Captured content can be organized as a note or task, assigned to projects and threads, and supplemented with photos or links. JotCue is not a medical product, not a dictation device for professional transcription services, and not a replacement for a dedicated reminder or calendar system."},{title:"3. System requirements",text:"JotCue requires a compatible iPhone and the conditions provided by iOS. Individual features such as local transcription, Action Button, Live Activities, widgets, or shortcuts are only available on supported devices and iOS versions and can vary depending on device and system state. Continued compatibility with all future devices or iOS versions is not guaranteed."},{title:"4. Local data storage and backups",text:"Notes, tasks, projects, threads, attachments, and settings are stored locally on your device. JotCue offers a local, versioned backup format (.jotcuebackup) and a restore function. You are responsible for creating, keeping, and restoring your own backups; JotCue does not operate its own cloud backup service."},{title:"5. Speech recognition",text:"Local transcription uses supported Apple speech technologies. Speech recognition can contain errors, misrecognize words, or be unavailable in certain situations. JotCue does not warrant complete or error-free recognition of spoken content."},{title:"6. System features and limitations",text:"Action Button, Live Activities, widgets, Control Center controls, and app shortcuts are provided through iOS system interfaces. The availability and behavior of these features depend on the specific device, iOS version, and lock/system state and can vary. JotCue does not guarantee that a feature will start under every locked or background condition."},{title:"7. Free and JotCue Pro",text:"Free includes, among other things, unlimited voice and text captures, inbox, notes, tasks with date and time, local reminders, one active project, one active thread, and three active categories. JotCue Pro unlocks, among other things, unlimited projects, unlimited threads, unlimited categories, and advanced exports. When a Pro subscription ends or expires, existing projects, threads, and categories remain fully intact; only the creation of new organization objects above the free limit is restricted. The feature scope of Free and Pro may change with future app versions."},{title:"8. Subscriptions and payments",text:"JotCue Pro may be offered as a monthly or annual auto-renewing subscription as well as a one-time Lifetime purchase (non-consumable). Payment and automatic renew
5al are handled through your Apple ID under App Store terms. The price shown in the App Store at the time of purchase applies; price and currency can vary by region and change over time. Purchases can be restored through StoreKit. Subscription management and cancellation are handled through Apple. Refunds are subject to Apple’s process and statutory rights; Tommsel does not offer a separate refund guarantee."},{title:"9. Availability and changes",text:"Features may be developed, changed, or discontinued where legally permitted and with due regard to users’ legitimate interests."},{title:"10. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded, in particular for data loss where you have not kept your own backups. Mandatory consumer rights remain unaffected."},{title:"11. Contact",text:"Send JotCue questions to [email protected]."}]}},{slug:"voxavo",name:"Voxavo",lastUpdated:{de:"September 2026",en:"September 2026"},sections:{de:[{title:"1. Geltungsbereich",text:"Diese Nutzungsbedingungen gelten für die Voxavo iPhone-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Nutzung von Voxavo",text:"Voxavo ist eine Kommunikationshilfe zum Tippen & Sprechen, Verstärken der eigenen Stimme und Speichern häufig verwendeter Sätze. Voxavo ist kein Medizinprodukt, keine Therapie, keine Behandlung, kein Diagnosewerkzeug und kein Ersatz für ärztliche Beratung oder Behandlung."},{title:"3. Verantwortungsvolle Lautstärkenutzung",text:"Die Stimmverstärkung gibt Audio über den Lautsprecher deines Geräts wieder. Du bist selbst dafür verantwortlich, Lautstärke und Nutzungssituation so zu wählen, dass weder dein Gehör noch das Umfeld unangemessen beeinträchtigt werden."},{title:"4. Voxavo Free und Voxavo Pro",text:"Voxavo Free umfasst Tippen & Sprechen, Stimmauswahl mit Hörprobe, Sprechgeschwindigkeit, Groß & deutlich, Akzentfarben sowie die deutsche und englische App-Oberfläche. Voxavo Pro ergänzt Stimmverstärkung, eigene Sätze, Favoriten, manuelle Reihenfolge, Verlauf und Verstärkungsprofile."},{title:"5. Abonnements und Zahlungen",text:"Voxavo Pro wird als monatliches oder jährliches automatisch verlängerndes Abonnement über Apple StoreKit 2 angeboten; ein Lifetime-Kauf oder eine Testphase werden nicht angeboten. Die Abrechnung erfolgt über deine Apple ID gemäß den Bedingungen des App Stores. Der jeweils im App Store angezeigte Preis gilt; Preis und Währung können regional abweichen und sich ändern. Verwaltung und Kündigung erfolgen über die Apple-ID-Einstellungen beziehungsweise den App Store. Käufe können über StoreKit wiederhergestellt werden. Rückerstattungen werden nach Apples Verfahren und den gesetzlichen Rechten behandelt; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"6. Verfügbarkeit",text:"Tommsel bemüht sich um einen zuverlässigen Betrieb von Voxavo, gewährleistet jedoch keine ununterbrochene technische Verfügbarkeit, insbesondere im Hinblick auf Systemvoraussetzungen, iOS-Versionen und Gerätekompatibilität."},{title:"7. Geistiges Eigentum",text:"Inhalte, Design und Software von Voxavo sind urheberrechtlich geschützt. Eine Nutzung über den bestimmungsgemäßen persönlichen Gebrauch hinaus ist ohne Zustimmung nicht gestattet."},{title:"8. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"9. Verfügbarkeit und Änderungen",text:"Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"10. Kontakt",text:"Fragen zu Voxavo richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the Voxavo iPhone app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. Using Voxavo",text:"Voxavo is a communication aid for typing and speaking aloud, amplifying your own voice, and saving frequently used phrases. Voxavo is not a medical device, therapy, treatment, diagnostic tool, or a substitute for medical advice or treatment."},{title:"3. Responsible volume use",text:"Voice amplification plays audio through your device's speaker. You are responsible for choosing a volume and usage situation that does not unreasonably affect your hearing or the people around you."},{title:"4. Voxavo Free and Voxavo Pro",text:"Voxavo Free includes type & speak, voice selection with a sample, speaking speed, Large & Clear, accent colors, and the German and English app interface. Voxavo Pro adds voice amplification, your own phrases, favorites, manual ordering, history, and amplification profiles."},{title:"5. Subscriptions and payments",text:"Voxavo Pro is offered as a monthly or annual auto-renewing subscription through Apple StoreKit 2; no lifetime purchase or trial is offered. Billing is handled through your Ap
5ple ID under App Store terms. The price shown in the App Store applies; price and currency can vary by region and change over time. Management and cancellation are handled through your Apple ID settings or the App Store. Purchases can be restored through StoreKit. Refunds are subject to Apple's process and statutory rights; Tommsel does not offer a separate refund guarantee."},{title:"6. Availability",text:"Tommsel strives for reliable operation of Voxavo but does not guarantee uninterrupted technical availability, particularly with regard to system requirements, iOS versions, and device compatibility."},{title:"7. Intellectual property",text:"The content, design, and software of Voxavo are protected by copyright. Use beyond the intended personal use is not permitted without consent."},{title:"8. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded. Mandatory consumer rights remain unaffected."},{title:"9. Availability and changes",text:"Features may be developed, changed, or discontinued where legally permitted and with due regard to users' legitimate interests."},{title:"10. Contact",text:"Send Voxavo questions to [email protected]."}]}},{slug:"wavevra",name:"Wavevra",lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},appleEulaUrl:"https://www.apple.com/legal/internet-services/itunes/dev/stdeula/",sections:{de:[{title:"1. Geltungsbereich",text:"Diese Nutzungsbedingungen gelten für die Wavevra iPhone-App von Tom Silas Helmke und ergänzen Apples Standard-EULA für Lizenzvereinbarungen, auf die am Ende dieser Seite verwiesen wird. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Funktion der App",text:"Wavevra ist eine lokal orientierte App zur Audioanalyse und Visualisierung. Sie analysiert Audiosignale und stellt Frequenz-, Pegel- und Wellenforminformationen technisch sowie kreativ dar. Wavevra ist kein kalibriertes Schallpegelmessgerät und liefert keine kalibrierten dB-SPL-, dBA-, dBC- oder LUFS-Werte."},{title:"3. Nutzerinhalte",text:"Von dir aufgenommene oder importierte Audio- und Videoinhalte bleiben dein Eigentum. Du bist selbst dafür verantwortlich, dass du zur Aufnahme, zum Import und zur Verarbeitung dieser Inhalte in Wavevra berechtigt bist, insbesondere im Hinblick auf Urheber-, Persönlichkeits- und sonstige Rechte Dritter."},{title:"4. Systemvoraussetzungen und Geräteanforderungen",text:"Wavevra setzt ein kompatibles iPhone mit iOS 18 oder neuer voraus. Einzelne Aufnahme-, Analyse- oder Exportkombinationen können je nach Gerät, iOS-Version und Systemzustand unterschiedlich verfügbar sein. Es wird nicht zugesichert, dass jede Export- oder Qualitätskombination auf jedem Gerät verfügbar ist oder funktioniert."},{title:"5. Free und Wavevra Pro",text:"Wavevra Free umfasst unter anderem Live-Analyse, technische Ansichten, Messwerte, lokale Projekte und einen grundlegenden Aufnahme- und Export-Workflow. Wavevra Pro erweitert unter anderem Visual Styles, Paletten sowie Aufnahme- und Exportmöglichkeiten und entfernt das Wavevra-Branding aus Pro-Exporten. Der Funktionsumfang von Free und Pro kann sich mit künftigen App-Versionen ändern."},{title:"6. Abonnements und Zahlungen",text:"Wavevra Pro wird als monatliches oder jährliches automatisch verlängerndes Abonnement über Apple StoreKit 2 angeboten; beide Varianten schalten denselben Pro-Funktionsumfang frei. Ein Einführungsangebot wird nur angezeigt und nur gewährt, wenn Apple die Berechtigung dafür tatsächlich bestätigt. Zahlung und automatische Verlängerung erfolgen über deine Apple ID gemäß den Bedingungen des App Stores. Apple zeigt den jeweils aktuellen, für dein Land geltenden Preis vor dem Kauf an. Käufe können über StoreKit wiederhergestellt werden. Verwaltung und Kündigung erfolgen über Apple. Rückerstattungen werden nach Apples Verfahren und den gesetzlichen Verbraucherrechten behandelt; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"7. Verfügbarkeit und Änderungen",text:"Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"8. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"9. Apples Standard-Lizenzvereinbarung",text:"Zusätzlich zu diesen Nutzungsbedingungen gilt Apples Standard-EULA (Licensed Application 
5End User License Agreement) für den Bezug von Wavevra über den App Store. Wavevra verwendet keine eigene, abweichende Lizenzvereinbarung."},{title:"10. Kontakt",text:"Fragen zu Wavevra richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the Wavevra iPhone app by Tom Silas Helmke and supplement Apple's Standard EULA for licensing terms, linked at the end of this page. Mandatory consumer rights remain unaffected."},{title:"2. App functionality",text:"Wavevra is a locally oriented app for audio analysis and visualization. It analyzes audio signals and presents frequency, level, and waveform information both technically and creatively. Wavevra is not a calibrated sound level meter and does not provide calibrated dB SPL, dBA, dBC, or LUFS values."},{title:"3. User content",text:"Audio and video content you record or import remains your property. You are responsible for ensuring you are entitled to record, import, and process this content in Wavevra, particularly with regard to copyright, personality rights, and other third-party rights."},{title:"4. System requirements and device capability",text:"Wavevra requires a compatible iPhone running iOS 18 or later. Individual recording, analysis, or export combinations may be available differently depending on device, iOS version, and system state. It is not guaranteed that every export or quality combination is available or works on every device."},{title:"5. Free and Wavevra Pro",text:"Wavevra Free includes, among other things, live analysis, technical views, measurements, local projects, and a core recording and export workflow. Wavevra Pro expands, among other things, visual styles, palettes, and recording and export options, and removes Wavevra branding from Pro exports. The feature scope of Free and Pro may change with future app versions."},{title:"6. Subscriptions and payments",text:"Wavevra Pro is offered as a monthly or annual auto-renewing subscription through Apple StoreKit 2; both options unlock the same Pro feature set. An introductory offer is shown and granted only when Apple actually confirms eligibility for it. Payment and automatic renewal are handled through your Ap
5ple ID under App Store terms. Apple displays the current price for your region before purchase. Purchases can be restored through StoreKit. Management and cancellation are handled through Apple. Refunds are subject to Apple's process and statutory consumer rights; Tommsel does not offer a separate refund guarantee."},{title:"7. Availability and changes",text:"Features may be developed, changed, or discontinued where legally permitted and with due regard to users' legitimate interests."},{title:"8. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded. Mandatory consumer rights remain unaffected."},{title:"9. Apple's standard license agreement",text:"In addition to these Terms of Use, Apple's Standard EULA (Licensed Application End User License Agreement) applies to obtaining Wavevra through the App Store. Wavevra does not use its own, different license agreement."},{title:"10. Contact",text:"Send Wavevra questions to [email protected]."}]}},{slug:"chessmachina",name:"ChessMachina",lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},appleEulaUrl:"https://www.apple.com/legal/internet-services/itunes/dev/stdeula/",sections:{de:[{title:"1. Geltungsbereich",text:"Diese Nutzungsbedingungen gelten für die ChessMachina iPhone-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Funktion der App und historische Rekonstruktionen",text:"ChessMachina ist eine Schach-App mit rekonstruierten historischen Schachalgorithmen sowie einer eigenen modernen lokalen Reference Engine. Die historischen Maschinen sind algorithmische Clean-Room-Rekonstruktionen auf Basis verfügbarer historischer Dokumentation, kein Originalcode und keine Emulation der ursprünglichen Hardware. ChessMachina ist ein unabhängiges Projekt; historische Maschinen- und Organisationsnamen werden ausschließlich beschreibend zur historischen Einordnung verwendet. Es besteht keine Partnerschaft und keine Unterstützung durch IBM, Bell Labs oder andere historische Organisationen."},{title:"3. Keine Garantie historischer Gleichheit",text:"ChessMachina gewährleistet nicht, dass eine rekonstruierte historische Maschine mit dem historischen Original identisch ist. Die historische Genauigkeit hängt von der jeweils verfügbaren Dokumentation ab und unterscheidet sich je Maschine in Algorithmus-, Parameter-, Hardware-, Datenasset- und Verhaltenstreue."},{title:"4. Keine Spielstärken- oder Elo-Zusicherung",text:"ChessMachina zeigt keine kalibrierten Elo-Werte an und sichert keine bestimmte Spielstärke zu. Ebenso wird nicht zugesichert, dass die historische Hardwareleistung der Originalmaschinen exakt reproduziert wird."},{title:"5. Systemvoraussetzungen und Geräteanforderungen",text:"ChessMachina setzt ein kompatibles iPhone voraus. Einzelne Funktionen können je nach Gerät, iOS-Version und Systemzustand unterschiedlich verfügbar sein oder sich unterschiedlich verhalten."},{title:"6. Lokale Spielaufzeichnungen und Replay",text:"Partien, Zugfolgen und Ergebnisse werden lokal auf deinem Gerät gespeichert. Ein Replay wird deterministisch aus Startposition und Zugfolge rekonstruiert. Für die Sicherung eigener Aufzeichnungen bist du selbst verantwortlich."},{title:"7. Freiwilliges Teilen",text:"Das Teilen von Inhalten über die native iOS-Teilen-Funktion erfolgt ausschließlich auf deine bewusste Aktion hin und an das von dir gewählte Ziel."},{title:"8. Verfügbarkeit und Änderungen",text:"Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"9. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"10. Apples Standard-Lizenzvereinbarung",text:"Zusätzlich zu diesen Nutzungsbedingungen gilt Apples Standard-EULA (Licensed Application 
5End User License Agreement) für den Bezug von ChessMachina über den App Store. ChessMachina verwendet keine eigene, abweichende Lizenzvereinbarung."},{title:"11. Kontakt",text:"Fragen zu ChessMachina richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the ChessMachina iPhone app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. App functionality and historical reconstructions",text:"ChessMachina is a chess app featuring reconstructed historical chess algorithms and its own modern local reference engine. The historical machines are algorithmic clean-room reconstructions based on available historical documentation, not original code and not an emulation of the original hardware. ChessMachina is an independent project; historical machine and organization names are used descriptively for historical identification only. No affiliation with or endorsement by IBM, Bell Labs, or other historical organizations is implied."},{title:"3. No guarantee of historical equivalence",text:"ChessMachina does not warrant that a reconstructed historical machine is identical to the historical original. Historical accuracy depends on the documentation available for each machine and differs across algorithm, parameter, hardware, data-asset, and behavioral fidelity."},{title:"4. No playing strength or Elo assurance",text:"ChessMachina does not display calibrated Elo ratings and does not assure a specific playing strength. Nor is it assured that the historical hardware performance of the original machines is reproduced exactly."},{title:"5. System requirements and device capability",text:"ChessMachina requires a compatible iPhone. Individual features may be available or behave differently depending on device, iOS version, and system state."},{title:"6. Local game records and replay",text:"Games, move sequences, and results are stored locally on your device. A replay is deterministically reconstructed from the starting position and move sequence. You are responsible for backing up your own records."},{title:"7. Voluntary sharing",text:"Sharing content through the native iOS share feature occurs only upon your deliberate action and to the destination you choose."},{title:"8. Availability and changes",text:"Features may be developed, changed, or discontinued where legally permitted and with due regard to users' legitimate interests."},{title:"9. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded. Mandatory consumer rights remain unaffected."},{title:"10. Apple's standard license agreement",text:"In addition to these Terms of Use, Apple's Standard EULA (Licensed Application End User License Agreement) applies to obtaining ChessMachina through the App Store. ChessMachina does not use its own, different license agreement."},{title:"11. Contact",text:"Send ChessMachina questions to [email protected]."}]}},{slug:"nuptava",name:"Nuptava",lastUpdated:{de:"September 2026",en:"September 2026"},appleEulaUrl:"https://www.apple.com/legal/internet-services/itunes/dev/stdeula/",sections:{de:[{title:"1. Geltungsbereich",text:"Diese Nutzungsbedingungen gelten für die Nuptava iPhone- und iPad-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Nutzung der App",text:"Nuptava ist ein lokaler Hochzeitsplaner für Aufgaben, Gäste, RSVP, Sitzplan, Dienstleister, Budget und den Hochzeitstag. Die Aufgaben-, Budget- und Terminfunktionen sind Organisationshilfen und keine Rechts-, Finanz- oder medizinische Beratung."},{title:"3. Eigenverantwortung für Inhalte",text:"Du bist selbst verantwortlich für die Richtigkeit und Rechtmäßigkeit der in Nuptava eingegebenen Inhalte, einschließlich Daten zu Gästen und anderen Personen. Du bist dafür verantwortlich, hierfür berechtigt zu sein, etwa im Hinblick auf die Persönlichkeitsrechte der betroffenen Personen."},{title:"4. Lokale Datenspeicherung und Backups",text:"Deine Hochzeitsdaten werden lokal auf deinem Gerät gespeichert. Nuptava bietet lokale, verschlüsselte Backups sowie einen manuellen Export an. Für die Erstellung, Aufbewahrung und Wiederherstellung eigener Backups bist du selbst verantwortlich; Nuptava betreibt keinen eigenen Cloud-Backup-Dienst."},{title:"5. Free und Nuptava Pro",text:"Nuptava Free ist eine sinnvoll nutzbare Basisversion. Nuptava Pro schaltet die vollständige App durch einen einmaligen Lifetime-Kauf frei; es handelt sich nicht um ein Abonnement."},{title:"6. Kauf und Zahlung",text:"Der Nuptava-Pro-Kauf wird über Apples App Store und StoreKit abgewickelt. Der jeweils im Ap
5p Store angezeigte, länderspezifische Preis gilt. Käufe können über StoreKit wiederhergestellt werden. Rückerstattungen werden nach Apples Verfahren und den gesetzlichen Verbraucherrechten behandelt; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"7. Systemvoraussetzungen und Verfügbarkeit",text:"Nuptava setzt ein kompatibles iPhone oder iPad voraus. Einzelne Funktionen können je nach Gerät, iOS-Version und Systemzustand unterschiedlich verfügbar sein. Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"8. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen, insbesondere für Datenverlust, soweit du keine eigenen Backups vorgehalten hast. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"9. Apples Standard-Lizenzvereinbarung",text:"Zusätzlich zu diesen Nutzungsbedingungen gilt Apples Standard-EULA (Licensed Application End User License Agreement) für den Bezug von Nuptava über den App Store. Nuptava verwendet keine eigene, abweichende Lizenzvereinbarung."},{title:"10. Kontakt",text:"Fragen zu Nuptava richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the Nuptava iPhone and iPad app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. Using the app",text:"Nuptava is a local wedding planner for tasks, guests, RSVPs, seating, vendors, budget, and the wedding day. The task, budget, and scheduling features are organizational aids and not legal, financial, or medical advice."},{title:"3. Responsibility for content",text:"You are responsible for the accuracy and lawfulness of content you enter into Nuptava, including data about guests and other people. You are responsible for being entitled to do so, particularly with regard to the personality rights of the people concerned."},{title:"4. Local data storage and backups",text:"Your wedding data is stored locally on your device. Nuptava offers local, encrypted backups and a manual export. You are responsible for creating, keeping, and restoring your own backups; Nuptava does not operate its own cloud backup service."},{title:"5. Free and Nuptava Pro",text:"Nuptava Free is a genuinely usable base version. Nuptava Pro unlocks the full app through a one-time lifetime purchase; it is not a subscription."},{title:"6. Purchase and payment",text:"The Nuptava Pro purchase is processed through Apple's App Store and StoreKit. The price shown in the App Store for your country applies. Purchases can be restored through StoreKit. Refunds are subject to Apple's process and statutory consumer rights; Tommsel does not offer a separate refund guarantee."},{title:"7. System requirements and availability",text:"Nuptava requires a compatible iPhone or iPad. Individual features may be available differently depending on device, iOS version, and system state. Features may be developed, changed, or discontinued where legally permitted and with due regard to users' legitimate interests."},{title:"8. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded, in particular for data loss where you have not kept your own backups. Mandatory consumer rights remain unaffected."},{title:"9. Apple's standard license agreement",text:"In addition to these Terms of Use, Apple's Standard EULA (Licensed Application End User License Agreement) applies to obtaining Nuptava through the App Store. Nuptava does not use its own, different license agreement."},{title:"10. Contact",text:"Send Nuptava questions to [email protected]."}]}},{slug:"mentelys",name:"Mentelys",lastUpdated:{de:"September 2026",en:"September 2026"},sections:{de:[{title:"1. Anwendungsbereich",text:"Diese Nutzungsbedingungen gelten für die Mentelys iPhone-App von Tom Silas Helmke. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"2. Leistungsbeschreibung",text:"Mentelys ist eine lokal orientierte iPhone-App für kognitives Training und persönliche Fortschrittsverfolgung mit sechs Trainingsbereichen, zwölf adaptiven Trainingsübungen, sechs Checkpoints und Personal Recall. Mentelys ist kein medizinisches Produkt, stellt keine Diagnose und ist kein IQ-Test. Es gibt keine Garantie für bestimmte kognitive Effekte oder eine verbesserte Alltagsleistung."},{title:"3. Trainingsergebnisse und Personal Recall",text:"Training Level, Training Balance, Checkpoint Trends, Streak, Engagement XP, Engagement Level und Achievements sind app-interne Werte und keine Aussage über Intelligenz oder kognitive Fähigkeit. Für Inhalte, die du über Personal Recall selbst hinterlegst, bist du selbst verantwortlich."},{title:"4. Lokale Datenspeicherung und Backups",text:"Trainingsdaten, Fortschritt und Personal-Recall-Inhalte werden lokal auf deinem Gerät gespeichert. Mentelys bietet einen lokalen Backup- und Restore-Export an. Für die Erstellung, Aufbewahrung und Wiederherstellung eigener Backups bist du selbst verantwortlich; Mentelys betreibt keinen eigenen Cloud-Backup-Dienst. Ein Backup kann Personal-Recall-Inhalte enthalten."},{title:"5. Free und einmaliger Full Unlock",text:"Free ist eine echt nutzbare Basisversion. Full Unlock schaltet den vollständigen Funktionsumfang durch einen einmaligen Kauf (Non-Consumable) frei; es handelt sich nicht um ein Abonnement."}
5,{title:"6. Kauf und Zahlung",text:"Der Kauf des Full Unlock wird über Apples App Store und StoreKit abgewickelt. Es gilt der jeweils vor dem Kauf im App Store angezeigte Preis. Käufe können über StoreKit wiederhergestellt werden. Rückerstattungen richten sich nach Apples Verfahren und den gesetzlichen Rechten; Tommsel gibt keine eigene Rückerstattungsgarantie."},{title:"7. Systemvoraussetzungen und Verfügbarkeit",text:"Mentelys setzt ein kompatibles iPhone voraus. Einzelne Funktionen können je nach Gerät, iOS-Version und Systemzustand unterschiedlich verfügbar sein. Funktionen können weiterentwickelt, angepasst oder eingestellt werden, soweit dies rechtlich zulässig ist und berechtigte Interessen der Nutzer berücksichtigt werden."},{title:"8. Haftung",text:"Bei Vorsatz, grober Fahrlässigkeit, Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Recht haftet Tommsel unbeschränkt. Bei leicht fahrlässiger Verletzung wesentlicher Vertragspflichten ist die Haftung auf den vorhersehbaren, typischerweise eintretenden Schaden begrenzt. Im Übrigen ist die Haftung bei leichter Fahrlässigkeit ausgeschlossen, insbesondere für Datenverlust, soweit du keine eigenen Backups vorgehalten hast. Gesetzliche Verbraucherrechte bleiben unberührt."},{title:"9. Apples Standard-Lizenzvereinbarung",text:"Zusätzlich zu diesen Nutzungsbedingungen gilt für den Bezug von Mentelys über den App Store Apples Standard-EULA (Licensed Application End User License Agreement). Mentelys verwendet keine eigene, abweichende Lizenzvereinbarung."},{title:"10. Kontakt",text:"Fragen zu Mentelys richtest du an [email protected]."}],en:[{title:"1. Scope",text:"These Terms of Use apply to the Mentelys iPhone app by Tom Silas Helmke. Mandatory consumer rights remain unaffected."},{title:"2. Description of the service",text:"Mentelys is a locally oriented iPhone app for cognitive training and personal progress tracking with six training areas, twelve adaptive training exercises, six checkpoints, and Personal Recall. Mentelys is not a medical product, does not provide a diagnosis, and is not an IQ test. There is no guarantee of specific cognitive effects or improved everyday performance."},{title:"3. Training results and Personal Recall",text:"Training Level, Training Balance, Checkpoint Trends, Streak, Engagement XP, Engagement Level, and Achievements are app-internal values and are not a statement about intelligence or cognitive ability. You are responsible for content you enter yourself through Personal Recall."},{title:"4. Local data storage and backups",text:"Training data, progress, and Personal Recall content are stored locally on your device. Mentelys offers a local backup and restore export. You are responsible for creating, keeping, and restoring your own backups; Mentelys does not operate its own cloud backup service. A backup may contain Personal Recall content."},{title:"5. Free and one-time Full Unlock",text:"Free is a genuinely usable base version. Full Unlock unlocks the full feature set through a one-time purchase (non-consumable); it is not a subscription."},{title:"6. Purchase and payment",text:"The Full Unlock purchase is processed through Apple's App Store and StoreKit. The price shown in the App Store at the time of purchase applies. Purchases can be restored through StoreKit. Refunds are subject to Apple's process and statutory rights; Tommsel does not offer a separate refund guarantee."},{title:"7. System requirements and availability",text:"Mentelys requires a compatible iPhone. Individual features may be available differently depending on device, iOS version, and system state. Features may be developed, changed, or discontinued where legally permitted and with due regard to users' legitimate interests."},{title:"8. Liability",text:"Tommsel is fully liable for intent, gross negligence, injury to life, body, or health, and where mandatory law requires it. For a slightly negligent breach of essential contractual duties, liability is limited to foreseeable damage typical for the contract. Otherwise, liability for slight negligence is excluded, in particular for data loss where you have not kept your own backups. Mandatory consumer rights remain unaffected."},{title:"9. Apple's standard license agreement",text:"In addition to these Terms of Use, Apple's Standard EULA (Licensed Application 
5End User License Agreement) applies to obtaining Mentelys through the App Store. Mentelys does not use its own, different license agreement."},{title:"10. Contact",text:"Send Mentelys questions to [email protected]."}]},appleEulaUrl:"https://www.apple.com/legal/internet-services/itunes/dev/stdeula/"}],ey=[{slug:"wavevra",name:"Wavevra",color:"#c026d3",lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},intro:{de:"Wavevra wird so entwickelt, dass die App für unterschiedliche Bedürfnisse zugänglich ist. Diese Seite beschreibt den aktuellen Stand ehrlich und nennt auch, was noch nicht abschließend bestätigt ist.",en:"Wavevra is being built to be accessible for different needs. This page describes the current state honestly and also names what has not yet been fully confirmed."},points:[{title:{de:"VoiceOver",en:"VoiceOver"},content:{de:"Wavevra unterstützt VoiceOver für zentrale Bedienelemente wie Aufnahme, Import, Studio und Export.",en:"Wavevra supports VoiceOver for core controls such as recording, import, Studio, and export."}},{title:{de:"Dynamic Type",en:"Dynamic Type"},content:{de:"Textgrößen passen sich den in iOS eingestellten größeren Schriftgrößen an.",en:"Text sizes adapt to the larger font sizes configured in iOS."}},{title:{de:"Dark Mode",en:"Dark Mode"},content:{de:"Wavevra unterstützt den hellen und dunklen Systemmodus von iOS.",en:"Wavevra supports both the light and dark system appearance in iOS."}},{title:{de:"Unterscheidung ohne Farbe",en:"Differentiate without color alone"},content:{de:"Wichtige Zustände wie Auswahl oder Sperrung werden nicht ausschließlich über Farbe vermittelt, sondern zusätzlich durch Form, Symbol oder Text.",en:"Important states such as selection or locking are not conveyed through color alone, but also through shape, icon, or text."}},{title:{de:"Reduced Motion",en:"Reduced Motion"},content:{de:"Aktivierst du Bewegung reduzieren in iOS, reduziert oder deaktiviert Wavevra entsprechende Animationen, etwa bei visuellen Effekten und Statusanzeigen.",en:"When you enable Reduce Motion in iOS, Wavevra reduces or disables corresponding animations, such as visual effects and status indicators."}},{title:{de:"Große Bedienziele",en:"Large touch targets"},content:{de:"Zentrale Bedienelemente wie Aufnahme starten, Stopp und Export sind auf ausreichend große Tippbereiche ausgelegt.",en:"Core controls such as start recording, stop, and export are designed with sufficiently large tap areas."}},{title:{de:"Adaptive Layouts",en:"Adaptive layouts"},content:{de:"Die Bedienoberfläche passt sich an unterschiedliche Textgrößen und Gerätebreiten an, um Inhalte lesbar zu halten.",en:"The interface adapts to different text sizes and device widths to keep content readable."}},{title:{de:"Noch nicht abschließend bestätigt",en:"Not yet fully confirmed"},content:{de:"Voice Control und ein instrumentell gemessener, ausreichender Kontrast für alle Ansichten sind derzeit nicht als vollständig verifiziert bestätigt. Wavevra beansprucht keine vollständige Accessibility-Zertifizierung.",en:"Voice Control and instrumentally measured sufficient contrast across all views are not currently confirmed as fully verified. Wavevra does not claim full accessibility certification."}},{title:{de:"Feedback zu Barrierefreiheit",en:"Accessibility feedback"},content:{de:"Wenn dir eine Barriere in Wavevra auffällt, kontaktiere uns über die Support-Seite. Nenne nach Möglichkeit Gerät, iOS-Version und die verwendete Accessibility-Funktion.",en:"If you notice a barrier in Wavevra, contact us through the support page. If possible, mention your device, iOS version, and the accessibility feature you were using."}}]},{slug:"chessmachina",name:"ChessMachina",color:"#44403c",lastUpdated:{de:"21. September 2026",en:"September 21, 2026"},intro:{de:"ChessMachina wird mit Barrierefreiheit als Ziel entwickelt. Diese Seite beschreibt den aktuellen Entwicklungsstand ehrlich: bestätigte Eigenschaften werden benannt, alles andere wird als in Entwicklung beziehungsweise in Verifikation gekennzeichnet.",en:"ChessMachina is being developed with accessibility as a goal. This page describes the current development status honestly: confirmed properties are named, everything else is marked as in development or under verification."},points:[{title:{de:"Deutsch und Englisch",en:"German and English"},content:{de:"Die App-Oberfläche ist auf Deutsch und Englisch verfügbar.",en:"The app interface is available in German and English."}},{title:{de:"VoiceOver",en:"VoiceOver"},content:{de:"VoiceOver-Unterstützung für Brettfelder, Figuren und zentrale Bedienelemente ist vorgesehen und befindet sich in Entwicklung beziehungswe
5ise Verifikation.",en:"VoiceOver support for board squares, pieces, and core controls is planned and currently in development or under verification."}},{title:{de:"Beschriftete Brettfelder und Figuren",en:"Labeled board squares and pieces"},content:{de:"Eine eindeutige Beschriftung von Feldern und Figuren für unterstützende Technologien ist vorgesehen, aber für den aktuellen Entwicklungsstand noch nicht abschließend bestätigt.",en:"Clear labeling of squares and pieces for assistive technologies is planned but not yet fully confirmed for the current development status."}},{title:{de:"Dynamic Type außerhalb des Bretts",en:"Dynamic Type outside the board"},content:{de:"Die Anpassung von Textgrößen außerhalb der Brettdarstellung ist vorgesehen und wird noch verifiziert.",en:"Adapting text sizes outside the board display is planned and still being verified."}},{title:{de:"Ausreichende Touch-Ziele",en:"Sufficient touch targets"},content:{de:"Zentrale Bedienelemente sollen ausreichend große Tippbereiche erhalten. Dies ist für den aktuellen Stand noch nicht abschließend verifiziert.",en:"Core controls are intended to have sufficiently large tap areas. This is not yet fully verified for the current status."}},{title:{de:"Status nicht nur durch Farbe",en:"Status not conveyed by color alone"},content:{de:"Wichtige Zustände wie letzter Zug, Schach oder Spielende sollen nicht ausschließlich über Farbe vermittelt werden. Diese Eigenschaft ist vorgesehen und wird noch verifiziert.",en:"Important states such as the last move, check, or game end are intended to not rely on color alone. This property is planned and still being verified."}},{title:{de:"High-Contrast-Brett",en:"High-contrast board"},content:{de:"Ein kontrastreiches Brettdesign ist vorgesehen, aber für den aktuellen Entwicklungsstand nicht abschließend bestätigt.",en:"A high-contrast board design is planned but not yet fully confirmed for the current development status."}},{title:{de:"Reduce Motion",en:"Reduce Motion"},content:{de:"Die Berücksichtigung der iOS-Einstellung Bewegung reduzieren ist vorgesehen und wird noch verifiziert.",en:"Support for the iOS Reduce Motion setting is planned and still being verified."}},{title:{de:"Light und Dark Mode",en:"Light and Dark Mode"},content:{de:"Unterstützung für den hellen und dunklen Systemmodus ist vorgesehen und wird noch verifiziert.",en:"Support for the light and dark system appearance is planned and still being verified."}},{title:{de:"Feedback zu Barrierefreiheit",en:"Accessibility feedback"},content:{de:"Wenn dir eine Barriere in ChessMachina auffällt oder du eine bestimmte Accessibility-Funktion benötigst, kontaktiere uns über die Support-Seite. Nenne nach Möglichkeit Gerät, iOS-Version und die verwendete Funktion.",en:"If you notice a barrier in ChessMachina or need a specific accessibility feature, contact us through the support page. If possible, mention your device, iOS version, and the feature you were using."}}]},{slug:"nuptava",name:"Nuptava",color:"#57534e",lastUpdated:{de:"September 2026",en:"September 2026"},intro:{de:"Nuptava wurde mit Blick auf Barrierefreiheit entwickelt. Diese Seite beschreibt sachlich, welche Maßnahmen nach aktuellem Produktstand vorgesehen sind. Nuptava beansprucht keine formale Accessibility-Zertifizierung.",en:"Nuptava was developed with accessibility in mind. This page factually describes the measures planned for the current product status. Nuptava does not claim a formal accessibility certification."},points:[{title:{de:"Dynamic Type",en:"Dynamic Type"},content:{de:"Textgrößen passen sich den in iOS eingestellten größeren Schriftgrößen an.",en:"Text sizes adapt to the larger font sizes configured in iOS."}},{title:{de:"VoiceOver",en:"VoiceOver"},content:{de:"Zentrale Bereiche wie Aufgaben, Gäste, Budget und Wedding Day sind auf VoiceOver-Unterstützung ausgelegt.",en:"Core areas such as tasks, guests, budget, and the wedding day are designed with VoiceOver support."}},{title:{de:"Ausreichende Touch Targets",en:"Sufficient touch targets"},content:{de:"Zentrale Bedienelemente sind auf ausreichend große Tippbereiche ausgelegt.",en:"Core controls are designed with sufficiently large tap areas."}},{title:{de:"Status nicht nur über Farbe",en:"Status not conveyed by color alone"},content:{de:"Wichtige Zustände, etwa bei RSVPs oder Zahlungen, werden nicht ausschließlich über Farbe vermittelt, sondern zusätzlich durch Text oder Symbol.",en:"Important states, such as RSVP or payment status, are not conveyed through color alone, but also through text or icons."}},{title:{de:"Hell, Dunkel und System",en:"Light, dark, and system"},content:{de:"Nuptava unterstützt den hellen und dunklen Systemmodus von iOS, inklusive kontrastgeprüfter Akzentfarben.",en:"Nuptava supports the light and dark system appearance in iOS, including contrast-checked accent colors."}},{title:{de:"Reduce Motion",en:"Reduce Motion"},content:{de:"Aktivierst du Bewegung reduzieren in iOS, reduziert oder deaktiviert Nuptava entsprechende Animationen.",en:"When you enable Reduce Motion in iOS, Nuptava reduces or disables corresponding animations."}},{title:{de:"Alternative Bedienung zum Sitzplan",en:"Alternative input for the seating plan"},content:{de:"Neben Drag & Drop ist für den Sitzplan eine alternative Bedienung ohne Ziehen und Ablegen vorgesehen.",en:"In addition to drag and drop, an alternative way to operate the seating plan without dragging is available."}},{title:{de:"iPhone und iPad",en:"iPhone and iPad"},content:{de:"Nuptava ist als native App für iPhone und iPad ausgelegt.",en:"Nuptava is designed as a native app for iPhone and iPad."}},{title:{de:"Widget-Accessibility",en:"Widget accessibility"},content:{de:"Home-Screen-Widgets sind auf Lesbarkeit und Unterstützung durch iOS-Bedienungshilfen ausgelegt.",en:"Home screen widgets are designed for readability and support through iOS accessibility features."}},{title:{de:"Feedback zu Barrierefreiheit",en:"Accessibility feedback"},content:{de:"Wenn dir eine Barriere in Nuptava auffällt oder du eine bestimmte Accessibility-Funktion benötigst, kontaktiere uns über die Support-Seite. Nenne nach Möglichkeit Gerät, iOS-Version und die verwendete Funktion.",en:"If you notice a barrier in Nuptava or need a specific accessibility feature, contact us through the support page. If possible, mention your device, iOS version, and the feature you were using."}}]},{slug:"mentelys",name:"Mentelys",color:"#7c3aed",lastUpdated:{de:"September 2026",en:"September 2026"},intro:{de:"Barrierefreiheit ist Teil der Mentelys-Produktarchitektur. Diese Seite beschreibt den aktuellen Entwicklungsstand ehrlich und wird vor Veröffentlichung weiter auf echten Geräten validiert. Mentelys beansprucht keine vollständige Barrierefreiheit.",en:"Accessibility is part of the Mentelys product architecture. This page describes the current development status honestly and will be further validated on real devices before release. Mentelys does not claim to be fully accessible."},points:[{title:{de:"VoiceOver",en:"VoiceOver"},content:{de:"Mentelys ist auf VoiceOver-Unterstützung für zentrale Bedienelemente ausgelegt.",en:"Mentelys is designed with VoiceOver support for core controls."}},{title:{de:"Dynamic Type",en:"Dynamic Type"},content:{de:"Textgrößen passen sich den in iOS eingestellten größeren Schriftgröße
5n an.",en:"Text sizes adapt to the larger font sizes configured in iOS."}},{title:{de:"Große Bedienziele",en:"Large touch targets"},content:{de:"Zentrale Bedienelemente sind auf ausreichend große Tippbereiche ausgelegt.",en:"Core controls are designed with sufficiently large tap areas."}},{title:{de:"Light und Dark Mode",en:"Light and dark mode"},content:{de:"Mentelys unterstützt den hellen und dunklen Systemmodus von iOS.",en:"Mentelys supports the light and dark system appearance in iOS."}},{title:{de:"Reduce Motion",en:"Reduce Motion"},content:{de:"Aktivierst du Bewegung reduzieren in iOS, reduziert oder deaktiviert Mentelys entsprechende Animationen.",en:"When you enable Reduce Motion in iOS, Mentelys reduces or disables corresponding animations."}},{title:{de:"Unterscheidung ohne Farbe",en:"Differentiate without color"},content:{de:"Wichtige Zustände werden nicht ausschließlich über Farbe vermittelt, sondern zusätzlich durch Form, Symbol oder Text.",en:"Important states are not conveyed through color alone, but also through shape, icon, or text."}},{title:{de:"Hoher Kontrast",en:"High contrast"},content:{de:"Mentelys ist auf ausreichenden Kontrast zwischen Text und Hintergrund ausgelegt.",en:"Mentelys is designed for sufficient contrast between text and background."}},{title:{de:"Zeitkritische Übungen",en:"Time-critical exercises"},content:{de:"Einige zeitkritische visuelle Übungen wie bei Attention & Speed können mit assistiven Technologien anders funktionieren oder andere Timing-Ergebnisse liefern. Mentelys behauptet nicht, zu 100 % vollständig barrierefrei zu sein.",en:"Some time-critical visual exercises, such as those in Attention & Speed, may behave differently or produce different timing results with assistive technologies. Mentelys does not claim to be 100% fully accessible."}},{title:{de:"Noch in Verifikation",en:"Still under verification"},content:{de:"Accessibility ist Teil der Produktarchitektur und wird vor der Veröffentlichung weiter auf echten Geräten validiert.",en:"Accessibility is part of the product architecture and will be further validated on real devices before release."}},{title:{de:"Feedback zu Barrierefreiheit",en:"Accessibility feedback"},content:{de:"Wenn dir eine Barriere in Mentelys auffällt oder du eine bestimmte Accessibility-Funktion benötigst, kontaktiere uns über die Support-Seite. Nenne nach Möglichkeit Gerät, iOS-Version und die verwendete Funktion.",en:"If you notice a barrier in Mentelys or need a specific accessibility feature, contact us through the support page. If possible, mention your device, iOS version, and the feature you were using."}}]}],ek={de:{home:"/de/apps/crequence",privacy:"/de/apps/crequence/datenschutz",support:"/de/apps/crequence/support",terms:"/de/apps/crequence/nutzungsbedingungen",legal:"/de/impressum",websitePrivacy:"/de/datenschutz"},en:{home:"/en/apps/crequence",privacy:"/en/apps/crequence/privacy",support:"/en/apps/crequence/support",terms:"/en/apps/crequence/terms",legal:"/en/impressum",websitePrivacy:"/en/datenschutz"}};function ew({project:e}){var r,a,s,o;let l=(0,i.useTranslations)("project"),d=(0,n.useLocale)(),c=(0,b.getPrimaryExternalTarget)(e),h=(r=e.slug,!!ef.find(e=>e.slug===r)),p=(a=e.slug,!!eb.find(e=>e.slug===a)),g=(s=e.slug,!!ev.find(e=>e.slug===s)),f=(o=e.slug,!!ey.find(e=>e.slug===o)),v="crequence"===e.slug,y=ek["en"===d?"en":"de"],k=(0,b.isNonLiveProject)(e);return(c||h||p||g||f||v)&&(!k||h||p||g||f||v)?(0,t.jsx)("section",{className:"py-16 sm:py-20",children:(0,t.jsx)("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("div",{className:"relative overflow-hidden rounded-2xl sm:rounded-3xl p-6 sm:p-12 text-center",style:{background:`linear-gradient(135deg, ${e.color}20 0%, ${e.color}08 100%)`},children:[(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 rounded-3xl border",style:{borderColor:`${e.color}25`}}),(0,t.jsx)("h2",{className:"text-2xl font-bold text-[var(--color-text)] sm:text-3xl",children:l(c?"cta.title":"cta.privacyTitle")}),(0,t.jsx)("p",{className:"mx-auto mt-2 max-w-md text-sm text-[var(--color-muted)]",children:l(c?"cta.subtitle":"cta.privacySubtitle",{name:e.name})}),(0,t.jsxs)("div",{className:"mt-6 flex flex-col sm:flex-row items-center justify-center gap-3",children:[c&&(0,t.jsxs)("a",{href:c,target:"_blank",rel:"noopener noreferrer",className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-6 py-3 min-h-[48px] text-sm font-semibold text-white","transition-all duration-200","hover:-translate-y-0.5 hover:shadow-lg active:translate-y-0","focus-visible:outline-2 focus-visible:outline-offset-2"),style:{backgroundColor:e.color,boxShadow:`0 4px 14px ${e.color}30`,outlineColor:e.color},children:[l("cta.button"),(0,t.jsx)(u.ExternalLink,{className:"h-3.5 w-3.5","aria-hidden":"true"}),(0,t.jsx)("span",{className:"sr-only",children:"(opens in new tab)"})]}),h&&(0,t.jsxs)(ec.Link,{href:`/privacy/${e.slug}`,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:[(0,t.jsx)(ed.Shield,{className:"h-3.5 w-3.5","aria-hidden":"true"}),l("cta.privacyButton")]}),p&&(0,t.jsxs)(ec.Link,{href:`/apps/${e.slug}/support`,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:[(0,t.jsx)(el,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e.name," Support"]}),g&&(0,t.jsx)(ec.Link,{href:`/apps/${e.slug}/terms`,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"de"===d?"Nutzungsbedingungen":"Terms"}),f&&(0,t.jsx)(ec.Link,{href:`/apps/${e.slug}/accessibility`,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"de"===d?"Barrierefreiheit":"Accessibility"}),h&&p&&(0,t.jsxs)(ec.Link,{href:"/impressum",className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:[(0,t.jsx)(W,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"de"===d?"Impressum":"Legal notice"]}),v&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(eu.default,{href:y.home,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"de"===d?"Produktseite":"Product page"}),(0,t.jsx)(eu.default,{href:y.privacy,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"de"===d?"Datenschutz":"Privacy"}),(0,t.jsx)(eu.default,{href:y.terms,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"de"===d?"Nutzungsbedingungen":"Terms"}),(0,t.jsx)(eu.default,{href:y.support,className:(0,m.cn)("inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl px-5 py-2.5 min-h-[44px] text-xs font-medium","border border-[var(--color-border)] text-[var(--color-muted)]","transition-colors duration-200 hover:text-[var(--color-text)] hover:border-[var(--color-text)]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-accent)]"),children:"Support"})]})]})]})})})}):null}function ex({src:e,alt:i,priority:r=!1,className:a=""}){let s=(0,n.useLocale)();return(0,t.jsx)("div",{className:`overflow-hidden rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-2 shadow-xl shadow-black/10 ${a}`,children:(0,t.jsx)(o.default,{src:`/images/projects/sweatkey/${e}`,alt:i[s],width:1179,height:2556,priority:r,sizes:"(max-width: 767px) 88vw, (max-width: 1024px) 46vw, 430px",className:"h-auto w-full rounded-2xl object-contain"})})}function eS({eyebrow:e,title:i,text:r}){let a=(0,n.useLocale)();return(0,t.jsxs)("div",{className:"max-w-xl",children:[e&&(0,t.jsx)("p",{className:"text-sm font-semibold text-[#f97316]",children:e[a]}),(0,t.jsx)("h2",{className:"mt-2 text-2xl font-bold tracking-tight text-[var(--color-text)] sm:text-3xl",children:i[a]}),(0,t.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-[var(--color-muted)] sm:text-base",children:r[a]})]})}function eA(){return(0,t.jsx)("div",{className:"py-10 sm:py-16",children:(0,t.jsxs)("div",{className:"mx-auto max-w-6xl space-y-20 px-4 sm:px-6 sm:space-y-28",children:[(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"grid items-center gap-10 lg:grid-cols-[1fr_0.62fr] lg:gap-16",children:[(0,t.jsx)(eS,{eyebrow:{de:"So funktioniert SweatKey",en:"How SweatKey works"},title:{de:"Alles Wichtige auf einen Blick.",en:"Everything you need at a glance."},text:{de:"Bewegen, verdienen und entsperren verbinden Bewegung, Zeitguthaben und geschützte Apps in einer klaren Übersicht.",en:"Move, Earn, and Unlock connect movement, time credit, and protected apps in one clear overview."}}),(0,t.jsx)(ex,{src:"02_Today_Kompakt_Zeitguthaben.png",alt:{de:"SweatKey Übersicht mit Zeitguthaben und Fortschritt",en:"SweatKey overview with time balance and progress"},className:"mx-auto w-full max-w-[280px] lg:max-w-[320px]"})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"rounded-3xl border border-[#f97316]/25 bg-[#f97316]/[0.05] p-5 sm:p-8 lg:p-12",children:[(0,t.jsx)(eS,{eyebrow:{de:"Training",en:"Training"},title:{de:"Trainiere. Verdiene. Entsperre.",en:"Train. Earn. Unlock."},text:{de:"SweatKey erkennt unterstützte Übungen mit der Kamera und lokaler Pose Verarbeitung. Bewegung kann entsprechend der aktiven Reward Regeln Zeitguthaben erzeugen.",en:"SweatKey recognizes supported exercises with the camera and local pose processing. Movement can generate time credit according to the active reward rules."}}),(0,t.jsxs)("div",{className:"mt-8 grid items-start gap-5 sm:grid-cols-2 sm:gap-8",children:[(0,t.jsx)(ex,{src:"15_Training_PushUps_Kamera.png",alt:{de:"SweatKey Training Ansicht für Liegestütze mit Kamera",en:"SweatKey training view for push ups with camera"}}),(0,t.jsx)(ex,{src:"17_Training_Squats_Kamera.png",alt:{de:"SweatKey Training Ansicht für Kniebeugen mit Kamera",en:"SweatKey training view for squats with camera"},className:"sm:mt-10"})]})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"grid items-center gap-10 lg:grid-cols-[0.62fr_1fr] lg:gap-16",children:[(0,t.jsx)(ex,{src:"09_Protected_Apps_Free_2Apps.png",alt:{de:"SweatKey Auswahl für geschützte Apps mit zwei Free Apps",en:"SweatKey protected app selection with two Free apps"},className:"mx-auto w-full max-w-[320px] lg:max-w-[380px]"}),(0,t.jsx)(eS,{eyebrow:{de:"App Schutz",en:"App Protection"}
5,title:{de:"Du entscheidest, welche Apps warten.",en:"You decide which apps wait."},text:{de:"Free erlaubt bis zu zwei einzelne geschützte Apps. Pro kann weitere Apps sowie Kategorien und Websites innerhalb der Möglichkeiten von iOS verwenden.",en:"Free allows up to two individual protected apps. Pro can use more apps as well as categories and websites within the capabilities of iOS."}})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"grid items-center gap-10 lg:grid-cols-[1fr_0.62fr] lg:gap-16",children:[(0,t.jsx)(eS,{eyebrow:{de:"Belohnungen",en:"Rewards"},title:{de:"Bestimme, was deine Bewegung wert ist.",en:"Choose what your movement earns."},text:{de:"Belohnungsregeln legen fest, wie unterstützte Bewegung in Zeitguthaben übersetzt wird. Die Regeln bleiben dabei nachvollziehbar und anpassbar.",en:"Reward rules define how supported movement turns into time credit. The rules remain clear and adjustable."}}),(0,t.jsx)(ex,{src:"07_Exercise_Rewards_Regeln.png",alt:{de:"SweatKey Reward Regeln für unterstützte Übungen",en:"SweatKey reward rules for supported exercises"},className:"mx-auto w-full max-w-[300px] lg:max-w-[350px]"})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"grid items-center gap-10 lg:grid-cols-[0.62fr_1fr] lg:gap-16",children:[(0,t.jsx)(ex,{src:"08_Time_Rules_Zeitregeln.png",alt:{de:"SweatKey Zeitregeln mit Daily Allowance und Limits",en:"SweatKey time rules with daily allowance and limits"},className:"mx-auto w-full max-w-[320px] lg:max-w-[380px]"}),(0,t.jsx)(eS,{eyebrow:{de:"Zeitguthaben und Regeln",en:"Time Balance and rules"},title:{de:"Behalte deine Zeit unter Kontrolle.",en:"Stay in control of your time."},text:{de:"Tagesguthaben, Limits, Übertrag und Zeitbank geben deiner Zeit eine klare Struktur, ohne jedes Detail der App Ansicht zu wiederholen.",en:"Daily Allowance, limits, rollover, and Time Bank give your time a clear structure without repeating every detail from the app view."}})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("section",{className:"rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-5 sm:p-8 lg:p-12",children:(0,t.jsxs)("div",{className:"grid items-center gap-10 lg:grid-cols-[1fr_0.62fr] lg:gap-16",children:[(0,t.jsx)(eS,{eyebrow:{de:"Fortschritt",en:"Progress"},title:{de:"Sieh, was du dir verdient hast.",en:"See what you’ve earned."},text:{de:"Die Fortschrittsansicht zeigt Verlauf, Durchschnitt, verdiente Zeit und die in der App sichtbaren Quellen.",en:"The progress view shows history, average, earned time, and the sources visible in the app."}}),(0,t.jsx)(ex,{src:"03_Progress_7Tage_Zeitverlauf_Quellen.png",alt:{de:"SweatKey Fortschritt mit Zeitverlauf und Quellen",en:"SweatKey progress with time history and sources"},className:"mx-auto w-full max-w-[340px] lg:max-w-[420px]"})]})})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("section",{children:(0,t.jsxs)("div",{className:"grid gap-5 md:grid-cols-2 md:gap-8",children:[(0,t.jsxs)("article",{className:"rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-5 sm:p-7",children:[(0,t.jsx)(eS,{eyebrow:{de:"Ziele",en:"Challenges"},title:{de:"Setze dir ein Ziel. Bleib dran.",en:"Set a goal. Keep going."},text:{de:"Ziele helfen dir, eigene Vorhaben sichtbar zu machen und konsequent zu verfolgen.",en:"Challenges help you make your own goals visible and follow them consistently."}}),(0,t.jsx)(ex,{src:"10_New_Challenge_Neue_Challenge.png",alt:{de:"SweatKey Ansicht zum Erstellen einer neuen Challenge",en:"SweatKey view for creating a new challenge"},className:"mx-auto mt-6 w-full max-w-[290px]"})]}),(0,t.jsxs)("article",{className:"rounded-3xl border border-[var(--color-border)] bg-[var(--color-card)] p-5 sm:p-7",children:[(0,t.jsx)(eS,{eyebrow:{de:"Serie",en:"Streak"},title:{de:"Halte deine Serie am Leben.",en:"Keep your streak going."},text:{de:"Deine Serie macht kontinuierliche Bewegung auf einen Blick sichtbar.",en:"Your streak makes consistent movement visible at a glance."}}),(0,t.jsx)(ex,{src:"04_Streak_Serie.png",alt:{de:"SweatKey Serienansicht mit Bewegungsserie",en:"SweatKey streak view with movement streak"},className:"mx-auto mt-6 w-full max-w-[290px]"})]})]})})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsxs)("section",{className:"grid items-center gap-10 lg:grid-cols-[1fr_0.62fr] lg:gap-16",children:[(0,t.jsx)(eS,{eyebrow:{de:"Free und Pro",en:"Free and Pro"},title:{de:"Hol noch mehr aus SweatKey heraus.",en:"Unlock even more with SweatKey Pro."},text:{de:"Free bleibt das Kernprodukt mit bis zu zwei einzelnen geschützten Apps. Pro wird erst mit einem gültigen StoreKit Entitlement freigeschaltet und erweitert Regeln, Apps, Kategorien, Websites und Fortschritt.",en:"Free remains the core product with up to two individual protected apps. Pro unlocks only with a valid StoreKit entitlement and extends rules, apps, categories, websites, and progress."}}),(0,t.jsx)(ex,{src:"05_SweatKey_Pro_Paywall.png",alt:{de:"SweatKey Pro Ansicht mit Funktionsübersicht",en:"SweatKey Pro view with feature overview"},className:"mx-auto w-full max-w-[300px] lg:max-w-[350px]"})]})}),(0,t.jsx)(M.AnimatedSection,{children:(0,t.jsx)("section",{className:"rounded-3xl border border-emerald-500/25 bg-emerald-500/[0.04] p-5 sm:p-8 lg:p-12",children:(0,t.jsxs)("div",{className:"grid items-center gap-10 lg:grid-cols-[0.62fr_1fr] lg:gap-16",children:[(0,t.jsx)(ex,{src:"06_Privacy_Datenschutz.png",alt:{de:"SweatKey Datenschutz Ansicht mit lokalen Optionen",en:"SweatKey privacy view with local options"},className:"mx-auto w-full max-w-[320px] lg:max-w-[380px]"}),(0,t.jsx)(eS,{eyebrow:{de:"Datenschutz",en:"Privacy"},title:{de:"Deine Daten bleiben bei dir.",en:"Your data stays with you."},text:{de:"Für die Kernfunktion ist kein Nutzerkonto vorgesehen. Die bestätigten Informationen zu lokaler Speicherung, Kamera und App Daten findest du in den Datenschutzhinweisen.",en:"No user account is planned for the core function. You can find the confirmed information about local storage, camera use, and app data in the privacy notices."}})]})})})]})})}let ez=(0,r.default)(()=>e.A(39659).then(e=>e.FAQAccordion),{loadableGenerated:{modules:[83260]}}),ej=(0,r.default)(()=>e.A(83745).then(e=>e.RelatedProjects),{loadableGenerated:{modules:[70064]}});e.s(["ProjectPageContent",0,function({project:e}){let r=(0,n.useLocale)(),o=(0,i.useTranslations)("nav");return(0,t.jsxs)(a.motion.main,{id:"main-content",initial:{opacity:0}
5,animate:{opacity:1},transition:{duration:.4},children:[(0,t.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 pt-4 sm:px-6 lg:px-8",children:(0,t.jsx)(s.Breadcrumbs,{items:[{label:"de"===r?"Startseite":"Home",href:"/"},{label:o("projects"),href:"/projects"},{label:e.name}]})}),(0,t.jsx)(v,{project:e}),(0,t.jsx)(A,{project:e,locale:r}),(0,t.jsx)(k,{project:e,locale:r}),"live"===e.status&&(0,b.hasLiveExternalTarget)(e)&&(0,t.jsx)(z,{project:e}),(0,t.jsx)(N,{project:e}),"sweatkey"===e.slug&&(0,t.jsx)(eA,{}),(0,t.jsx)(K,{project:e}),e.visuals?.userJourney&&(0,t.jsx)(Y,{data:e.visuals.userJourney,color:e.color}),(0,t.jsx)(G,{project:e,locale:r}),(0,t.jsx)(_,{project:e}),e.visuals?.featureMap&&(0,t.jsx)(Q,{data:e.visuals.featureMap,color:e.color}),e.visuals?.techLayers&&(0,t.jsx)(ee,{data:e.visuals.techLayers}),e.visuals?.stateDiagram&&(0,t.jsx)(et,{data:e.visuals.stateDiagram,color:e.color}),e.visuals?.componentMap&&(0,t.jsx)(en,{data:e.visuals.componentMap,color:e.color}),(0,t.jsx)(ei,{project:e}),(0,t.jsx)(ea,{screenshots:e.screenshots,slots:e.screenshotSlots,color:e.color,appName:e.name}),(0,t.jsx)(eo,{project:e}),(0,t.jsx)(ez,{project:e}),(0,t.jsx)(ew,{project:e}),(0,t.jsx)(ej,{project:e})]})}],10988)}]);

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.