vendor: 6,736 bytes, lines 1-9
1var eN=Object.defineProperty;var pp=t=>{throw TypeError(t)};var tN=(t,n,r)=>n in t?eN(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r;var Wn=(t,n,r)=>tN(t,typeof n!="symbol"?n+"":n,r),_c=(t,n,r)=>n.has(t)||pp("Cannot "+r);var T=(t,n,r)=>(_c(t,n,"read from private field"),r?r.call(t):n.get(t)),me=(t,n,r)=>n.has(t)?pp("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(t):n.set(t,r),ne=(t,n,r,s)=>(_c(t,n,"write to private field"),s?s.call(t,r):n.set(t,r),r),rt=(t,n,r)=>(_c(t,n,"access private method"),r);var Ll=(t,n,r,s)=>({set _(i){ne(t,n,i,r)},get _(){return T(t,n,s)}});function zb(t,n){for(var r=0;r<n.length;r++){const s=n[r];if(typeof s!="string"&&!Array.isArray(s)){for(const i in s)if(i!=="default"&&!(i in t)){const a=Object.getOwnPropertyDescriptor(s,i);a&&Object.defineProperty(t,i,a.get?a:{enumerable:!0,get:()=>s[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const l of a.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}})();function kl(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function nN(t){if(t.__esModule)return t;var n=t.default;if(typeof n=="function"){var r=function s(){return this instanceof s?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};r.prototype=n.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(r,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}),r}var Db={exports:{}},Rd={},_b={exports:{}},ae={};/** 2 * @license React 3 * react.production.min.js 4 * 5 * Copyright (c) Facebook, Inc. and its affiliates. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */var Nl=Symbol.for("react.element"),rN=Symbol.for("react.portal"),sN=Symbol.for("react.fragment"),iN=Symbol.for("react.strict_mode"),aN=Symbol.for("react.profiler"),lN=Symbol.for("react.provider"),oN=Symbol.for("react.context"),dN=Symbol.for("react.forward_ref"),cN=Symbol.for("react.suspense"),uN=Symbol.for("react.memo"),hN=Symbol.for("react.lazy"),fp=Symbol.iterator;function mN(t){return t===null||typeof t!="object"?null:(t=fp&&t[fp]||t["@@iterator"],typeof t=="function"?t:null)}var Mb={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ob=Object.assign,Rb={};function Ji(t,n,r){this.props=t,this.context=n,this.refs=Rb,this.updater=r||Mb}Ji.prototype.isReactComponent={};Ji.prototype.setState=function(t,n){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,n,"setState")};Ji.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function Gb(){}Gb.prototype=Ji.prototype;function vm(t,n,r){this.props=t,this.context=n,this.refs=Rb,this.updater=r||Mb}var ym=vm.prototype=new Gb;ym.constructor=vm;Ob(ym,Ji.prototype);ym.isPureReactComponent=!0;var xp=Array.isArray,Ib=Object.prototype.hasOwnProperty,wm={current:null},Bb={key:!0,ref:!0,__self:!0,__source:!0};function Kb(t,n,r){var s,i={},a=null,l=null;if(n!=null)for(s in n.ref!==void 0&&(l=n.ref),n.key!==void 0&&(a=""+n.key),n)Ib.call(n,s)&&!Bb.hasOwnProperty(s)&&(i[s]=n[s]);var o=arguments.length-2;if(o===1)i.children=r;else if(1<o){for(var d=Array(o),c=0;c<o;c++)d[c]=arguments[c+2];i.children=d}if(t&&t.defaultProps)for(s in o=t.defaultProps,o)i[s]===void 0&&(i[s]=o[s]);return{$$typeof:Nl,type:t,key:a,ref:l,props:i,_owner:wm.current}}function gN(t,n){return{$$typeof:Nl,type:t.type,key:n,ref:t.ref,props:t.props,_owner:t._owner}}function km(t){return typeof t=="object"&&t!==null&&t.$$typeof===Nl}function pN(t){var n={"=":"=0",":":"=2"};return"$"+t.replace(/[=:]/g,function(r){return n[r]})}var bp=/\/+/g;function Mc(t,n){return typeof t=="object"&&t!==null&&t.key!=null?pN(""+t.key):n.toString(36)}function zo(t,n,r,s,i){var a=typeof t;(a==="undefined"||a==="boolean")&&(t=null);var l=!1;if(t===null)l=!0;else switch(a){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case Nl:case rN:l=!0}}if(l)return l=t,i=i(l),t=s===""?"."+Mc(l,0):s,xp(i)?(r="",t!=null&&(r=t.replace(bp,"$&/")+"/"),zo(i,n,r,"",function(c){return c})):i!=null&&(km(i)&&(i=gN(i,r+(!i.key||l&&l.key===i.key?"":(""+i.key).replace(bp,"$&/")+"/")+t)),n.push(i)),1;if(l=0,s=s===""?".":s+":",xp(t))for(var o=0;o<t.length;o++){a=t[o];var d=s+Mc(a,o);l+=zo(a,n,r,d,i)}else if(d=mN(t),typeof d=="function")for(t=d.call(t),o=0;!(a=t.next()).done;)a=a.value,d=s+Mc(a,o++),l+=zo(a,n,r,d,i);else if(a==="object")throw n=String(t),Error("Objects are not valid as a React child (found: "+(n==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.");return l}function Wl(t,n,r){if(t==null)return t;var s=[],i=0;return zo(t,s,"","",function(a){return n.call(r,a,i++)}),s}function fN(t){if(t._status===-1){var n=t._result;n=n(),n.then(function(r){(t._status===0||t._status===-1)&&(t._status=1,t._result=r)},function(r){(t._status===0||t._status===-1)&&(t._status=2,t._result=r)}),t._status===-1&&(t._status=0,t._result=n)}if(t._status===1)return t._result.default;throw t._result}var bt={current:null},Do={transition:null},xN={ReactCurrentDispatcher:bt,ReactCurrentBatchConfig:Do,ReactCurrentOwner:wm};function Fb(){throw Error("act(...) is not supported in production builds of React.")}ae.Children={map:Wl,forEach:function(t,n,r){Wl(t,function(){n.apply(this,arguments)},r)},count:function(t){var n=0;return Wl(t,function(){n++}),n},toArray:function(t){return Wl(t,function(n){return n})||[]},only:function(t){if(!km(t))throw Error("React.Children.only expected to receive a single React element child.");return t}};ae.Component=Ji;ae.Fragment=sN;ae.Profiler=aN;ae.PureComponent=vm;ae.StrictMode=iN;ae.Suspense=cN;
vendor: 2,902 bytes, lines 9-17
9ae.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=xN;ae.act=Fb;ae.cloneElement=function(t,n,r){if(t==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+t+".");var s=Ob({},t.props),i=t.key,a=t.ref,l=t._owner;if(n!=null){if(n.ref!==void 0&&(a=n.ref,l=wm.current),n.key!==void 0&&(i=""+n.key),t.type&&t.type.defaultProps)var o=t.type.defaultProps;for(d in n)Ib.call(n,d)&&!Bb.hasOwnProperty(d)&&(s[d]=n[d]===void 0&&o!==void 0?o[d]:n[d])}var d=arguments.length-2;if(d===1)s.children=r;else if(1<d){o=Array(d);for(var c=0;c<d;c++)o[c]=arguments[c+2];s.children=o}return{$$typeof:Nl,type:t.type,key:i,ref:a,props:s,_owner:l}};ae.createContext=function(t){return t={$$typeof:oN,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},t.Provider={$$typeof:lN,_context:t},t.Consumer=t};ae.createElement=Kb;ae.createFactory=function(t){var n=Kb.bind(null,t);return n.type=t,n};ae.createRef=function(){return{current:null}};ae.forwardRef=function(t){return{$$typeof:dN,render:t}};ae.isValidElement=km;ae.lazy=function(t){return{$$typeof:hN,_payload:{_status:-1,_result:t},_init:fN}};ae.memo=function(t,n){return{$$typeof:uN,type:t,compare:n===void 0?null:n}};ae.startTransition=function(t){var n=Do.transition;Do.transition={};try{t()}finally{Do.transition=n}};ae.unstable_act=Fb;ae.useCallback=function(t,n){return bt.current.useCallback(t,n)};ae.useContext=function(t){return bt.current.useContext(t)};ae.useDebugValue=function(){};ae.useDeferredValue=function(t){return bt.current.useDeferredValue(t)};ae.useEffect=function(t,n){return bt.current.useEffect(t,n)};ae.useId=function(){return bt.current.useId()};ae.useImperativeHandle=function(t,n,r){return bt.current.useImperativeHandle(t,n,r)};ae.useInsertionEffect=function(t,n){return bt.current.useInsertionEffect(t,n)};ae.useLayoutEffect=function(t,n){return bt.current.useLayoutEffect(t,n)};ae.useMemo=function(t,n){return bt.current.useMemo(t,n)};ae.useReducer=function(t,n,r){return bt.current.useReducer(t,n,r)};ae.useRef=function(t){return bt.current.useRef(t)};ae.useState=function(t){return bt.current.useState(t)};ae.useSyncExternalStore=function(t,n,r){return bt.current.useSyncExternalStore(t,n,r)};ae.useTransition=function(){return bt.current.useTransition()};ae.version="18.3.1";_b.exports=ae;var y=_b.exports;const _=kl(y),Nm=zb({__proto__:null,default:_},[y]);/** 10 * @license React 11 * react-jsx-runtime.production.min.js 12 * 13 * Copyright (c) Facebook, Inc. and its affiliates. 14 * 15 * This source code is licensed under the MIT license found in the 16 * LICENSE file in the root directory of this source tree. 17 */var bN=y,jN=Symbol.for("react.element"),vN=Symbol.for("react.fragment"),yN=Object.prototype.hasOwnProperty,wN=bN.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,kN={key:!0,ref:!0,__self:!0,__source:!0};
vendor: 11,220 bytes, lines 17-34
17function Lb(t,n,r){var s,i={},a=null,l=null;r!==void 0&&(a=""+r),n.key!==void 0&&(a=""+n.key),n.ref!==void 0&&(l=n.ref);for(s in n)yN.call(n,s)&&!kN.hasOwnProperty(s)&&(i[s]=n[s]);if(t&&t.defaultProps)for(s in n=t.defaultProps,n)i[s]===void 0&&(i[s]=n[s]);return{$$typeof:jN,type:t,key:a,ref:l,props:i,_owner:wN.current}}Rd.Fragment=vN;Rd.jsx=Lb;Rd.jsxs=Lb;Db.exports=Rd;var e=Db.exports,Wb={exports:{}},It={},Vb={exports:{}},Ub={};/** 18 * @license React 19 * scheduler.production.min.js 20 * 21 * Copyright (c) Facebook, Inc. and its affiliates. 22 * 23 * This source code is licensed under the MIT license found in the 24 * LICENSE file in the root directory of this source tree. 25 */(function(t){function n(C,z){var I=C.length;C.push(z);e:for(;0<I;){var $=I-1>>>1,L=C[$];if(0<i(L,z))C[$]=z,C[I]=L,I=$;else break e}}function r(C){return C.length===0?null:C[0]}function s(C){if(C.length===0)return null;var z=C[0],I=C.pop();if(I!==z){C[0]=I;e:for(var $=0,L=C.length,ee=L>>>1;$<ee;){var J=2*($+1)-1,be=C[J],Oe=J+1,te=C[Oe];if(0>i(be,I))Oe<L&&0>i(te,be)?(C[$]=te,C[Oe]=I,$=Oe):(C[$]=be,C[J]=I,$=J);else if(Oe<L&&0>i(te,I))C[$]=te,C[Oe]=I,$=Oe;else break e}}return z}function i(C,z){var I=C.sortIndex-z.sortIndex;return I!==0?I:C.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var l=Date,o=l.now();t.unstable_now=function(){return l.now()-o}}var d=[],c=[],u=1,h=null,g=3,m=!1,j=!1,p=!1,b=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,f=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(C){for(var z=r(c);z!==null;){if(z.callback===null)s(c);else if(z.startTime<=C)s(c),z.sortIndex=z.expirationTime,n(d,z);else break;z=r(c)}}function w(C){if(p=!1,v(C),!j)if(r(d)!==null)j=!0,U(k);else{var z=r(c);z!==null&&H(w,z.startTime-C)}}function k(C,z){j=!1,p&&(p=!1,x(A),A=-1),m=!0;var I=g;try{for(v(z),h=r(d);h!==null&&(!(h.expirationTime>z)||C&&!G());){var $=h.callback;if(typeof $=="function"){h.callback=null,g=h.priorityLevel;var L=$(h.expirationTime<=z);z=t.unstable_now(),typeof L=="function"?h.callback=L:h===r(d)&&s(d),v(z)}else s(d);h=r(d)}if(h!==null)var ee=!0;else{var J=r(c);J!==null&&H(w,J.startTime-z),ee=!1}return ee}finally{h=null,g=I,m=!1}}var N=!1,S=null,A=-1,P=5,D=-1;function G(){return!(t.unstable_now()-D<P)}function O(){if(S!==null){var C=t.unstable_now();D=C;var z=!0;try{z=S(!0,C)}finally{z?V():(N=!1,S=null)}}else N=!1}var V;if(typeof f=="function")V=function(){f(O)};else if(typeof MessageChannel<"u"){var R=new MessageChannel,Y=R.port2;R.port1.onmessage=O,V=function(){Y.postMessage(null)}}else V=function(){b(O,0)};function U(C){S=C,N||(N=!0,V())}function H(C,z){A=b(function(){C(t.unstable_now())},z)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(C){C.callback=null},t.unstable_continueExecution=function(){j||m||(j=!0,U(k))},t.unstable_forceFrameRate=function(C){0>C||125<C?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<C?Math.floor(1e3/C):5},t.unstable_getCurrentPriorityLevel=function(){return g},t.unstable_getFirstCallbackNode=function(){return r(d)},t.unstable_next=function(C){switch(g){case 1:case 2:case 3:var z=3;break;default:z=g}var I=g;g=z;try{return C()}finally{g=I}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(C,z){switch(C){case 1:case 2:case 3:case 4:case 5:break;default:C=3}var I=g;g=C;try{return z()}finally{g=I}},t.unstable_scheduleCallback=function(C,z,I){var $=t.unstable_now();switch(typeof I=="object"&&I!==null?(I=I.delay,I=typeof I=="number"&&0<I?$+I:$):I=$,C){case 1:var L=-1;break;case 2:L=250;break;case 5:L=1073741823;break;case 4:L=1e4;break;default:L=5e3}return L=I+L,C={id:u++,callback:z,priorityLevel:C,startTime:I,expirationTime:L,sortIndex:-1},I>$?(C.sortIndex=I,n(c,C),r(d)===null&&C===r(c)&&(p?(x(A),A=-1):p=!0,H(w,I-$))):(C.sortIndex=L,n(d,C),j||m||(j=!0,U(k))),C},t.unstable_shouldYield=G,t.unstable_wrapCallback=function(C){var z=g;return function(){var I=g;g=z;try{return C.apply(this,arguments)}finally{g=I}}}})(Ub);Vb.exports=Ub;var NN=Vb.exports;/** 26 * @license React 27 * react-dom.production.min.js 28 * 29 * Copyright (c) Facebook, Inc. and its affiliates. 30 * 31 * This source code is licensed under the MIT license found in the 32 * LICENSE file in the root directory of this source tree. 33 */var SN=y,Gt=NN;function M(t){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)n+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var $b=new Set,Va={};function Ks(t,n){Bi(t,n),Bi(t+"Capture",n)}function Bi(t,n){for(Va[t]=n,t=0;t<n.length;t++)$b.add(n[t])}var sr=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ku=Object.prototype.hasOwnProperty,AN=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,jp={},vp={};function CN(t){return Ku.call(vp,t)?!0:Ku.call(jp,t)?!1:AN.test(t)?vp[t]=!0:(jp[t]=!0,!1)}function PN(t,n,r,s){if(r!==null&&r.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return s?!1:r!==null?!r.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function EN(t,n,r,s){if(n===null||typeof n>"u"||PN(t,n,r,s))return!0;if(s)return!1;if(r!==null)switch(r.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function jt(t,n,r,s,i,a,l){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=s,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=t,this.type=n,this.sanitizeURL=a,this.removeEmptyString=l}var et={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){et[t]=new jt(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var n=t[0];et[n]=new jt(n,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){et[t]=new jt(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){et[t]=new jt(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){et[t]=new jt(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){et[t]=new jt(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){et[t]=new jt(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){et[t]=new jt(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){et[t]=new jt(t,5,!1,t.toLowerCase(),null,!1,!1)});var Sm=/[\-:]([a-z])/g;function Am(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var n=t.replace(Sm,Am);et[n]=new jt(n,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var n=t.replace(Sm,Am);et[n]=new jt(n,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var n=t.replace(Sm,Am);et[n]=new jt(n,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){et[t]=new jt(t,1,!1,t.toLowerCase(),null,!1,!1)});et.xlinkHref=new jt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){et[t]=new jt(t,1,!1,t.toLowerCase(),null,!0,!0)});function Cm(t,n,r,s){var i=et.hasOwnProperty(n)?et[n]:null;(i!==null?i.type!==0:s||!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(EN(n,r,i,s)&&(r=null),s||i===null?CN(n)&&(r===null?t.removeAttribute(n):t.setAttribute(n,""+r)):i.mustUseProperty?t[i.propertyName]=r===null?i.type===3?!1:"":r:(n=i.attributeName,s=i.attributeNamespace,r===null?t.removeAttribute(n):(i=i.type,r=i===3||i===4&&r===!0?"":""+r,s?t.setAttributeNS(s,n,r):t.setAttribute(n,r))))}var ur=SN.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Vl=Symbol.for("react.element"),li=Symbol.for("react.portal"),oi=Symbol.for("react.fragment"),Pm=Symbol.for("react.strict_mode"),Fu=Symbol.for("react.profiler"),Hb=Symbol.for("react.provider"),Zb=Symbol.for("react.context"),Em=Symbol.for("react.forward_ref"),Lu=Symbol.for("react.suspense"),Wu=Symbol.for("react.suspense_list"),Tm=Symbol.for("react.memo"),Sr=Symbol.for("react.lazy"),qb=Symbol.for("react.offscreen"),yp=Symbol.iterator;function ua(t){return t===null||typeof t!="object"?null:(t=yp&&t[yp]||t["@@iterator"],typeof t=="function"?t:null)}var Me=Object.assign,Oc;function Na(t){if(Oc===void 0)try{throw Error()}catch(r){var n=r.stack.trim().match(/\n( *(at )?)/);Oc=n&&n[1]||""}return` 34`+Oc+t}var Rc=!1;function Gc(t,n){if(!t||Rc)return"";Rc=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(c){var s=c}Reflect.construct(t,[],n)}
vendor: 4,389 bytes, lines 34-37
34else{try{n.call()}catch(c){s=c}t.call(n.prototype)}else{try{throw Error()}catch(c){s=c}t()}}catch(c){if(c&&s&&typeof c.stack=="string"){for(var i=c.stack.split(` 35`),a=s.stack.split(` 36`),l=i.length-1,o=a.length-1;1<=l&&0<=o&&i[l]!==a[o];)o--;for(;1<=l&&0<=o;l--,o--)if(i[l]!==a[o]){if(l!==1||o!==1)do if(l--,o--,0>o||i[l]!==a[o]){var d=` 37`+i[l].replace(" at new "," at ");return t.displayName&&d.includes("<anonymous>")&&(d=d.replace("<anonymous>",t.displayName)),d}while(1<=l&&0<=o);break}}}finally{Rc=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?Na(t):""}function TN(t){switch(t.tag){case 5:return Na(t.type);case 16:return Na("Lazy");case 13:return Na("Suspense");case 19:return Na("SuspenseList");case 0:case 2:case 15:return t=Gc(t.type,!1),t;case 11:return t=Gc(t.type.render,!1),t;case 1:return t=Gc(t.type,!0),t;default:return""}}function Vu(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case oi:return"Fragment";case li:return"Portal";case Fu:return"Profiler";case Pm:return"StrictMode";case Lu:return"Suspense";case Wu:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case Zb:return(t.displayName||"Context")+".Consumer";case Hb:return(t._context.displayName||"Context")+".Provider";case Em:var n=t.render;return t=t.displayName,t||(t=n.displayName||n.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Tm:return n=t.displayName||null,n!==null?n:Vu(t.type)||"Memo";case Sr:n=t._payload,t=t._init;try{return Vu(t(n))}catch{}}return null}function zN(t){var n=t.type;switch(t.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=n.render,t=t.displayName||t.name||"",n.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Vu(n);case 8:return n===Pm?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Hr(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Yb(t){var n=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function DN(t){var n=Yb(t)?"checked":"value",r=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),s=""+t[n];if(!t.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,a=r.set;return Object.defineProperty(t,n,{configurable:!0,get:function(){return i.call(this)},set:function(l){s=""+l,a.call(this,l)}}),Object.defineProperty(t,n,{enumerable:r.enumerable}),{getValue:function(){return s},setValue:function(l){s=""+l},stopTracking:function(){t._valueTracker=null,delete t[n]}}}}function Ul(t){t._valueTracker||(t._valueTracker=DN(t))}function Jb(t){if(!t)return!1;var n=t._valueTracker;if(!n)return!0;var r=n.getValue(),s="";return t&&(s=Yb(t)?t.checked?"true":"false":t.value),t=s,t!==r?(n.setValue(t),!0):!1}function Jo(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function Uu(t,n){var r=n.checked;return Me({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function wp(t,n){var r=n.defaultValue==null?"":n.defaultValue,s=n.checked!=null?n.checked:n.defaultChecked;r=Hr(n.value!=null?n.value:r),t._wrapperState={initialChecked:s,initialValue:r,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Qb(t,n){n=n.checked,n!=null&&Cm(t,"checked",n,!1)}function $u(t,n){Qb(t,n);var r=Hr(n.value),s=n.type;if(r!=null)s==="number"?(r===0&&t.value===""||t.value!=r)&&(t.value=""+r):t.value!==""+r&&(t.value=""+r);else if(s==="submit"||s==="reset"){t.removeAttribute("value");return}n.hasOwnProperty("value")?Hu(t,n.type,r):n.hasOwnProperty("defaultValue")&&Hu(t,n.type,Hr(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(t.defaultChecked=!!n.defaultChecked)}
vendor: 4,180 bytes, line 37
37function kp(t,n,r){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var s=n.type;if(!(s!=="submit"&&s!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+t._wrapperState.initialValue,r||n===t.value||(t.value=n),t.defaultValue=n}r=t.name,r!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,r!==""&&(t.name=r)}function Hu(t,n,r){(n!=="number"||Jo(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var Sa=Array.isArray;function ji(t,n,r,s){if(t=t.options,n){n={};for(var i=0;i<r.length;i++)n["$"+r[i]]=!0;for(r=0;r<t.length;r++)i=n.hasOwnProperty("$"+t[r].value),t[r].selected!==i&&(t[r].selected=i),i&&s&&(t[r].defaultSelected=!0)}else{for(r=""+Hr(r),n=null,i=0;i<t.length;i++){if(t[i].value===r){t[i].selected=!0,s&&(t[i].defaultSelected=!0);return}n!==null||t[i].disabled||(n=t[i])}n!==null&&(n.selected=!0)}}function Zu(t,n){if(n.dangerouslySetInnerHTML!=null)throw Error(M(91));return Me({},n,{value:void 0,defaultValue:void 0,children:""+t._wrapperState.initialValue})}function Np(t,n){var r=n.value;if(r==null){if(r=n.children,n=n.defaultValue,r!=null){if(n!=null)throw Error(M(92));if(Sa(r)){if(1<r.length)throw Error(M(93));r=r[0]}n=r}n==null&&(n=""),r=n}t._wrapperState={initialValue:Hr(r)}}function Xb(t,n){var r=Hr(n.value),s=Hr(n.defaultValue);r!=null&&(r=""+r,r!==t.value&&(t.value=r),n.defaultValue==null&&t.defaultValue!==r&&(t.defaultValue=r)),s!=null&&(t.defaultValue=""+s)}function Sp(t){var n=t.textContent;n===t._wrapperState.initialValue&&n!==""&&n!==null&&(t.value=n)}function ej(t){switch(t){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function qu(t,n){return t==null||t==="http://www.w3.org/1999/xhtml"?ej(n):t==="http://www.w3.org/2000/svg"&&n==="foreignObject"?"http://www.w3.org/1999/xhtml":t}var $l,tj=function(t){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,r,s,i){MSApp.execUnsafeLocalFunction(function(){return t(n,r,s,i)})}:t}(function(t,n){if(t.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in t)t.innerHTML=n;else{for($l=$l||document.createElement("div"),$l.innerHTML="<svg>"+n.valueOf().toString()+"</svg>",n=$l.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;n.firstChild;)t.appendChild(n.firstChild)}});function Ua(t,n){if(n){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=n;return}}t.textContent=n}var Ta={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},_N=["Webkit","ms","Moz","O"];Object.keys(Ta).forEach(function(t){_N.forEach(function(n){n=n+t.charAt(0).toUpperCase()+t.substring(1),Ta[n]=Ta[t]})});function nj(t,n,r){return n==null||typeof n=="boolean"||n===""?"":r||typeof n!="number"||n===0||Ta.hasOwnProperty(t)&&Ta[t]?(""+n).trim():n+"px"}function rj(t,n){t=t.style;for(var r in n)if(n.hasOwnProperty(r)){var s=r.indexOf("--")===0,i=nj(r,n[r],s);r==="float"&&(r="cssFloat"),s?t.setProperty(r,i):t[r]=i}}var MN=Me({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Yu(t,n){if(n){if(MN[t]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(M(137,t));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(M(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(M(61))}if(n.style!=null&&typeof n.style!="object")throw Error(M(62))}}function Ju(t,n){if(t.indexOf("-")===-1)return typeof n.is=="str
37ing";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Qu=null;function zm(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Xu=null,vi=null,yi=null;function Ap(t){if(t=Cl(t)){if(typeof Xu!="function")throw Error(M(280));var n=t.stateNode;n&&(n=Fd(n),Xu(t.stateNode,t.type,n))}}function sj(t){vi?yi?yi.push(t):yi=[t]:vi=t}function ij(){if(vi){var t=vi,n=yi;if(yi=vi=null,Ap(t),n)for(t=0;t<n.length;t++)Ap(n[t])}}function aj(t,n){return t(n)}function lj(){}var Ic=!1;function oj(t,n,r){if(Ic)return t(n,r);Ic=!0;try{return aj(t,n,r)}finally{Ic=!1,(vi!==null||yi!==null)&&(lj(),ij())}}function $a(t,n){var r=t.stateNode;if(r===null)return null;var s=Fd(r);if(s===null)return null;r=s[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(s=!s.disabled)||(t=t.type,s=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!s;break e;default:t=!1}if(t)return null;if(r&&typeof r!="function")throw Error(M(231,n,typeof r));return r}var eh=!1;if(sr)try{var ha={};Object.defineProperty(ha,"passive",{get:function(){eh=!0}}),window.addEventListener("test",ha,ha),window.removeEventListener("test",ha,ha)}catch{eh=!1}function ON(t,n,r,s,i,a,l,o,d){var c=Array.prototype.slice.call(arguments,3);try{n.apply(r,c)}catch(u){this.onError(u)}}var za=!1,Qo=null,Xo=!1,th=null,RN={onError:function(t){za=!0,Qo=t}};function GN(t,n,r,s,i,a,l,o,d){za=!1,Qo=null,ON.apply(RN,arguments)}function IN(t,n,r,s,i,a,l,o,d){if(GN.apply(this,arguments),za){if(za){var c=Qo;za=!1,Qo=null}else throw Error(M(198));Xo||(Xo=!0,th=c)}}function Fs(t){var n=t,r=t;if(t.alternate)for(;n.return;)n=n.return;else{t=n;do n=t,n.flags&4098&&(r=n.return),t=n.return;while(t)}return n.tag===3?r:null}function dj(t){if(t.tag===13){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function Cp(t){if(Fs(t)!==t)throw Error(M(188))}function BN(t){var n=t.alternate;if(!n){if(n=Fs(t),n===null)throw Error(M(188));return n!==t?null:t}for(var r=t,s=n;;){var i=r.return;if(i===null)break;var a=i.alternate;if(a===null){if(s=i.return,s!==null){r=s;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===r)return Cp(i),t;if(a===s)return Cp(i),n;a=a.sibling}throw Error(M(188))}if(r.return!==s.return)r=i,s=a;else{for(var l=!1,o=i.child;o;){if(o===r){l=!0,r=i,s=a;break}if(o===s){l=!0,s=i,r=a;break}o=o.sibling}if(!l){for(o=a.child;o;){if(o===r){l=!0,r=a,s=i;break}if(o===s){l=!0,s=a,r=i;break}o=o.sibling}if(!l)throw Error(M(189))}}if(r.alternate!==s)throw Error(M(190))}if(r.tag!==3)throw Error(M(188));return r.stateNode.current===r?t:n}function cj(t){return t=BN(t),t!==null?uj(t):null}function uj(t){if(t.tag===5||t.tag===6)return t;for(t=t.child;t!==null;){var n=uj(t);if(n!==null)return n;t=t.sibling}return null}var hj=Gt.unstable_scheduleCallback,Pp=Gt.unstable_cancelCallback,KN=Gt.unstable_shouldYield,FN=Gt.unstable_requestPaint,Be=Gt.unstable_now,LN=Gt.unstable_getCurrentPriorityLevel,Dm=Gt.unstable_ImmediatePriority,mj=Gt.unstable_UserBlockingPriority,ed=Gt.unstable_NormalPriority,WN=Gt.unstable_LowPriority,gj=Gt.unstable_IdlePriority,Gd=null,Mn=null;function VN(t){if(Mn&&typeof Mn.onCommitFiberRoot=="function")try{Mn.onCommitFiberRoot(Gd,t,void 0,(t.current.flags&128)===128)}catch{}}var bn=Math.clz32?Math.clz32:HN,UN=Math.log,$N=Math.LN2;function HN(t){return t>>>=0,t===0?32:31-(UN(t)/$N|0)|0}var Hl=64,Zl=4194304;function Aa(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function td(t,n){var r=t.pendingLanes;if(r===0)return 0;var s=0,i=t.suspendedLanes,a=t.pingedLanes,l=r&268435455;if(l!==0){var o=l&~i;o!==0?s=Aa(o):(a&=l,a!==0&&(s=Aa(a)))}else l=r&~i,l!==0?s=Aa(l):a!==0&&(s=Aa(a));if(s===0)return 0;if(n!==0&&n!==s&&!(n&i)&&(i=s&-s,a=n&-n,i>=a||i===16&&(a&4194240)!==0))return n;if(s&4&&(s|=r&16),n=t.entangledLanes,n!==0)for(t=t.entanglements,n&=s;0<n;)r=31-bn(n),i=1<<r,s|=t[r],n&=~i;return s}function ZN(t,n){switch(t){case 1:case 2:case 4:return n+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function qN(t,n){for(var r=t.suspendedLanes,s=t.pingedLanes,i=t.expirationTimes,a=t.pendingLanes;0<a;){var l=31-bn(a),o=1<<l,d=i[l];d===-1?(!(o&r)||o&s)&&(i[l]=ZN(o,n)):d<=n&&(t.expiredLanes|=o),a&=~o}}function nh(t){return t=t.pendingLanes&-1073741825,t!==0?t:t&1073741824?1073741824:0}function pj(){var t=Hl;return Hl<<=1,!(Hl&4194240)&&(Hl=64),t}function Bc(t){for(var n=[],r=0;31>r;r++)n.push(t);return n}function Sl(t,n,r){t.pendingLanes|=n,n!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,n=31-bn(n),t[n]=r}function YN(t,n){var r=t.pendingLanes&~n;t.pendingLanes=n,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=n,t.mutableReadLanes&=n,t.entangledLanes&=n,n=t.entanglements;var s=t.eventTimes;for(t=t.expirationTimes;0<r;){var i=31-bn(r),a=1<<i;n[i]=0,s[i]=-1,t[i]=-1,r&=~a}}function _m(t,n){var r=t.entangledLanes|=n;for(t=t.entanglements;r;){var s=31-bn(r),i=1<<s;i&n|t[s]&n&&(t[s]|=n),r&=~i}}var xe=0;function fj(t){return t&=-t,1<t?4<t?t&268435455?16:536870912:4:1}var xj,Mm,bj,jj,vj,rh=!1,ql=[],Ir=null,Br=null,Kr=null,Ha=new Map,Za=new Map,Cr=[],JN="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Ep(t,n){switch(t){case"focusin":case"focusout":Ir=null;break;case"dragenter":case"dragleave":Br=null;break;case"mouseover":case"mouseout":Kr=null;break;case"pointerover":case"pointerout":Ha.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":Za.delete(n.pointerId)}}function ma(t,n,r,s,i,a){return t===null||t.nativeEvent!==a?(t={blockedOn:n,domEventName:r,eventSystemFlags:s,nativeEvent:a,targetContainers:[i]},n!==null&&(n=Cl(n),n!==null&&Mm(n)),t):(t.eventSystemFlags|=s,n=t.targetContainers,i!==null&&n.indexOf(i)===-1&&n.push(i),t)}function QN(t,n,r,s,i){switch(n){case"focusin":return Ir=ma(Ir,t,n,r,s,i),!0;case"dragenter":return Br=ma(Br,t,n,r,s,i),!0;case"mouseover":return Kr=ma(Kr,t,n,r,s,i),!0;case"pointerover":var a=i.pointerId;return Ha.set(a,ma(Ha.get(a)||null,t,n,r,s,i)),!0;
vendor: 1,254 bytes, line 37
37case"gotpointercapture":return a=i.pointerId,Za.set(a,ma(Za.get(a)||null,t,n,r,s,i)),!0}return!1}function yj(t){var n=xs(t.target);if(n!==null){var r=Fs(n);if(r!==null){if(n=r.tag,n===13){if(n=dj(r),n!==null){t.blockedOn=n,vj(t.priority,function(){bj(r)});return}}else if(n===3&&r.stateNode.current.memoizedState.isDehydrated){t.blockedOn=r.tag===3?r.stateNode.containerInfo:null;return}}}t.blockedOn=null}function _o(t){if(t.blockedOn!==null)return!1;for(var n=t.targetContainers;0<n.length;){var r=sh(t.domEventName,t.eventSystemFlags,n[0],t.nativeEvent);if(r===null){r=t.nativeEvent;var s=new r.constructor(r.type,r);Qu=s,r.target.dispatchEvent(s),Qu=null}else return n=Cl(r),n!==null&&Mm(n),t.blockedOn=r,!1;n.shift()}return!0}function Tp(t,n,r){_o(t)&&r.delete(n)}function XN(){rh=!1,Ir!==null&&_o(Ir)&&(Ir=null),Br!==null&&_o(Br)&&(Br=null),Kr!==null&&_o(Kr)&&(Kr=null),Ha.forEach(Tp),Za.forEach(Tp)}function ga(t,n){t.blockedOn===n&&(t.blockedOn=null,rh||(rh=!0,Gt.unstable_scheduleCallback(Gt.unstable_NormalPriority,XN)))}function qa(t){function n(i){return ga(i,t)}if(0<ql.length){ga(ql[0],t);for(var r=1;r<ql.length;r++){var s=ql[r];s.blockedOn===t&&(s.blockedOn=null)}}for(Ir!==null&&ga(Ir,t),Br!==null&&ga(Br,t),Kr!==null&&ga(Kr,t),Ha.forEac
vendor: 11,472 bytes, line 37
37h(n),Za.forEach(n),r=0;r<Cr.length;r++)s=Cr[r],s.blockedOn===t&&(s.blockedOn=null);for(;0<Cr.length&&(r=Cr[0],r.blockedOn===null);)yj(r),r.blockedOn===null&&Cr.shift()}var wi=ur.ReactCurrentBatchConfig,nd=!0;function eS(t,n,r,s){var i=xe,a=wi.transition;wi.transition=null;try{xe=1,Om(t,n,r,s)}finally{xe=i,wi.transition=a}}function tS(t,n,r,s){var i=xe,a=wi.transition;wi.transition=null;try{xe=4,Om(t,n,r,s)}finally{xe=i,wi.transition=a}}function Om(t,n,r,s){if(nd){var i=sh(t,n,r,s);if(i===null)qc(t,n,s,rd,r),Ep(t,s);else if(QN(i,t,n,r,s))s.stopPropagation();else if(Ep(t,s),n&4&&-1<JN.indexOf(t)){for(;i!==null;){var a=Cl(i);if(a!==null&&xj(a),a=sh(t,n,r,s),a===null&&qc(t,n,s,rd,r),a===i)break;i=a}i!==null&&s.stopPropagation()}else qc(t,n,s,null,r)}}var rd=null;function sh(t,n,r,s){if(rd=null,t=zm(s),t=xs(t),t!==null)if(n=Fs(t),n===null)t=null;else if(r=n.tag,r===13){if(t=dj(n),t!==null)return t;t=null}else if(r===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;t=null}else n!==t&&(t=null);return rd=t,null}function wj(t){switch(t){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(LN()){case Dm:return 1;case mj:return 4;case ed:case WN:return 16;case gj:return 536870912;default:return 16}default:return 16}}var Or=null,Rm=null,Mo=null;function kj(){if(Mo)return Mo;var t,n=Rm,r=n.length,s,i="value"in Or?Or.value:Or.textContent,a=i.length;for(t=0;t<r&&n[t]===i[t];t++);var l=r-t;for(s=1;s<=l&&n[r-s]===i[a-s];s++);return Mo=i.slice(t,1<s?1-s:void 0)}function Oo(t){var n=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&n===13&&(t=13)):t=n,t===10&&(t=13),32<=t||t===13?t:0}function Yl(){return!0}function zp(){return!1}function Bt(t){function n(r,s,i,a,l){this._reactName=r,this._targetInst=i,this.type=s,this.nativeEvent=a,this.target=l,this.currentTarget=null;for(var o in t)t.hasOwnProperty(o)&&(r=t[o],this[o]=r?r(a):a[o]);return this.isDefaultPrevented=(a.defaultPrevented!=null?a.defaultPrevented:a.returnValue===!1)?Yl:zp,this.isPropagationStopped=zp,this}return Me(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var r=this.nativeEvent;r&&(r.preventDefault?r.preventDefault():typeof r.returnValue!="unknown"&&(r.returnValue=!1),this.isDefaultPrevented=Yl)},stopPropagation:function(){var r=this.nativeEvent;r&&(r.stopPropagation?r.stopPropagation():typeof r.cancelBubble!="unknown"&&(r.cancelBubble=!0),this.isPropagationStopped=Yl)},persist:function(){},isPersistent:Yl}),n}var Qi={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Gm=Bt(Qi),Al=Me({},Qi,{view:0,detail:0}),nS=Bt(Al),Kc,Fc,pa,Id=Me({},Al,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Im,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==pa&&(pa&&t.type==="mousemove"?(Kc=t.screenX-pa.screenX,Fc=t.screenY-pa.screenY):Fc=Kc=0,pa=t),Kc)},movementY:function(t){return"movementY"in t?t.movementY:Fc}}),Dp=Bt(Id),rS=Me({},Id,{dataTransfer:0}),sS=Bt(rS),iS=Me({},Al,{relatedTarget:0}),Lc=Bt(iS),aS=Me({},Qi,{animationName:0,elapsedTime:0,pseudoElement:0}),lS=Bt(aS),oS=Me({},Qi,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),dS=Bt(oS),cS=Me({},Qi,{data:0}),_p=Bt(cS),uS={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hS={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},mS={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function gS(t){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(t):(t=mS[t])?!!n[t]:!1}function Im(){return gS}var pS=Me({},Al,{key:function(t){if(t.key){var n=uS[t.key]||t.key;if(n!=="Unidentified")return n}return t.type==="keypress"?(t=Oo(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?hS[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Im,charCode:function(t){return t.type==="keypress"?Oo(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?Oo(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),fS=Bt(pS),xS=Me({},Id,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Mp=Bt(xS),bS=Me({},Al,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Im}),jS=Bt(bS),vS=Me({},Qi,{propertyName:0,elapsedTime:0,pseudoElement:0}),yS=Bt(vS),wS=Me({},Id,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),kS=Bt(wS),NS=[9,13,27,32],Bm=sr&&"CompositionEvent"in window,Da=null;sr&&"documentMode"in document&&(Da=document.documentMode);var SS=sr&&"TextEvent"in window&&!Da,Nj=sr&&(!Bm||Da&&8<Da&&11>=Da),Op=" ",Rp=!1;function Sj(t,n){switch(t){case"keyup":return NS.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Aj(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var di=!1;function AS(t,n){switch(t){case"compositionend":return Aj(n);case"keypress":return n.which!==32?null:(Rp=!0,Op);case"textInput":return t=n.data,t===Op&&Rp?null:t;default:return null}}function CS(t,n){if(di)return t==="compositionend"||!Bm&&Sj(t,n)?(t=kj(),Mo=Rm=Or=null,di=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return Nj&&n.locale!=="ko"?null:n.data;default:return null}}var PS={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Gp(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n==="input"?!!PS[t.type]:n==="textarea"}function Cj(t,n,r,s){sj(s),n=sd(n,"onChange"),0<n.length&&(r=new Gm("onChange","change",null,r,s),t.push({event:r,listeners:n}))}var _a=null,Ya=null;function ES(t){Ij(t,0)}function Bd(t){var n=hi(t);if(Jb(n))return t}function TS(t,n){if(t==="change")return n}var Pj=!1;if(sr){var Wc;if(sr){var Vc="oninput"in document;if(!Vc){var Ip=document.createElement("div");Ip.setAttribute("oninput","return;"),Vc=typeof Ip.oninput=="function"}Wc=Vc}else Wc=!1;Pj=Wc&&(!document.documentMode||9<document.documentMode)}function Bp(){_a&&(_a.detachEvent("onpropertychange",Ej),Ya=_a=null)}function Ej(t){if(t.propertyName==="value"&&Bd(Ya)){var n=[];Cj(n,Ya,t,zm(t)),oj(ES,n)}}function zS(t,n,r){t==="focusin"?(Bp(),_a=n,Ya=r,_a.attachEvent("onpropertychange",Ej)):t==="focusout"&&Bp()}function DS(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return Bd(Ya)}function _S(t,n){if(t==="click")return Bd(n)}function MS(t,n){if(t==="input"||t==="change")return Bd(n)}function OS(t,n){return t===n&&(t!==0||1/t===1/n)||t!==t&&n!==n}var yn=typeof Object.is=="function"?Object.is:OS;function Ja(t,n){if(yn(t,n))return!0;if(typeof t!="object"||t===null||typeof n!="object"||n===null)return!1;var r=Object.keys(t),s=Object.keys(n);if(r.length!==s.length)return!1;for(s=0;s<r.length;s++){var i=r[s];if(!Ku.call(n,i)||!yn(t[i],n[i]))return!1}return!0}function Kp(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function Fp(t,n){var r=Kp(t);t=0;for(var s;r;){if(r.nodeType===3){if(s=t+r.textContent.length,t<=n&&s>=n)return{node:r,offset:n-t};t=s}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Kp(r)}}function Tj(t,n){return t&&n?t===n?!0:t&&t.nodeType===3?!1:n&&n.nodeType===3?Tj(t,n.parentNode):"contains"in t?t.contains(n):t.compareDocumentPosition?!!(t.compareDocumentPosition(n)&16):!1:!1}function zj(){for(var t=window,n=Jo();n instanceof t.HTMLIFrameElement;){try{var r=typeof n.contentWindow.location.href=="string"}catch{r=!1}if(r)t=n.contentWindow;else break;n=Jo(t.document)}return n}function Km(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n&&(n==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||n==="textarea"||t.contentEditable==="true")}function RS(t){var n=zj(),r=t.focusedElem,s=t.selectionRange;if(n!==r&&r&&r.ownerDocument&&Tj(r.ownerDocument.documentElement,r)){if(s!==null&&Km(r)){if(n=s.start,t=s.end,t===void 0&&(t=n),"selectionStart"in r)r.selectionStart=n,r.selectionEnd=Math.min(t,r.value.length);else if(t=(n=r.ownerDocument||document)&&n.defaultView||window,t.getSelection){t=t.getSelection();var i=r.textContent.length,a=Math.min(s.start,i);s=s.end===void 0?a:Math.min(s.end,i),!t.extend&&a>s&&(i=s,s=a,a=i),i=Fp(r,a);var l=Fp(r,s);i&&l&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==l.node||t.focusOffset!==l.offset)&&(n=n.createRange(),n.setStart(i.node,i.offset),t.removeAllRanges(),a>s?(t.addRange(n),t.extend(l.node,l.offset)):(n.setEnd(l.node,l.offset),t.addRange(n)))}}for(n=[],t=r;t=t.parentNode;)t.nodeType===1&&n.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r<n.length;r++)t=n[r],t.element.scrollLeft=t.left,t.element.scrollTop=t.top}}var GS=sr&&"documentMode"in document&&11>=document.documentMode,ci=null,ih=null,Ma=null,ah=!1;function Lp(t,n,r){var s=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;ah||ci==null||ci!==Jo(s)||(s=ci,"selectionStart"in s&&Km(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focu
vendor: 4,501 bytes, line 37
37sNode:s.focusNode,focusOffset:s.focusOffset}),Ma&&Ja(Ma,s)||(Ma=s,s=sd(ih,"onSelect"),0<s.length&&(n=new Gm("onSelect","select",null,n,r),t.push({event:n,listeners:s}),n.target=ci)))}function Jl(t,n){var r={};return r[t.toLowerCase()]=n.toLowerCase(),r["Webkit"+t]="webkit"+n,r["Moz"+t]="moz"+n,r}var ui={animationend:Jl("Animation","AnimationEnd"),animationiteration:Jl("Animation","AnimationIteration"),animationstart:Jl("Animation","AnimationStart"),transitionend:Jl("Transition","TransitionEnd")},Uc={},Dj={};sr&&(Dj=document.createElement("div").style,"AnimationEvent"in window||(delete ui.animationend.animation,delete ui.animationiteration.animation,delete ui.animationstart.animation),"TransitionEvent"in window||delete ui.transitionend.transition);function Kd(t){if(Uc[t])return Uc[t];if(!ui[t])return t;var n=ui[t],r;for(r in n)if(n.hasOwnProperty(r)&&r in Dj)return Uc[t]=n[r];return t}var _j=Kd("animationend"),Mj=Kd("animationiteration"),Oj=Kd("animationstart"),Rj=Kd("transitionend"),Gj=new Map,Wp="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Jr(t,n){Gj.set(t,n),Ks(n,[t])}for(var $c=0;$c<Wp.length;$c++){var Hc=Wp[$c],IS=Hc.toLowerCase(),BS=Hc[0].toUpperCase()+Hc.slice(1);Jr(IS,"on"+BS)}Jr(_j,"onAnimationEnd");Jr(Mj,"onAnimationIteration");Jr(Oj,"onAnimationStart");Jr("dblclick","onDoubleClick");Jr("focusin","onFocus");Jr("focusout","onBlur");Jr(Rj,"onTransitionEnd");Bi("onMouseEnter",["mouseout","mouseover"]);Bi("onMouseLeave",["mouseout","mouseover"]);Bi("onPointerEnter",["pointerout","pointerover"]);Bi("onPointerLeave",["pointerout","pointerover"]);Ks("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Ks("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Ks("onBeforeInput",["compositionend","keypress","textInput","paste"]);Ks("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Ks("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Ks("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ca="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),KS=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ca));function Vp(t,n,r){var s=t.type||"unknown-event";t.currentTarget=r,IN(s,n,void 0,t),t.currentTarget=null}function Ij(t,n){n=(n&4)!==0;for(var r=0;r<t.length;r++){var s=t[r],i=s.event;s=s.listeners;e:{var a=void 0;if(n)for(var l=s.length-1;0<=l;l--){var o=s[l],d=o.instance,c=o.currentTarget;if(o=o.listener,d!==a&&i.isPropagationStopped())break e;Vp(i,o,c),a=d}else for(l=0;l<s.length;l++){if(o=s[l],d=o.instance,c=o.currentTarget,o=o.listener,d!==a&&i.isPropagationStopped())break e;Vp(i,o,c),a=d}}}if(Xo)throw t=th,Xo=!1,th=null,t}function Ae(t,n){var r=n[uh];r===void 0&&(r=n[uh]=new Set);var s=t+"__bubble";r.has(s)||(Bj(n,t,2,!1),r.add(s))}function Zc(t,n,r){var s=0;n&&(s|=4),Bj(r,t,s,n)}var Ql="_reactListening"+Math.random().toString(36).slice(2);function Qa(t){if(!t[Ql]){t[Ql]=!0,$b.forEach(function(r){r!=="selectionchange"&&(KS.has(r)||Zc(r,!1,t),Zc(r,!0,t))});var n=t.nodeType===9?t:t.ownerDocument;n===null||n[Ql]||(n[Ql]=!0,Zc("selectionchange",!1,n))}}function Bj(t,n,r,s){switch(wj(n)){case 1:var i=eS;break;case 4:i=tS;break;default:i=Om}r=i.bind(null,n,r,t),i=void 0,!eh||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(i=!0),s?i!==void 0?t.addEventListener(n,r,{capture:!0,passive:i}):t.addEventListener(n,r,!0):i!==void 0?t.addEventListener(n,r,{passive:i}):t.addEventListener(n,r,!1)}function qc(t,n,r,s,i){var a=s;if(!(n&1)&&!(n&2)&&s!==null)e:for(;;){if(s===null)return;var l=s.tag;if(l===3||l===4){var o=s.stateNode.containerInfo;
vendor: 4,410 bytes, line 37
37if(o===i||o.nodeType===8&&o.parentNode===i)break;if(l===4)for(l=s.return;l!==null;){var d=l.tag;if((d===3||d===4)&&(d=l.stateNode.containerInfo,d===i||d.nodeType===8&&d.parentNode===i))return;l=l.return}for(;o!==null;){if(l=xs(o),l===null)return;if(d=l.tag,d===5||d===6){s=a=l;continue e}o=o.parentNode}}s=s.return}oj(function(){var c=a,u=zm(r),h=[];e:{var g=Gj.get(t);if(g!==void 0){var m=Gm,j=t;switch(t){case"keypress":if(Oo(r)===0)break e;case"keydown":case"keyup":m=fS;break;case"focusin":j="focus",m=Lc;break;case"focusout":j="blur",m=Lc;break;case"beforeblur":case"afterblur":m=Lc;break;case"click":if(r.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Dp;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=sS;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=jS;break;case _j:case Mj:case Oj:m=lS;break;case Rj:m=yS;break;case"scroll":m=nS;break;case"wheel":m=kS;break;case"copy":case"cut":case"paste":m=dS;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Mp}var p=(n&4)!==0,b=!p&&t==="scroll",x=p?g!==null?g+"Capture":null:g;p=[];for(var f=c,v;f!==null;){v=f;var w=v.stateNode;if(v.tag===5&&w!==null&&(v=w,x!==null&&(w=$a(f,x),w!=null&&p.push(Xa(f,w,v)))),b)break;f=f.return}0<p.length&&(g=new m(g,j,null,r,u),h.push({event:g,listeners:p}))}}if(!(n&7)){e:{if(g=t==="mouseover"||t==="pointerover",m=t==="mouseout"||t==="pointerout",g&&r!==Qu&&(j=r.relatedTarget||r.fromElement)&&(xs(j)||j[ir]))break e;if((m||g)&&(g=u.window===u?u:(g=u.ownerDocument)?g.defaultView||g.parentWindow:window,m?(j=r.relatedTarget||r.toElement,m=c,j=j?xs(j):null,j!==null&&(b=Fs(j),j!==b||j.tag!==5&&j.tag!==6)&&(j=null)):(m=null,j=c),m!==j)){if(p=Dp,w="onMouseLeave",x="onMouseEnter",f="mouse",(t==="pointerout"||t==="pointerover")&&(p=Mp,w="onPointerLeave",x="onPointerEnter",f="pointer"),b=m==null?g:hi(m),v=j==null?g:hi(j),g=new p(w,f+"leave",m,r,u),g.target=b,g.relatedTarget=v,w=null,xs(u)===c&&(p=new p(x,f+"enter",j,r,u),p.target=v,p.relatedTarget=b,w=p),b=w,m&&j)t:{for(p=m,x=j,f=0,v=p;v;v=Zs(v))f++;for(v=0,w=x;w;w=Zs(w))v++;for(;0<f-v;)p=Zs(p),f--;for(;0<v-f;)x=Zs(x),v--;for(;f--;){if(p===x||x!==null&&p===x.alternate)break t;p=Zs(p),x=Zs(x)}p=null}else p=null;m!==null&&Up(h,g,m,p,!1),j!==null&&b!==null&&Up(h,b,j,p,!0)}}e:{if(g=c?hi(c):window,m=g.nodeName&&g.nodeName.toLowerCase(),m==="select"||m==="input"&&g.type==="file")var k=TS;else if(Gp(g))if(Pj)k=MS;else{k=DS;var N=zS}else(m=g.nodeName)&&m.toLowerCase()==="input"&&(g.type==="checkbox"||g.type==="radio")&&(k=_S);if(k&&(k=k(t,c))){Cj(h,k,r,u);break e}N&&N(t,g,c),t==="focusout"&&(N=g._wrapperState)&&N.controlled&&g.type==="number"&&Hu(g,"number",g.value)}switch(N=c?hi(c):window,t){case"focusin":(Gp(N)||N.contentEditable==="true")&&(ci=N,ih=c,Ma=null);break;case"focusout":Ma=ih=ci=null;break;case"mousedown":ah=!0;break;case"contextmenu":case"mouseup":case"dragend":ah=!1,Lp(h,r,u);break;case"selectionchange":if(GS)break;case"keydown":case"keyup":Lp(h,r,u)}var S;if(Bm)e:{switch(t){case"compositionstart":var A="onCompositionStart";break e;case"compositionend":A="onCompositionEnd";break e;case"compositionupdate":A="onCompositionUpdate";break e}A=void 0}else di?Sj(t,r)&&(A="onCompositionEnd"):t==="keydown"&&r.keyCode===229&&(A="onCompositionStart");A&&(Nj&&r.locale!=="ko"&&(di||A!=="onCompositionStart"?A==="onCompositionEnd"&&di&&(S=kj()):(Or=u,Rm="value"in Or?Or.value:Or.textContent,di=!0)),N=sd(c,A),0<N.length&&(A=new _p(A,t,null,r,u),h.push({event:A,listeners:N}),S?A.data=S:(S=Aj(r),S!==null&&(A.data=S)))),(S=SS?AS(t,r):CS(t,r))&&(c=sd(c,"onBeforeInput"),0<c.length&&(u=new _p("onBeforeInput","beforeinput",null,r,u),h.push({event:u,listeners:c}),u.data=S))}Ij(h,n)})}function Xa(t,n,r){return{instance:t,listener:n,currentTarget:r}}function sd(t,n){for(var r=n+"Capture",s=[];t!==null;){var i=t,a=i.stateNode;i.tag===5&&a!==null&&(i=a,a=$a(t,r),a!=null&&s.unshift(Xa(t,a,i)),a=$a(t,n),a!=null&&s.push(Xa(t,a,i))),t=t.return}return s}function Zs(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5);return t||null}function Up(t,n,r,s,i){for(var a=n._reactName,l=[];r!==null&&r!==s;){var o=r,d=o.alternate,c=o.stateNode;
vendor: 4,178 bytes, lines 37-38
37if(d!==null&&d===s)break;o.tag===5&&c!==null&&(o=c,i?(d=$a(r,a),d!=null&&l.unshift(Xa(r,d,o))):i||(d=$a(r,a),d!=null&&l.push(Xa(r,d,o)))),r=r.return}l.length!==0&&t.push({event:n,listeners:l})}var FS=/\r\n?/g,LS=/\u0000|\uFFFD/g;function $p(t){return(typeof t=="string"?t:""+t).replace(FS,` 38`).replace(LS,"")}function Xl(t,n,r){if(n=$p(n),$p(t)!==n&&r)throw Error(M(425))}function id(){}var lh=null,oh=null;function dh(t,n){return t==="textarea"||t==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var ch=typeof setTimeout=="function"?setTimeout:void 0,WS=typeof clearTimeout=="function"?clearTimeout:void 0,Hp=typeof Promise=="function"?Promise:void 0,VS=typeof queueMicrotask=="function"?queueMicrotask:typeof Hp<"u"?function(t){return Hp.resolve(null).then(t).catch(US)}:ch;function US(t){setTimeout(function(){throw t})}function Yc(t,n){var r=n,s=0;do{var i=r.nextSibling;if(t.removeChild(r),i&&i.nodeType===8)if(r=i.data,r==="/$"){if(s===0){t.removeChild(i),qa(n);return}s--}else r!=="$"&&r!=="$?"&&r!=="$!"||s++;r=i}while(r);qa(n)}function Fr(t){for(;t!=null;t=t.nextSibling){var n=t.nodeType;if(n===1||n===3)break;if(n===8){if(n=t.data,n==="$"||n==="$!"||n==="$?")break;if(n==="/$")return null}}return t}function Zp(t){t=t.previousSibling;for(var n=0;t;){if(t.nodeType===8){var r=t.data;if(r==="$"||r==="$!"||r==="$?"){if(n===0)return t;n--}else r==="/$"&&n++}t=t.previousSibling}return null}var Xi=Math.random().toString(36).slice(2),Dn="__reactFiber$"+Xi,el="__reactProps$"+Xi,ir="__reactContainer$"+Xi,uh="__reactEvents$"+Xi,$S="__reactListeners$"+Xi,HS="__reactHandles$"+Xi;function xs(t){var n=t[Dn];if(n)return n;for(var r=t.parentNode;r;){if(n=r[ir]||r[Dn]){if(r=n.alternate,n.child!==null||r!==null&&r.child!==null)for(t=Zp(t);t!==null;){if(r=t[Dn])return r;t=Zp(t)}return n}t=r,r=t.parentNode}return null}function Cl(t){return t=t[Dn]||t[ir],!t||t.tag!==5&&t.tag!==6&&t.tag!==13&&t.tag!==3?null:t}function hi(t){if(t.tag===5||t.tag===6)return t.stateNode;throw Error(M(33))}function Fd(t){return t[el]||null}var hh=[],mi=-1;function Qr(t){return{current:t}}function Ce(t){0>mi||(t.current=hh[mi],hh[mi]=null,mi--)}function ke(t,n){mi++,hh[mi]=t.current,t.current=n}var Zr={},ot=Qr(Zr),Nt=Qr(!1),Ts=Zr;function Ki(t,n){var r=t.type.contextTypes;if(!r)return Zr;var s=t.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===n)return s.__reactInternalMemoizedMaskedChildContext;var i={},a;for(a in r)i[a]=n[a];return s&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=n,t.__reactInternalMemoizedMaskedChildContext=i),i}function St(t){return t=t.childContextTypes,t!=null}function ad(){Ce(Nt),Ce(ot)}function qp(t,n,r){if(ot.current!==Zr)throw Error(M(168));ke(ot,n),ke(Nt,r)}function Kj(t,n,r){var s=t.stateNode;if(n=n.childContextTypes,typeof s.getChildContext!="function")return r;s=s.getChildContext();for(var i in s)if(!(i in n))throw Error(M(108,zN(t)||"Unknown",i));return Me({},r,s)}function ld(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Zr,Ts=ot.current,ke(ot,t),ke(Nt,Nt.current),!0}function Yp(t,n,r){var s=t.stateNode;if(!s)throw Error(M(169));r?(t=Kj(t,n,Ts),s.__reactInternalMemoizedMergedChildContext=t,Ce(Nt),Ce(ot),ke(ot,t)):Ce(Nt),ke(Nt,r)}var Yn=null,Ld=!1,Jc=!1;function Fj(t){Yn===null?Yn=[t]:Yn.push(t)}function ZS(t){Ld=!0,Fj(t)}function Xr(){if(!Jc&&Yn!==null){Jc=!0;var t=0,n=xe;try{var r=Yn;for(xe=1;t<r.length;t++){var s=r[t];do s=s(!0);while(s!==null)}Yn=null,Ld=!1}catch(i){throw Yn!==null&&(Yn=Yn.slice(t+1)),hj(Dm,Xr),i}finally{xe=n,Jc=!1}}return null}var gi=[],pi=0,od=null,dd=0,Lt=[],Wt=0,zs=null,tr=1,nr="";function us(t,n){gi[pi++]=dd,gi[pi++]=od,od=t,dd=n}function Lj(t,n,r){Lt[Wt++]=tr,Lt[Wt++]=nr,Lt[Wt++]=zs,zs=t;var s=tr;t=nr;var i=32-bn(s)-1;s&=~(1<<i),r+=1;var a=32-bn(n)+i;if(30<a){var l=i-i%5;a=(s&(1<<l)-1).toString(32),s>>=l,i-=l,tr=1<<32-bn(n)+i|r<<i|s,nr=a+t}else tr=1<<a|r<<i|s,nr=t}function Fm(t){t.return!==null&&(us(t,1),Lj(t,1,0))}function Lm(t){for(;t===od;)od=gi[--pi],gi[pi]=null,dd=gi[--pi],gi[pi]=null;for(;t===zs;
vendor: 14,817 bytes, line 38
38)zs=Lt[--Wt],Lt[Wt]=null,nr=Lt[--Wt],Lt[Wt]=null,tr=Lt[--Wt],Lt[Wt]=null}var Ot=null,Mt=null,Ee=!1,fn=null;function Wj(t,n){var r=$t(5,null,null,0);r.elementType="DELETED",r.stateNode=n,r.return=t,n=t.deletions,n===null?(t.deletions=[r],t.flags|=16):n.push(r)}function Jp(t,n){switch(t.tag){case 5:var r=t.type;return n=n.nodeType!==1||r.toLowerCase()!==n.nodeName.toLowerCase()?null:n,n!==null?(t.stateNode=n,Ot=t,Mt=Fr(n.firstChild),!0):!1;case 6:return n=t.pendingProps===""||n.nodeType!==3?null:n,n!==null?(t.stateNode=n,Ot=t,Mt=null,!0):!1;case 13:return n=n.nodeType!==8?null:n,n!==null?(r=zs!==null?{id:tr,overflow:nr}:null,t.memoizedState={dehydrated:n,treeContext:r,retryLane:1073741824},r=$t(18,null,null,0),r.stateNode=n,r.return=t,t.child=r,Ot=t,Mt=null,!0):!1;default:return!1}}function mh(t){return(t.mode&1)!==0&&(t.flags&128)===0}function gh(t){if(Ee){var n=Mt;if(n){var r=n;if(!Jp(t,n)){if(mh(t))throw Error(M(418));n=Fr(r.nextSibling);var s=Ot;n&&Jp(t,n)?Wj(s,r):(t.flags=t.flags&-4097|2,Ee=!1,Ot=t)}}else{if(mh(t))throw Error(M(418));t.flags=t.flags&-4097|2,Ee=!1,Ot=t}}}function Qp(t){for(t=t.return;t!==null&&t.tag!==5&&t.tag!==3&&t.tag!==13;)t=t.return;Ot=t}function eo(t){if(t!==Ot)return!1;if(!Ee)return Qp(t),Ee=!0,!1;var n;if((n=t.tag!==3)&&!(n=t.tag!==5)&&(n=t.type,n=n!=="head"&&n!=="body"&&!dh(t.type,t.memoizedProps)),n&&(n=Mt)){if(mh(t))throw Vj(),Error(M(418));for(;n;)Wj(t,n),n=Fr(n.nextSibling)}if(Qp(t),t.tag===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(M(317));e:{for(t=t.nextSibling,n=0;t;){if(t.nodeType===8){var r=t.data;if(r==="/$"){if(n===0){Mt=Fr(t.nextSibling);break e}n--}else r!=="$"&&r!=="$!"&&r!=="$?"||n++}t=t.nextSibling}Mt=null}}else Mt=Ot?Fr(t.stateNode.nextSibling):null;return!0}function Vj(){for(var t=Mt;t;)t=Fr(t.nextSibling)}function Fi(){Mt=Ot=null,Ee=!1}function Wm(t){fn===null?fn=[t]:fn.push(t)}var qS=ur.ReactCurrentBatchConfig;function fa(t,n,r){if(t=r.ref,t!==null&&typeof t!="function"&&typeof t!="object"){if(r._owner){if(r=r._owner,r){if(r.tag!==1)throw Error(M(309));var s=r.stateNode}if(!s)throw Error(M(147,t));var i=s,a=""+t;return n!==null&&n.ref!==null&&typeof n.ref=="function"&&n.ref._stringRef===a?n.ref:(n=function(l){var o=i.refs;l===null?delete o[a]:o[a]=l},n._stringRef=a,n)}if(typeof t!="string")throw Error(M(284));if(!r._owner)throw Error(M(290,t))}return t}function to(t,n){throw t=Object.prototype.toString.call(n),Error(M(31,t==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":t))}function Xp(t){var n=t._init;return n(t._payload)}function Uj(t){function n(x,f){if(t){var v=x.deletions;v===null?(x.deletions=[f],x.flags|=16):v.push(f)}}function r(x,f){if(!t)return null;for(;f!==null;)n(x,f),f=f.sibling;return null}function s(x,f){for(x=new Map;f!==null;)f.key!==null?x.set(f.key,f):x.set(f.index,f),f=f.sibling;return x}function i(x,f){return x=Ur(x,f),x.index=0,x.sibling=null,x}function a(x,f,v){return x.index=v,t?(v=x.alternate,v!==null?(v=v.index,v<f?(x.flags|=2,f):v):(x.flags|=2,f)):(x.flags|=1048576,f)}function l(x){return t&&x.alternate===null&&(x.flags|=2),x}function o(x,f,v,w){return f===null||f.tag!==6?(f=su(v,x.mode,w),f.return=x,f):(f=i(f,v),f.return=x,f)}function d(x,f,v,w){var k=v.type;return k===oi?u(x,f,v.props.children,w,v.key):f!==null&&(f.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===Sr&&Xp(k)===f.type)?(w=i(f,v.props),w.ref=fa(x,f,v),w.return=x,w):(w=Lo(v.type,v.key,v.props,null,x.mode,w),w.ref=fa(x,f,v),w.return=x,w)}function c(x,f,v,w){return f===null||f.tag!==4||f.stateNode.containerInfo!==v.containerInfo||f.stateNode.implementation!==v.implementation?(f=iu(v,x.mode,w),f.return=x,f):(f=i(f,v.children||[]),f.return=x,f)}function u(x,f,v,w,k){return f===null||f.tag!==7?(f=Es(v,x.mode,w,k),f.return=x,f):(f=i(f,v),f.return=x,f)}function h(x,f,v){if(typeof f=="string"&&f!==""||typeof f=="number")return f=su(""+f,x.mode,v),f.return=x,f;if(typeof f=="object"&&f!==null){switch(f.$$typeof){case Vl:return v=Lo(f.type,f.key,f.props,null,x.mode,v),v.ref=fa(x,null,f),v.return=x,v;case li:return f=iu(f,x.mode,v),f.return=x,f;case Sr:var w=f._init;return h(x,w(f._payload),v)}if(Sa(f)||ua(f))return f=Es(f,x.mode,v,null),f.return=x,f;to(x,f)}return null}function g(x,f,v,w){var k=f!==null?f.key:null;if(typeof v=="string"&&v!==""||typeof v=="number")return k!==null?null:o(x,f,""+v,w);if(typeof v=="object"&&v!==null){switch(v.$$typeof){case Vl:return v.key===k?d(x,f,v,w):null;case li:return v.key===k?c(x,f,v,w):null;case Sr:return k=v._init,g(x,f,k(v._payload),w)}if(Sa(v)||ua(v))return k!==null?null:u(x,f,v,w,null);to(x,v)}return null}function m(x,f,v,w,k){if(typeof w=="string"&&w!==""||typeof w=="number")return x=x.get(v)||null,o(f,x,""+w,k);if(typeof w=="object"&&w!==null){switch(w.$$typeof){case Vl:return x=x.get(w.key===null?v:w.key)||null,d(f,x,w,k);case li:return x=x.get(w.key===null?v:w.key)||null,c(f,x,w,k);case Sr:var N=w._init;return m(x,f,v,N(w._payload),k)}if(Sa(w)||ua(w))return x=x.get(v)||null,u(f,x,w,k,null);to(f,w)}return null}function j(x,f,v,w){for(var k=null,N=null,S=f,A=f=0,P=null;S!==null&&A<v.length;A++){S.index>A?(P=S,S=null):P=S.sibling;var D=g(x,S,v[A],w);if(D===null){S===null&&(S=P);break}t&&S&&D.alternate===null&&n(x,S),f=a(D,f,A),N===null?k=D:N.sibling=D,N=D,S=P}if(A===v.length)return r(x,S),Ee&&us(x,A),k;if(S===null){for(;A<v.length;A++)S=h(x,v[A],w),S!==null&&(f=a(S,f,A),N===null?k=S:N.sibling=S,N=S);return Ee&&us(x,A),k}for(S=s(x,S);A<v.length;A++)P=m(S,x,A,v[A],w),P!==null&&(t&&P.alternate!==null&&S.delete(P.key===null?A:P.key),f=a(P,f,A),N===null?k=P:N.sibling=P,N=P);return t&&S.forEach(function(G){return n(x,G)}),Ee&&us(x,A),k}function p(x,f,v,w){var k=ua(v);if(typeof k!="function")throw Error(M(150));if(v=k.call(v),v==null)throw Error(M(151));for(var N=k=null,S=f,A=f=0,P=null,D=v.next();S!==null&&!D.done;A++,D=v.next()){S.index>A?(P=S,S=null):P=S.sibling;var G=g(x,S,D.value,w);if(G===null){S===null&&(S=P);break}t&&S&&G.alternate===null&&n(x,S),f=a(G,f,A),N===null?k=G:N.sibling=G,N=G,S=P}if(D.done)return r(x,S),Ee&&us(x,A),k;if(S===null){for(;!D.done;A++,D=v.next())D=h(x,D.value,w),D!==null&&(f=a(D,f,A),N===null?k=D:N.sibling=D,N=D);return Ee&&us(x,A),k}for(S=s(x,S);!D.done;A++,D=v.next())D=m(S,x,A,D.value,w),D!==null&&(t&&D.alternate!==null&&S.delete(D.key===null?A:D.key),f=a(D,f,A),N===null?k=D:N.sibling=D,N=D);return t&&S.forEach(function(O){return n(x,O)}),Ee&&us(x,A),k}function b(x,f,v,w){if(typeof v=="object"&&v!==null&&v.type===oi&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Vl:e:{for(var k=v.key,N=f;N!==null;){if(N.key===k){if(k=v.type,k===oi){if(N.tag===7){r(x,N.sibling),f=i(N,v.props.children),f.return=x,x=f;break e}}else if(N.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===Sr&&Xp(k)===N.type){r(x,N.sibling),f=i(N,v.props),f.ref=fa(x,N,v),f.return=x,x=f;break e}r(x,N);break}else n(x,N);N=N.sibling}v.type===oi?(f=Es(v.props.children,x.mode,w,v.key),f.return=x,x=f):(w=Lo(v.type,v.key,v.props,null,x.mode,w),w.ref=fa(x,f,v),w.return=x,x=w)}return l(x);case li:e:{for(N=v.key;f!==null;){if(f.key===N)if(f.tag===4&&f.stateNode.containerInfo===v.containerInfo&&f.stateNode.implementation===v.implementation){r(x,f.sibling),f=i(f,v.children||[]),f.return=x,x=f;break e}else{r(x,f);break}else n(x,f);f=f.sibling}f=iu(v,x.mode,w),f.return=x,x=f}return l(x);case Sr:return N=v._init,b(x,f,N(v._payload),w)}if(Sa(v))return j(x,f,v,w);if(ua(v))return p(x,f,v,w);to(x,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,f!==null&&f.tag===6?(r(x,f.sibling),f=i(f,v),f.return=x,x=f):(r(x,f),f=su(v,x.mode,w),f.return=x,x=f),l(x)):r(x,f)}return b}var Li=Uj(!0),$j=Uj(!1),cd=Qr(null),ud=null,fi=null,Vm=null;function Um(){Vm=fi=ud=null}function $m(t){var n=cd.current;Ce(cd),t._currentValue=n}function ph(t,n,r){for(;t!==null;){var s=t.alternate;if((t.childLanes&n)!==n?(t.childLanes|=n,s!==null&&(s.childLanes|=n)):s!==null&&(s.childLanes&n)!==n&&(s.childLanes|=n),t===r)break;t=t.return}}function ki(t,n){ud=t,Vm=fi=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&n&&(kt=!0),t.firstContext=null)}function qt(t){var n=t._currentValue;if(Vm!==t)if(t={context:t,memoizedValue:n,next:null},fi===null){if(ud===null)throw Error(M(308));fi=t,ud.dependencies={lanes:0,firstContext:t}}else fi=fi.next=t;return n}var bs=null;function Hm(t){bs===null?bs=[t]:bs.push(t)}function Hj(t,n,r,s){var i=n.interleaved;return i===null?(r.next=r,Hm(n)):(r.next=i.next,i.next=r),n.interleaved=r,ar(t,s)}function ar(t,n){t.lanes|=n;var r=t.alternate;for(r!==null&&(r.lanes|=n),r=t,t=t.return;t!==null;)t.childLanes|=n,r=t.alternate,r!==null&&(r.childLanes|=n),r=t,t=t.return;return r.tag===3?r.stateNode:null}var Ar=!1;function Zm(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Zj(t,n){t=t.updateQueue,n.updateQueue===t&&(n.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function rr(t,n){return{eventTime:t,lane:n,tag:0,payload:null,callback:null,next:null}}function Lr(t,n,r){var s=t.updateQueue;if(s===null)return null;if(s=s.shared,ue&2){var i=s.pending;return i===null?n.next=n:(n.next=i.next,i.next=n),s.pending=n,ar(t,r)}return i=s.interleaved,i===null?(n.next=n,Hm(s)):(n.next=i.next,i.next=n),s.interleaved=n,ar(t,r)}function Ro(t,n,r){if(n=n.updateQueue,n!==null&&(n=n.shared,(r&4194240)!==0)){var s=n.lanes;s&=t.pendingLanes,r|=s,n.lanes=r,_m(t,r)}}function ef(t,n){var r=t.updateQueue,s=t.alternate;if(s!==null&&(s=s.updateQueue,r===s)){var i=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var l={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};a===null?i=a=l:a=a.next=l,r=r.next}while(r!==null);a===null?i=a=n:a=a.next=n}else i=a=n;r={baseState:s.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:s.shared,effects:s.effects},t.updateQueue=r;return}t=r.lastBaseUpdate,t===null?r.firstBaseUpdate=n:t.next=n,r.lastBaseUpdate=n}function hd(t,n,r,s){var i=t.updateQueue;Ar=!1;var a=i.firstBaseUpdate,l=i.lastBaseUpdate,o=i.shared.pending;if(o!==null){i.shared.pending=null;var d=o,c=d.next;d.next=null,l===null?a=c:l.next=c,l=d;var u=t.alternate;u!==null&&(u=u.updateQueue,o=u.lastBaseUpdate,o!==l&&(o===null?u.firstBaseUpdate=c:o.next=c,u.lastBaseUpdate=d))}if(a!==null){var h=i.baseState;l=0,u=c=d=null,o=a;do{var g=o.lane,m=o.eventTime;if((s&g)===g){u!==null&&(u=u.next={eventTime:m,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var j=t,p=o;switch(g=n,m=r,p.tag){case 1:if(j=p.payload,typeof j=="function"){h=j.call(m,h,g);break e}h=j;break e;case 3:j.flags=j.flags&-65537|128;case 0:if(j=p.payload,g=typeof j=="function"?j.call(m,h,g):j,g==null)break e;h=Me({},h,g);break e;case 2:Ar=!0}}o.callback!==null&&o.lane!==0&&(t.flags|=64,g=i.effects,g===null?i.effects=[o]:g.push(o))}else m={eventTime:m,lane:g,tag:o.tag,payload:o.payload,callback:o.callback,next:null},u===null?(c=u=m,d=h):u=u.next=m,l|=g;if(o=o.next,o===null){if(o=i.shared.pending,o===null)break;g=o,o=g.next,g.next=null,i.lastBaseUpdate=g,i.shared.pending=null}}while(!0);if(u===null&&(d=h),i.baseState=d,i.firstBaseUpdate=c,i.lastBaseUpdate=u,n=i.shared.interleaved,n!==null){i=n;do l|=i.lane,i=i.next;while(i!==n)}else a===null&&(i.shared.lanes=0);_s|=l,t.lanes=l,t.memoizedState=h}}function tf(t,n,r){if(t=n.effects,n.effects=null,t!==null)for(n=0;n<t.length;n++){var s=t[n],i=s.callback;if(i!==null){if(s.callback=null,s=r,typeof i!="function")throw Error(M(191,i));i.call(s)}}}var Pl={},On=Qr(Pl),tl=Qr(Pl),nl=Qr(Pl);function js(t){if(t===Pl)throw Error(M(174));return t}function qm(t,n){switch(ke(nl,n),ke(tl,t),ke(On,Pl),t=n.nodeType,t){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:qu(null,"");break;default:t=t===8?n.parentNode:n,n=t.namespaceURI||null,t=t.tagName,n=qu(n,t)}Ce(On),ke(On,n)}function Wi(){Ce(On),Ce(tl),Ce(nl)}function qj(t){js(nl.current);var n=js(On.current),r=qu(n,t.type);n!==r&&(ke(tl,t),ke(On,r))}function Ym(t){tl.current===t&&(Ce(On),Ce(tl))}var ze=Qr(0);function md(t){for(var n=t;n!==null;){if(n.tag===13){var r=n.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Qc=[];function Jm(){for(var t=0;t<Qc.length;t++)Qc[t]._workInProgressVersionPrimary=null;Qc.length=0}var Go=ur.ReactCurrentDispatcher,Xc=ur.ReactCurrentBatchConfig,Ds=0,_e=null,$e=null,qe=null,gd=!1,Oa=!1,rl=0,YS=0;function st(){throw Error(M(321))}function Qm(t,n){if(n===null)return!1;for(var r=0;r<n.length&&r<t.length;r++)if(!yn(t[r],n[r]))return!1;return!0}function Xm(t,n,r,s,i,a){if(Ds=a,_e=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,Go.current=t===null||t.memoizedState===null?eA:tA,t=r(s,i),Oa){a=0;do{if(Oa=!1,rl=0,25<=a)throw Error(M(301));a+=1,qe=$e=null,n.updateQueue=null,Go.current=nA,t=r(s,i)}while(Oa)}if(Go.current=pd,n=$e!==null&&$e.next!==null,Ds=0,qe=$e=_e=null,gd=!1,n)throw Error(M(300));return t}function eg(){var t=rl!==0;return rl=0,t}function Pn(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return qe===null?_e.memoizedState=qe=t:qe=qe.next=t,qe}function Yt(){if($e===null){var t=_e.alternate;t=t!==null?t.memoizedState:null}else t=$e.next;var n=qe===null?_e.memoizedState:qe.next;if(n!==null)qe=n,$e=t;else{if(t===null)throw Error(M(310));$e=t,t={memoizedState:$e.memoizedState,baseState:$e.baseState,baseQueue:$e.baseQueue,queue:$e.queue,next:null},qe===null?_e.memoizedState=qe=t:qe=qe.next=t}return qe}function sl(t,n){return typeof n=="function"?n(t):n}function eu(t){var n=Yt(),r=n.queue;if(r===null)throw Error(M(311));r.lastRenderedReducer=t;var s=$e,i=s.baseQueue,a=r.pending;if(a!==null){if(i!==null){var l=i.next;i.next=a.next,a.next=l}s.baseQueue=i=a,r.pending=null}if(i!==null){a=i.next,s=s.baseState;var o=l=null,d=null,c=a;do{var u=c.lane;if((Ds&u)===u)d!==null&&(d=d.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),s=c.hasEagerState?c.eagerState:t(s,c.action);else{var h={lane:u,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};d===null?(o=d=h,l=s):d=d.next=h,_e.lanes|=u,_s|=u}c=c.next}while(c!==null&&c!==a);d===null?l=s:d.next=o,yn(s,n.memoizedState)||(kt=!0),n.memoizedState=s,n.baseState=l,n.baseQueue=d,r.lastRenderedState=s}if(t=r.interleaved,t!==null){i=t;do a=i.lane,_e.lanes|=a,_s|=a,i=i.next;while(i!==t)}else i===null&&(r.lanes=0);
vendor: 4,683 bytes, line 38
38return[n.memoizedState,r.dispatch]}function tu(t){var n=Yt(),r=n.queue;if(r===null)throw Error(M(311));r.lastRenderedReducer=t;var s=r.dispatch,i=r.pending,a=n.memoizedState;if(i!==null){r.pending=null;var l=i=i.next;do a=t(a,l.action),l=l.next;while(l!==i);yn(a,n.memoizedState)||(kt=!0),n.memoizedState=a,n.baseQueue===null&&(n.baseState=a),r.lastRenderedState=a}return[a,s]}function Yj(){}function Jj(t,n){var r=_e,s=Yt(),i=n(),a=!yn(s.memoizedState,i);if(a&&(s.memoizedState=i,kt=!0),s=s.queue,tg(ev.bind(null,r,s,t),[t]),s.getSnapshot!==n||a||qe!==null&&qe.memoizedState.tag&1){if(r.flags|=2048,il(9,Xj.bind(null,r,s,i,n),void 0,null),Ye===null)throw Error(M(349));Ds&30||Qj(r,n,i)}return i}function Qj(t,n,r){t.flags|=16384,t={getSnapshot:n,value:r},n=_e.updateQueue,n===null?(n={lastEffect:null,stores:null},_e.updateQueue=n,n.stores=[t]):(r=n.stores,r===null?n.stores=[t]:r.push(t))}function Xj(t,n,r,s){n.value=r,n.getSnapshot=s,tv(n)&&nv(t)}function ev(t,n,r){return r(function(){tv(n)&&nv(t)})}function tv(t){var n=t.getSnapshot;t=t.value;try{var r=n();return!yn(t,r)}catch{return!0}}function nv(t){var n=ar(t,1);n!==null&&jn(n,t,1,-1)}function nf(t){var n=Pn();return typeof t=="function"&&(t=t()),n.memoizedState=n.baseState=t,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:sl,lastRenderedState:t},n.queue=t,t=t.dispatch=XS.bind(null,_e,t),[n.memoizedState,t]}function il(t,n,r,s){return t={tag:t,create:n,destroy:r,deps:s,next:null},n=_e.updateQueue,n===null?(n={lastEffect:null,stores:null},_e.updateQueue=n,n.lastEffect=t.next=t):(r=n.lastEffect,r===null?n.lastEffect=t.next=t:(s=r.next,r.next=t,t.next=s,n.lastEffect=t)),t}function rv(){return Yt().memoizedState}function Io(t,n,r,s){var i=Pn();_e.flags|=t,i.memoizedState=il(1|n,r,void 0,s===void 0?null:s)}function Wd(t,n,r,s){var i=Yt();s=s===void 0?null:s;var a=void 0;if($e!==null){var l=$e.memoizedState;if(a=l.destroy,s!==null&&Qm(s,l.deps)){i.memoizedState=il(n,r,a,s);return}}_e.flags|=t,i.memoizedState=il(1|n,r,a,s)}function rf(t,n){return Io(8390656,8,t,n)}function tg(t,n){return Wd(2048,8,t,n)}function sv(t,n){return Wd(4,2,t,n)}function iv(t,n){return Wd(4,4,t,n)}function av(t,n){if(typeof n=="function")return t=t(),n(t),function(){n(null)};if(n!=null)return t=t(),n.current=t,function(){n.current=null}}function lv(t,n,r){return r=r!=null?r.concat([t]):null,Wd(4,4,av.bind(null,n,t),r)}function ng(){}function ov(t,n){var r=Yt();n=n===void 0?null:n;var s=r.memoizedState;return s!==null&&n!==null&&Qm(n,s[1])?s[0]:(r.memoizedState=[t,n],t)}function dv(t,n){var r=Yt();n=n===void 0?null:n;var s=r.memoizedState;return s!==null&&n!==null&&Qm(n,s[1])?s[0]:(t=t(),r.memoizedState=[t,n],t)}function cv(t,n,r){return Ds&21?(yn(r,n)||(r=pj(),_e.lanes|=r,_s|=r,t.baseState=!0),n):(t.baseState&&(t.baseState=!1,kt=!0),t.memoizedState=r)}function JS(t,n){var r=xe;xe=r!==0&&4>r?r:4,t(!0);var s=Xc.transition;Xc.transition={};try{t(!1),n()}finally{xe=r,Xc.transition=s}}function uv(){return Yt().memoizedState}function QS(t,n,r){var s=Vr(t);if(r={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null},hv(t))mv(n,r);else if(r=Hj(t,n,r,s),r!==null){var i=xt();jn(r,t,s,i),gv(r,n,s)}}function XS(t,n,r){var s=Vr(t),i={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null};if(hv(t))mv(n,i);else{var a=t.alternate;if(t.lanes===0&&(a===null||a.lanes===0)&&(a=n.lastRenderedReducer,a!==null))try{var l=n.lastRenderedState,o=a(l,r);if(i.hasEagerState=!0,i.eagerState=o,yn(o,l)){var d=n.interleaved;d===null?(i.next=i,Hm(n)):(i.next=d.next,d.next=i),n.interleaved=i;return}}catch{}finally{}r=Hj(t,n,i,s),r!==null&&(i=xt(),jn(r,t,s,i),gv(r,n,s))}}function hv(t){var n=t.alternate;return t===_e||n!==null&&n===_e}function mv(t,n){Oa=gd=!0;var r=t.pending;r===null?n.next=n:(n.next=r.next,r.next=n),t.pending=n}function gv(t,n,r){if(r&4194240){var s=n.lanes;s&=t.pendingLanes,r|=s,n.lanes=r,_m(t,r)}}var pd={readContext:qt,useCallback:st,useContext:st,useEffect:st,useImperativeHandle:st,useInsertionEffect:st,useLayoutEffect:st,useMemo:st,useReducer:st,useRef:st,useState:st,useDebugValue:st,useDeferredValue:st,useTransition:st,useMutableSource:st,useSyncExternalStore:st,useId:st,unstable_isNewReconciler:!1},eA={readContext:qt,useCallback:function(t,n){return Pn().memoizedState=[t,n===void 0?null:n],t},useContext:qt,useEffect:rf,useImperativeHandle:function(t,n,r){return r=r!=null?r.concat([t]):null,Io(4194308,4,av.bind(null,n,t),r)},useLayoutEffect:function(t,n){return Io(4194308,4,t,n)},useInsertionEffect:function(t,n){return Io(4,2,t,n)},useMemo:function(t,n){var r=Pn();return n=n===void 0?null:n,t=t(),r.memoizedState=[t,n],t},useReducer:function(t,n,r){var s=Pn();
vendor: 7,648 bytes, lines 38-40
38return n=r!==void 0?r(n):n,s.memoizedState=s.baseState=n,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},s.queue=t,t=t.dispatch=QS.bind(null,_e,t),[s.memoizedState,t]},useRef:function(t){var n=Pn();return t={current:t},n.memoizedState=t},useState:nf,useDebugValue:ng,useDeferredValue:function(t){return Pn().memoizedState=t},useTransition:function(){var t=nf(!1),n=t[0];return t=JS.bind(null,t[1]),Pn().memoizedState=t,[n,t]},useMutableSource:function(){},useSyncExternalStore:function(t,n,r){var s=_e,i=Pn();if(Ee){if(r===void 0)throw Error(M(407));r=r()}else{if(r=n(),Ye===null)throw Error(M(349));Ds&30||Qj(s,n,r)}i.memoizedState=r;var a={value:r,getSnapshot:n};return i.queue=a,rf(ev.bind(null,s,a,t),[t]),s.flags|=2048,il(9,Xj.bind(null,s,a,r,n),void 0,null),r},useId:function(){var t=Pn(),n=Ye.identifierPrefix;if(Ee){var r=nr,s=tr;r=(s&~(1<<32-bn(s)-1)).toString(32)+r,n=":"+n+"R"+r,r=rl++,0<r&&(n+="H"+r.toString(32)),n+=":"}else r=YS++,n=":"+n+"r"+r.toString(32)+":";return t.memoizedState=n},unstable_isNewReconciler:!1},tA={readContext:qt,useCallback:ov,useContext:qt,useEffect:tg,useImperativeHandle:lv,useInsertionEffect:sv,useLayoutEffect:iv,useMemo:dv,useReducer:eu,useRef:rv,useState:function(){return eu(sl)},useDebugValue:ng,useDeferredValue:function(t){var n=Yt();return cv(n,$e.memoizedState,t)},useTransition:function(){var t=eu(sl)[0],n=Yt().memoizedState;return[t,n]},useMutableSource:Yj,useSyncExternalStore:Jj,useId:uv,unstable_isNewReconciler:!1},nA={readContext:qt,useCallback:ov,useContext:qt,useEffect:tg,useImperativeHandle:lv,useInsertionEffect:sv,useLayoutEffect:iv,useMemo:dv,useReducer:tu,useRef:rv,useState:function(){return tu(sl)},useDebugValue:ng,useDeferredValue:function(t){var n=Yt();return $e===null?n.memoizedState=t:cv(n,$e.memoizedState,t)},useTransition:function(){var t=tu(sl)[0],n=Yt().memoizedState;return[t,n]},useMutableSource:Yj,useSyncExternalStore:Jj,useId:uv,unstable_isNewReconciler:!1};function dn(t,n){if(t&&t.defaultProps){n=Me({},n),t=t.defaultProps;for(var r in t)n[r]===void 0&&(n[r]=t[r]);return n}return n}function fh(t,n,r,s){n=t.memoizedState,r=r(s,n),r=r==null?n:Me({},n,r),t.memoizedState=r,t.lanes===0&&(t.updateQueue.baseState=r)}var Vd={isMounted:function(t){return(t=t._reactInternals)?Fs(t)===t:!1},enqueueSetState:function(t,n,r){t=t._reactInternals;var s=xt(),i=Vr(t),a=rr(s,i);a.payload=n,r!=null&&(a.callback=r),n=Lr(t,a,i),n!==null&&(jn(n,t,i,s),Ro(n,t,i))},enqueueReplaceState:function(t,n,r){t=t._reactInternals;var s=xt(),i=Vr(t),a=rr(s,i);a.tag=1,a.payload=n,r!=null&&(a.callback=r),n=Lr(t,a,i),n!==null&&(jn(n,t,i,s),Ro(n,t,i))},enqueueForceUpdate:function(t,n){t=t._reactInternals;var r=xt(),s=Vr(t),i=rr(r,s);i.tag=2,n!=null&&(i.callback=n),n=Lr(t,i,s),n!==null&&(jn(n,t,s,r),Ro(n,t,s))}};function sf(t,n,r,s,i,a,l){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(s,a,l):n.prototype&&n.prototype.isPureReactComponent?!Ja(r,s)||!Ja(i,a):!0}function pv(t,n,r){var s=!1,i=Zr,a=n.contextType;return typeof a=="object"&&a!==null?a=qt(a):(i=St(n)?Ts:ot.current,s=n.contextTypes,a=(s=s!=null)?Ki(t,i):Zr),n=new n(r,a),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Vd,t.stateNode=n,n._reactInternals=t,s&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=i,t.__reactInternalMemoizedMaskedChildContext=a),n}function af(t,n,r,s){t=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(r,s),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(r,s),n.state!==t&&Vd.enqueueReplaceState(n,n.state,null)}function xh(t,n,r,s){var i=t.stateNode;i.props=r,i.state=t.memoizedState,i.refs={},Zm(t);var a=n.contextType;typeof a=="object"&&a!==null?i.context=qt(a):(a=St(n)?Ts:ot.current,i.context=Ki(t,a)),i.state=t.memoizedState,a=n.getDerivedStateFromProps,typeof a=="function"&&(fh(t,n,a,r),i.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(n=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),n!==i.state&&Vd.enqueueReplaceState(i,i.state,null),hd(t,r,i,s),i.state=t.memoizedState),typeof i.componentDidMount=="function"&&(t.flags|=4194308)}function Vi(t,n){try{var r="",s=n;do r+=TN(s),s=s.return;while(s);var i=r}catch(a){i=` 39Error generating stack: `+a.message+` 40`+a.stack}return{value:t,source:n,stack:i,digest:null}}function nu(t,n,r){return{value:t,source:null,stack:r??null,digest:n??null}}function bh(t,n){try{console.error(n.value)}catch(r){setTimeout(function(){throw r})}}var rA=typeof WeakMap=="function"?WeakMap:Map;function fv(t,n,r){r=rr(-1,r),r.tag=3,r.payload={element:null};var s=n.value;return r.callback=function(){xd||(xd=!0,Ph=s),bh(t,n)},r}function xv(t,n,r){r=rr(-1,r),r.tag=3;var s=t.type.getDerivedStateFromError;if(typeof s=="function"){var i=n.value;r.payload=function(){return s(i)},r.callback=function(){bh(t,n)}}var a=t.stateNode;return a!==null&&typeof a.componentDidCatch=="function"&&(r.callback=function(){bh(t,n),typeof s!="function"&&(Wr===null?Wr=new Set([this]):Wr.add(this));var l=n.stack;this.componentDidCatch(n.value,{componentStack:l!==null?l:""})}),r}function lf(t,n,r){var s=t.pingCache;if(s===null){s=t.pingCache=new rA;var i=new Set;s.set(n,i)}else i=s.get(n),i===void 0&&(i=new Set,s.set(n,i));i.has(r)||(i.add(r),t=xA.bind(null,t,n,r),n.then(t,t))}function of(t){do{var n;if((n=t.tag===13)&&(n=t.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return t;t=t.return}while(t!==null);return null}function df(t,n,r,s,i){return t.mode&1?(t.flags|=65536,t.lanes=i,t):(t===n?t.flags|=65536:(t.flags|=128,r.flags|=131072,r.flags&=-52805,r.tag===1&&(r.alternate===null?r.tag=17:(n=rr(-1,1),n.tag=2,Lr(r,n,1))),r.lanes|=1),t)}var sA=ur.ReactCurrentOwner,kt=!1;function gt(t,n,r,s){n.child=t===null?$j(n,null,r,s):Li(n,t.child,r,s)}function cf(t,n,r,s,i){r=r.render;var a=n.ref;return ki(n,i),s=Xm(t,n,r,s,a,i),r=eg(),t!==null&&!kt?(n.updateQueue=t.updateQueue,n.flags&=-2053,t.lanes&=~i,lr(t,n,i)):(Ee&&r&&Fm(n),n.flags|=1,gt(t,n,s,i),n.child)}function uf(t,n,r,s,i){if(t===null){var a=r.type;return typeof a=="function"&&!cg(a)&&a.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(n.tag=15,n.type=a,bv(t,n,a,s,i)):(t=Lo(r.type,null,s,n,n.mode,i),t.ref=n.ref,t.return=n,n.child=t)}if(a=t.child,!(t.lanes&i)){var l=a.memoizedProps;if(r=r.compare,r=r!==null?r:Ja,r(l,s)&&t.ref===n.ref)return lr(t,n,i)}return n.flags|=1,t=Ur(a,s),t.ref=n.ref,t.return=n,n.child=t}function bv(t,n,r,s,i){if(t!==null){var a=t.memoizedProps;if(Ja(a,s)&&t.ref===n.ref)if(kt=!1,n.pendingProps=s=a,(t.lanes&i)!==0)t.flags&131072&&(kt=!0);else return n.lanes=t.lanes,lr(t,n,i)}return jh(t,n,r,s,i)}function jv(t,n,r){var s=n.pendingProps,i=s.children,a=t!==null?t.memoizedState:null;if(s.mode==="hidden")if(!(n.mode&1))n.memoizedState={baseLanes:0,cachePool:null,transitions:null},ke(bi,Tt),Tt|=r;else{if(!(r&1073741824))return t=a!==null?a.baseLanes|r:r,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:t,cachePool:null,transitions:null},n.updateQueue=null,ke(bi,Tt),Tt|=t,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},s=a!==null?a.baseLanes:r,ke(bi,Tt),Tt|=s}else a!==null?(s=a.baseLanes|r,n.memoizedState=null):s=r,ke(bi,Tt),Tt|=s;return gt(t,n,i,r),n.child}function vv(t,n){var r=n.ref;(t===null&&r!==null||t!==null&&t.ref!==r)&&(n.flags|=512,n.flags|=2097152)}
vendor: 4,497 bytes, line 40
40function jh(t,n,r,s,i){var a=St(r)?Ts:ot.current;return a=Ki(n,a),ki(n,i),r=Xm(t,n,r,s,a,i),s=eg(),t!==null&&!kt?(n.updateQueue=t.updateQueue,n.flags&=-2053,t.lanes&=~i,lr(t,n,i)):(Ee&&s&&Fm(n),n.flags|=1,gt(t,n,r,i),n.child)}function hf(t,n,r,s,i){if(St(r)){var a=!0;ld(n)}else a=!1;if(ki(n,i),n.stateNode===null)Bo(t,n),pv(n,r,s),xh(n,r,s,i),s=!0;else if(t===null){var l=n.stateNode,o=n.memoizedProps;l.props=o;var d=l.context,c=r.contextType;typeof c=="object"&&c!==null?c=qt(c):(c=St(r)?Ts:ot.current,c=Ki(n,c));var u=r.getDerivedStateFromProps,h=typeof u=="function"||typeof l.getSnapshotBeforeUpdate=="function";h||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==s||d!==c)&&af(n,l,s,c),Ar=!1;var g=n.memoizedState;l.state=g,hd(n,s,l,i),d=n.memoizedState,o!==s||g!==d||Nt.current||Ar?(typeof u=="function"&&(fh(n,r,u,s),d=n.memoizedState),(o=Ar||sf(n,r,o,s,g,d,c))?(h||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(n.flags|=4194308)):(typeof l.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=s,n.memoizedState=d),l.props=s,l.state=d,l.context=c,s=o):(typeof l.componentDidMount=="function"&&(n.flags|=4194308),s=!1)}else{l=n.stateNode,Zj(t,n),o=n.memoizedProps,c=n.type===n.elementType?o:dn(n.type,o),l.props=c,h=n.pendingProps,g=l.context,d=r.contextType,typeof d=="object"&&d!==null?d=qt(d):(d=St(r)?Ts:ot.current,d=Ki(n,d));var m=r.getDerivedStateFromProps;(u=typeof m=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==h||g!==d)&&af(n,l,s,d),Ar=!1,g=n.memoizedState,l.state=g,hd(n,s,l,i);var j=n.memoizedState;o!==h||g!==j||Nt.current||Ar?(typeof m=="function"&&(fh(n,r,m,s),j=n.memoizedState),(c=Ar||sf(n,r,c,s,g,j,d)||!1)?(u||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(s,j,d),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(s,j,d)),typeof l.componentDidUpdate=="function"&&(n.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===t.memoizedProps&&g===t.memoizedState||(n.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===t.memoizedProps&&g===t.memoizedState||(n.flags|=1024),n.memoizedProps=s,n.memoizedState=j),l.props=s,l.state=j,l.context=d,s=c):(typeof l.componentDidUpdate!="function"||o===t.memoizedProps&&g===t.memoizedState||(n.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===t.memoizedProps&&g===t.memoizedState||(n.flags|=1024),s=!1)}return vh(t,n,r,s,a,i)}function vh(t,n,r,s,i,a){vv(t,n);var l=(n.flags&128)!==0;if(!s&&!l)return i&&Yp(n,r,!1),lr(t,n,a);s=n.stateNode,sA.current=n;var o=l&&typeof r.getDerivedStateFromError!="function"?null:s.render();return n.flags|=1,t!==null&&l?(n.child=Li(n,t.child,null,a),n.child=Li(n,null,o,a)):gt(t,n,o,a),n.memoizedState=s.state,i&&Yp(n,r,!0),n.child}function yv(t){var n=t.stateNode;n.pendingContext?qp(t,n.pendingContext,n.pendingContext!==n.context):n.context&&qp(t,n.context,!1),qm(t,n.containerInfo)}function mf(t,n,r,s,i){return Fi(),Wm(i),n.flags|=256,gt(t,n,r,s),n.child}var yh={dehydrated:null,treeContext:null,retryLane:0};function wh(t){return{baseLanes:t,cachePool:null,transitions:null}}function wv(t,n,r){var s=n.pendingProps,i=ze.current,a=!1,l=(n.flags&128)!==0,o;if((o=l)||(o=t!==null&&t.memoizedState===null?!1:(i&2)!==0),o?(a=!0,n.flags&=-129):(t===null||t.memoizedState!==null)&&(i|=1),ke(ze,i&1),t===null)return gh(n),t=n.memoizedState,t!==null&&(t=t.dehydrated,t!==null)?(n.mode&1?t.data==="$!"?n.lanes=8:n.lanes=1073741824:n.lanes=1,null):(l=s.children,t=s.fallback,a?(s=n.mode,a=n.child,l={mode:"hidden",children:l},!(s&1)&&a!==null?(a.childLanes=0,a.pendingProps=l):a=Hd(l,s,0,null),t=Es(t,s,r,null),a.return=n,t.return=n,a.sibling=t,n.child=a,n.child.memoizedState=wh(r),n.memoizedState=yh,t):rg(n,l));if(i=t.memoizedState,i!==null&&(o=i.dehydrated,o!==null))return iA(t,n,l,s,o,i,r);if(a){a=s.fallback,l=n.mode,i=t.child,o=i.sibling;var d={mode:"hidden",children:s.children};return!(l&1)&&n.child!==i?(s=n.child,s.childLanes=0,s.pendingProps=d,n.deleti
vendor: 7,289 bytes, line 40
40ons=null):(s=Ur(i,d),s.subtreeFlags=i.subtreeFlags&14680064),o!==null?a=Ur(o,a):(a=Es(a,l,r,null),a.flags|=2),a.return=n,s.return=n,s.sibling=a,n.child=s,s=a,a=n.child,l=t.child.memoizedState,l=l===null?wh(r):{baseLanes:l.baseLanes|r,cachePool:null,transitions:l.transitions},a.memoizedState=l,a.childLanes=t.childLanes&~r,n.memoizedState=yh,s}return a=t.child,t=a.sibling,s=Ur(a,{mode:"visible",children:s.children}),!(n.mode&1)&&(s.lanes=r),s.return=n,s.sibling=null,t!==null&&(r=n.deletions,r===null?(n.deletions=[t],n.flags|=16):r.push(t)),n.child=s,n.memoizedState=null,s}function rg(t,n){return n=Hd({mode:"visible",children:n},t.mode,0,null),n.return=t,t.child=n}function no(t,n,r,s){return s!==null&&Wm(s),Li(n,t.child,null,r),t=rg(n,n.pendingProps.children),t.flags|=2,n.memoizedState=null,t}function iA(t,n,r,s,i,a,l){if(r)return n.flags&256?(n.flags&=-257,s=nu(Error(M(422))),no(t,n,l,s)):n.memoizedState!==null?(n.child=t.child,n.flags|=128,null):(a=s.fallback,i=n.mode,s=Hd({mode:"visible",children:s.children},i,0,null),a=Es(a,i,l,null),a.flags|=2,s.return=n,a.return=n,s.sibling=a,n.child=s,n.mode&1&&Li(n,t.child,null,l),n.child.memoizedState=wh(l),n.memoizedState=yh,a);if(!(n.mode&1))return no(t,n,l,null);if(i.data==="$!"){if(s=i.nextSibling&&i.nextSibling.dataset,s)var o=s.dgst;return s=o,a=Error(M(419)),s=nu(a,s,void 0),no(t,n,l,s)}if(o=(l&t.childLanes)!==0,kt||o){if(s=Ye,s!==null){switch(l&-l){case 4:i=2;break;case 16:i=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}i=i&(s.suspendedLanes|l)?0:i,i!==0&&i!==a.retryLane&&(a.retryLane=i,ar(t,i),jn(s,t,i,-1))}return dg(),s=nu(Error(M(421))),no(t,n,l,s)}return i.data==="$?"?(n.flags|=128,n.child=t.child,n=bA.bind(null,t),i._reactRetry=n,null):(t=a.treeContext,Mt=Fr(i.nextSibling),Ot=n,Ee=!0,fn=null,t!==null&&(Lt[Wt++]=tr,Lt[Wt++]=nr,Lt[Wt++]=zs,tr=t.id,nr=t.overflow,zs=n),n=rg(n,s.children),n.flags|=4096,n)}function gf(t,n,r){t.lanes|=n;var s=t.alternate;s!==null&&(s.lanes|=n),ph(t.return,n,r)}function ru(t,n,r,s,i){var a=t.memoizedState;a===null?t.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:s,tail:r,tailMode:i}:(a.isBackwards=n,a.rendering=null,a.renderingStartTime=0,a.last=s,a.tail=r,a.tailMode=i)}function kv(t,n,r){var s=n.pendingProps,i=s.revealOrder,a=s.tail;if(gt(t,n,s.children,r),s=ze.current,s&2)s=s&1|2,n.flags|=128;else{if(t!==null&&t.flags&128)e:for(t=n.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&gf(t,r,n);else if(t.tag===19)gf(t,r,n);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break e;for(;t.sibling===null;){if(t.return===null||t.return===n)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}s&=1}if(ke(ze,s),!(n.mode&1))n.memoizedState=null;else switch(i){case"forwards":for(r=n.child,i=null;r!==null;)t=r.alternate,t!==null&&md(t)===null&&(i=r),r=r.sibling;r=i,r===null?(i=n.child,n.child=null):(i=r.sibling,r.sibling=null),ru(n,!1,i,r,a);break;case"backwards":for(r=null,i=n.child,n.child=null;i!==null;){if(t=i.alternate,t!==null&&md(t)===null){n.child=i;break}t=i.sibling,i.sibling=r,r=i,i=t}ru(n,!0,r,null,a);break;case"together":ru(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function Bo(t,n){!(n.mode&1)&&t!==null&&(t.alternate=null,n.alternate=null,n.flags|=2)}function lr(t,n,r){if(t!==null&&(n.dependencies=t.dependencies),_s|=n.lanes,!(r&n.childLanes))return null;if(t!==null&&n.child!==t.child)throw Error(M(153));if(n.child!==null){for(t=n.child,r=Ur(t,t.pendingProps),n.child=r,r.return=n;t.sibling!==null;)t=t.sibling,r=r.sibling=Ur(t,t.pendingProps),r.return=n;r.sibling=null}return n.child}function aA(t,n,r){switch(n.tag){case 3:yv(n),Fi();break;case 5:qj(n);break;case 1:St(n.type)&&ld(n);break;case 4:qm(n,n.stateNode.containerInfo);break;case 10:var s=n.type._context,i=n.memoizedProps.value;ke(cd,s._currentValue),s._currentValue=i;break;case 13:if(s=n.memoizedState,s!==null)return s.dehydrated!==null?(ke(ze,ze.current&1),n.flags|=128,null):r&n.child.childLanes?wv(t,n,r):(ke(ze,ze.current&1),t=lr(t,n,r),t!==null?t.sibling:null);ke(ze,ze.current&1);break;case 19:if(s=(r&n.childLanes)!==0,t.flags&128){if(s)return kv(t,n,r);n.flags|=128}if(i=n.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),ke(ze,ze.current),s)break;return null;case 22:case 23:return n.lanes=0,jv(t,n,r)}return lr(t,n,r)}var Nv,kh,Sv,Av;Nv=function(t,n){for(var r=n.child;r!==null;){if(r.tag===5||r.tag===6)t.appendChild(r.stateNode);else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===n)break;for(;r.sibling===null;){if(r.return===null||r.return===n)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};kh=function(){};Sv=function(t,n,r,s){var i=t.memoizedProps;if(i!==s){t=n.stateNode,js(On.current);var a=null;switch(r){case"input":i=Uu(t,i),s=Uu(t,s),a=[];break;case"select":i=Me({},i,{value:void 0}),s=Me({},s,{value:void 0}),a=[];break;case"textarea":i=Zu(t,i),s=Zu(t,s),a=[];break;default:typeof i.onClick!="function"&&typeof s.onClick=="function"&&(t.onclick=id)}Yu(r,s);var l;r=null;for(c in i)if(!s.hasOwnProperty(c)&&i.hasOwnProperty(c)&&i[c]!=null)if(c==="style"){var o=i[c];for(l in o)o.hasOwnProperty(l)&&(r||(r={}),r[l]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(Va.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in s){var d=s[c];if(o=i!=null?i[c]:void 0,s.hasOwnProperty(c)&&d!==o&&(d!=null||o!=null))if(c==="style")if(o){for(l in o)!o.hasOwnProperty(l)||d&&d.hasOwnProperty(l)||(r||(r={}),r[l]="");for(l in d)d.hasOwnProperty(l)&&o[l]!==d[l]&&(r||(r={}),r[l]=d[l])}else r||(a||(a=[]),a.push(c,r)),r=d;else c==="dangerouslySetInnerHTML"?(d=d?d.__html:void 0,o=o?o.__html:void 0,d!=null&&o!==d&&(a=a||[]).push(c,d)):c==="children"?typeof d!="string"&&typeof d!="number"||(a=a||[]).push(c,""+d):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(Va.hasOwnProperty(c)?(d!=null&&c==="onScroll"&&Ae("scroll",t),a||o===d||(a=[])):(a=a||[]).push(c,d))}r&&(a=a||[]).push("style",r);var c=a;(n.updateQueue=c)&&(n.flags|=4)}};Av=function(t,n,r,s){r!==s&&(n.flags|=4)};function xa(t,n){if(!Ee)switch(t.tailMode){case"hidden":n=t.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t.tail=null:r.sibling=null;break;case"collapsed":r=t.tail;for(var s=null;r!==null;)r.alternate!==null&&(s=r),r=r.sibling;s===null?n||t.tail===null?t.tail=null:t.tail.sibling=null:s.sibling=null}}function it(t){var n=t.alternate!==null&&t.alternate.child===t.child,r=0,s=0;if(n)for(var i=t.child;i!==null;)r|=i.lanes|i.childLanes,s|=i.subtreeFlags&14680064,s|=i.flags&14680064,i.return=t,i=i.sibling;else for(i=t.child;i!==null;)r|=i.lanes|i.childLanes,s|=i.subtreeFlags,s|=i.flags,i.return=t,i=i.sibling;return t.subtreeFlags|=s,t.childLanes=r,n}function lA(t,n,r){var s=n.pendingProps;switch(Lm(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return it(n),null;case 1:return St(n.type)&&ad(),it(n),null;
vendor: 20,029 bytes, line 40
40case 3:return s=n.stateNode,Wi(),Ce(Nt),Ce(ot),Jm(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(t===null||t.child===null)&&(eo(n)?n.flags|=4:t===null||t.memoizedState.isDehydrated&&!(n.flags&256)||(n.flags|=1024,fn!==null&&(zh(fn),fn=null))),kh(t,n),it(n),null;case 5:Ym(n);var i=js(nl.current);if(r=n.type,t!==null&&n.stateNode!=null)Sv(t,n,r,s,i),t.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!s){if(n.stateNode===null)throw Error(M(166));return it(n),null}if(t=js(On.current),eo(n)){s=n.stateNode,r=n.type;var a=n.memoizedProps;switch(s[Dn]=n,s[el]=a,t=(n.mode&1)!==0,r){case"dialog":Ae("cancel",s),Ae("close",s);break;case"iframe":case"object":case"embed":Ae("load",s);break;case"video":case"audio":for(i=0;i<Ca.length;i++)Ae(Ca[i],s);break;case"source":Ae("error",s);break;case"img":case"image":case"link":Ae("error",s),Ae("load",s);break;case"details":Ae("toggle",s);break;case"input":wp(s,a),Ae("invalid",s);break;case"select":s._wrapperState={wasMultiple:!!a.multiple},Ae("invalid",s);break;case"textarea":Np(s,a),Ae("invalid",s)}Yu(r,a),i=null;for(var l in a)if(a.hasOwnProperty(l)){var o=a[l];l==="children"?typeof o=="string"?s.textContent!==o&&(a.suppressHydrationWarning!==!0&&Xl(s.textContent,o,t),i=["children",o]):typeof o=="number"&&s.textContent!==""+o&&(a.suppressHydrationWarning!==!0&&Xl(s.textContent,o,t),i=["children",""+o]):Va.hasOwnProperty(l)&&o!=null&&l==="onScroll"&&Ae("scroll",s)}switch(r){case"input":Ul(s),kp(s,a,!0);break;case"textarea":Ul(s),Sp(s);break;case"select":case"option":break;default:typeof a.onClick=="function"&&(s.onclick=id)}s=i,n.updateQueue=s,s!==null&&(n.flags|=4)}else{l=i.nodeType===9?i:i.ownerDocument,t==="http://www.w3.org/1999/xhtml"&&(t=ej(r)),t==="http://www.w3.org/1999/xhtml"?r==="script"?(t=l.createElement("div"),t.innerHTML="<script><\/script>",t=t.removeChild(t.firstChild)):typeof s.is=="string"?t=l.createElement(r,{is:s.is}):(t=l.createElement(r),r==="select"&&(l=t,s.multiple?l.multiple=!0:s.size&&(l.size=s.size))):t=l.createElementNS(t,r),t[Dn]=n,t[el]=s,Nv(t,n,!1,!1),n.stateNode=t;e:{switch(l=Ju(r,s),r){case"dialog":Ae("cancel",t),Ae("close",t),i=s;break;case"iframe":case"object":case"embed":Ae("load",t),i=s;break;case"video":case"audio":for(i=0;i<Ca.length;i++)Ae(Ca[i],t);i=s;break;case"source":Ae("error",t),i=s;break;case"img":case"image":case"link":Ae("error",t),Ae("load",t),i=s;break;case"details":Ae("toggle",t),i=s;break;case"input":wp(t,s),i=Uu(t,s),Ae("invalid",t);break;case"option":i=s;break;case"select":t._wrapperState={wasMultiple:!!s.multiple},i=Me({},s,{value:void 0}),Ae("invalid",t);break;case"textarea":Np(t,s),i=Zu(t,s),Ae("invalid",t);break;default:i=s}Yu(r,i),o=i;for(a in o)if(o.hasOwnProperty(a)){var d=o[a];a==="style"?rj(t,d):a==="dangerouslySetInnerHTML"?(d=d?d.__html:void 0,d!=null&&tj(t,d)):a==="children"?typeof d=="string"?(r!=="textarea"||d!=="")&&Ua(t,d):typeof d=="number"&&Ua(t,""+d):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(Va.hasOwnProperty(a)?d!=null&&a==="onScroll"&&Ae("scroll",t):d!=null&&Cm(t,a,d,l))}switch(r){case"input":Ul(t),kp(t,s,!1);break;case"textarea":Ul(t),Sp(t);break;case"option":s.value!=null&&t.setAttribute("value",""+Hr(s.value));break;case"select":t.multiple=!!s.multiple,a=s.value,a!=null?ji(t,!!s.multiple,a,!1):s.defaultValue!=null&&ji(t,!!s.multiple,s.defaultValue,!0);break;default:typeof i.onClick=="function"&&(t.onclick=id)}switch(r){case"button":case"input":case"select":case"textarea":s=!!s.autoFocus;break e;case"img":s=!0;break e;default:s=!1}}s&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return it(n),null;case 6:if(t&&n.stateNode!=null)Av(t,n,t.memoizedProps,s);else{if(typeof s!="string"&&n.stateNode===null)throw Error(M(166));if(r=js(nl.current),js(On.current),eo(n)){if(s=n.stateNode,r=n.memoizedProps,s[Dn]=n,(a=s.nodeValue!==r)&&(t=Ot,t!==null))switch(t.tag){case 3:Xl(s.nodeValue,r,(t.mode&1)!==0);break;case 5:t.memoizedProps.suppressHydrationWarning!==!0&&Xl(s.nodeValue,r,(t.mode&1)!==0)}a&&(n.flags|=4)}else s=(r.nodeType===9?r:r.ownerDocument).createTextNode(s),s[Dn]=n,n.stateNode=s}return it(n),null;case 13:if(Ce(ze),s=n.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(Ee&&Mt!==null&&n.mode&1&&!(n.flags&128))Vj(),Fi(),n.flags|=98560,a=!1;else if(a=eo(n),s!==null&&s.dehydrated!==null){if(t===null){if(!a)throw Error(M(318));if(a=n.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(M(317));a[Dn]=n}else Fi(),!(n.flags&128)&&(n.memoizedState=null),n.flags|=4;it(n),a=!1}else fn!==null&&(zh(fn),fn=null),a=!0;if(!a)return n.flags&65536?n:null}return n.flags&128?(n.lanes=r,n):(s=s!==null,s!==(t!==null&&t.memoizedState!==null)&&s&&(n.child.flags|=8192,n.mode&1&&(t===null||ze.current&1?He===0&&(He=3):dg())),n.updateQueue!==null&&(n.flags|=4),it(n),null);case 4:return Wi(),kh(t,n),t===null&&Qa(n.stateNode.containerInfo),it(n),null;case 10:return $m(n.type._context),it(n),null;case 17:return St(n.type)&&ad(),it(n),null;case 19:if(Ce(ze),a=n.memoizedState,a===null)return it(n),null;if(s=(n.flags&128)!==0,l=a.rendering,l===null)if(s)xa(a,!1);else{if(He!==0||t!==null&&t.flags&128)for(t=n.child;t!==null;){if(l=md(t),l!==null){for(n.flags|=128,xa(a,!1),s=l.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),n.subtreeFlags=0,s=r,r=n.child;r!==null;)a=r,t=s,a.flags&=14680066,l=a.alternate,l===null?(a.childLanes=0,a.lanes=t,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=l.childLanes,a.lanes=l.lanes,a.child=l.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=l.memoizedProps,a.memoizedState=l.memoizedState,a.updateQueue=l.updateQueue,a.type=l.type,t=l.dependencies,a.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),r=r.sibling;return ke(ze,ze.current&1|2),n.child}t=t.sibling}a.tail!==null&&Be()>Ui&&(n.flags|=128,s=!0,xa(a,!1),n.lanes=4194304)}else{if(!s)if(t=md(l),t!==null){if(n.flags|=128,s=!0,r=t.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),xa(a,!0),a.tail===null&&a.tailMode==="hidden"&&!l.alternate&&!Ee)return it(n),null}else 2*Be()-a.renderingStartTime>Ui&&r!==1073741824&&(n.flags|=128,s=!0,xa(a,!1),n.lanes=4194304);a.isBackwards?(l.sibling=n.child,n.child=l):(r=a.last,r!==null?r.sibling=l:n.child=l,a.last=l)}return a.tail!==null?(n=a.tail,a.rendering=n,a.tail=n.sibling,a.renderingStartTime=Be(),n.sibling=null,r=ze.current,ke(ze,s?r&1|2:r&1),n):(it(n),null);case 22:case 23:return og(),s=n.memoizedState!==null,t!==null&&t.memoizedState!==null!==s&&(n.flags|=8192),s&&n.mode&1?Tt&1073741824&&(it(n),n.subtreeFlags&6&&(n.flags|=8192)):it(n),null;case 24:return null;case 25:return null}throw Error(M(156,n.tag))}function oA(t,n){switch(Lm(n),n.tag){case 1:return St(n.type)&&ad(),t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 3:return Wi(),Ce(Nt),Ce(ot),Jm(),t=n.flags,t&65536&&!(t&128)?(n.flags=t&-65537|128,n):null;case 5:return Ym(n),null;case 13:if(Ce(ze),t=n.memoizedState,t!==null&&t.dehydrated!==null){if(n.alternate===null)throw Error(M(340));Fi()}return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 19:return Ce(ze),null;case 4:return Wi(),null;case 10:return $m(n.type._context),null;case 22:case 23:return og(),null;case 24:return null;default:return null}}var ro=!1,lt=!1,dA=typeof WeakSet=="function"?WeakSet:Set,B=null;function xi(t,n){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(s){Ie(t,n,s)}else r.current=null}function Nh(t,n,r){try{r()}catch(s){Ie(t,n,s)}}var pf=!1;function cA(t,n){if(lh=nd,t=zj(),Km(t)){if("selectionStart"in t)var r={start:t.selectionStart,end:t.selectionEnd};else e:{r=(r=t.ownerDocument)&&r.defaultView||window;var s=r.getSelection&&r.getSelection();if(s&&s.rangeCount!==0){r=s.anchorNode;var i=s.anchorOffset,a=s.focusNode;s=s.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var l=0,o=-1,d=-1,c=0,u=0,h=t,g=null;t:for(;;){for(var m;h!==r||i!==0&&h.nodeType!==3||(o=l+i),h!==a||s!==0&&h.nodeType!==3||(d=l+s),h.nodeType===3&&(l+=h.nodeValue.length),(m=h.firstChild)!==null;)g=h,h=m;for(;;){if(h===t)break t;if(g===r&&++c===i&&(o=l),g===a&&++u===s&&(d=l),(m=h.nextSibling)!==null)break;h=g,g=h.parentNode}h=m}r=o===-1||d===-1?null:{start:o,end:d}}else r=null}r=r||{start:0,end:0}}else r=null;for(oh={focusedElem:t,selectionRange:r},nd=!1,B=n;B!==null;)if(n=B,t=n.child,(n.subtreeFlags&1028)!==0&&t!==null)t.return=n,B=t;else for(;B!==null;){n=B;try{var j=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(j!==null){var p=j.memoizedProps,b=j.memoizedState,x=n.stateNode,f=x.getSnapshotBeforeUpdate(n.elementType===n.type?p:dn(n.type,p),b);x.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var v=n.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(w){Ie(n,n.return,w)}if(t=n.sibling,t!==null){t.return=n.return,B=t;break}B=n.return}return j=pf,pf=!1,j}function Ra(t,n,r){var s=n.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var i=s=s.next;do{if((i.tag&t)===t){var a=i.destroy;i.destroy=void 0,a!==void 0&&Nh(n,r,a)}i=i.next}while(i!==s)}}function Ud(t,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do{if((r.tag&t)===t){var s=r.create;r.destroy=s()}r=r.next}while(r!==n)}}function Sh(t){var n=t.ref;if(n!==null){var r=t.stateNode;switch(t.tag){case 5:t=r;break;default:t=r}typeof n=="function"?n(t):n.current=t}}function Cv(t){var n=t.alternate;n!==null&&(t.alternate=null,Cv(n)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(n=t.stateNode,n!==null&&(delete n[Dn],delete n[el],delete n[uh],delete n[$S],delete n[HS])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function Pv(t){return t.tag===5||t.tag===3||t.tag===4}function ff(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||Pv(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Ah(t,n,r){var s=t.tag;if(s===5||s===6)t=t.stateNode,n?r.nodeType===8?r.parentNode.insertBefore(t,n):r.insertBefore(t,n):(r.nodeType===8?(n=r.parentNode,n.insertBefore(t,r)):(n=r,n.appendChild(t)),r=r._reactRootContainer,r!=null||n.onclick!==null||(n.onclick=id));else if(s!==4&&(t=t.child,t!==null))for(Ah(t,n,r),t=t.sibling;t!==null;)Ah(t,n,r),t=t.sibling}function Ch(t,n,r){var s=t.tag;if(s===5||s===6)t=t.stateNode,n?r.insertBefore(t,n):r.appendChild(t);else if(s!==4&&(t=t.child,t!==null))for(Ch(t,n,r),t=t.sibling;t!==null;)Ch(t,n,r),t=t.sibling}var Qe=null,gn=!1;function br(t,n,r){for(r=r.child;r!==null;)Ev(t,n,r),r=r.sibling}function Ev(t,n,r){if(Mn&&typeof Mn.onCommitFiberUnmount=="function")try{Mn.onCommitFiberUnmount(Gd,r)}catch{}switch(r.tag){case 5:lt||xi(r,n);case 6:var s=Qe,i=gn;Qe=null,br(t,n,r),Qe=s,gn=i,Qe!==null&&(gn?(t=Qe,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):Qe.removeChild(r.stateNode));break;case 18:Qe!==null&&(gn?(t=Qe,r=r.stateNode,t.nodeType===8?Yc(t.parentNode,r):t.nodeType===1&&Yc(t,r),qa(t)):Yc(Qe,r.stateNode));break;case 4:s=Qe,i=gn,Qe=r.stateNode.containerInfo,gn=!0,br(t,n,r),Qe=s,gn=i;break;case 0:case 11:case 14:case 15:if(!lt&&(s=r.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){i=s=s.next;do{var a=i,l=a.destroy;a=a.tag,l!==void 0&&(a&2||a&4)&&Nh(r,n,l),i=i.next}while(i!==s)}br(t,n,r);break;case 1:if(!lt&&(xi(r,n),s=r.stateNode,typeof s.componentWillUnmount=="function"))try{s.props=r.memoizedProps,s.state=r.memoizedState,s.componentWillUnmount()}catch(o){Ie(r,n,o)}br(t,n,r);break;case 21:br(t,n,r);break;case 22:r.mode&1?(lt=(s=lt)||r.memoizedState!==null,br(t,n,r),lt=s):br(t,n,r);break;default:br(t,n,r)}}function xf(t){var n=t.updateQueue;if(n!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new dA),n.forEach(function(s){var i=jA.bind(null,t,s);r.has(s)||(r.add(s),s.then(i,i))})}}function sn(t,n){var r=n.deletions;if(r!==null)for(var s=0;s<r.length;s++){var i=r[s];try{var a=t,l=n,o=l;e:for(;o!==null;){switch(o.tag){case 5:Qe=o.stateNode,gn=!1;break e;case 3:Qe=o.stateNode.containerInfo,gn=!0;break e;case 4:Qe=o.stateNode.containerInfo,gn=!0;break e}o=o.return}if(Qe===null)throw Error(M(160));Ev(a,l,i),Qe=null,gn=!1;var d=i.alternate;d!==null&&(d.return=null),i.return=null}catch(c){Ie(i,n,c)}}if(n.subtreeFlags&12854)for(n=n.child;n!==null;)Tv(n,t),n=n.sibling}function Tv(t,n){var r=t.alternate,s=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:if(sn(n,t),Cn(t),s&4){try{Ra(3,t,t.return),Ud(3,t)}catch(p){Ie(t,t.return,p)}try{Ra(5,t,t.return)}catch(p){Ie(t,t.return,p)}}break;case 1:sn(n,t),Cn(t),s&512&&r!==null&&xi(r,r.return);break;case 5:if(sn(n,t),Cn(t),s&512&&r!==null&&xi(r,r.return),t.flags&32){var i=t.stateNode;try{Ua(i,"")}catch(p){Ie(t,t.return,p)}}if(s&4&&(i=t.stateNode,i!=null)){var a=t.memoizedProps,l=r!==null?r.memoizedProps:a,o=t.type,d=t.updateQueue;if(t.updateQueue=null,d!==null)try{o==="input"&&a.type==="radio"&&a.name!=null&&Qb(i,a),Ju(o,l);var c=Ju(o,a);for(l=0;l<d.length;l+=2){var u=d[l],h=d[l+1];u==="style"?rj(i,h):u==="dangerouslySetInnerHTML"?tj(i,h):u==="children"?Ua(i,h):Cm(i,u,h,c)}switch(o){case"input":$u(i,a);break;case"textarea":Xb(i,a);break;case"select":var g=i._wrapperState.wasMultiple;i._wrapperState.wasMultiple=!!a.multiple;var m=a.value;m!=null?ji(i,!!a.multiple,m,!1):g!==!!a.multiple&&(a.defaultValue!=null?ji(i,!!a.multiple,a.defaultValue,!0):ji(i,!!a.multiple,a.multiple?[]:"",!1))}i[el]=a}catch(p){Ie(t,t.return,p)}}break;case 6:if(sn(n,t),Cn(t),s&4){if(t.stateNode===null)throw Error(M(162));i=t.stateNode,a=t.memoizedProps;try{i.nodeValue=a}catch(p){Ie(t,t.return,p)}}break;case 3:if(sn(n,t),Cn(t),s&4&&r!==null&&r.memoizedState.isDehydrated)try{qa(n.containerInfo)}catch(p){Ie(t,t.return,p)}break;case 4:sn(n,t),Cn(t);break;case 13:sn(n,t),Cn(t),i=t.child,i.flags&8192&&(a=i.memoizedState!==null,i.stateNode.isHidden=a,!a||i.alternate!==null&&i.alternate.memoizedState!==null||(ag=Be())),s&4&&xf(t);break;case 22:if(u=r!==null&&r.memoizedState!==null,t.mode&1?(lt=(c=lt)||u,sn(n,t),lt=c):sn(n,t),Cn(t),s&8192){if(c=t.memoizedState!==null,(t.stateNode.isHidden=c)&&!u&&t.mode&1)for(B=t,u=t.child;u!==null;){for(h=B=u;B!==null;){switch(g=B,m=g.child,g.tag){case 0:case 11:case 14:case 15:Ra(4,g,g.return);break;case 1:xi(g,g.return);var j=g.stateNode;if(typeof j.componentWillUnmount=="function"){s=g,r=g.return;try{n=s,j.props=n.memoizedProps,j.state=n.memoizedState,j.componentWillUnmount()}catch(p){Ie(s,r,p)}}break;case 5:xi(g,g.return);break;case 22:if(g.memoizedState!==null){jf(h);continue}}m!==null?(m.return=g,B=m):jf(h)}u=u.sibling}e:for(u=null,h=t;;){if(h.tag===5){if(u===null){u=h;try{i=h.stateNode,c?(a=i.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none"):(o=h.stateNode,d=h.memoizedProps.style,l=d!=null&&d.hasOwnProperty("display")?d.display:null,o.style.display=nj("display",l))}catch(p){Ie(t,t.return,p)}}}else if(h.tag===6){if(u===null)try{h.stateNode.nodeValue=c?"":h.memoizedProps}catch(p){Ie(t,t.return,p)}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===t)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===t)break e;for(;h.sibling===null;){if(h.return===null||h.return===t)break e;u===h&&(u=null),h=h.return}u===h&&(u=null),h.sibling.return=h.return,h=h.sibling}}break;case 19:sn(n,t),Cn(t),s&4&&xf(t);break;case 21:break;default:sn(n,t),Cn(t)}}function Cn(t){var n=t.flags;if(n&2){try{e:{for(var r=t.return;r!==null;){if(Pv(r)){var s=r;break e}r=r.return}throw Error(M(160))}switch(s.tag){case 5:var i=s.stateNode;s.flags&32&&(Ua(i,""),s.flags&=-33);var a=ff(t);Ch(t,a,i);break;case 3:case 4:var l=s.stateNode.containerInfo,o=ff(t);Ah(t,o,l);break;default:throw Error(M(161))}}catch(d){Ie(t,t.return,d)}t.flags&=-3}n&4096&&(t.flags&=-4097)}function uA(t,n,r){B=t,zv(t)}function zv(t,n,r){for(var s=(t.mode&1)!==0;B!==null;){var i=B,a=i.child;if(i.tag===22&&s){var l=i.memoizedState!==null||ro;if(!l){var o=i.alternate,d=o!==null&&o.memoizedState!==null||lt;o=ro;var c=lt;if(ro=l,(lt=d)&&!c)for(B=i;B!==null;)l=B,d=l.child,l.tag===22&&l.memoizedState!==null?vf(i):d!==null?(d.return=l,B=d):vf(i);for(;a!==null;)B=a,zv(a),a=a.sibling;B=i,ro=o,lt=c}bf(t)}else i.subtreeFlags&8772&&a!==null?(a.return=i,B=a):bf(t)}}function bf(t){for(;B!==null;){var n=B;if(n.flags&8772){var r=n.alternate;try{if(n.flags&8772)switch(n.tag){case 0:case 11:case 15:lt||Ud(5,n);break;case 1:var s=n.stateNode;if(n.flags&4&&!lt)if(r===null)s.componentDidMount();else{var i=n.elementType===n.type?r.memoizedProps:dn(n.type,r.memoizedProps);s.componentDidUpdate(i,r.memoizedState,s.__reactInternalSnapshotBeforeUpdate)}var a=n.updateQueue;a!==null&&tf(n,a,s);break;case 3:var l=n.updateQueue;if(l!==null){if(r=null,n.child!==null)switch(n.child.tag){case 5:r=n.child.stateNode;break;case 1:r=n.child.stateNode}tf(n,l,r)}break;case 5:var o=n.stateNode;if(r===null&&n.flags&4){r=o;var d=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":d.autoFocus&&r.focus();break;case"img":d.src&&(r.src=d.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(n.memoizedState===null){var c=n.alternate;if(c!==null){var u=c.memoizedState;if(u!==null){var h=u.dehydrated;h!==null&&qa(h)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(M(163))}lt||n.flags&512&&Sh(n)}catch(g){Ie(n,n.return,g)}}if(n===t){B=null;break}if(r=n.sibling,r!==null){r.return=n.return,B=r;break}B=n.return}}function jf(t){for(;B!==null;){var n=B;if(n===t){B=null;break}var r=n.sibling;if(r!==null){r.return=n.return,B=r;break}B=n.return}}function vf(t){for(;B!==null;){var n=B;try{switch(n.tag){case 0:case 11:case 15:var r=n.return;try{Ud(4,n)}catch(d){Ie(n,r,d)}break;case 1:var s=n.stateNode;if(typeof s.componentDidMount=="function"){var i=n.return;try{s.componentDidMount()}catch(d){Ie(n,i,d)}}var a=n.return;try{Sh(n)}catch(d){Ie(n,a,d)}break;case 5:var l=n.return;try{Sh(n)}catch(d){Ie(n,l,d)}}}catch(d){Ie(n,n.return,d)}if(n===t){B=null;break}var o=n.sibling;if(o!==null){o.return=n.return,B=o;break}B=n.return}}var hA=Math.ceil,fd=ur.ReactCurrentDispatcher,sg=ur.ReactCurrentOwner,Ht=ur.ReactCurrentBatchConfig,ue=0,Ye=null,We=null,Xe=0,Tt=0,bi=Qr(0),He=0,al=null,_s=0,$d=0,ig=0,Ga=null,wt=null,ag=0,Ui=1/0,Zn=null,xd=!1,Ph=null,Wr=null,so=!1,Rr=null,bd=0,Ia=0,Eh=null,Ko=-1,Fo=0;function xt(){return ue&6?Be():Ko!==-1?Ko:Ko=Be()}function Vr(t){return t.mode&1?ue&2&&Xe!==0?Xe&-Xe:qS.transition!==null?(Fo===0&&(Fo=pj()),Fo):(t=xe,t!==0||(t=window.event,t=t===void 0?16:wj(t.type)),t):1}function jn(t,n,r,s){if(50<Ia)throw Ia=0,Eh=null,Error(M(185));Sl(t,r,s),(!(ue&2)||t!==Ye)&&(t===Ye&&(!(ue&2)&&($d|=r),He===4&&Pr(t,Xe)),At(t,s),r===1&&ue===0&&!(n.mode&1)&&(Ui=Be()+500,Ld&&Xr()))}function At(t,n){var r=t.callbackNode;qN(t,n);var s=td(t,t===Ye?Xe:0);if(s===0)r!==null&&Pp(r),t.callbackNode=null,t.callbackPriority=0;else if(n=s&-s,t.callbackPriority!==n){if(r!=null&&Pp(r),n===1)t.tag===0?ZS(yf.bind(null,t)):Fj(yf.bind(null,t)),VS(function(){!(ue&6)&&Xr()}),r=null;else{switch(fj(s)){case 1:r=Dm;break;case 4:r=mj;break;case 16:r=ed;break;case 536870912:r=gj;break;default:r=ed}r=Bv(r,Dv.bind(null,t))}t.callbackPriority=n,t.callbackNode=r}}function Dv(t,n){if(Ko=-1,Fo=0,ue&6)throw Error(M(327));var r=t.callbackNode;if(Ni()&&t.callbackNode!==r)return null;var s=td(t,t===Ye?Xe:0);if(s===0)return null;if(s&30||s&t.expiredLanes||n)n=jd(t,s);else{n=s;var i=ue;ue|=2;var a=Mv();(Ye!==t||Xe!==n)&&(Zn=null,Ui=Be()+500,Ps(t,n));do try{pA();break}catch(o){_v(t,o)}while(!0);Um(),fd.current=a,ue=i,We!==null?n=0:(Ye=null,Xe=0,n=He)}if(n!==0){if(n===2&&(i=nh(t),i!==0&&(s=i,n=Th(t,i))),n===1)throw r=al,Ps(t,0),Pr(t,s),At(t,Be()
vendor: 1,809 bytes, line 40
40),r;if(n===6)Pr(t,s);else{if(i=t.current.alternate,!(s&30)&&!mA(i)&&(n=jd(t,s),n===2&&(a=nh(t),a!==0&&(s=a,n=Th(t,a))),n===1))throw r=al,Ps(t,0),Pr(t,s),At(t,Be()),r;switch(t.finishedWork=i,t.finishedLanes=s,n){case 0:case 1:throw Error(M(345));case 2:hs(t,wt,Zn);break;case 3:if(Pr(t,s),(s&130023424)===s&&(n=ag+500-Be(),10<n)){if(td(t,0)!==0)break;if(i=t.suspendedLanes,(i&s)!==s){xt(),t.pingedLanes|=t.suspendedLanes&i;break}t.timeoutHandle=ch(hs.bind(null,t,wt,Zn),n);break}hs(t,wt,Zn);break;case 4:if(Pr(t,s),(s&4194240)===s)break;for(n=t.eventTimes,i=-1;0<s;){var l=31-bn(s);a=1<<l,l=n[l],l>i&&(i=l),s&=~a}if(s=i,s=Be()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*hA(s/1960))-s,10<s){t.timeoutHandle=ch(hs.bind(null,t,wt,Zn),s);break}hs(t,wt,Zn);break;case 5:hs(t,wt,Zn);break;default:throw Error(M(329))}}}return At(t,Be()),t.callbackNode===r?Dv.bind(null,t):null}function Th(t,n){var r=Ga;return t.current.memoizedState.isDehydrated&&(Ps(t,n).flags|=256),t=jd(t,n),t!==2&&(n=wt,wt=r,n!==null&&zh(n)),t}function zh(t){wt===null?wt=t:wt.push.apply(wt,t)}function mA(t){for(var n=t;;){if(n.flags&16384){var r=n.updateQueue;if(r!==null&&(r=r.stores,r!==null))for(var s=0;s<r.length;s++){var i=r[s],a=i.getSnapshot;i=i.value;try{if(!yn(a(),i))return!1}catch{return!1}}}if(r=n.child,n.subtreeFlags&16384&&r!==null)r.return=n,n=r;else{if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function Pr(t,n){for(n&=~ig,n&=~$d,t.suspendedLanes|=n,t.pingedLanes&=~n,t=t.expirationTimes;0<n;){var r=31-bn(n),s=1<<r;t[r]=-1,n&=~s}}function yf(t){if(ue&6)throw Error(M(327));Ni();var n=td(t,0);if(!(n&1))return At(t,Be()),null;var r=jd(t,n);if(t.tag!==0&&r===2){var s=nh(t);s!==0&&(n=s,r=Th(t,s))}
vendor: 9,261 bytes, line 40
40if(r===1)throw r=al,Ps(t,0),Pr(t,n),At(t,Be()),r;if(r===6)throw Error(M(345));return t.finishedWork=t.current.alternate,t.finishedLanes=n,hs(t,wt,Zn),At(t,Be()),null}function lg(t,n){var r=ue;ue|=1;try{return t(n)}finally{ue=r,ue===0&&(Ui=Be()+500,Ld&&Xr())}}function Ms(t){Rr!==null&&Rr.tag===0&&!(ue&6)&&Ni();var n=ue;ue|=1;var r=Ht.transition,s=xe;try{if(Ht.transition=null,xe=1,t)return t()}finally{xe=s,Ht.transition=r,ue=n,!(ue&6)&&Xr()}}function og(){Tt=bi.current,Ce(bi)}function Ps(t,n){t.finishedWork=null,t.finishedLanes=0;var r=t.timeoutHandle;if(r!==-1&&(t.timeoutHandle=-1,WS(r)),We!==null)for(r=We.return;r!==null;){var s=r;switch(Lm(s),s.tag){case 1:s=s.type.childContextTypes,s!=null&&ad();break;case 3:Wi(),Ce(Nt),Ce(ot),Jm();break;case 5:Ym(s);break;case 4:Wi();break;case 13:Ce(ze);break;case 19:Ce(ze);break;case 10:$m(s.type._context);break;case 22:case 23:og()}r=r.return}if(Ye=t,We=t=Ur(t.current,null),Xe=Tt=n,He=0,al=null,ig=$d=_s=0,wt=Ga=null,bs!==null){for(n=0;n<bs.length;n++)if(r=bs[n],s=r.interleaved,s!==null){r.interleaved=null;var i=s.next,a=r.pending;if(a!==null){var l=a.next;a.next=i,s.next=l}r.pending=s}bs=null}return t}function _v(t,n){do{var r=We;try{if(Um(),Go.current=pd,gd){for(var s=_e.memoizedState;s!==null;){var i=s.queue;i!==null&&(i.pending=null),s=s.next}gd=!1}if(Ds=0,qe=$e=_e=null,Oa=!1,rl=0,sg.current=null,r===null||r.return===null){He=1,al=n,We=null;break}e:{var a=t,l=r.return,o=r,d=n;if(n=Xe,o.flags|=32768,d!==null&&typeof d=="object"&&typeof d.then=="function"){var c=d,u=o,h=u.tag;if(!(u.mode&1)&&(h===0||h===11||h===15)){var g=u.alternate;g?(u.updateQueue=g.updateQueue,u.memoizedState=g.memoizedState,u.lanes=g.lanes):(u.updateQueue=null,u.memoizedState=null)}var m=of(l);if(m!==null){m.flags&=-257,df(m,l,o,a,n),m.mode&1&&lf(a,c,n),n=m,d=c;var j=n.updateQueue;if(j===null){var p=new Set;p.add(d),n.updateQueue=p}else j.add(d);break e}else{if(!(n&1)){lf(a,c,n),dg();break e}d=Error(M(426))}}else if(Ee&&o.mode&1){var b=of(l);if(b!==null){!(b.flags&65536)&&(b.flags|=256),df(b,l,o,a,n),Wm(Vi(d,o));break e}}a=d=Vi(d,o),He!==4&&(He=2),Ga===null?Ga=[a]:Ga.push(a),a=l;do{switch(a.tag){case 3:a.flags|=65536,n&=-n,a.lanes|=n;var x=fv(a,d,n);ef(a,x);break e;case 1:o=d;var f=a.type,v=a.stateNode;if(!(a.flags&128)&&(typeof f.getDerivedStateFromError=="function"||v!==null&&typeof v.componentDidCatch=="function"&&(Wr===null||!Wr.has(v)))){a.flags|=65536,n&=-n,a.lanes|=n;var w=xv(a,o,n);ef(a,w);break e}}a=a.return}while(a!==null)}Rv(r)}catch(k){n=k,We===r&&r!==null&&(We=r=r.return);continue}break}while(!0)}function Mv(){var t=fd.current;return fd.current=pd,t===null?pd:t}function dg(){(He===0||He===3||He===2)&&(He=4),Ye===null||!(_s&268435455)&&!($d&268435455)||Pr(Ye,Xe)}function jd(t,n){var r=ue;ue|=2;var s=Mv();(Ye!==t||Xe!==n)&&(Zn=null,Ps(t,n));do try{gA();break}catch(i){_v(t,i)}while(!0);if(Um(),ue=r,fd.current=s,We!==null)throw Error(M(261));return Ye=null,Xe=0,He}function gA(){for(;We!==null;)Ov(We)}function pA(){for(;We!==null&&!KN();)Ov(We)}function Ov(t){var n=Iv(t.alternate,t,Tt);t.memoizedProps=t.pendingProps,n===null?Rv(t):We=n,sg.current=null}function Rv(t){var n=t;do{var r=n.alternate;if(t=n.return,n.flags&32768){if(r=oA(r,n),r!==null){r.flags&=32767,We=r;return}if(t!==null)t.flags|=32768,t.subtreeFlags=0,t.deletions=null;else{He=6,We=null;return}}else if(r=lA(r,n,Tt),r!==null){We=r;return}if(n=n.sibling,n!==null){We=n;return}We=n=t}while(n!==null);He===0&&(He=5)}function hs(t,n,r){var s=xe,i=Ht.transition;try{Ht.transition=null,xe=1,fA(t,n,r,s)}finally{Ht.transition=i,xe=s}return null}function fA(t,n,r,s){do Ni();while(Rr!==null);if(ue&6)throw Error(M(327));r=t.finishedWork;var i=t.finishedLanes;if(r===null)return null;if(t.finishedWork=null,t.finishedLanes=0,r===t.current)throw Error(M(177));t.callbackNode=null,t.callbackPriority=0;var a=r.lanes|r.childLanes;if(YN(t,a),t===Ye&&(We=Ye=null,Xe=0),!(r.subtreeFlags&2064)&&!(r.flags&2064)||so||(so=!0,Bv(ed,function(){return Ni(),null})),a=(r.flags&15990)!==0,r.subtreeFlags&15990||a){a=Ht.transition,Ht.transition=null;var l=xe;xe=1;var o=ue;ue|=4,sg.current=null,cA(t,r),Tv(r,t),RS(oh),nd=!!lh,oh=lh=null,t.current=r,uA(r),FN(),ue=o,xe=l,Ht.transition=a}else t.current=r;if(so&&(so=!1,Rr=t,bd=i),a=t.pendingLanes,a===0&&(Wr=null),VN(r.stateNode),At(t,Be()),n!==null)for(s=t.onRecoverableError,r=0;r<n.length;r++)i=n[r],s(i.value,{componentStack:i.stack,digest:i.digest});if(xd)throw xd=!1,t=Ph,Ph=null,t;return bd&1&&t.tag!==0&&Ni(),a=t.pendingLanes,a&1?t===Eh?Ia++:(Ia=0,Eh=t):Ia=0,Xr(),null}function Ni(){if(Rr!==null){var t=fj(bd),n=Ht.transition,r=xe;try{if(Ht.transition=null,xe=16>t?16:t,Rr===null)var s=!1;else{if(t=Rr,Rr=null,bd=0,ue&6)throw Error(M(331));var i=ue;for(ue|=4,B=t.current;B!==null;){var a=B,l=a.child;if(B.flags&16){var o=a.deletions;if(o!==null){for(var d=0;d<o.length;d++){var c=o[d];for(B=c;B!==null;){var u=B;switch(u.tag){case 0:case 11:case 15:Ra(8,u,a)}var h=u.child;if(h!==null)h.return=u,B=h;else for(;B!==null;){u=B;var g=u.sibling,m=u.return;if(Cv(u),u===c){B=null;break}if(g!==null){g.return=m,B=g;break}B=m}}}var j=a.alternate;if(j!==null){var p=j.child;if(p!==null){j.child=null;do{var b=p.sibling;p.sibling=null,p=b}while(p!==null)}}B=a}}if(a.subtreeFlags&2064&&l!==null)l.return=a,B=l;else e:for(;B!==null;){if(a=B,a.flags&2048)switch(a.tag){case 0:case 11:case 15:Ra(9,a,a.return)}var x=a.sibling;if(x!==null){x.return=a.return,B=x;break e}B=a.return}}var f=t.current;for(B=f;B!==null;){l=B;var v=l.child;if(l.subtreeFlags&2064&&v!==null)v.return=l,B=v;else e:for(l=f;B!==null;){if(o=B,o.flags&2048)try{switch(o.tag){case 0:case 11:case 15:Ud(9,o)}}catch(k){Ie(o,o.return,k)}if(o===l){B=null;break e}var w=o.sibling;if(w!==null){w.return=o.return,B=w;break e}B=o.return}}if(ue=i,Xr(),Mn&&typeof Mn.onPostCommitFiberRoot=="function")try{Mn.onPostCommitFiberRoot(Gd,t)}catch{}s=!0}return s}finally{xe=r,Ht.transition=n}}return!1}function wf(t,n,r){n=Vi(r,n),n=fv(t,n,1),t=Lr(t,n,1),n=xt(),t!==null&&(Sl(t,1,n),At(t,n))}function Ie(t,n,r){if(t.tag===3)wf(t,t,r);else for(;n!==null;){if(n.tag===3){wf(n,t,r);break}else if(n.tag===1){var s=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof s.componentDidCatch=="function"&&(Wr===null||!Wr.has(s))){t=Vi(r,t),t=xv(n,t,1),n=Lr(n,t,1),t=xt(),n!==null&&(Sl(n,1,t),At(n,t));break}}n=n.return}}function xA(t,n,r){var s=t.pingCache;s!==null&&s.delete(n),n=xt(),t.pingedLanes|=t.suspendedLanes&r,Ye===t&&(Xe&r)===r&&(He===4||He===3&&(Xe&130023424)===Xe&&500>Be()-ag?Ps(t,0):ig|=r),At(t,n)}function Gv(t,n){n===0&&(t.mode&1?(n=Zl,Zl<<=1,!(Zl&130023424)&&(Zl=4194304)):n=1);var r=xt();t=ar(t,n),t!==null&&(Sl(t,n,r),At(t,r))}function bA(t){var n=t.memoizedState,r=0;n!==null&&(r=n.retryLane),Gv(t,r)}function jA(t,n){var r=0;switch(t.tag){case 13:var s=t.stateNode,i=t.memoizedState;i!==null&&(r=i.retryLane);break;case 19:s=t.stateNode;break;default:throw Error(M(314))}s!==null&&s.delete(n),Gv(t,r)}var Iv;Iv=function(t,n,r){if(t!==null)if(t.memoizedProps!==n.pendingProps||Nt.current)kt=!0;else{if(!(t.lanes&r)&&!(n.flags&128))return kt=!1,aA(t,n,r);kt=!!(t.flags&131072)}else kt=!1,Ee&&n.flags&1048576&&Lj(n,dd,n.index);switch(n.lanes=0,n.tag){case 2:var s=n.type;Bo(t,n),t=n.pendingProps;var i=Ki(n,ot.current);ki(n,r),i=Xm(null,n,s,t,i,r);var a=eg();return n.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,St(s)?(a=!0,ld(n)):a=!1,n.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Zm(n),i.updater=Vd,n.stateNode=i,i._reactInternals=n,xh(n,s,t,r),n=vh(null,n,s,!0,a,r)):(n.tag=0,Ee&&a&&Fm(n),gt(null,n,i,r),n=n.child),n;case 16:s=n.elementType;e:{switch(Bo(t,n),t=n.pendingProps,i=s._init,s=i(s._payload),n.type=s,i=n.tag=yA(s),t=dn(s,t),i){case 0:n=jh(null,n,s,t,r);break e;case 1:n=hf(null,n,s,t,r);break e;case 11:n=cf(null,n,s,t,r);break e;case 14:n=uf(null,n,s,dn(s.type,t),r);break e}throw Error(M(306,s,""))}return n;case 0:return s=n.type,i=n.pendingProps,i=n.elementType===s?i:dn(s,i),jh(t,n,s,i,r);case 1:return s=n.type,i=n.pendingProps,i=n.elementType===s?i:dn(s,i),hf(t,n,s,i,r);case 3:e:{if(yv(n),t===null)throw Error(M(387));s=n.pendingProps,a=n.memoizedState,i=a.element,Zj(t,n),hd(n,s,null,r);var l=n.memoizedState;if(s=l.element,a.isDehydrated)if(a={element:s,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},n.updateQueue.baseState=a,n.memoizedState=a,n.flags&256){i=Vi(Error(M(423)),n),n=mf(t,n,s,r,i);break e}else if(s!==i){i=Vi(Error(M(424)),n),n=mf(t,n,s,r,i);break e}else for(Mt=Fr(n.stateNode.containerInfo.firstChild),Ot=n,Ee=!0,fn=null,r=$j(n,null,s,r),n.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Fi(),s===i){n=lr(t,n,r);break e}gt(t,n,s,r)}n=n.child}return n;case 5:return qj(n),t===null&&gh(n),s=n.type,i=n.pendingProps,a=t!==null?t.memoizedProps:null,l=i.children,dh(s,i)?l=null:a!==null&&dh(s,a)&&(n.flags|=32),vv(t,n),gt(t,n,l,r),n.child;case 6:return t===null&&gh(n),null;case 13:return wv(t,n,r);case 4:return qm(n,n.stateNode.containerInfo),s=n.pendingProps,t===null?n.child=Li(n,null,s,r):gt(t,n,s,r),n.child;case 11:return s=n.type,i=n.pendingProps,i=n.elementType===s?i:dn(s,i),cf(t,n,s,i,r);
vendor: 5,389 bytes, line 40
40case 7:return gt(t,n,n.pendingProps,r),n.child;case 8:return gt(t,n,n.pendingProps.children,r),n.child;case 12:return gt(t,n,n.pendingProps.children,r),n.child;case 10:e:{if(s=n.type._context,i=n.pendingProps,a=n.memoizedProps,l=i.value,ke(cd,s._currentValue),s._currentValue=l,a!==null)if(yn(a.value,l)){if(a.children===i.children&&!Nt.current){n=lr(t,n,r);break e}}else for(a=n.child,a!==null&&(a.return=n);a!==null;){var o=a.dependencies;if(o!==null){l=a.child;for(var d=o.firstContext;d!==null;){if(d.context===s){if(a.tag===1){d=rr(-1,r&-r),d.tag=2;var c=a.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?d.next=d:(d.next=u.next,u.next=d),c.pending=d}}a.lanes|=r,d=a.alternate,d!==null&&(d.lanes|=r),ph(a.return,r,n),o.lanes|=r;break}d=d.next}}else if(a.tag===10)l=a.type===n.type?null:a.child;else if(a.tag===18){if(l=a.return,l===null)throw Error(M(341));l.lanes|=r,o=l.alternate,o!==null&&(o.lanes|=r),ph(l,r,n),l=a.sibling}else l=a.child;if(l!==null)l.return=a;else for(l=a;l!==null;){if(l===n){l=null;break}if(a=l.sibling,a!==null){a.return=l.return,l=a;break}l=l.return}a=l}gt(t,n,i.children,r),n=n.child}return n;case 9:return i=n.type,s=n.pendingProps.children,ki(n,r),i=qt(i),s=s(i),n.flags|=1,gt(t,n,s,r),n.child;case 14:return s=n.type,i=dn(s,n.pendingProps),i=dn(s.type,i),uf(t,n,s,i,r);case 15:return bv(t,n,n.type,n.pendingProps,r);case 17:return s=n.type,i=n.pendingProps,i=n.elementType===s?i:dn(s,i),Bo(t,n),n.tag=1,St(s)?(t=!0,ld(n)):t=!1,ki(n,r),pv(n,s,i),xh(n,s,i,r),vh(null,n,s,!0,t,r);case 19:return kv(t,n,r);case 22:return jv(t,n,r)}throw Error(M(156,n.tag))};function Bv(t,n){return hj(t,n)}function vA(t,n,r,s){this.tag=t,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=s,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $t(t,n,r,s){return new vA(t,n,r,s)}function cg(t){return t=t.prototype,!(!t||!t.isReactComponent)}function yA(t){if(typeof t=="function")return cg(t)?1:0;if(t!=null){if(t=t.$$typeof,t===Em)return 11;if(t===Tm)return 14}return 2}function Ur(t,n){var r=t.alternate;return r===null?(r=$t(t.tag,n,t.key,t.mode),r.elementType=t.elementType,r.type=t.type,r.stateNode=t.stateNode,r.alternate=t,t.alternate=r):(r.pendingProps=n,r.type=t.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=t.flags&14680064,r.childLanes=t.childLanes,r.lanes=t.lanes,r.child=t.child,r.memoizedProps=t.memoizedProps,r.memoizedState=t.memoizedState,r.updateQueue=t.updateQueue,n=t.dependencies,r.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},r.sibling=t.sibling,r.index=t.index,r.ref=t.ref,r}function Lo(t,n,r,s,i,a){var l=2;if(s=t,typeof t=="function")cg(t)&&(l=1);else if(typeof t=="string")l=5;else e:switch(t){case oi:return Es(r.children,i,a,n);case Pm:l=8,i|=8;break;case Fu:return t=$t(12,r,n,i|2),t.elementType=Fu,t.lanes=a,t;case Lu:return t=$t(13,r,n,i),t.elementType=Lu,t.lanes=a,t;case Wu:return t=$t(19,r,n,i),t.elementType=Wu,t.lanes=a,t;case qb:return Hd(r,i,a,n);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case Hb:l=10;break e;case Zb:l=9;break e;case Em:l=11;break e;case Tm:l=14;break e;case Sr:l=16,s=null;break e}throw Error(M(130,t==null?t:typeof t,""))}return n=$t(l,r,n,i),n.elementType=t,n.type=s,n.lanes=a,n}function Es(t,n,r,s){return t=$t(7,t,s,n),t.lanes=r,t}function Hd(t,n,r,s){return t=$t(22,t,s,n),t.elementType=qb,t.lanes=r,t.stateNode={isHidden:!1},t}function su(t,n,r){return t=$t(6,t,null,n),t.lanes=r,t}function iu(t,n,r){return n=$t(4,t.children!==null?t.children:[],t.key,n),n.lanes=r,n.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},n}function wA(t,n,r,s,i){this.tag=n,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Bc(0),this.expirationTimes=Bc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Bc(0),this.identifierPrefix=s,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function ug(t,n,r,s,i,a,l,o,d){return t=new wA(t,n,r,o,d),n===1?(n=1,a===!0&&(n|=8)):n=0,a=$t(3,null,null,n),t.current=a,a.stateNode=t,a.memoizedState={element:s,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Zm(a),t}function kA(t,n,r){var s=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:li,key:s==null?null:""+s,children:t,containerInfo:n,implementation:r}}function Kv(t){if(!t)return Zr;t=t._reactInternals;e:{if(Fs(t)!==t||t.tag!==1)throw Error(M(170));var n=t;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(St(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(n!==null);throw Error(M(171))}if(t.tag===1){var r=t.type;if(St(r))return Kj(t,r,n)}return n}function Fv(t,n,r,s,i,a,l,o,d){return t=ug(r,s,!0,t,i,a,l,o,d),t.context=Kv(null),r=t.current,s=xt(),i=Vr(r),a=rr(s,i),a.callback=n??null,Lr(r,a,i),t.current.lanes=i,Sl(t,i,s),At(t,s),t}function Zd(t,n,r,s){var i=n.current,a=xt(),l=Vr(i);
vendor: 6,783 bytes, line 40
40return r=Kv(r),n.context===null?n.context=r:n.pendingContext=r,n=rr(a,l),n.payload={element:t},s=s===void 0?null:s,s!==null&&(n.callback=s),t=Lr(i,n,l),t!==null&&(jn(t,i,l,a),Ro(t,i,l)),l}function vd(t){if(t=t.current,!t.child)return null;switch(t.child.tag){case 5:return t.child.stateNode;default:return t.child.stateNode}}function kf(t,n){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var r=t.retryLane;t.retryLane=r!==0&&r<n?r:n}}function hg(t,n){kf(t,n),(t=t.alternate)&&kf(t,n)}function NA(){return null}var Lv=typeof reportError=="function"?reportError:function(t){console.error(t)};function mg(t){this._internalRoot=t}qd.prototype.render=mg.prototype.render=function(t){var n=this._internalRoot;if(n===null)throw Error(M(409));Zd(t,n,null,null)};qd.prototype.unmount=mg.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var n=t.containerInfo;Ms(function(){Zd(null,t,null,null)}),n[ir]=null}};function qd(t){this._internalRoot=t}qd.prototype.unstable_scheduleHydration=function(t){if(t){var n=jj();t={blockedOn:null,target:t,priority:n};for(var r=0;r<Cr.length&&n!==0&&n<Cr[r].priority;r++);Cr.splice(r,0,t),r===0&&yj(t)}};function gg(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function Yd(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11&&(t.nodeType!==8||t.nodeValue!==" react-mount-point-unstable "))}function Nf(){}function SA(t,n,r,s,i){if(i){if(typeof s=="function"){var a=s;s=function(){var c=vd(l);a.call(c)}}var l=Fv(n,s,t,0,null,!1,!1,"",Nf);return t._reactRootContainer=l,t[ir]=l.current,Qa(t.nodeType===8?t.parentNode:t),Ms(),l}for(;i=t.lastChild;)t.removeChild(i);if(typeof s=="function"){var o=s;s=function(){var c=vd(d);o.call(c)}}var d=ug(t,0,!1,null,null,!1,!1,"",Nf);return t._reactRootContainer=d,t[ir]=d.current,Qa(t.nodeType===8?t.parentNode:t),Ms(function(){Zd(n,d,r,s)}),d}function Jd(t,n,r,s,i){var a=r._reactRootContainer;if(a){var l=a;if(typeof i=="function"){var o=i;i=function(){var d=vd(l);o.call(d)}}Zd(n,l,t,i)}else l=SA(r,n,t,i,s);return vd(l)}xj=function(t){switch(t.tag){case 3:var n=t.stateNode;if(n.current.memoizedState.isDehydrated){var r=Aa(n.pendingLanes);r!==0&&(_m(n,r|1),At(n,Be()),!(ue&6)&&(Ui=Be()+500,Xr()))}break;case 13:Ms(function(){var s=ar(t,1);if(s!==null){var i=xt();jn(s,t,1,i)}}),hg(t,1)}};Mm=function(t){if(t.tag===13){var n=ar(t,134217728);if(n!==null){var r=xt();jn(n,t,134217728,r)}hg(t,134217728)}};bj=function(t){if(t.tag===13){var n=Vr(t),r=ar(t,n);if(r!==null){var s=xt();jn(r,t,n,s)}hg(t,n)}};jj=function(){return xe};vj=function(t,n){var r=xe;try{return xe=t,n()}finally{xe=r}};Xu=function(t,n,r){switch(n){case"input":if($u(t,r),n=r.name,r.type==="radio"&&n!=null){for(r=t;r.parentNode;)r=r.parentNode;for(r=r.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),n=0;n<r.length;n++){var s=r[n];if(s!==t&&s.form===t.form){var i=Fd(s);if(!i)throw Error(M(90));Jb(s),$u(s,i)}}}break;case"textarea":Xb(t,r);break;case"select":n=r.value,n!=null&&ji(t,!!r.multiple,n,!1)}};aj=lg;lj=Ms;var AA={usingClientEntryPoint:!1,Events:[Cl,hi,Fd,sj,ij,lg]},ba={findFiberByHostInstance:xs,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},CA={bundleType:ba.bundleType,version:ba.version,rendererPackageName:ba.rendererPackageName,rendererConfig:ba.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ur.ReactCurrentDispatcher,findHostInstanceByFiber:function(t){return t=cj(t),t===null?null:t.stateNode},findFiberByHostInstance:ba.findFiberByHostInstance||NA,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var io=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!io.isDisabled&&io.supportsFiber)try{Gd=io.inject(CA),Mn=io}catch{}}It.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=AA;It.createPortal=function(t,n){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!gg(n))throw Error(M(200));return kA(t,n,null,r)};It.createRoot=function(t,n){if(!gg(t))throw Error(M(299));var r=!1,s="",i=Lv;return n!=null&&(n.unstable_strictMode===!0&&(r=!0),n.identifierPrefix!==void 0&&(s=n.identifierPrefix),n.onRecoverableError!==void 0&&(i=n.onRecoverableError)),n=ug(t,1,!1,null,null,r,!1,s,i),t[ir]=n.current,Qa(t.nodeType===8?t.parentNode:t),new mg(n)};It.findDOMNode=function(t){if(t==null)return null;if(t.nodeType===1)return t;var n=t._reactInternals;if(n===void 0)throw typeof t.render=="function"?Error(M(188)):(t=Object.keys(t).join(","),Error(M(268,t)));return t=cj(n),t=t===null?null:t.stateNode,t};It.flushSync=function(t){return Ms(t)};It.hydrate=function(t,n,r){if(!Yd(n))throw Error(M(200));return Jd(null,t,n,!0,r)};It.hydrateRoot=function(t,n,r){if(!gg(t))throw Error(M(405));var s=r!=null&&r.hydratedSources||null,i=!1,a="",l=Lv;if(r!=null&&(r.unstable_strictMode===!0&&(i=!0),r.identifierPrefix!==void 0&&(a=r.identifierPrefix),r.onRecoverableError!==void 0&&(l=r.onRecoverableError)),n=Fv(n,null,t,1,r??null,i,!1,a,l),t[ir]=n.current,Qa(t),s)for(t=0;t<s.length;t++)r=s[t],i=r._getVersion,i=i(r._source),n.mutableSourceEagerHydrationData==null?n.mutableSourceEagerHydrationData=[r,i]:n.mutableSourceEagerHydrationData.push(r,i);return new qd(n)};It.render=function(t,n,r){if(!Yd(n))throw Error(M(200));return Jd(null,t,n,!1,r)};It.unmountComponentAtNode=function(t){if(!Yd(t))throw Error(M(40));return t._reactRootContainer?(Ms(function(){Jd(null,null,t,!1,function(){t._reactRootContainer=null,t[ir]=null})}),!0):!1};It.unstable_batchedUpdates=lg;It.unstable_renderSubtreeIntoContainer=function(t,n,r,s){if(!Yd(r))throw Error(M(200));if(t==null||t._reactInternals===void 0)throw Error(M(38));return Jd(t,n,r,!1,s)};It.version="18.3.1-next-f1338f8080-20240426";function Wv(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Wv)}catch(t){console.error(t)}}Wv(),Wb.exports=It;var El=Wb.exports;const Vv=kl(El);var Uv,Sf=El;Uv=Sf.createRoot,Sf.hydrateRoot;const PA=1,EA=1e6;let au=0;function TA(){return au=(au+1)%Number.MAX_SAFE_INTEGER,au.toString()}const lu=new Map,Af=t=>{if(lu.has(t))return;const n=setTimeout(()=>{lu.delete(t),Ba({type:"REMOVE_TOAST",toastId:t})},EA);lu.set(t,n)},zA=(t,n)=>{switch(n.type){case"ADD_TOAST":return{...t,toasts:[n.toast,...t.toasts].slice(0,PA)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(r=>r.id===n.toast.id?{...r,...n.toast}:r)};case"DISMISS_TOAST":{const{toastId:r}=n;
vendor: 10,736 bytes, line 40
40return r?Af(r):t.toasts.forEach(s=>{Af(s.id)}),{...t,toasts:t.toasts.map(s=>s.id===r||r===void 0?{...s,open:!1}:s)}}case"REMOVE_TOAST":return n.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(r=>r.id!==n.toastId)}}},Wo=[];let Vo={toasts:[]};function Ba(t){Vo=zA(Vo,t),Wo.forEach(n=>{n(Vo)})}function DA({...t}){const n=TA(),r=i=>Ba({type:"UPDATE_TOAST",toast:{...i,id:n}}),s=()=>Ba({type:"DISMISS_TOAST",toastId:n});return Ba({type:"ADD_TOAST",toast:{...t,id:n,open:!0,onOpenChange:i=>{i||s()}}}),{id:n,dismiss:s,update:r}}function pg(){const[t,n]=y.useState(Vo);return y.useEffect(()=>(Wo.push(n),()=>{const r=Wo.indexOf(n);r>-1&&Wo.splice(r,1)}),[t]),{...t,toast:DA,dismiss:r=>Ba({type:"DISMISS_TOAST",toastId:r})}}function ye(t,n,{checkForDefaultPrevented:r=!0}={}){return function(i){if(t==null||t(i),r===!1||!i.defaultPrevented)return n==null?void 0:n(i)}}function Cf(t,n){if(typeof t=="function")return t(n);t!=null&&(t.current=n)}function $v(...t){return n=>{let r=!1;const s=t.map(i=>{const a=Cf(i,n);return!r&&typeof a=="function"&&(r=!0),a});if(r)return()=>{for(let i=0;i<s.length;i++){const a=s[i];typeof a=="function"?a():Cf(t[i],null)}}}}function tt(...t){return y.useCallback($v(...t),t)}function _A(t,n){const r=y.createContext(n),s=a=>{const{children:l,...o}=a,d=y.useMemo(()=>o,Object.values(o));return e.jsx(r.Provider,{value:d,children:l})};s.displayName=t+"Provider";function i(a){const l=y.useContext(r);if(l)return l;if(n!==void 0)return n;throw new Error(`\`${a}\` must be used within \`${t}\``)}return[s,i]}function Ls(t,n=[]){let r=[];function s(a,l){const o=y.createContext(l),d=r.length;r=[...r,l];const c=h=>{var x;const{scope:g,children:m,...j}=h,p=((x=g==null?void 0:g[t])==null?void 0:x[d])||o,b=y.useMemo(()=>j,Object.values(j));return e.jsx(p.Provider,{value:b,children:m})};c.displayName=a+"Provider";function u(h,g){var p;const m=((p=g==null?void 0:g[t])==null?void 0:p[d])||o,j=y.useContext(m);if(j)return j;if(l!==void 0)return l;throw new Error(`\`${h}\` must be used within \`${a}\``)}return[c,u]}const i=()=>{const a=r.map(l=>y.createContext(l));return function(o){const d=(o==null?void 0:o[t])||a;return y.useMemo(()=>({[`__scope${t}`]:{...o,[t]:d}}),[o,d])}};return i.scopeName=t,[s,MA(i,...n)]}function MA(...t){const n=t[0];if(t.length===1)return n;const r=()=>{const s=t.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(a){const l=s.reduce((o,{useScope:d,scopeName:c})=>{const h=d(a)[`__scope${c}`];return{...o,...h}},{});return y.useMemo(()=>({[`__scope${n.scopeName}`]:l}),[l])}};return r.scopeName=n.scopeName,r}function ll(t){const n=OA(t),r=y.forwardRef((s,i)=>{const{children:a,...l}=s,o=y.Children.toArray(a),d=o.find(GA);if(d){const c=d.props.children,u=o.map(h=>h===d?y.Children.count(c)>1?y.Children.only(null):y.isValidElement(c)?c.props.children:null:h);return e.jsx(n,{...l,ref:i,children:y.isValidElement(c)?y.cloneElement(c,void 0,u):null})}return e.jsx(n,{...l,ref:i,children:a})});return r.displayName=`${t}.Slot`,r}var Hv=ll("Slot");function OA(t){const n=y.forwardRef((r,s)=>{const{children:i,...a}=r;if(y.isValidElement(i)){const l=BA(i),o=IA(a,i.props);return i.type!==y.Fragment&&(o.ref=s?$v(s,l):l),y.cloneElement(i,o)}return y.Children.count(i)>1?y.Children.only(null):null});return n.displayName=`${t}.SlotClone`,n}var Zv=Symbol("radix.slottable");function RA(t){const n=({children:r})=>e.jsx(e.Fragment,{children:r});return n.displayName=`${t}.Slottable`,n.__radixId=Zv,n}function GA(t){return y.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===Zv}function IA(t,n){const r={...n};for(const s in n){const i=t[s],a=n[s];/^on[A-Z]/.test(s)?i&&a?r[s]=(...o)=>{const d=a(...o);return i(...o),d}:i&&(r[s]=i):s==="style"?r[s]={...i,...a}:s==="className"&&(r[s]=[i,a].filter(Boolean).join(" "))}return{...t,...r}}function BA(t){var s,i;let n=(s=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:s.get,r=n&&"isReactWarning"in n&&n.isReactWarning;return r?t.ref:(n=(i=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:i.get,r=n&&"isReactWarning"in n&&n.isReactWarning,r?t.props.ref:t.props.ref||t.ref)}function qv(t){const n=t+"CollectionProvider",[r,s]=Ls(n),[i,a]=r(n,{collectionRef:{current:null},itemMap:new Map}),l=p=>{const{scope:b,children:x}=p,f=_.useRef(null),v=_.useRef(new Map).current;return e.jsx(i,{scope:b,itemMap:v,collectionRef:f,children:x})};l.displayName=n;const o=t+"CollectionSlot",d=ll(o),c=_.forwardRef((p,b)=>{const{scope:x,children:f}=p,v=a(o,x),w=tt(b,v.collectionRef);return e.jsx(d,{ref:w,children:f})});c.displayName=o;const u=t+"CollectionItemSlot",h="data-radix-collection-item",g=ll(u),m=_.forwardRef((p,b)=>{const{scope:x,children:f,...v}=p,w=_.useRef(null),k=tt(b,w),N=a(u,x);return _.useEffect(()=>(N.itemMap.set(w,{ref:w,...v}),()=>void N.itemMap.delete(w))),e.jsx(g,{[h]:"",ref:k,children:f})});m.displayName=u;function j(p){const b=a(t+"CollectionConsumer",p);return _.useCallback(()=>{const f=b.collectionRef.current;if(!f)return[];const v=Array.from(f.querySelectorAll(`[${h}]`));return Array.from(b.itemMap.values()).sort((N,S)=>v.indexOf(N.ref.current)-v.indexOf(S.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:l,Slot:c,ItemSlot:m},j,s]}var KA=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Pe=KA.reduce((t,n)=>{const r=ll(`Primitive.${n}`),s=y.forwardRef((i,a)=>{const{asChild:l,...o}=i,d=l?r:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(d,{...o,ref:a})});return s.displayName=`Primitive.${n}`,{...t,[n]:s}},{});function Yv(t,n){t&&El.flushSync(()=>t.dispatchEvent(n))}function Gn(t){const n=y.useRef(t);return y.useEffect(()=>{n.current=t}),y.useMemo(()=>(...r)=>{var s;return(s=n.current)==null?void 0:s.call(n,...r)},[])}function FA(t,n=globalThis==null?void 0:globalThis.document){const r=Gn(t);y.useEffect(()=>{const s=i=>{i.key==="Escape"&&r(i)};return n.addEventListener("keydown",s,{capture:!0}),()=>n.removeEventListener("keydown",s,{capture:!0})},[r,n])}var LA="DismissableLayer",Dh="dismissableLayer.update",WA="dismissableLayer.pointerDownOutside",VA="dismissableLayer.focusOutside",Pf,Jv=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Qd=y.forwardRef((t,n)=>{const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:s,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:o,...d}=t,c=y.useContext(Jv),[u,h]=y.useState(null),g=(u==null?void 0:u.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,m]=y.useState({}),j=tt(n,S=>h(S)),p=Array.from(c.layers),[b]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),x=p.indexOf(b),f=u?p.indexOf(u):-1,v=c.layersWithOutsidePointerEventsDisabled.size>0,w=f>=x,k=$A(S=>{const A=S.target,P=[...c.branches].some(D=>D.contains(A));!w||P||(i==null||i(S),l==null||l(S),S.defaultPrevented||o==null||o())},g),N=HA(S=>{const A=S.target;[...c.branches].some(D=>D.contains(A))||(a==null||a(S),l==null||l(S),S.defaultPrevented||o==null||o())},g);return FA(S=>{f===c.layers.size-1&&(s==null||s(S),!S.defaultPrevented&&o&&(S.preventDefault(),o()))},g),y.useEffect(()=>{if(u)return r&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Pf=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),Ef(),()=>{r&&c.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Pf)}},[u,g,r,c]),y.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),Ef())},[u,c]),y.useEffect(()=>{const S=()=>m({});return document.addEventListener(Dh,S),()=>document.removeEventListener(Dh,S)},[]),e.jsx(Pe.div,{...d,ref:j,style:{pointerEvents:v?w?"auto":"none":void 0,...t.style},onFocusCapture:ye(t.onFocusCapture,N.onFocusCapture),onBlurCapture:ye(t.onBlurCapture,N.onBlurCapture),onPointerDownCapture:ye(t.onPointerDownCapture,k.onPointerDownCapture)})});Qd.displayName=LA;var UA="DismissableLayerBranch",Qv=y.forwardRef((t,n)=>{const r=y.useContext(Jv),s=y.useRef(null),i=tt(n,s);return y.useEffect(()=>{const a=s.current;if(a)return r.branches.add(a),()=>{r.branches.delete(a)}},[r.branches]),e.jsx(Pe.div,{...t,ref:i})});Qv.displayName=UA;function $A(t,n=globalThis==null?void 0:globalThis.document){const r=Gn(t),s=y.useRef(!1),i=y.useRef(()=>{});return y.useEffect(()=>{const a=o=>{if(o.target&&!s.current){let d=function(){Xv(WA,r,c,{discrete:!0})};const c={originalEvent:o};o.pointerType==="touch"?(n.removeEventListener("click",i.current),i.current=d,n.addEventListener("click",i.current,{once:!0})):d()}else n.removeEventListener("click",i.current);s.current=!1},l=window.setTimeout(()=>{n.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(l),n.removeEventListener("pointerdown",a),n.removeEventListener("click",i.current)}},[n,r]),{onPointerDownCapture:()=>s.current=!0}}function HA(t,n=globalThis==null?void 0:globalThis.document){const r=Gn(t),s=y.useRef(!1);return y.useEffect(()=>{const i=a=>{a.target&&!s.current&&Xv(VA,r,{originalEvent:a},{discrete:!1})};return n.addEventListener("focusin",i),()=>n.removeEventListener("focusin",i)},[n,r]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function Ef(){const t=new CustomEvent(Dh);document.dispatchEvent(t)}function Xv(t,n,r,{discrete:s}){const i=r.originalEvent.target,a=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:r});n&&i.addEventListener(t,n,{once:!0}),s?Yv(i,a):i.dispatchEvent(a)}var ZA=Qd,qA=Qv,In=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},YA="Portal",fg=y.forwardRef((t,n)=>{var o;const{container:r,...s}=t,[i,a]=y.useState(!1);In(()=>a(!0),[]);const l=r||i&&((o=globalThis==null?void 0:globalThis.document)==null?void 0:o.body);return l?Vv.createPortal(e.jsx(Pe.div,{...s,ref:n}),l):null});fg.displayName=YA;function JA(t,n){return y.useReducer((r,s)=>n[r][s]??r,t)}var Ws=t=>{const{present:n,children:r}=t,s=QA(n),i=typeof r=="function"?r({present:s.isPresent}):y.Children.only(r),a=tt(s.ref,XA(i));return typeof r=="function"||s.isPresent?y.cloneElement(i,{ref:a}):null};Ws.displayName="Presence";function QA(t){const[n,r]=y.useState(),s=y.useRef(null),i=y.useRef(t),a=y.useRef("none"),l=t?"mounted":"unmounted",[o,d]=JA(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const c=ao(s.current);a.current=o==="mounted"?c:"none"},[o]),In(()=>{const c=s.current,u=i.current;if(u!==t){const g=a.current,m=ao(c);t?d("MOUNT"):m==="none"||(c==null?void 0:c.display)==="none"?d("UNMOUNT"):d(u&&g!==m?"ANIMATION_OUT":"UNMOUNT"),i.current=t}},[t,d]),In(()=>
40{if(n){let c;const u=n.ownerDocument.defaultView??window,h=m=>{const p=ao(s.current).includes(m.animationName);if(m.target===n&&p&&(d("ANIMATION_END"),!i.current)){const b=n.style.animationFillMode;n.style.animationFillMode="forwards",c=u.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=b)})}},g=m=>{m.target===n&&(a.current=ao(s.current))};return n.addEventListener("animationstart",g),n.addEventListener("animationcancel",h),n.addEventListener("animationend",h),()=>{u.clearTimeout(c),n.removeEventListener("animationstart",g),n.removeEventListener("animationcancel",h),n.removeEventListener("animationend",h)}}else d("ANIMATION_END")},[n,d]),{isPresent:["mounted","unmountSuspended"].includes(o),ref:y.useCallback(c=>{s.current=c?getComputedStyle(c):null,r(c)},[])}}function ao(t){return(t==null?void 0:t.animationName)||"none"}function XA(t){var s,i;let n=(s=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:s.get,r=n&&"isReactWarning"in n&&n.isReactWarning;return r?t.ref:(n=(i=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:i.get,r=n&&"isReactWarning"in n&&n.isReactWarning,r?t.props.ref:t.props.ref||t.ref)}var e2=Nm[" useInsertionEffect ".trim().toString()]||In;function Tl({prop:t,defaultProp:n,onChange:r=()=>{},caller:s}){const[i,a,l]=t2({defaultProp:n,onChange:r}),o=t!==void 0,d=o?t:i;{const u=y.useRef(t!==void 0);y.useEffect(()=>{const h=u.current;h!==o&&console.warn(`${s} is changing from ${h?"controlled":"uncontrolled"} to ${o?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=o},[o,s])}const c=y.useCallback(u=>{var h;if(o){const g=n2(u)?u(t):u;g!==t&&((h=l.current)==null||h.call(l,g))}else a(u)},[o,t,a,l]);return[d,c]}function t2({defaultProp:t,onChange:n}){const[r,s]=y.useState(t),i=y.useRef(r),a=y.useRef(n);return e2(()=>{a.current=n},[n]),y.useEffect(()=>{var l;i.current!==r&&((l=a.current)==null||l.call(a,r),i.current=r)},[r,i]),[r,s,a]}function n2(t){return typeof t=="function"}var r2=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),s2="VisuallyHidden",Xd=y.forwardRef((t,n)=>e.jsx(Pe.span,{...t,ref:n,style:{...r2,...t.style}}));Xd.displayName=s2;var i2=Xd,xg="ToastProvider",[bg,a2,l2]=qv("Toast"),[e0,ER]=Ls("Toast",[l2]),[o2,ec]=e0(xg),t0=t=>{const{__scopeToast:n,label:r="Notification",duration:s=5e3,swipeDirection:i="right",swipeThreshold:a=50,children:l}=t,[o,d]=y.useState(null),[c,u]=y.useState(0),h=y.useRef(!1),g=y.useRef(!1);return r.trim()||console.error(`Invalid prop \`label\` supplied to \`${xg}\`. Expected non-empty \`string\`.`),e.jsx(bg.Provider,{scope:n,children:e.jsx(o2,{scope:n,label:r,duration:s,swipeDirection:i,swipeThreshold:a,toastCount:c,viewport:o,onViewportChange:d,onToastAdd:y.useCallback(()=>u(m=>m+1),[]),onToastRemove:y.useCallback(()=>u(m=>m-1),[]),isFocusedToastEscapeKeyDownRef:h,isClosePausedRef:g,children:l})})};t0.displayName=xg;var n0="ToastViewport",d2=["F8"],_h="toast.viewportPause",Mh="toast.viewportResume",r0=y.forwardRef((t,n)=>{const{__scopeToast:r,hotkey:s=d2,label:i="Notifications ({hotkey})",...a}=t,l=ec(n0,r),o=a2(r),d=y.useRef(null),c=y.useRef(null),u=y.useRef(null),h=y.useRef(null),g=tt(n,h,l.onViewportChange),m=s.join("+").replace(/Key/g,"").replace(/Digit/g,""),j=l.toastCount>0;y.useEffect(()=>{const b=x=>{var v;s.length!==0&&s.every(w=>x[w]||x.code===w)&&((v=h.current)==null||v.focus())};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[s]),y.useEffect(()=>{const b=d.current,x=h.current;if(j&&b&&x){const f=()=>{if(!l.isClosePausedRef.current){const N=new CustomEvent(_h);x.dispatchEvent(N),l.isClosePausedRef.current=!0}},v=()=>{if(l.isClosePausedRef.current){const N=new CustomEvent(Mh);x.dispatchEvent(N),l.isClosePausedRef.current=!1}},w=N=>{!b.contains(N.relatedTarget)&&v()},k=()=>{b.contains(document.activeElement)||v()};return b.addEventListener("focusin",f),b.addEventListener("focusout",w),b.addEventListener("pointermove",f),b.addEventListener("pointerleave",k),window.addEventListener("blur",f),window.addEventListener("focus",v),()=>{b.removeEventListener("focusin",f),b.removeEventListener("focusout",w),b.removeEventListener("pointermove",f),b.removeEventListener("pointerleave",k),window.removeEventListener("blur",f),window.removeEventListener("focus",v)}}},[j,l.isClosePausedRef]);const p=y.useCallback(({tabbingDirection:b})=>{const f=o().map(v=>{const w=v.ref.current,k=[w,...w2(w)];return b==="forwards"?k:k.reverse()});return(b==="forwards"?f.reverse():f).flat()},[o]);return y.useEffect(()=>{const b=h.current;if(b){const x=f=>{var k,N,S;const v=f.altKey||f.ctrlKey||f.metaKey;if(f.key==="Tab"&&!v){const A=document.activeElement,P=f.shiftKey;if(f.target===b&&P){(k=c.current)==null||k.focus();return}const O=p({tabbingDirection:P?"backwards":"forwards"}),V=O.findIndex(R=>R===A);ou(O.slice(V+1))?f.preventDefault():P?(N=c.current)==null||N.focus():(S=u.current)==null||S.focus()}};return b.addEventListener("keydown",x),()=>b.removeEventListener("keydown",x)}},[o,p]),e.jsxs(qA,{ref:d,role:"region","aria-label":i.replace("{hotkey}",m),tabIndex:-1,style:{pointerEvents:j?void 0:"none"},children:[j&&e.jsx(Oh,{ref:c,onFocusFromOutsideViewport:()=>{const b=p({tabbingDirection:"forwards"});ou(b)}}),e.jsx(bg.Slot,{scope:r,children:e.jsx(Pe.ol,{tabIndex:-1,...a,ref:g})}),j&&e.jsx(Oh,{ref:u,onFocusFromOutsideViewport:()=>{const b=p({tabbingDirection:"backwards"});ou(b)}})]})});r0.displayName=n0;
40var s0="ToastFocusProxy",Oh=y.forwardRef((t,n)=>{const{__scopeToast:r,onFocusFromOutsideViewport:s,...i}=t,a=ec(s0,r);return e.jsx(Xd,{"aria-hidden":!0,tabIndex:0,...i,ref:n,style:{position:"fixed"},onFocus:l=>{var c;const o=l.relatedTarget;!((c=a.viewport)!=null&&c.contains(o))&&s()}})});Oh.displayName=s0;var zl="Toast",c2="toast.swipeStart",u2="toast.swipeMove",h2="toast.swipeCancel",m2="toast.swipeEnd",i0=y.forwardRef((t,n)=>{const{forceMount:r,open:s,defaultOpen:i,onOpenChange:a,...l}=t,[o,d]=Tl({prop:s,defaultProp:i??!0,onChange:a,caller:zl});return e.jsx(Ws,{present:r||o,children:e.jsx(f2,{open:o,...l,ref:n,onClose:()=>d(!1),onPause:Gn(t.onPause),onResume:Gn(t.onResume),onSwipeStart:ye(t.onSwipeStart,c=>{c.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:ye(t.onSwipeMove,c=>{const{x:u,y:h}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","move"),c.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${u}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${h}px`)}),onSwipeCancel:ye(t.onSwipeCancel,c=>{c.currentTarget.setAttribute("data-swipe","cancel"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:ye(t.onSwipeEnd,c=>{const{x:u,y:h}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","end"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${u}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${h}px`),d(!1)})})})});i0.displayName=zl;var[g2,p2]=e0(zl,{onClose(){}}),f2=y.forwardRef((t,n)=>{const{__scopeToast:r,type:s="foreground",duration:i,open:a,onClose:l,onEscapeKeyDown:o,onPause:d,onResume:c,onSwipeStart:u,onSwipeMove:h,onSwipeCancel:g,onSwipeEnd:m,...j}=t,p=ec(zl,r),[b,x]=y.useState(null),f=tt(n,R=>x(R)),v=y.useRef(null),w=y.useRef(null),k=i||p.duration,N=y.useRef(0),S=y.useRef(k),A=y.useRef(0),{onToastAdd:P,onToastRemove:D}=p,G=Gn(()=>{var Y;(b==null?void 0:b.contains(document.activeElement))&&((Y=p.viewport)==null||Y.focus()),l()}),O=y.useCallback(R=>{!R||R===1/0||(window.clearTimeout(A.current),N.current=new Date().getTime(),A.current=window.setTimeout(G,R))},[G]);y.useEffect(()=>{const R=p.viewport;if(R){const Y=()=>{O(S.current),c==null||c()},U=()=>{const H=new Date().getTime()-N.current;S.current=S.current-H,window.clearTimeout(A.current),d==null||d()};return R.addEventListener(_h,U),R.addEventListener(Mh,Y),()=>{R.removeEventListener(_h,U),R.removeEventListener(Mh,Y)}}},[p.viewport,k,d,c,O]),y.useEffect(()=>{a&&!p.isClosePausedRef.current&&O(k)},[a,k,p.isClosePausedRef,O]),y.useEffect(()=>(P(),()=>D()),[P,D]);const V=y.useMemo(()=>b?h0(b):null,[b]);return p.viewport?e.jsxs(e.Fragment,{children:[V&&e.jsx(x2,{__scopeToast:r,role:"status","aria-live":s==="foreground"?"assertive":"polite","aria-atomic":!0,children:V}),e.jsx(g2,{scope:r,onClose:G,children:El.createPortal(e.jsx(bg.ItemSlot,{scope:r,children:e.jsx(ZA,{asChild:!0,onEscapeKeyDown:ye(o,()=>{p.isFocusedToastEscapeKeyDownRef.current||G(),p.isFocusedToastEscapeKeyDownRef.current=!1}),children:e.jsx(Pe.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":a?"open":"closed","data-swipe-direction":p.swipeDirection,...j,ref:f,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:ye(t.onKeyDown,R=>{R.key==="Escape"&&(o==null||o(R.nativeEvent),R.nativeEvent.defaultPrevented||(p.isFocusedToastEscapeKeyDownRef.current=!0,G()))}),onPointerDown:ye(t.onPointerDown,R=>{R.button===0&&(v.current={x:R.clientX,y:R.clientY})}),onPointerMove:ye(t.onPointerMove,R=>{if(!v.current)return;const Y=R.clientX-v.current.x,U=R.clientY-v.current.y,H=!!w.current,C=["left","right"].includes(p.swipeDirection),z=["left","up"].includes(p.swipeDirection)?Math.min:Math.max,I=C?z(0,Y):0,$=C?0:z(0,U),L=R.pointerType==="touch"?10:2,ee={x:I,y:$},J={originalEvent:R,delta:ee};H?(w.current=ee,lo(u2,h,J,{discrete:!1})):Tf(ee,p.swipeDirection,L)?(w.current=ee,lo(c2,u,J,{discrete:!1}),R.target.setPointerCapture(R.pointerId)):(Math.abs(Y)>L||Math.abs(U)>L)&&(v.current=null)}),onPointerUp:ye(t.onPointerUp,R=>{const Y=w.current,U=R.target;if(U.hasPointerCapture(R.pointerId)&&U.releasePointerCapture(R.pointerId),w.current=null,v.current=null,Y){const H=R.currentTarget,C={originalEvent:R,delta:Y};Tf(Y,p.swipeDirection,p.swipeThreshold)?lo(m2,m,C,{discrete:!0}):lo(h2,g,C,{discrete:!0}),H.addEventListener("click",z=>z.preventDefault(),{once:!0})}})})})}),p.viewport)})]}):null}),x2=t=>{const{__scopeToast:n,children:r,...s}=t,i=ec(zl,n),[a,l]=y.useState(!1),[o,d]=y.useState(!1);return v2(()=>l(!0)),y.useEffect(()=>{const c=window.setTimeout(()=>d(!0),1e3);return()=>window.clearTimeout(c)},[]),o?null:e.jsx(fg,{asChild:!0,children:e.jsx(Xd,{...s,children:a&&e.jsxs(e.Fragment,{children:[i.label," ",r]})})})}
vendor: 7,533 bytes, lines 40-100
40,b2="ToastTitle",a0=y.forwardRef((t,n)=>{const{__scopeToast:r,...s}=t;return e.jsx(Pe.div,{...s,ref:n})});a0.displayName=b2;var j2="ToastDescription",l0=y.forwardRef((t,n)=>{const{__scopeToast:r,...s}=t;return e.jsx(Pe.div,{...s,ref:n})});l0.displayName=j2;var o0="ToastAction",d0=y.forwardRef((t,n)=>{const{altText:r,...s}=t;return r.trim()?e.jsx(u0,{altText:r,asChild:!0,children:e.jsx(jg,{...s,ref:n})}):(console.error(`Invalid prop \`altText\` supplied to \`${o0}\`. Expected non-empty \`string\`.`),null)});d0.displayName=o0;var c0="ToastClose",jg=y.forwardRef((t,n)=>{const{__scopeToast:r,...s}=t,i=p2(c0,r);return e.jsx(u0,{asChild:!0,children:e.jsx(Pe.button,{type:"button",...s,ref:n,onClick:ye(t.onClick,i.onClose)})})});jg.displayName=c0;var u0=y.forwardRef((t,n)=>{const{__scopeToast:r,altText:s,...i}=t;return e.jsx(Pe.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":s||void 0,...i,ref:n})});function h0(t){const n=[];return Array.from(t.childNodes).forEach(s=>{if(s.nodeType===s.TEXT_NODE&&s.textContent&&n.push(s.textContent),y2(s)){const i=s.ariaHidden||s.hidden||s.style.display==="none",a=s.dataset.radixToastAnnounceExclude==="";if(!i)if(a){const l=s.dataset.radixToastAnnounceAlt;l&&n.push(l)}else n.push(...h0(s))}}),n}function lo(t,n,r,{discrete:s}){const i=r.originalEvent.currentTarget,a=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:r});n&&i.addEventListener(t,n,{once:!0}),s?Yv(i,a):i.dispatchEvent(a)}var Tf=(t,n,r=0)=>{const s=Math.abs(t.x),i=Math.abs(t.y),a=s>i;return n==="left"||n==="right"?a&&s>r:!a&&i>r};function v2(t=()=>{}){const n=Gn(t);In(()=>{let r=0,s=0;return r=window.requestAnimationFrame(()=>s=window.requestAnimationFrame(n)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(s)}},[n])}function y2(t){return t.nodeType===t.ELEMENT_NODE}function w2(t){const n=[],r=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const i=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||i?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)n.push(r.currentNode);return n}function ou(t){const n=document.activeElement;return t.some(r=>r===n?!0:(r.focus(),document.activeElement!==n))}var k2=t0,m0=r0,g0=i0,p0=a0,f0=l0,x0=d0,b0=jg;function j0(t){var n,r,s="";if(typeof t=="string"||typeof t=="number")s+=t;else if(typeof t=="object")if(Array.isArray(t)){var i=t.length;for(n=0;n<i;n++)t[n]&&(r=j0(t[n]))&&(s&&(s+=" "),s+=r)}else for(r in t)t[r]&&(s&&(s+=" "),s+=r);return s}function v0(){for(var t,n,r=0,s="",i=arguments.length;r<i;r++)(t=arguments[r])&&(n=j0(t))&&(s&&(s+=" "),s+=n);return s}const zf=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,Df=v0,tc=(t,n)=>r=>{var s;if((n==null?void 0:n.variants)==null)return Df(t,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:i,defaultVariants:a}=n,l=Object.keys(i).map(c=>{const u=r==null?void 0:r[c],h=a==null?void 0:a[c];if(u===null)return null;const g=zf(u)||zf(h);return i[c][g]}),o=r&&Object.entries(r).reduce((c,u)=>{let[h,g]=u;return g===void 0||(c[h]=g),c},{}),d=n==null||(s=n.compoundVariants)===null||s===void 0?void 0:s.reduce((c,u)=>{let{class:h,className:g,...m}=u;return Object.entries(m).every(j=>{let[p,b]=j;return Array.isArray(b)?b.includes({...a,...o}[p]):{...a,...o}[p]===b})?[...c,h,g]:c},[]);return Df(t,l,d,r==null?void 0:r.class,r==null?void 0:r.className)};/** 41 * @license lucide-react v0.462.0 - ISC 42 * 43 * This source code is licensed under the ISC license. 44 * See the LICENSE file in the root directory of this source tree. 45 */const N2=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),y0=(...t)=>t.filter((n,r,s)=>!!n&&n.trim()!==""&&s.indexOf(n)===r).join(" ").trim();/** 46 * @license lucide-react v0.462.0 - ISC 47 * 48 * This source code is licensed under the ISC license. 49 * See the LICENSE file in the root directory of this source tree. 50 */var S2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** 51 * @license lucide-react v0.462.0 - ISC 52 * 53 * This source code is licensed under the ISC license. 54 * See the LICENSE file in the root directory of this source tree. 55 */const A2=y.forwardRef(({color:t="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:i="",children:a,iconNode:l,...o},d)=>y.createElement("svg",{ref:d,...S2,width:n,height:n,stroke:t,strokeWidth:s?Number(r)*24/Number(n):r,className:y0("lucide",i),...o},[...l.map(([c,u])=>y.createElement(c,u)),...Array.isArray(a)?a:[a]]));/** 56 * @license lucide-react v0.462.0 - ISC 57 * 58 * This source code is licensed under the ISC license. 59 * See the LICENSE file in the root directory of this source tree. 60 */const X=(t,n)=>{const r=y.forwardRef(({className:s,...i},a)=>y.createElement(A2,{ref:a,iconNode:n,className:y0(`lucide-${N2(t)}`,s),...i}));return r.displayName=`${t}`,r};/** 61 * @license lucide-react v0.462.0 - ISC 62 * 63 * This source code is licensed under the ISC license. 64 * See the LICENSE file in the root directory of this source tree. 65 */const vg=X("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** 66 * @license lucide-react v0.462.0 - ISC 67 * 68 * This source code is licensed under the ISC license. 69 * See the LICENSE file in the root directory of this source tree. 70 */const dt=X("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** 71 * @license lucide-react v0.462.0 - ISC 72 * 73 * This source code is licensed under the ISC license. 74 * See the LICENSE file in the root directory of this source tree. 75 */const C2=X("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);/** 76 * @license lucide-react v0.462.0 - ISC 77 * 78 * This source code is licensed under the ISC license. 79 * See the LICENSE file in the root directory of this source tree. 80 */const P2=X("CalendarCheck",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"m9 16 2 2 4-4",key:"19s6y9"}]]);/** 81 * @license lucide-react v0.462.0 - ISC 82 * 83 * This source code is licensed under the ISC license. 84 * See the LICENSE file in the root directory of this source tree. 85 */const nc=X("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/** 86 * @license lucide-react v0.462.0 - ISC 87 * 88 * This source code is licensed under the ISC license. 89 * See the LICENSE file in the root directory of this source tree. 90 */const yg=X("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** 91 * @license lucide-react v0.462.0 - ISC 92 * 93 * This source code is licensed under the ISC license. 94 * See the LICENSE file in the root directory of this source tree. 95 */const E2=X("ChartLine",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);/** 96 * @license lucide-react v0.462.0 - ISC 97 * 98 * This source code is licensed under the ISC license. 99 * See the LICENSE file in the root directory of this source tree. 100 */const T2=X("ChartPie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",ke
100y:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);/** 101 * @license lucide-react v0.462.0 - ISC 102 * 103 * This source code is licensed under the ISC license. 104 * See the LICENSE file in the root directory of this source tree. 105 */const Rh=X("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** 106 * @license lucide-react v0.462.0 - ISC 107 * 108 * This source code is licensed under the ISC license. 109 * See the LICENSE file in the root directory of this source tree. 110 */const w0=X("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** 111 * @license lucide-react v0.462.0 - ISC 112 * 113 * This source code is licensed under the ISC license. 114 * See the LICENSE file in the root directory of this source tree. 115 */const z2=X("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** 116 * @license lucide-react v0.462.0 - ISC 117 * 118 * This source code is licensed under the ISC license. 119 * See the LICENSE file in the root directory of this source tree. 120 */const k0=X("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** 121 * @license lucide-react v0.462.0 - ISC 122 * 123 * This source code is licensed under the ISC license. 124 * See the LICENSE file in the root directory of this source tree. 125 */const D2=X("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** 126 * @license lucide-react v0.462.0 - ISC 127 * 128 * This source code is licensed under the ISC license. 129 * See the LICENSE file in the root directory of this source tree. 130 */const _f=X("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** 131 * @license lucide-react v0.462.0 - ISC 132 * 133 * This source code is licensed under the ISC license. 134 * See the LICENSE file in the root directory of this source tree. 135 */const Zt=X("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 136 * @license lucide-react v0.462.0 - ISC 137 * 138 * This source code is licensed under the ISC license. 139 * See the LICENSE file in the root directory of this source tree. 140 */const N0=X("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** 141 * @license lucide-react v0.462.0 - ISC 142 * 143 * This source code is licensed under the ISC license. 144 * See the LICENSE file in the root directory of this source tree. 145 */const $i=X("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 146 * @license lucide-react v0.462.0 - ISC 147 * 148 * This source code is licensed under the ISC license. 149 * See the LICENSE file in the root directory of this source tree. 150 */const rc=X("Cookie",[["path",{d:"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5",key:"laymnq"}],["path",{d:"M8.5 8.5v.01",key:"ue8clq"}],["path",{d:"M16 15.5v.01",key:"14dtrp"}],["path",{d:"M12 12v.01",key:"u5ubse"}],["path",{d:"M11 17v.01",key:"1hyl5a"}],["path",{d:"M7 14v.01",key:"uct60s"}]]);/** 151 * @license lucide-react v0.462.0 - ISC 152 * 153 * This source code is licensed under the ISC license. 154 * See the LICENSE file in the root directory of this source tree. 155 */const _2=X("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/** 156 * @license lucide-react v0.462.0 - ISC 157 * 158 * This source code is licensed under the ISC license. 159 * See the LICENSE file in the root directory of this source tree. 160 */const M2=X("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** 161 * @license lucide-react v0.462.0 - ISC 162 * 163 * This source code is licensed under the ISC license. 164 * See the LICENSE file in the root directory of this source tree. 165 */const O2=X("Facebook",[["path",{d:"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z",key:"1jg4f8"}]]);/** 166 * @license lucide-react v0.462.0 - ISC 167 * 168 * This source code is licensed under the ISC license. 169 * See the LICENSE file in the root directory of this source tree. 170 */const R2=X("FileSearch",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"ms7g94"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}],["circle",{cx:"5",cy:"14",r:"3",key:"ufru5t"}]]);/** 171 * @license lucide-react v0.462.0 - ISC 172 * 173 * This source code is licensed under the ISC license. 174 * See the LICENSE file in the root directory of this source tree. 175 */const G2=X("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** 176 * @license lucide-react v0.462.0 - ISC 177 * 178 * This source code is licensed under the ISC license. 179 * See the LICENSE file in the root directory of this source tree. 180 */const I2=X("Gift",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/** 181 * @license lucide-react v0.462.0 - ISC 182 * 183 * This source code is licensed under the ISC license. 184 * See the LICENSE file in the root directory of this source tree. 185 */const B2=X("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/** 186 * @license lucide-react v0.462.0 - ISC 187 * 188 * This source code is licensed under the ISC license. 189 * See the LICENSE file in the root directory of this source tree. 190 */const K2=X("Inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);/** 191 * @license lucide-react v0.462.0 - ISC 192 * 193 * This source code is licensed under the ISC license. 194 * See the LICENSE file in the root directory of this source tree. 195 */const F2=X("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** 196 * @license lucide-react v0.462.0 - ISC 197 * 198 * This source code is licensed under the ISC license. 199 * See the LICENSE file in the root directory of this source tree. 200 */const Bn=X("Linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/** 201 * @license lucide-react v0.462.0 - ISC 202 * 203 * This source code is licensed under the ISC license. 204 * See the LICENSE file in the root directory of this source tree.
205 */const yd=X("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** 206 * @license lucide-react v0.462.0 - ISC 207 * 208 * This source code is licensed under the ISC license. 209 * See the LICENSE file in the root directory of this source tree. 210 */const sc=X("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** 211 * @license lucide-react v0.462.0 - ISC 212 * 213 * This source code is licensed under the ISC license. 214 * See the LICENSE file in the root directory of this source tree. 215 */const L2=X("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** 216 * @license lucide-react v0.462.0 - ISC 217 * 218 * This source code is licensed under the ISC license. 219 * See the LICENSE file in the root directory of this source tree. 220 */const W2=X("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 221 * @license lucide-react v0.462.0 - ISC 222 * 223 * This source code is licensed under the ISC license. 224 * See the LICENSE file in the root directory of this source tree. 225 */const V2=X("Quote",[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]]);/** 226 * @license lucide-react v0.462.0 - ISC 227 * 228 * This source code is licensed under the ISC license. 229 * See the LICENSE file in the root directory of this source tree. 230 */const U2=X("Route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);/** 231 * @license lucide-react v0.462.0 - ISC 232 * 233 * This source code is licensed under the ISC license. 234 * See the LICENSE file in the root directory of this source tree. 235 */const S0=X("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 236 * @license lucide-react v0.462.0 - ISC 237 * 238 * This source code is licensed under the ISC license. 239 * See the LICENSE file in the root directory of this source tree. 240 */const Gh=X("ShieldCheck",[["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"}]]);/** 241 * @license lucide-react v0.462.0 - ISC 242 * 243 * This source code is licensed under the ISC license. 244 * See the LICENSE file in the root directory of this source tree. 245 */const $2=X("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/** 246 * @license lucide-react v0.462.0 - ISC 247 * 248 * This source code is licensed under the ISC license. 249 * See the LICENSE file in the root directory of this source tree.
250 */const H2=X("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** 251 * @license lucide-react v0.462.0 - ISC 252 * 253 * This source code is licensed under the ISC license. 254 * See the LICENSE file in the root directory of this source tree. 255 */const Dl=X("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** 256 * @license lucide-react v0.462.0 - ISC 257 * 258 * This source code is licensed under the ISC license. 259 * See the LICENSE file in the root directory of this source tree. 260 */const Z2=X("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/** 261 * @license lucide-react v0.462.0 - ISC 262 * 263 * This source code is licensed under the ISC license. 264 * See the LICENSE file in the root directory of this source tree. 265 */const Os=X("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** 266 * @license lucide-react v0.462.0 - ISC 267 * 268 * This source code is licensed under the ISC license. 269 * See the LICENSE file in the root directory of this source tree. 270 */const ic=X("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 271 * @license lucide-react v0.462.0 - ISC 272 * 273 * This source code is licensed under the ISC license. 274 * See the LICENSE file in the root directory of this source tree. 275 */const A0=X("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** 276 * @license lucide-react v0.462.0 - ISC 277 * 278 * This source code is licensed under the ISC license. 279 * See the LICENSE file in the root directory of this source tree. 280 */const Hi=X("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** 281 * @license lucide-react v0.462.0 - ISC 282 * 283 * This source code is licensed under the ISC license. 284 * See the LICENSE file in the root directory of this source tree. 285 */const wg=X("Youtube",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]);/** 286 * @license lucide-react v0.462.0 - ISC 287 * 288 * This source code is licensed under the ISC license. 289 * See the LICENSE file in the root directory of this source tree. 290 */const ac=X("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),kg="-",q2=t=>{const n=J2(t),{conflictingClassGroups:r,conflictingClassGroupModifiers:s}=t;return{getClassGroupId:l=>{const o=l.split(kg);return o[0]===""&&o.length!==1&&o.shift(),C0(o,n)||Y2(l)},getConflictingClassGroupIds:(l,o)=>{const d=r[l]||[];return o&&s[l]?[...d,...s[l]]:d}}},C0=(t,n)=>{var l;if(t.length===0)return n.classGroupId;const r=t[0],s=n.nextPart.get(r),i=s?C0(t.slice(1),s):void 0;if(i)return i;if(n.validators.length===0)return;const a=t.join(kg);return(l=n.validators.find(({validator:o})=>o(a)))==null?void 0:l.classGroupId},Mf=/^\[(.+)\]$/,Y2=t=>{if(Mf.test(t)){const n=Mf.exec(t)[1],r=n==null?void 0:n.substring(0,n.indexOf(":"));if(r)return"arbitrary.."+r}},J2=t=>{const{theme:n,prefix:r}=t,s={nextPart:new Map,validators:[]};return X2(Object.entries(t.classGroups),r).forEach(([a,l])=>{Ih(l,s,a,n)}),s},Ih=(t,n,r,s)=>{t.forEach(i=>{if(typeof i=="string"){const a=i===""?n:Of(n,i);a.classGroupId=r;return}if(typeof i=="function"){if(Q2(i)){Ih(i(s),n,r,s);return}n.validators.push({validator:i,classGroupId:r});return}
vendor: 4,829 bytes, line 290
290Object.entries(i).forEach(([a,l])=>{Ih(l,Of(n,a),r,s)})})},Of=(t,n)=>{let r=t;return n.split(kg).forEach(s=>{r.nextPart.has(s)||r.nextPart.set(s,{nextPart:new Map,validators:[]}),r=r.nextPart.get(s)}),r},Q2=t=>t.isThemeGetter,X2=(t,n)=>n?t.map(([r,s])=>{const i=s.map(a=>typeof a=="string"?n+a:typeof a=="object"?Object.fromEntries(Object.entries(a).map(([l,o])=>[n+l,o])):a);return[r,i]}):t,e1=t=>{if(t<1)return{get:()=>{},set:()=>{}};let n=0,r=new Map,s=new Map;const i=(a,l)=>{r.set(a,l),n++,n>t&&(n=0,s=r,r=new Map)};return{get(a){let l=r.get(a);if(l!==void 0)return l;if((l=s.get(a))!==void 0)return i(a,l),l},set(a,l){r.has(a)?r.set(a,l):i(a,l)}}},P0="!",t1=t=>{const{separator:n,experimentalParseClassName:r}=t,s=n.length===1,i=n[0],a=n.length,l=o=>{const d=[];let c=0,u=0,h;for(let b=0;b<o.length;b++){let x=o[b];if(c===0){if(x===i&&(s||o.slice(b,b+a)===n)){d.push(o.slice(u,b)),u=b+a;continue}if(x==="/"){h=b;continue}}x==="["?c++:x==="]"&&c--}const g=d.length===0?o:o.substring(u),m=g.startsWith(P0),j=m?g.substring(1):g,p=h&&h>u?h-u:void 0;return{modifiers:d,hasImportantModifier:m,baseClassName:j,maybePostfixModifierPosition:p}};return r?o=>r({className:o,parseClassName:l}):l},n1=t=>{if(t.length<=1)return t;const n=[];let r=[];return t.forEach(s=>{s[0]==="["?(n.push(...r.sort(),s),r=[]):r.push(s)}),n.push(...r.sort()),n},r1=t=>({cache:e1(t.cacheSize),parseClassName:t1(t),...q2(t)}),s1=/\s+/,i1=(t,n)=>{const{parseClassName:r,getClassGroupId:s,getConflictingClassGroupIds:i}=n,a=[],l=t.trim().split(s1);let o="";for(let d=l.length-1;d>=0;d-=1){const c=l[d],{modifiers:u,hasImportantModifier:h,baseClassName:g,maybePostfixModifierPosition:m}=r(c);let j=!!m,p=s(j?g.substring(0,m):g);if(!p){if(!j){o=c+(o.length>0?" "+o:o);continue}if(p=s(g),!p){o=c+(o.length>0?" "+o:o);continue}j=!1}const b=n1(u).join(":"),x=h?b+P0:b,f=x+p;if(a.includes(f))continue;a.push(f);const v=i(p,j);for(let w=0;w<v.length;++w){const k=v[w];a.push(x+k)}o=c+(o.length>0?" "+o:o)}return o};function a1(){let t=0,n,r,s="";for(;t<arguments.length;)(n=arguments[t++])&&(r=E0(n))&&(s&&(s+=" "),s+=r);return s}const E0=t=>{if(typeof t=="string")return t;let n,r="";for(let s=0;s<t.length;s++)t[s]&&(n=E0(t[s]))&&(r&&(r+=" "),r+=n);return r};function l1(t,...n){let r,s,i,a=l;function l(d){const c=n.reduce((u,h)=>h(u),t());return r=r1(c),s=r.cache.get,i=r.cache.set,a=o,o(d)}function o(d){const c=s(d);if(c)return c;const u=i1(d,r);return i(d,u),u}return function(){return a(a1.apply(null,arguments))}}const Se=t=>{const n=r=>r[t]||[];return n.isThemeGetter=!0,n},T0=/^\[(?:([a-z-]+):)?(.+)\]$/i,o1=/^\d+\/\d+$/,d1=new Set(["px","full","screen"]),c1=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,u1=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,h1=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,m1=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,g1=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Vn=t=>Si(t)||d1.has(t)||o1.test(t),jr=t=>ea(t,"length",w1),Si=t=>!!t&&!Number.isNaN(Number(t)),du=t=>ea(t,"number",Si),ja=t=>!!t&&Number.isInteger(Number(t)),p1=t=>t.endsWith("%")&&Si(t.slice(0,-1)),re=t=>T0.test(t),vr=t=>c1.test(t),f1=new Set(["length","size","percentage"]),x1=t=>ea(t,f1,z0),b1=t=>ea(t,"position",z0),j1=new Set(["image","url"]),v1=t=>ea(t,j1,N1),y1=t=>ea(t,"",k1),va=()=>!0,ea=(t,n,r)=>{const s=T0.exec(t);return s?s[1]?typeof n=="string"?s[1]===n:n.has(s[1]):r(s[2]):!1},w1=t=>u1.test(t)&&!h1.test(t),z0=()=>!1,k1=t=>m1.test(t),N1=t=>g1.test(t),S1=()=>{const t=Se("colors"),n=Se("spacing"),r=Se("blur"),s=Se("brightness"),i=Se("borderColor"),a=Se("borderRadius"),l=Se("borderSpacing"),o=Se("borderWidth"),d=Se("contrast"),c=Se("grayscale"),u=Se("hueRotate"),h=Se("invert"),g=Se("gap"),m=Se("gradientColorStops"),j=Se("gradientColorStopPositions"),p=Se("inset"),b=Se("margin"),x=Se("opacity"),f=Se("padding"),v=Se("saturate"),w=Se("scale"),k=Se("sepia"),N=Se("skew"),S=Se("space"),A=Se("translate"),P=()=>["auto","contain","none"],D=()=>["auto","hidden","clip","visible","scroll"],G=()=>["auto",re,n],O=()=>[re,n],V=()=>["",Vn,jr],R=()=>["auto",Si,re],Y=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],U=()=>["solid","dashed","dotted","double","none"],H=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],C=()=>["start","end","center","between","around","evenly","stretch"],z=()=>["","0",re],I=()=>["auto","avoid","all","avoid-page","page","left","right","column"],$=()=>[Si,re];return{cacheSize:500,separator:":",theme:{colors:[va],spacing:[Vn,jr],blur:["none","",vr,re],brightness:$(),borderColor:[t],borderRadius:["n
290one","","full",vr,re],borderSpacing:O(),borderWidth:V(),contrast:$(),grayscale:z(),hueRotate:$(),invert:z(),gap:O(),gradientColorStops:[t],gradientColorStopPositions:[p1,jr],inset:G(),margin:G(),opacity:$(),padding:O(),saturate:$(),scale:$(),sepia:z(),skew:$(),space:O(),translate:O()},classGroups:{aspect:[{aspect:["auto","square","video",re]}],container:["container"],columns:[{columns:[vr]}],"break-after":[{"break-after":I()}],"break-before":[{"break-before":I()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Y(),re]}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:P()}],"overscroll-x":[{"overscroll-x":P()}],"overscroll-y":[{"overscroll-y":P()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[p]}],"inset-x":[{"inset-x":[p]}],"inset-y":[{"inset-y":[p]}],start:[{start:[p]}],end:[{end:[p]}],top:[{top:[p]}],right:[{right:[p]}],bottom:[{bottom:[p]}],left:[{left:[p]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ja,re]}],basis:[{basis:G()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",re]}],grow:[{grow:z()}],shrink:[{shrink:z()}],order:[{order:["first","last","none",ja,re]}],"grid-cols":[{"grid-cols":[va]}],"col-start-end":[{col:["auto",{span:["full",ja,re]},re]}],"col-start":[{"col-start":R()}],"col-end":[{"col-end":R()}],"grid-rows":[{"grid-rows":[va]}],"row-start-end":[{row:["auto",{span:[ja,re]},re]}],"row-start":[{"row-start":R()}],"row-end":[{"row-end":R()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",re]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",re]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...C()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...C(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...C(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[f]}],px:[{px:[f]}],py:[{py:[f]}],ps:[{ps:[f]}],pe:[{pe:[f]}],pt:[{pt:[f]}],pr:[{pr:[f]}],pb:[{pb:[f]}],pl:[{pl:[f]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[S]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[S]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",re,n]}],"min-w":[{"min-w":[re,n,"min","max","fit"]}],"max-w":[{"max-w":[re,n,"none","full","min","max","fit","prose",{screen:[vr]},vr]}],h:[{h:[re,n,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[re,n,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[re,n,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[re,n,"auto","min","max","fit"]}],"font-size":[{text:["base",vr,jr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",du]}],"font-family":[{font:[va]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",re]}],"line-clamp":[{"line-clamp":["none",Si,du]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Vn,re]}],"list-image":[{"list-image":["none",re]}],"list-style-type":[{list:["none","disc","decimal",re]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[t]}],"placeholder-opacity":[{"placeholder-opacity":[x]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[t]}],"text-opacity":[{"text-opacity":[x]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...U(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Vn,jr]}],"underline-offset":[{"underline-offset":["auto",Vn,re]}],"text-decoration-color":[{decoration:[t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:O()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",re]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",re]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[x]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Y(),b1]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",x1]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},v1]}],"bg-color":[{bg:[t]}],"gradient-from-pos":[{from:[j]}
vendor: 4,885 bytes, line 290
290],"gradient-via-pos":[{via:[j]}],"gradient-to-pos":[{to:[j]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[o]}],"border-w-x":[{"border-x":[o]}],"border-w-y":[{"border-y":[o]}],"border-w-s":[{"border-s":[o]}],"border-w-e":[{"border-e":[o]}],"border-w-t":[{"border-t":[o]}],"border-w-r":[{"border-r":[o]}],"border-w-b":[{"border-b":[o]}],"border-w-l":[{"border-l":[o]}],"border-opacity":[{"border-opacity":[x]}],"border-style":[{border:[...U(),"hidden"]}],"divide-x":[{"divide-x":[o]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[o]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[x]}],"divide-style":[{divide:U()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:["",...U()]}],"outline-offset":[{"outline-offset":[Vn,re]}],"outline-w":[{outline:[Vn,jr]}],"outline-color":[{outline:[t]}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[t]}],"ring-opacity":[{"ring-opacity":[x]}],"ring-offset-w":[{"ring-offset":[Vn,jr]}],"ring-offset-color":[{"ring-offset":[t]}],shadow:[{shadow:["","inner","none",vr,y1]}],"shadow-color":[{shadow:[va]}],opacity:[{opacity:[x]}],"mix-blend":[{"mix-blend":[...H(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":H()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[s]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",vr,re]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[h]}],saturate:[{saturate:[v]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[s]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[h]}],"backdrop-opacity":[{"backdrop-opacity":[x]}],"backdrop-saturate":[{"backdrop-saturate":[v]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",re]}],duration:[{duration:$()}],ease:[{ease:["linear","in","out","in-out",re]}],delay:[{delay:$()}],animate:[{animate:["none","spin","ping","pulse","bounce",re]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[ja,re]}],"translate-x":[{"translate-x":[A]}],"translate-y":[{"translate-y":[A]}],"skew-x":[{"skew-x":[N]}],"skew-y":[{"skew-y":[N]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",re]}],accent:[{accent:["auto",t]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",re]}],"caret-color":[{caret:[t]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":O()}],"scroll-mx":[{"scroll-mx":O()}],"scroll-my":[{"scroll-my":O()}],"scroll-ms":[{"scroll-ms":O()}],"scroll-me":[{"scroll-me":O()}],"scroll-mt":[{"scroll-mt":O()}],"scroll-mr":[{"scroll-mr":O()}],"scroll-mb":[{"scroll-mb":O()}],"scroll-ml":[{"scroll-ml":O()}],"scroll-p":[{"scroll-p":O()}],"scroll-px":[{"scroll-px":O()}],"scroll-py":[{"scroll-py":O()}],"scroll-ps":[{"scroll-ps":O()}],"scroll-pe":[{"scroll-pe":O()}],"scroll-pt":[{"scroll-pt":O()}
vendor: 5,311 bytes, line 290
290],"scroll-pr":[{"scroll-pr":O()}],"scroll-pb":[{"scroll-pb":O()}],"scroll-pl":[{"scroll-pl":O()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",re]}],fill:[{fill:[t,"none"]}],"stroke-w":[{stroke:[Vn,jr,du]}],stroke:[{stroke:[t,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},A1=l1(S1);function de(...t){return A1(v0(t))}function C1(t){return t.toLowerCase().trim().replace(/[\u{1F600}-\u{1F64F}]/gu,"").replace(/[\u{1F300}-\u{1F5FF}]/gu,"").replace(/[\u{1F680}-\u{1F6FF}]/gu,"").replace(/[\u{1F1E0}-\u{1F1FF}]/gu,"").replace(/[\u{2600}-\u{26FF}]/gu,"").replace(/[\u{2700}-\u{27BF}]/gu,"").replace(/[^\w\s-äöüÃÃÃÃ]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}const P1=k2,D0=y.forwardRef(({className:t,...n},r)=>e.jsx(m0,{ref:r,className:de("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...n}));D0.displayName=m0.displayName;const E1=tc("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),_0=y.forwardRef(({className:t,variant:n,...r},s)=>e.jsx(g0,{ref:s,className:de(E1({variant:n}),t),...r}));_0.displayName=g0.displayName;const T1=y.forwardRef(({className:t,...n},r)=>e.jsx(x0,{ref:r,className:de("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",t),...n}));T1.displayName=x0.displayName;const M0=y.forwardRef(({className:t,...n},r)=>e.jsx(b0,{ref:r,className:de("absolute right-2 top-2 rounded-md p-1 text-foreground
290/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...n,children:e.jsx(Hi,{className:"h-4 w-4"})}));M0.displayName=b0.displayName;const O0=y.forwardRef(({className:t,...n},r)=>e.jsx(p0,{ref:r,className:de("text-sm font-semibold",t),...n}));O0.displayName=p0.displayName;const R0=y.forwardRef(({className:t,...n},r)=>e.jsx(f0,{ref:r,className:de("text-sm opacity-90",t),...n}));R0.displayName=f0.displayName;function z1(){const{toasts:t}=pg();return e.jsxs(P1,{children:[t.map(function({id:n,title:r,description:s,action:i,...a}){return e.jsxs(_0,{...a,children:[e.jsxs("div",{className:"grid gap-1",children:[r&&e.jsx(O0,{children:r}),s&&e.jsx(R0,{children:s})]}),i,e.jsx(M0,{})]},n)}),e.jsx(D0,{})]})}var Rf=["light","dark"],D1="(prefers-color-scheme: dark)",_1=y.createContext(void 0),M1={setTheme:t=>{},themes:[]},O1=()=>{var t;return(t=y.useContext(_1))!=null?t:M1};y.memo(({forcedTheme:t,storageKey:n,attribute:r,enableSystem:s,enableColorScheme:i,defaultTheme:a,value:l,attrs:o,nonce:d})=>{let c=a==="system",u=r==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${o.map(j=>`'${j}'`).join(",")})`};`:`var d=document.documentElement,n='${r}',s='setAttribute';`,h=i?Rf.includes(a)&&a?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${a}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",g=(j,p=!1,b=!0)=>{let x=l?l[j]:j,f=p?j+"|| ''":`'${x}'`,v="";return i&&b&&!p&&Rf.includes(j)&&(v+=`d.style.colorScheme = '${j}';`),r==="class"?p||x?v+=`c.add(${f})`:v+="null":x&&(v+=`d[s](n,${f})`),v},m=t?`!function(){${u}${g(t)}}()`:s?`!function(){try{${u}var e=localStorage.getItem('${n}');if('system'===e||(!e&&${c})){var t='${D1}',m=window.matchMedia(t);if(m.media!==t||m.matches){${g("dark")}}else{${g("light")}}}else if(e){${l?`var x=${JSON.stringify(l)};`:""}${g(l?"x[e]":"e",!0)}}${c?"":"else{"+g(a,!1,!1)+"}"}${h}}catch(e){}}()`:`!function(){try{${u}var e=localStorage.getItem('${n}');if(e){${l?`var x=${JSON.stringify(l)};`:""}${g(l?"x[e]":"e",!0)}}else{${g(a,!1,!1)};}${h}}catch(t){}}();`;return y.createElement("script",{nonce:d,dangerouslySetInnerHTML:{__html:m}})});var R1=t=>{switch(t){case"success":return B1;case"info":return F1;case"warning":return K1;case"error":return L1;default:return null}},G1=Array(12).fill(0),I1=({visible:t,className:n})=>_.createElement("div",{className:["sonner-loading-wrapper",n].filter(Boolean).join(" "),"data-visible":t},_.createElement("div",{className:"sonner-spinner"},G1.map((r,s)=>_.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),B1=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),K1=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),F1=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),L1=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),W1=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},_.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),_.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),V1=()=>{let[t,n]=_.useState(document.hidden);return _.useEffect(()=>{let r=()=>{n(document.hidden)};return document.addEventListener("visibilitychange",r),()=>window.removeEventListener("visibilitychange",r)},[]),t},Bh=1,U1=class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>
290{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;let{message:r,...s}=t,i=typeof(t==null?void 0:t.id)=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Bh++,a=this.toasts.find(o=>o.id===i),l=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(i)&&this.dismissedToasts.delete(i),a?this.toasts=this.toasts.map(o=>o.id===i?(this.publish({...o,...t,id:i,title:r}),{...o,...t,id:i,dismissible:l,title:r}):o):this.addToast({title:r,...s,dismissible:l,id:i}),i},this.dismiss=t=>(this.dismissedToasts.add(t),t||this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),this.subscribers.forEach(n=>n({id:t,dismiss:!0})),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));let s=t instanceof Promise?t:t(),i=r!==void 0,a,l=s.then(async d=>{if(a=["resolve",d],_.isValidElement(d))i=!1,this.create({id:r,type:"default",message:d});else if(H1(d)&&!d.ok){i=!1;let c=typeof n.error=="function"?await n.error(`HTTP error! status: ${d.status}`):n.error,u=typeof n.description=="function"?await n.description(`HTTP error! status: ${d.status}`):n.description;this.create({id:r,type:"error",message:c,description:u})}else if(n.success!==void 0){i=!1;let c=typeof n.success=="function"?await n.success(d):n.success,u=typeof n.description=="function"?await n.description(d):n.description;this.create({id:r,type:"success",message:c,description:u})}}).catch(async d=>{if(a=["reject",d],n.error!==void 0){i=!1;let c=typeof n.error=="function"?await n.error(d):n.error,u=typeof n.description=="function"?await n.description(d):n.description;this.create({id:r,type:"error",message:c,description:u})}}).finally(()=>{var d;i&&(this.dismiss(r),r=void 0),(d=n.finally)==null||d.call(n)}),o=()=>new Promise((d,c)=>l.then(()=>a[0]==="reject"?c(a[1]):d(a[1])).catch(c));return typeof r!="string"&&typeof r!="number"?{unwrap:o}:Object.assign(r,{unwrap:o})},this.custom=(t,n)=>{let r=(n==null?void 0:n.id)||Bh++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},yt=new U1,$1=(t,n)=>{let r=(n==null?void 0:n.id)||Bh++;return yt.addToast({title:t,...n,id:r}),r},H1=t=>t&&typeof t=="object"&&"ok"in t&&typeof t.ok=="boolean"&&"status"in t&&typeof t.status=="number",Z1=$1,q1=()=>yt.toasts,Y1=()=>yt.getActiveToasts();Object.assign(Z1,{success:yt.success,info:yt.info,warning:yt.warning,error:yt.error,custom:yt.custom,message:yt.message,promise:yt.promise,dismiss:yt.dismiss,loading:yt.loading},{getHistory:q1,getToasts:Y1});function J1(t,{insertAt:n}={}){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",n==="top"&&r.firstChild?r.insertBefore(s,r.firstChild):r.appendChild(s),s.styleSheet?s.styleSheet.cssText=t:s.appendChild(document.createTextNode(t))}J1(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
290left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
290:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
290--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} 291`);function oo(t){return t.label!==void 0}var Q1=3,X1="32px",eC="16px",Gf=4e3,tC=356,nC=14,rC=20,sC=200;function an(...t){return t.filter(Boolean).join(" ")}function iC(t){let[n,r]=t.split("-"),s=[];return n&&s.push(n),r&&s.push(r),s}var aC=t=>{var n,r,s,i,a,l,o,d,c,u,h;let{invert:g,toast:m,unstyled:j,interacting:p,setHeights:b,visibleToasts:x,heights:f,index:v,toasts:w,expanded:k,removeToast:N,defaultRichColors:S,closeButton:A,style:P,cancelButtonStyle:D,actionButtonStyle:G,className:O="",descriptionClassName:V="",duration:R,position:Y,gap:U,loadingIcon:H,expandByDefault:C,classNames:z,icons:I,closeButtonAriaLabel:$="Close toast",pauseWhenPageIsHidden:L}=t,[ee,J]=_.useState(null),[be,Oe]=_.useState(null),[te,Re]=_.useState(!1),[Ze,Fe]=_.useState(!1),[he,K]=_.useState(!1),[le,Ne]=_.useState(!1),[Ve,ut]=_.useState(!1),[Ct,Pt]=_.useState(0),[ht,An]=_.useState(0),Jt=_.useRef(m.duration||R||Gf),Us=_.useRef(null),Qt=_.useRef(null),Gl=v===0,Il=v+1<=x,vt=m.type,Ln=m.dismissible!==!1,Ec=m.className||"",oa=m.descriptionClassName||"",Xt=_.useMemo(()=>f.findIndex(Q=>Q.toastId===m.id)||0,[f,m.id]),da=_.useMemo(()=>{var Q;return(Q=m.closeButton)!=null?Q:A},[m.closeButton,A]),$s=_.useMemo(()=>m.duration||R||Gf,[m.duration,R]),mr=_.useRef(0),gr=_.useRef(0),Bl=_.useRef(0),pr=_.useRef(null),[Tc,zc]=Y.split("-"),ca=_.useMemo(()=>f.reduce((Q,ge,je)=>je>=Xt?Q:Q+ge.height,0),[f,Xt]),Kl=V1(),Fl=m.invert||g,Hs=vt==="loading";gr.current=_.useMemo(()=>Xt*U+ca,[Xt,ca]),_.useEffect(()=>{Jt.current=$s},[$s]),_.useEffect(()=>{Re(!0)},[]),_.useEffect(()=>{let Q=Qt.current;if(Q){let ge=Q.getBoundingClientRect().height;return An(ge),b(je=>[{toastId:m.id,height:ge,position:m.position},...je]),()=>b(je=>je.filter(tn=>tn.toastId!==m.id))}},[b,m.id]),_.useLayoutEffect(()=>{if(!te)return;let Q=Qt.current,ge=Q.style.height;Q.style.height="auto";let je=Q.getBoundingClientRect().height;Q.style.height=ge,An(je),b(tn=>tn.find(nn=>nn.toastId===m.id)?tn.map(nn=>nn.toastId===m.id?{...nn,height:je}:nn):[{toastId:m.id,height:je,position:m.position},...tn])},[te,m.title,m.description,b,m.id]);let en=_.useCallback(()=>{Fe(!0),Pt(gr.current),b(Q=>Q.filter(ge=>ge.toastId!==m.id)),setTimeout(()=>{N(m)},sC)},[m,N,b,gr]);_.useEffect(()=>{if(m.promise&&vt==="loading"||m.duration===1/0||m.type==="loading")return;let Q;return k||p||L&&Kl?(()=>{if(Bl.current<mr.current){let ge=new Date().getTime()-mr.current;Jt.current=Jt.current-ge}
291Bl.current=new Date().getTime()})():Jt.current!==1/0&&(mr.current=new Date().getTime(),Q=setTimeout(()=>{var ge;(ge=m.onAutoClose)==null||ge.call(m,m),en()},Jt.current)),()=>clearTimeout(Q)},[k,p,m,vt,L,Kl,en]),_.useEffect(()=>{m.delete&&en()},[en,m.delete]);function Dc(){var Q,ge,je;return I!=null&&I.loading?_.createElement("div",{className:an(z==null?void 0:z.loader,(Q=m==null?void 0:m.classNames)==null?void 0:Q.loader,"sonner-loader"),"data-visible":vt==="loading"},I.loading):H?_.createElement("div",{className:an(z==null?void 0:z.loader,(ge=m==null?void 0:m.classNames)==null?void 0:ge.loader,"sonner-loader"),"data-visible":vt==="loading"},H):_.createElement(I1,{className:an(z==null?void 0:z.loader,(je=m==null?void 0:m.classNames)==null?void 0:je.loader),visible:vt==="loading"})}return _.createElement("li",{tabIndex:0,ref:Qt,className:an(O,Ec,z==null?void 0:z.toast,(n=m==null?void 0:m.classNames)==null?void 0:n.toast,z==null?void 0:z.default,z==null?void 0:z[vt],(r=m==null?void 0:m.classNames)==null?void 0:r[vt]),"data-sonner-toast":"","data-rich-colors":(s=m.richColors)!=null?s:S,"data-styled":!(m.jsx||m.unstyled||j),"data-mounted":te,"data-promise":!!m.promise,"data-swiped":Ve,"data-removed":Ze,"data-visible":Il,"data-y-position":Tc,"data-x-position":zc,"data-index":v,"data-front":Gl,"data-swiping":he,"data-dismissible":Ln,"data-type":vt,"data-invert":Fl,"data-swipe-out":le,"data-swipe-direction":be,"data-expanded":!!(k||C&&te),style:{"--index":v,"--toasts-before":v,"--z-index":w.length-v,"--offset":`${Ze?Ct:gr.current}px`,"--initial-height":C?"auto":`${ht}px`,...P,...m.style},onDragEnd:()=>{K(!1),J(null),pr.current=null},onPointerDown:Q=>{Hs||!Ln||(Us.current=new Date,Pt(gr.current),Q.target.setPointerCapture(Q.pointerId),Q.target.tagName!=="BUTTON"&&(K(!0),pr.current={x:Q.clientX,y:Q.clientY}))},onPointerUp:()=>{var Q,ge,je,tn;if(le||!Ln)return;pr.current=null;let nn=Number(((Q=Qt.current)==null?void 0:Q.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),fr=Number(((ge=Qt.current)==null?void 0:ge.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),as=new Date().getTime()-((je=Us.current)==null?void 0:je.getTime()),rn=ee==="x"?nn:fr,xr=Math.abs(rn)/as;if(Math.abs(rn)>=rC||xr>.11){Pt(gr.current),(tn=m.onDismiss)==null||tn.call(m,m),Oe(ee==="x"?nn>0?"right":"left":fr>0?"down":"up"),en(),Ne(!0),ut(!1);return}K(!1),J(null)},onPointerMove:Q=>{var ge,je,tn,nn;if(!pr.current||!Ln||((ge=window.getSelection())==null?void 0:ge.toString().length)>0)return;let fr=Q.clientY-pr.current.y,as=Q.clientX-pr.current.x,rn=(je=t.swipeDirections)!=null?je:iC(Y);!ee&&(Math.abs(as)>1||Math.abs(fr)>1)&&J(Math.abs(as)>Math.abs(fr)?"x":"y");let xr={x:0,y:0};ee==="y"?(rn.includes("top")||rn.includes("bottom"))&&(rn.includes("top")&&fr<0||rn.includes("bottom")&&fr>0)&&(xr.y=fr):ee==="x"&&(rn.includes("left")||rn.includes("right"))&&(rn.includes("left")&&as<0||rn.includes("right")&&as>0)&&(xr.x=as),(Math.abs(xr.x)>0||Math.abs(xr.y)>0)&&ut(!0),(tn=Qt.current)==null||tn.style.setProperty("--swipe-amount-x",`${xr.x}px`),(nn=Qt.current)==null||nn.style.setProperty("--swipe-amount-y",`${xr.y}px`)}},da&&!m.jsx?_.createElement("button",{"aria-label":$,"data-disabled":Hs,"data-close-button":!0,onClick:Hs||!Ln?()=>{}:()=>{var Q;en(),(Q=m.onDismiss)==null||Q.call(m,m)},className:an(z==null?void 0:z.closeButton,(i=m==null?void 0:m.classNames)==null?void 0:i.closeButton)},(a=I==null?void 0:I.close)!=null?a:W1):null,m.jsx||y.isValidElement(m.title)?m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title:_.createElement(_.Fragment,null,vt||m.icon||m.promise?_.createElement("div",{"data-icon":"",className:an(z==null?void 0:z.icon,(l=m==null?void 0:m.classNames)==null?void 0:l.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||Dc():null,m.type!=="loading"?m.
vendor: 6,072 bytes, line 291
291icon||(I==null?void 0:I[vt])||R1(vt):null):null,_.createElement("div",{"data-content":"",className:an(z==null?void 0:z.content,(o=m==null?void 0:m.classNames)==null?void 0:o.content)},_.createElement("div",{"data-title":"",className:an(z==null?void 0:z.title,(d=m==null?void 0:m.classNames)==null?void 0:d.title)},typeof m.title=="function"?m.title():m.title),m.description?_.createElement("div",{"data-description":"",className:an(V,oa,z==null?void 0:z.description,(c=m==null?void 0:m.classNames)==null?void 0:c.description)},typeof m.description=="function"?m.description():m.description):null),y.isValidElement(m.cancel)?m.cancel:m.cancel&&oo(m.cancel)?_.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||D,onClick:Q=>{var ge,je;oo(m.cancel)&&Ln&&((je=(ge=m.cancel).onClick)==null||je.call(ge,Q),en())},className:an(z==null?void 0:z.cancelButton,(u=m==null?void 0:m.classNames)==null?void 0:u.cancelButton)},m.cancel.label):null,y.isValidElement(m.action)?m.action:m.action&&oo(m.action)?_.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||G,onClick:Q=>{var ge,je;oo(m.action)&&((je=(ge=m.action).onClick)==null||je.call(ge,Q),!Q.defaultPrevented&&en())},className:an(z==null?void 0:z.actionButton,(h=m==null?void 0:m.classNames)==null?void 0:h.actionButton)},m.action.label):null))};function If(){if(typeof window>"u"||typeof document>"u")return"ltr";let t=document.documentElement.getAttribute("dir");return t==="auto"||!t?window.getComputedStyle(document.documentElement).direction:t}function lC(t,n){let r={};return[t,n].forEach((s,i)=>{let a=i===1,l=a?"--mobile-offset":"--offset",o=a?eC:X1;function d(c){["top","right","bottom","left"].forEach(u=>{r[`${l}-${u}`]=typeof c=="number"?`${c}px`:c})}typeof s=="number"||typeof s=="string"?d(s):typeof s=="object"?["top","right","bottom","left"].forEach(c=>{s[c]===void 0?r[`${l}-${c}`]=o:r[`${l}-${c}`]=typeof s[c]=="number"?`${s[c]}px`:s[c]}):d(o)}),r}var oC=y.forwardRef(function(t,n){let{invert:r,position:s="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:l,className:o,offset:d,mobileOffset:c,theme:u="light",richColors:h,duration:g,style:m,visibleToasts:j=Q1,toastOptions:p,dir:b=If(),gap:x=nC,loadingIcon:f,icons:v,containerAriaLabel:w="Notifications",pauseWhenPageIsHidden:k}=t,[N,S]=_.useState([]),A=_.useMemo(()=>Array.from(new Set([s].concat(N.filter(L=>L.position).map(L=>L.position)))),[N,s]),[P,D]=_.useState([]),[G,O]=_.useState(!1),[V,R]=_.useState(!1),[Y,U]=_.useState(u!=="system"?u:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),H=_.useRef(null),C=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),z=_.useRef(null),I=_.useRef(!1),$=_.useCallback(L=>{S(ee=>{var J;return(J=ee.find(be=>be.id===L.id))!=null&&J.delete||yt.dismiss(L.id),ee.filter(({id:be})=>be!==L.id)})},[]);return _.useEffect(()=>yt.subscribe(L=>{if(L.dismiss){S(ee=>ee.map(J=>J.id===L.id?{...J,delete:!0}:J));return}setTimeout(()=>{Vv.flushSync(()=>{S(ee=>{let J=ee.findIndex(be=>be.id===L.id);return J!==-1?[...ee.slice(0,J),{...ee[J],...L},...ee.slice(J+1)]:[L,...ee]})})})}),[]),_.useEffect(()=>{if(u!=="system"){U(u);return}if(u==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?U("dark"):U("light")),typeof window>"u")return;let L=window.matchMedia("(prefers-color-scheme: dark)");try{L.addEventListener("change",({matches:ee})=>{U(ee?"dark":"light")})}catch{L.addListener(({matches:J})=>{try{U(J?"dark":"light")}catch(be){console.error(be)}})}},[u]),_.useEffect(()=>{N.length<=1&&O(!1)},[N]),_.useEffect(()=>{let L=ee=>{var J,be;i.every(Oe=>ee[Oe]||ee.code===Oe)&&(O(!0),(J=H.current)==null||J.focus()),ee.code==="Escape"&&(document.activeElement===H.current||(be=H.current)!=null&&be.contains(document.activeElement))&&O(!1)};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[i]),_.useEffect(()=>{if(H.current)return()=>{z.current&&(z.current.focus({preventScroll:!0}),z.current=null,I.current=!1)}},[H.current]),_.createElement("section",{ref:n,"aria-label":`${w} ${C}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},A.map((L,ee)=>{var J;let[be,Oe]=L.split("-");return N.length?_.createElement("ol",{key:L,dir:b==="auto"?If():b,tabIndex:-1,ref:H,className:o,"data-sonner-toaster":!0,"data-theme":Y,"data-y-position":be,"data-lifted":G&&N.length>1&&!a,"data-x-position":Oe,style:{"--front-toast-height":`${((J=P[0])==null?void 0:J.height)||0}px`,"--width":`${tC}px`,"--gap":`${x}px`,...m,...lC(d,c)},onBlur:te=>{I.current&&!te.currentTarget.contains(te.relatedTarget)&&(I.current=!1,z.current&&(z.current.focus({preventScroll:!0}),z.current=null))},onFocus:te=>{te.target instanceof HTMLElement&&te.target.dataset.dismissible==="false"||I.current||(I.current=!0,z.current=te.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{V||O(!1)},onDragEnd:()=>O(!1),onPointerDown:te=>{te.target instanceof HTMLElement&&te.target.dataset.dismissible==="false"||R(!0)},onPointerUp:()=>R(!1)},N.filter(te=>!te.position&&ee===0||te.position===L).map((te,Re)=>{var Ze,Fe;return _.createElement(aC,{key:te.id,icons:v,index:Re,toast:te,defaultRichColors:h,duration:(Ze=p==null?void 0:p.duration)!=null?Ze:g,className:p==null?void 0:p.className,descriptionClassName:p==null?void 0:p.descriptionClassName,invert:r,visibleToasts:j,closeButton:(Fe=p==null?void 0:p.closeButton)!=null?Fe:l,interacting:V,position:L,style:p==null?void 0:p.style,unstyled:p==null?void 0:p.unstyled,classNames:p==null?void 0:p.classNames,cancelButtonStyle:p==null?void 0:p.cancelButtonStyle,actionButtonStyle:p==null?void 0:p.actionButtonStyle,removeToast:$,toasts:N.filter(he=>he.position==te.position),heights:P.filter(he=>he.position==te.position),setHeights:D,expandByDefault:a,gap:x,loadingIcon:f,expanded:G,pauseWhenPageIsHidden:k,swipeDirections:t.swipeDirections})})):null}))});const dC=({...t})=>{const{theme:n="system"}=O1();
vendor: 7,205 bytes, line 291
291return e.jsx(oC,{theme:n,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...t})};var cC=Nm[" useId ".trim().toString()]||(()=>{}),uC=0;function Ka(t){const[n,r]=y.useState(cC());return In(()=>{r(s=>s??String(uC++))},[t]),n?`radix-${n}`:""}const hC=["top","right","bottom","left"],qr=Math.min,zt=Math.max,wd=Math.round,co=Math.floor,Rn=t=>({x:t,y:t}),mC={left:"right",right:"left",bottom:"top",top:"bottom"},gC={start:"end",end:"start"};function Kh(t,n,r){return zt(t,qr(n,r))}function or(t,n){return typeof t=="function"?t(n):t}function dr(t){return t.split("-")[0]}function ta(t){return t.split("-")[1]}function Ng(t){return t==="x"?"y":"x"}function Sg(t){return t==="y"?"height":"width"}const pC=new Set(["top","bottom"]);function _n(t){return pC.has(dr(t))?"y":"x"}function Ag(t){return Ng(_n(t))}function fC(t,n,r){r===void 0&&(r=!1);const s=ta(t),i=Ag(t),a=Sg(i);let l=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return n.reference[a]>n.floating[a]&&(l=kd(l)),[l,kd(l)]}function xC(t){const n=kd(t);return[Fh(t),n,Fh(n)]}function Fh(t){return t.replace(/start|end/g,n=>gC[n])}const Bf=["left","right"],Kf=["right","left"],bC=["top","bottom"],jC=["bottom","top"];function vC(t,n,r){switch(t){case"top":case"bottom":return r?n?Kf:Bf:n?Bf:Kf;case"left":case"right":return n?bC:jC;default:return[]}}function yC(t,n,r,s){const i=ta(t);let a=vC(dr(t),r==="start",s);return i&&(a=a.map(l=>l+"-"+i),n&&(a=a.concat(a.map(Fh)))),a}function kd(t){return t.replace(/left|right|bottom|top/g,n=>mC[n])}function wC(t){return{top:0,right:0,bottom:0,left:0,...t}}function G0(t){return typeof t!="number"?wC(t):{top:t,right:t,bottom:t,left:t}}function Nd(t){const{x:n,y:r,width:s,height:i}=t;return{width:s,height:i,top:r,left:n,right:n+s,bottom:r+i,x:n,y:r}}function Ff(t,n,r){let{reference:s,floating:i}=t;const a=_n(n),l=Ag(n),o=Sg(l),d=dr(n),c=a==="y",u=s.x+s.width/2-i.width/2,h=s.y+s.height/2-i.height/2,g=s[o]/2-i[o]/2;let m;switch(d){case"top":m={x:u,y:s.y-i.height};break;case"bottom":m={x:u,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:h};break;case"left":m={x:s.x-i.width,y:h};break;default:m={x:s.x,y:s.y}}switch(ta(n)){case"start":m[l]-=g*(r&&c?-1:1);break;case"end":m[l]+=g*(r&&c?-1:1);break}return m}const kC=async(t,n,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:a=[],platform:l}=r,o=a.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(n));let c=await l.getElementRects({reference:t,floating:n,strategy:i}),{x:u,y:h}=Ff(c,s,d),g=s,m={},j=0;for(let p=0;p<o.length;p++){const{name:b,fn:x}=o[p],{x:f,y:v,data:w,reset:k}=await x({x:u,y:h,initialPlacement:s,placement:g,strategy:i,middlewareData:m,rects:c,platform:l,elements:{reference:t,floating:n}});u=f??u,h=v??h,m={...m,[b]:{...m[b],...w}},k&&j<=50&&(j++,typeof k=="object"&&(k.placement&&(g=k.placement),k.rects&&(c=k.rects===!0?await l.getElementRects({reference:t,floating:n,strategy:i}):k.rects),{x:u,y:h}=Ff(c,g,d)),p=-1)}return{x:u,y:h,placement:g,strategy:i,middlewareData:m}};async function ol(t,n){var r;n===void 0&&(n={});const{x:s,y:i,platform:a,rects:l,elements:o,strategy:d}=t,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:h="floating",altBoundary:g=!1,padding:m=0}=or(n,t),j=G0(m),b=o[g?h==="floating"?"reference":"floating":h],x=Nd(await a.getClippingRect({element:(r=await(a.isElement==null?void 0:a.isElement(b)))==null||r?b:b.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(o.floating)),boundary:c,rootBoundary:u,strategy:d})),f=h==="floating"?{x:s,y:i,width:l.floating.width,height:l.floating.height}:l.reference,v=await(a.getOffsetParent==null?void 0:a.getOffsetParent(o.floating)),w=await(a.isElement==null?void 0:a.isElement(v))?await(a.getScale==null?void 0:a.getScale(v))||{x:1,y:1}:{x:1,y:1},k=Nd(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:f,offsetParent:v,strategy:d}):f);return{top:(x.top-k.top+j.top)/w.y,bottom:(k.bottom-x.bottom+j.bottom)/w.y,left:(x.left-k.left+j.left)/w.x,right:(k.right-x.right+j.right)/w.x}}const NC=t=>({name:"arrow",options:t,async fn(n){const{x:r,y:s,placement:i,rects:a,platform:l,elements:o,middlewareData:d}=n,{element:c,padding:u=0}=or(t,n)||{};if(c==null)return{};const h=G0(u),g={x:r,y:s},m=Ag(i),j=Sg(m),p=await l.getDimensions(c),b=m==="y",x=b?"top":"left",f=b?"bottom":"right",v=b?"clientHeight":"clientWidth",w=a.reference[j]+a.reference[m]-g[m]-a.floating[j],k=g[m]-a.reference[m],N=await(l.getOffsetParent==null?void 0:l.getOffsetParent(c));let S=N?N[v]:0;(!S||!await(l.isElement==null?void 0:l.isElement(N)))&&(S=o.floating[v]||a.floating[j]);const A=w/2-k/2,P=S/2-p[j]/2-1,D=qr(h[x],P),G=qr(h[f],P),O=D,V=S-p[j]-G,R=S/2-p[j]/2+A,Y=Kh(O,R,V),U=!d.arrow&&ta(i)!=null&&R!==Y&&a.reference[j]/2-(R<O?D:G)-p[j]/2<0,H=U?R<O?R-O:R-V:0;return{[m]:g[m]+H,data:{[m]:Y,centerOffset:R-Y-H,...U&&{alignmentOffset:H}},reset:U}}}),SC=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(n){var r,s;const{placement:i,middlewareData:a,rects:l,initialPlacement:o,platform:d,elements:c}=n,{mainAxis:u=!0,crossAxis:h=!0,fallbackPlacements:g,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:j="none",flipAlignment:p=!0,...b}=or(t,n);if((r=a.arrow)!=null&&r.alignmentOffset)return{};const x=dr(i),f=_n(o),v=dr(o)===o,w=await(d.isRTL==null?void 0:d.isRTL(c.floating)),k=g||(v||!p?[kd(o)]:xC(o)),N=j!=="none";!g&&N&&k.push(...yC(o,p,j,w));const S=[o,...k],A=await ol(n,b),P=[];let D=((s=a.flip)==null?void 0:s.overflows)||[];if(u&&P.push(A[x]),h){const R=fC(i,l,w);P.push(A[R[0]],A[R[1]])}if(D=[...D,{placement:i,overflows:P}],!P.every(R=>R<=0)){var G,O;const R=(((G=a.flip)==null?void 0:G.index)||0)+1,Y=S[R];if(Y&&(!(h==="alignment"?f!==_n(Y):!1)||D.every(C=>C.overflows[0]>0&&_n(C.placement)===f)))return{data:{index:R,overflows:D},reset:{placement:Y}};let U=(O=D.filter(H=>H.overflows[0]<=0).sort((H,C)=>H.overflows[1]-C.overflows[1])[0])==null?void 0:O.placement;if(!U)switch(m){case"bestFit":{var V;const H=(V=D.filter(C=>{if(N){const z=_n(C.placement);return z===f||z==="y"}return!0}).map(C=>[C.placement,C.overflows.filter(z=>z>0).reduce((z,I)=>z+I,0)]).sort((C,z)=>C[1]-z[1])[0])==null?void 0:V[0];H&&(U=H);break}case"initialPlacement":U=o;break}if(i!==U)return{reset:{placement:U}}}return{}}}};function Lf(t,n){return{top:t.top-n.height,right:t.right-n.width,bottom:t.bottom-n.height,left:t.left-n.width}}function Wf(t){return hC.some(n=>t[n]>=0)}const AC=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(n){const{rects:r}=n,{strategy:s="referenceHidden",...i}=or(t,n);switch(s){case"referenceHidden":{const a=await ol(n,{...i,elementContext:"reference"}),l=Lf(a,r.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:Wf(l)}}}case"escaped":{const a=await ol(n,{...i,altBoundary:!0}
vendor: 5,415 bytes, line 291
291),l=Lf(a,r.floating);return{data:{escapedOffsets:l,escaped:Wf(l)}}}default:return{}}}}},I0=new Set(["left","top"]);async function CC(t,n){const{placement:r,platform:s,elements:i}=t,a=await(s.isRTL==null?void 0:s.isRTL(i.floating)),l=dr(r),o=ta(r),d=_n(r)==="y",c=I0.has(l)?-1:1,u=a&&d?-1:1,h=or(n,t);let{mainAxis:g,crossAxis:m,alignmentAxis:j}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return o&&typeof j=="number"&&(m=o==="end"?j*-1:j),d?{x:m*u,y:g*c}:{x:g*c,y:m*u}}const PC=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(n){var r,s;const{x:i,y:a,placement:l,middlewareData:o}=n,d=await CC(n,t);return l===((r=o.offset)==null?void 0:r.placement)&&(s=o.arrow)!=null&&s.alignmentOffset?{}:{x:i+d.x,y:a+d.y,data:{...d,placement:l}}}}},EC=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(n){const{x:r,y:s,placement:i}=n,{mainAxis:a=!0,crossAxis:l=!1,limiter:o={fn:b=>{let{x,y:f}=b;return{x,y:f}}},...d}=or(t,n),c={x:r,y:s},u=await ol(n,d),h=_n(dr(i)),g=Ng(h);let m=c[g],j=c[h];if(a){const b=g==="y"?"top":"left",x=g==="y"?"bottom":"right",f=m+u[b],v=m-u[x];m=Kh(f,m,v)}if(l){const b=h==="y"?"top":"left",x=h==="y"?"bottom":"right",f=j+u[b],v=j-u[x];j=Kh(f,j,v)}const p=o.fn({...n,[g]:m,[h]:j});return{...p,data:{x:p.x-r,y:p.y-s,enabled:{[g]:a,[h]:l}}}}}},TC=function(t){return t===void 0&&(t={}),{options:t,fn(n){const{x:r,y:s,placement:i,rects:a,middlewareData:l}=n,{offset:o=0,mainAxis:d=!0,crossAxis:c=!0}=or(t,n),u={x:r,y:s},h=_n(i),g=Ng(h);let m=u[g],j=u[h];const p=or(o,n),b=typeof p=="number"?{mainAxis:p,crossAxis:0}:{mainAxis:0,crossAxis:0,...p};if(d){const v=g==="y"?"height":"width",w=a.reference[g]-a.floating[v]+b.mainAxis,k=a.reference[g]+a.reference[v]-b.mainAxis;m<w?m=w:m>k&&(m=k)}if(c){var x,f;const v=g==="y"?"width":"height",w=I0.has(dr(i)),k=a.reference[h]-a.floating[v]+(w&&((x=l.offset)==null?void 0:x[h])||0)+(w?0:b.crossAxis),N=a.reference[h]+a.reference[v]+(w?0:((f=l.offset)==null?void 0:f[h])||0)-(w?b.crossAxis:0);j<k?j=k:j>N&&(j=N)}return{[g]:m,[h]:j}}}},zC=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(n){var r,s;const{placement:i,rects:a,platform:l,elements:o}=n,{apply:d=()=>{},...c}=or(t,n),u=await ol(n,c),h=dr(i),g=ta(i),m=_n(i)==="y",{width:j,height:p}=a.floating;let b,x;h==="top"||h==="bottom"?(b=h,x=g===(await(l.isRTL==null?void 0:l.isRTL(o.floating))?"start":"end")?"left":"right"):(x=h,b=g==="end"?"top":"bottom");const f=p-u.top-u.bottom,v=j-u.left-u.right,w=qr(p-u[b],f),k=qr(j-u[x],v),N=!n.middlewareData.shift;let S=w,A=k;if((r=n.middlewareData.shift)!=null&&r.enabled.x&&(A=v),(s=n.middlewareData.shift)!=null&&s.enabled.y&&(S=f),N&&!g){const D=zt(u.left,0),G=zt(u.right,0),O=zt(u.top,0),V=zt(u.bottom,0);m?A=j-2*(D!==0||G!==0?D+G:zt(u.left,u.right)):S=p-2*(O!==0||V!==0?O+V:zt(u.top,u.bottom))}await d({...n,availableWidth:A,availableHeight:S});const P=await l.getDimensions(o.floating);return j!==P.width||p!==P.height?{reset:{rects:!0}}:{}}}};function lc(){return typeof window<"u"}function na(t){return B0(t)?(t.nodeName||"").toLowerCase():"#document"}function Rt(t){var n;return(t==null||(n=t.ownerDocument)==null?void 0:n.defaultView)||window}function Fn(t){var n;return(n=(B0(t)?t.ownerDocument:t.document)||window.document)==null?void 0:n.documentElement}function B0(t){return lc()?t instanceof Node||t instanceof Rt(t).Node:!1}function wn(t){return lc()?t instanceof Element||t instanceof Rt(t).Element:!1}function Kn(t){return lc()?t instanceof HTMLElement||t instanceof Rt(t).HTMLElement:!1}function Vf(t){return!lc()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Rt(t).ShadowRoot}const DC=new Set(["inline","contents"]);function _l(t){const{overflow:n,overflowX:r,overflowY:s,display:i}=kn(t);return/auto|scroll|overlay|hidden|clip/.test(n+s+r)&&!DC.has(i)}const _C=new Set(["table","td","th"]);function MC(t){return _C.has(na(t))}const OC=[":popover-open",":modal"];function oc(t){return OC.some(n=>{try{return t.matches(n)}catch{return!1}})}const RC=["transform","translate","scale","rotate","perspective"],GC=["transform","translate","scale","rotate","perspective","filter"],IC=["paint","layout","strict","content"];function Cg(t){const n=Pg(),r=wn(t)?kn(t):t;return RC.some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!n&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!n&&(r.filter?r.filter!=="none":!1)||GC.some(s=>(r.willChange||"").includes(s))||IC.some(s=>(r.contain||"").includes(s))}function BC(t){let n=Yr(t);for(;Kn(n)&&!Zi(n);){if(Cg(n))return n;if(oc(n))return null;n=Yr(n)}return null}function Pg(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const KC=new Set(["html","body","#document"]);function Zi(t){return KC.has(na(t))}function kn(t){return Rt(t).getComputedStyle(t)}function dc(t){return wn(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Yr(t){if(na(t)==="html")return t;const n=t.assignedSlot||t.parentNode||Vf(t)&&t.host||Fn(t);return Vf(n)?n.host:n}function K0(t){const n=Yr(t);return Zi(n)?t.ownerDocument?t.ownerDocument.body:t.body:Kn(n)&&_l(n)?n:K0(n)}function dl(t,n,r){var s;n===void 0&&(n=[]),r===void 0&&(r=!0);const i=K0(t),a=i===((s=t.ownerDocument)==null?void 0:s.body),l=Rt(i);if(a){const o=Lh(l);
vendor: 1,961 bytes, line 291
291return n.concat(l,l.visualViewport||[],_l(i)?i:[],o&&r?dl(o):[])}return n.concat(i,dl(i,[],r))}function Lh(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function F0(t){const n=kn(t);let r=parseFloat(n.width)||0,s=parseFloat(n.height)||0;const i=Kn(t),a=i?t.offsetWidth:r,l=i?t.offsetHeight:s,o=wd(r)!==a||wd(s)!==l;return o&&(r=a,s=l),{width:r,height:s,$:o}}function Eg(t){return wn(t)?t:t.contextElement}function Ai(t){const n=Eg(t);if(!Kn(n))return Rn(1);const r=n.getBoundingClientRect(),{width:s,height:i,$:a}=F0(n);let l=(a?wd(r.width):r.width)/s,o=(a?wd(r.height):r.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!o||!Number.isFinite(o))&&(o=1),{x:l,y:o}}const FC=Rn(0);function L0(t){const n=Rt(t);return!Pg()||!n.visualViewport?FC:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function LC(t,n,r){return n===void 0&&(n=!1),!r||n&&r!==Rt(t)?!1:n}function Rs(t,n,r,s){n===void 0&&(n=!1),r===void 0&&(r=!1);const i=t.getBoundingClientRect(),a=Eg(t);let l=Rn(1);n&&(s?wn(s)&&(l=Ai(s)):l=Ai(t));const o=LC(a,r,s)?L0(a):Rn(0);let d=(i.left+o.x)/l.x,c=(i.top+o.y)/l.y,u=i.width/l.x,h=i.height/l.y;if(a){const g=Rt(a),m=s&&wn(s)?Rt(s):s;let j=g,p=Lh(j);for(;p&&s&&m!==j;){const b=Ai(p),x=p.getBoundingClientRect(),f=kn(p),v=x.left+(p.clientLeft+parseFloat(f.paddingLeft))*b.x,w=x.top+(p.clientTop+parseFloat(f.paddingTop))*b.y;d*=b.x,c*=b.y,u*=b.x,h*=b.y,d+=v,c+=w,j=Rt(p),p=Lh(j)}}return Nd({width:u,height:h,x:d,y:c})}function Tg(t,n){const r=dc(t).scrollLeft;return n?n.left+r:Rs(Fn(t)).left+r}function W0(t,n,r){r===void 0&&(r=!1);const s=t.getBoundingClientRect(),i=s.left+n.scrollLeft-(r?0:Tg(t,s)),a=s.top+n.scrollTop;return{x:i,y:a}}function WC(t){let{elements:n,rect:r,offsetParent:s,strategy:i}=t;const a=i==="fixed",l=Fn(s),o=n?oc(n.floating):!1;if(s===l||o&&a)return r;let d={scrollLeft:0,scrollTop:0},c=Rn(1);const u=Rn(0),h=Kn(s);if((h||!h&&!a)&&((na(s)!=="body"||_l(l))&&(d=dc(s)),Kn(s))){const m=Rs(s);
vendor: 5,435 bytes, line 291
291c=Ai(s),u.x=m.x+s.clientLeft,u.y=m.y+s.clientTop}const g=l&&!h&&!a?W0(l,d,!0):Rn(0);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-d.scrollLeft*c.x+u.x+g.x,y:r.y*c.y-d.scrollTop*c.y+u.y+g.y}}function VC(t){return Array.from(t.getClientRects())}function UC(t){const n=Fn(t),r=dc(t),s=t.ownerDocument.body,i=zt(n.scrollWidth,n.clientWidth,s.scrollWidth,s.clientWidth),a=zt(n.scrollHeight,n.clientHeight,s.scrollHeight,s.clientHeight);let l=-r.scrollLeft+Tg(t);const o=-r.scrollTop;return kn(s).direction==="rtl"&&(l+=zt(n.clientWidth,s.clientWidth)-i),{width:i,height:a,x:l,y:o}}function $C(t,n){const r=Rt(t),s=Fn(t),i=r.visualViewport;let a=s.clientWidth,l=s.clientHeight,o=0,d=0;if(i){a=i.width,l=i.height;const c=Pg();(!c||c&&n==="fixed")&&(o=i.offsetLeft,d=i.offsetTop)}return{width:a,height:l,x:o,y:d}}const HC=new Set(["absolute","fixed"]);function ZC(t,n){const r=Rs(t,!0,n==="fixed"),s=r.top+t.clientTop,i=r.left+t.clientLeft,a=Kn(t)?Ai(t):Rn(1),l=t.clientWidth*a.x,o=t.clientHeight*a.y,d=i*a.x,c=s*a.y;return{width:l,height:o,x:d,y:c}}function Uf(t,n,r){let s;if(n==="viewport")s=$C(t,r);else if(n==="document")s=UC(Fn(t));else if(wn(n))s=ZC(n,r);else{const i=L0(t);s={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return Nd(s)}function V0(t,n){const r=Yr(t);return r===n||!wn(r)||Zi(r)?!1:kn(r).position==="fixed"||V0(r,n)}function qC(t,n){const r=n.get(t);if(r)return r;let s=dl(t,[],!1).filter(o=>wn(o)&&na(o)!=="body"),i=null;const a=kn(t).position==="fixed";let l=a?Yr(t):t;for(;wn(l)&&!Zi(l);){const o=kn(l),d=Cg(l);!d&&o.position==="fixed"&&(i=null),(a?!d&&!i:!d&&o.position==="static"&&!!i&&HC.has(i.position)||_l(l)&&!d&&V0(t,l))?s=s.filter(u=>u!==l):i=o,l=Yr(l)}return n.set(t,s),s}function YC(t){let{element:n,boundary:r,rootBoundary:s,strategy:i}=t;const l=[...r==="clippingAncestors"?oc(n)?[]:qC(n,this._c):[].concat(r),s],o=l[0],d=l.reduce((c,u)=>{const h=Uf(n,u,i);return c.top=zt(h.top,c.top),c.right=qr(h.right,c.right),c.bottom=qr(h.bottom,c.bottom),c.left=zt(h.left,c.left),c},Uf(n,o,i));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function JC(t){const{width:n,height:r}=F0(t);return{width:n,height:r}}function QC(t,n,r){const s=Kn(n),i=Fn(n),a=r==="fixed",l=Rs(t,!0,a,n);let o={scrollLeft:0,scrollTop:0};const d=Rn(0);function c(){d.x=Tg(i)}if(s||!s&&!a)if((na(n)!=="body"||_l(i))&&(o=dc(n)),s){const m=Rs(n,!0,a,n);d.x=m.x+n.clientLeft,d.y=m.y+n.clientTop}else i&&c();a&&!s&&i&&c();const u=i&&!s&&!a?W0(i,o):Rn(0),h=l.left+o.scrollLeft-d.x-u.x,g=l.top+o.scrollTop-d.y-u.y;return{x:h,y:g,width:l.width,height:l.height}}function cu(t){return kn(t).position==="static"}function $f(t,n){if(!Kn(t)||kn(t).position==="fixed")return null;if(n)return n(t);let r=t.offsetParent;return Fn(t)===r&&(r=r.ownerDocument.body),r}function U0(t,n){const r=Rt(t);if(oc(t))return r;if(!Kn(t)){let i=Yr(t);for(;i&&!Zi(i);){if(wn(i)&&!cu(i))return i;i=Yr(i)}return r}let s=$f(t,n);for(;s&&MC(s)&&cu(s);)s=$f(s,n);return s&&Zi(s)&&cu(s)&&!Cg(s)?r:s||BC(t)||r}const XC=async function(t){const n=this.getOffsetParent||U0,r=this.getDimensions,s=await r(t.floating);return{reference:QC(t.reference,await n(t.floating),t.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function eP(t){return kn(t).direction==="rtl"}const tP={convertOffsetParentRelativeRectToViewportRelativeRect:WC,getDocumentElement:Fn,getClippingRect:YC,getOffsetParent:U0,getElementRects:XC,getClientRects:VC,getDimensions:JC,getScale:Ai,isElement:wn,isRTL:eP};function $0(t,n){return t.x===n.x&&t.y===n.y&&t.width===n.width&&t.height===n.height}function nP(t,n){let r=null,s;const i=Fn(t);function a(){var o;clearTimeout(s),(o=r)==null||o.disconnect(),r=null}function l(o,d){o===void 0&&(o=!1),d===void 0&&(d=1),a();const c=t.getBoundingClientRect(),{left:u,top:h,width:g,height:m}=c;if(o||n(),!g||!m)return;const j=co(h),p=co(i.clientWidth-(u+g)),b=co(i.clientHeight-(h+m)),x=co(u),v={rootMargin:-j+"px "+-p+"px "+-b+"px "+-x+"px",threshold:zt(0,qr(1,d))||1};let w=!0;function k(N){const S=N[0].intersectionRatio;if(S!==d){if(!w)return l();S?l(!1,S):s=setTimeout(()=>{l(!1,1e-7)},1e3)}S===1&&!$0(c,t.getBoundingClientRect())&&l(),w=!1}try{r=new IntersectionObserver(k,{...v,root:i.ownerDocument})}catch{r=new IntersectionObserver(k,v)}r.observe(t)}return l(!0),a}function rP(t,n,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:o=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,c=Eg(t),u=i||a?[...c?dl(c):[],...dl(n)]:[];u.forEach(x=>{i&&x.addEventListener("scroll",r,{passive:!0}),a&&x.addEventListener("resize",r)});const h=c&&o?nP(c,r):null;let g=-1,m=null;l&&(m=new ResizeObserver(x=>{let[f]=x;f&&f.target===c&&m&&(m.unobserve(n),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var v;(v=m)==null||v.observe(n)})),r()}),c&&!d&&m.observe(c),m.observe(n));let j,p=d?Rs(t):null;d&&b();function b(){const x=Rs(t);p&&!$0(p,x)&&r(),p=x,j=requestAnimationFrame(b)}return r(),()=>{var x;u.forEach(f=>{i&&f.removeEventListener("scroll",r),a&&f.removeEventListener("resize",r)}),h==null||h(),(x=m)==null||x.disconnect(),m=null,d&&cancelAnimationFrame(j)}}const sP=PC,iP=EC,aP=SC,lP=zC,oP=AC,Hf=NC,dP=TC,cP=(t,n,r)=>{const s=new Map,i={platform:tP,...r},a={...i.platform,_c:s};return kC(t,n,{...i,platform:a})};var uP=typeof document<"u",hP=function(){},Uo=uP?y.useLayoutEffect:hP;function Sd(t,n){if(t===n)return!0;
vendor: 3,233 bytes, line 291
291if(typeof t!=typeof n)return!1;if(typeof t=="function"&&t.toString()===n.toString())return!0;let r,s,i;if(t&&n&&typeof t=="object"){if(Array.isArray(t)){if(r=t.length,r!==n.length)return!1;for(s=r;s--!==0;)if(!Sd(t[s],n[s]))return!1;return!0}if(i=Object.keys(t),r=i.length,r!==Object.keys(n).length)return!1;for(s=r;s--!==0;)if(!{}.hasOwnProperty.call(n,i[s]))return!1;for(s=r;s--!==0;){const a=i[s];if(!(a==="_owner"&&t.$$typeof)&&!Sd(t[a],n[a]))return!1}return!0}return t!==t&&n!==n}function H0(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function Zf(t,n){const r=H0(t);return Math.round(n*r)/r}function uu(t){const n=y.useRef(t);return Uo(()=>{n.current=t}),n}function mP(t){t===void 0&&(t={});const{placement:n="bottom",strategy:r="absolute",middleware:s=[],platform:i,elements:{reference:a,floating:l}={},transform:o=!0,whileElementsMounted:d,open:c}=t,[u,h]=y.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[g,m]=y.useState(s);Sd(g,s)||m(s);const[j,p]=y.useState(null),[b,x]=y.useState(null),f=y.useCallback(C=>{C!==N.current&&(N.current=C,p(C))},[]),v=y.useCallback(C=>{C!==S.current&&(S.current=C,x(C))},[]),w=a||j,k=l||b,N=y.useRef(null),S=y.useRef(null),A=y.useRef(u),P=d!=null,D=uu(d),G=uu(i),O=uu(c),V=y.useCallback(()=>{if(!N.current||!S.current)return;const C={placement:n,strategy:r,middleware:g};G.current&&(C.platform=G.current),cP(N.current,S.current,C).then(z=>{const I={...z,isPositioned:O.current!==!1};R.current&&!Sd(A.current,I)&&(A.current=I,El.flushSync(()=>{h(I)}))})},[g,n,r,G,O]);Uo(()=>{c===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,h(C=>({...C,isPositioned:!1})))},[c]);const R=y.useRef(!1);Uo(()=>(R.current=!0,()=>{R.current=!1}),[]),Uo(()=>{if(w&&(N.current=w),k&&(S.current=k),w&&k){if(D.current)return D.current(w,k,V);V()}},[w,k,V,D,P]);const Y=y.useMemo(()=>({reference:N,floating:S,setReference:f,setFloating:v}),[f,v]),U=y.useMemo(()=>({reference:w,floating:k}),[w,k]),H=y.useMemo(()=>{const C={position:r,left:0,top:0};if(!U.floating)return C;const z=Zf(U.floating,u.x),I=Zf(U.floating,u.y);return o?{...C,transform:"translate("+z+"px, "+I+"px)",...H0(U.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:z,top:I}},[r,o,U.floating,u.x,u.y]);return y.useMemo(()=>({...u,update:V,refs:Y,elements:U,floatingStyles:H}),[u,V,Y,U,H])}const gP=t=>{function n(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:t,fn(r){const{element:s,padding:i}=typeof t=="function"?t(r):t;return s&&n(s)?s.current!=null?Hf({element:s.current,padding:i}).fn(r):{}:s?Hf({element:s,padding:i}).fn(r):{}}}},pP=(t,n)=>({...sP(t),options:[t,n]}),fP=(t,n)=>({...iP(t),options:[t,n]}),xP=(t,n)=>({...dP(t),options:[t,n]}),bP=(t,n)=>({...aP(t),options:[t,n]}),jP=(t,n)=>({...lP(t),options:[t,n]}),vP=(t,n)=>({...oP(t),options:[t,n]}),yP=(t,n)=>({...gP(t),options:[t,n]});var wP="Arrow",Z0=y.forwardRef((t,n)=>{const{children:r,width:s=10,height:i=5,...a}=t;return e.jsx(Pe.svg,{...a,ref:n,width:s,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?r:e.jsx("polygon",{points:"0,0 30,0 15,10"})})});Z0.displayName=wP;var kP=Z0;function NP(t){const[n,r]=y.useState(void 0);return In(()=>
vendor: 5,065 bytes, line 291
291{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const s=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const a=i[0];let l,o;if("borderBoxSize"in a){const d=a.borderBoxSize,c=Array.isArray(d)?d[0]:d;l=c.inlineSize,o=c.blockSize}else l=t.offsetWidth,o=t.offsetHeight;r({width:l,height:o})});return s.observe(t,{box:"border-box"}),()=>s.unobserve(t)}else r(void 0)},[t]),n}var q0="Popper",[Y0,J0]=Ls(q0),[TR,Q0]=Y0(q0),X0="PopperAnchor",ey=y.forwardRef((t,n)=>{const{__scopePopper:r,virtualRef:s,...i}=t,a=Q0(X0,r),l=y.useRef(null),o=tt(n,l);return y.useEffect(()=>{a.onAnchorChange((s==null?void 0:s.current)||l.current)}),s?null:e.jsx(Pe.div,{...i,ref:o})});ey.displayName=X0;var zg="PopperContent",[SP,AP]=Y0(zg),ty=y.forwardRef((t,n)=>{var te,Re,Ze,Fe,he,K;const{__scopePopper:r,side:s="bottom",sideOffset:i=0,align:a="center",alignOffset:l=0,arrowPadding:o=0,avoidCollisions:d=!0,collisionBoundary:c=[],collisionPadding:u=0,sticky:h="partial",hideWhenDetached:g=!1,updatePositionStrategy:m="optimized",onPlaced:j,...p}=t,b=Q0(zg,r),[x,f]=y.useState(null),v=tt(n,le=>f(le)),[w,k]=y.useState(null),N=NP(w),S=(N==null?void 0:N.width)??0,A=(N==null?void 0:N.height)??0,P=s+(a!=="center"?"-"+a:""),D=typeof u=="number"?u:{top:0,right:0,bottom:0,left:0,...u},G=Array.isArray(c)?c:[c],O=G.length>0,V={padding:D,boundary:G.filter(PP),altBoundary:O},{refs:R,floatingStyles:Y,placement:U,isPositioned:H,middlewareData:C}=mP({strategy:"fixed",placement:P,whileElementsMounted:(...le)=>rP(...le,{animationFrame:m==="always"}),elements:{reference:b.anchor},middleware:[pP({mainAxis:i+A,alignmentAxis:l}),d&&fP({mainAxis:!0,crossAxis:!1,limiter:h==="partial"?xP():void 0,...V}),d&&bP({...V}),jP({...V,apply:({elements:le,rects:Ne,availableWidth:Ve,availableHeight:ut})=>{const{width:Ct,height:Pt}=Ne.reference,ht=le.floating.style;ht.setProperty("--radix-popper-available-width",`${Ve}px`),ht.setProperty("--radix-popper-available-height",`${ut}px`),ht.setProperty("--radix-popper-anchor-width",`${Ct}px`),ht.setProperty("--radix-popper-anchor-height",`${Pt}px`)}}),w&&yP({element:w,padding:o}),EP({arrowWidth:S,arrowHeight:A}),g&&vP({strategy:"referenceHidden",...V})]}),[z,I]=sy(U),$=Gn(j);In(()=>{H&&($==null||$())},[H,$]);const L=(te=C.arrow)==null?void 0:te.x,ee=(Re=C.arrow)==null?void 0:Re.y,J=((Ze=C.arrow)==null?void 0:Ze.centerOffset)!==0,[be,Oe]=y.useState();return In(()=>{x&&Oe(window.getComputedStyle(x).zIndex)},[x]),e.jsx("div",{ref:R.setFloating,"data-radix-popper-content-wrapper":"",style:{...Y,transform:H?Y.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:be,"--radix-popper-transform-origin":[(Fe=C.transformOrigin)==null?void 0:Fe.x,(he=C.transformOrigin)==null?void 0:he.y].join(" "),...((K=C.hide)==null?void 0:K.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:e.jsx(SP,{scope:r,placedSide:z,onArrowChange:k,arrowX:L,arrowY:ee,shouldHideArrow:J,children:e.jsx(Pe.div,{"data-side":z,"data-align":I,...p,ref:v,style:{...p.style,animation:H?void 0:"none"}})})})});ty.displayName=zg;var ny="PopperArrow",CP={top:"bottom",right:"left",bottom:"top",left:"right"},ry=y.forwardRef(function(n,r){const{__scopePopper:s,...i}=n,a=AP(ny,s),l=CP[a.placedSide];return e.jsx("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:e.jsx(kP,{...i,ref:r,style:{...i.style,display:"block"}})})});ry.displayName=ny;function PP(t){return t!==null}var EP=t=>({name:"transformOrigin",options:t,fn(n){var b,x,f;const{placement:r,rects:s,middlewareData:i}=n,l=((b=i.arrow)==null?void 0:b.centerOffset)!==0,o=l?0:t.arrowWidth,d=l?0:t.arrowHeight,[c,u]=sy(r),h={start:"0%",center:"50%",end:"100%"}[u],g=(((x=i.arrow)==null?void 0:x.x)??0)+o/2,m=(((f=i.arrow)==null?void 0:f.y)??0)+d/2;let j="",p="";return c==="bottom"?(j=l?h:`${g}px`,p=`${-d}px`):c==="top"?(j=l?h:`${g}px`,p=`${s.floating.height+d}px`):c==="right"?(j=`${-d}px`,p=l?h:`${m}px`):c==="left"&&(j=`${s.floating.width+d}px`,p=l?h:`${m}px`),{data:{x:j,y:p}}}});function sy(t){const[n,r="center"]=t.split("-");return[n,r]}var TP=ey,zP=ty,DP=ry,[cc,zR]=Ls("Tooltip",[J0]),Dg=J0(),iy="TooltipProvider",_P=700,qf="tooltip.open",[MP,ay]=cc(iy),ly=t=>{const{__scopeTooltip:n,delayDuration:r=_P,skipDelayDuration:s=300,disableHoverableContent:i=!1,children:a}=t,l=y.useRef(!0),o=y.useRef(!1),d=y.useRef(0);return y.useEffect(()=>{const c=d.current;return()=>window.clearTimeout(c)},[]),e.jsx(MP,{scope:n,isOpenDelayedRef:l,delayDuration:r,onOpen:y.useCallback(()=>{window.clearTimeout(d.current),l.current=!1},[]),onClose:y.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>l.current=!0,s)},[s]),isPointerInTransitRef:o,onPointerInTransitChange:y.useCallback(c=>{o.current=c}
vendor: 4,118 bytes, line 291
291,[]),disableHoverableContent:i,children:a})};ly.displayName=iy;var oy="Tooltip",[DR,uc]=cc(oy),Wh="TooltipTrigger",OP=y.forwardRef((t,n)=>{const{__scopeTooltip:r,...s}=t,i=uc(Wh,r),a=ay(Wh,r),l=Dg(r),o=y.useRef(null),d=tt(n,o,i.onTriggerChange),c=y.useRef(!1),u=y.useRef(!1),h=y.useCallback(()=>c.current=!1,[]);return y.useEffect(()=>()=>document.removeEventListener("pointerup",h),[h]),e.jsx(TP,{asChild:!0,...l,children:e.jsx(Pe.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...s,ref:d,onPointerMove:ye(t.onPointerMove,g=>{g.pointerType!=="touch"&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:ye(t.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:ye(t.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener("pointerup",h,{once:!0})}),onFocus:ye(t.onFocus,()=>{c.current||i.onOpen()}),onBlur:ye(t.onBlur,i.onClose),onClick:ye(t.onClick,i.onClose)})})});OP.displayName=Wh;var RP="TooltipPortal",[_R,GP]=cc(RP,{forceMount:void 0}),qi="TooltipContent",dy=y.forwardRef((t,n)=>{const r=GP(qi,t.__scopeTooltip),{forceMount:s=r.forceMount,side:i="top",...a}=t,l=uc(qi,t.__scopeTooltip);return e.jsx(Ws,{present:s||l.open,children:l.disableHoverableContent?e.jsx(cy,{side:i,...a,ref:n}):e.jsx(IP,{side:i,...a,ref:n})})}),IP=y.forwardRef((t,n)=>{const r=uc(qi,t.__scopeTooltip),s=ay(qi,t.__scopeTooltip),i=y.useRef(null),a=tt(n,i),[l,o]=y.useState(null),{trigger:d,onClose:c}=r,u=i.current,{onPointerInTransitChange:h}=s,g=y.useCallback(()=>{o(null),h(!1)},[h]),m=y.useCallback((j,p)=>{const b=j.currentTarget,x={x:j.clientX,y:j.clientY},f=WP(x,b.getBoundingClientRect()),v=VP(x,f),w=UP(p.getBoundingClientRect()),k=HP([...v,...w]);o(k),h(!0)},[h]);return y.useEffect(()=>()=>g(),[g]),y.useEffect(()=>{if(d&&u){const j=b=>m(b,u),p=b=>m(b,d);return d.addEventListener("pointerleave",j),u.addEventListener("pointerleave",p),()=>{d.removeEventListener("pointerleave",j),u.removeEventListener("pointerleave",p)}}},[d,u,m,g]),y.useEffect(()=>{if(l){const j=p=>{const b=p.target,x={x:p.clientX,y:p.clientY},f=(d==null?void 0:d.contains(b))||(u==null?void 0:u.contains(b)),v=!$P(x,l);f?g():v&&(g(),c())};return document.addEventListener("pointermove",j),()=>document.removeEventListener("pointermove",j)}},[d,u,l,c,g]),e.jsx(cy,{...t,ref:a})}),[BP,KP]=cc(oy,{isInside:!1}),FP=RA("TooltipContent"),cy=y.forwardRef((t,n)=>{const{__scopeTooltip:r,children:s,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:l,...o}=t,d=uc(qi,r),c=Dg(r),{onClose:u}=d;return y.useEffect(()=>(document.addEventListener(qf,u),()=>document.removeEventListener(qf,u)),[u]),y.useEffect(()=>{if(d.trigger){const h=g=>{const m=g.target;m!=null&&m.contains(d.trigger)&&u()};return window.addEventListener("scroll",h,{capture:!0}),()=>window.removeEventListener("scroll",h,{capture:!0})}},[d.trigger,u]),e.jsx(Qd,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:h=>h.preventDefault(),onDismiss:u,children:e.jsxs(zP,{"data-state":d.stateAttribute,...c,...o,ref:n,style:{...o.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[e.jsx(FP,{children:s}),e.jsx(BP,{scope:r,isInside:!0,children:e.jsx(i2,{id:d.contentId,role:"tooltip",children:i||s})})]})})});dy.displayName=qi;var uy="TooltipArrow",LP=y.forwardRef((t,n)=>{const{__scopeTooltip:r,...s}=t,i=Dg(r);return KP(uy,r).isInside?null:e.jsx(DP,{...i,...s,ref:n})});LP.displayName=uy;function WP(t,n){const r=Math.abs(n.top-t.y),s=Math.abs(n.bottom-t.y),i=Math.abs(n.right-t.x),a=Math.abs(n.left-t.x);switch(Math.min(r,s,i,a)){case a:return"left";case i:return"right";case r:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function VP(t,n,r=5){const s=[];
291switch(n){case"top":s.push({x:t.x-r,y:t.y+r},{x:t.x+r,y:t.y+r});break;case"bottom":s.push({x:t.x-r,y:t.y-r},{x:t.x+r,y:t.y-r});break;case"left":s.push({x:t.x+r,y:t.y-r},{x:t.x+r,y:t.y+r});break;case"right":s.push({x:t.x-r,y:t.y-r},{x:t.x-r,y:t.y+r});break}return s}function UP(t){const{top:n,right:r,bottom:s,left:i}=t;return[{x:i,y:n},{x:r,y:n},{x:r,y:s},{x:i,y:s}]}function $P(t,n){const{x:r,y:s}=t;let i=!1;for(let a=0,l=n.length-1;a<n.length;l=a++){const o=n[a],d=n[l],c=o.x,u=o.y,h=d.x,g=d.y;u>s!=g>s&&r<(h-c)*(s-u)/(g-u)+c&&(i=!i)}return i}function HP(t){const n=t.slice();return n.sort((r,s)=>r.x<s.x?-1:r.x>s.x?1:r.y<s.y?-1:r.y>s.y?1:0),ZP(n)}function ZP(t){if(t.length<=1)return t.slice();const n=[];for(let s=0;s<t.length;s++){const i=t[s];for(;n.length>=2;){const a=n[n.length-1],l=n[n.length-2];if((a.x-l.x)*(i.y-l.y)>=(a.y-l.y)*(i.x-l.x))n.pop();else break}n.push(i)}n.pop();const r=[];for(let s=t.length-1;s>=0;s--){const i=t[s];for(;r.length>=2;){const a=r[r.length-1],l=r[r.length-2];if((a.x-l.x)*(i.y-l.y)>=(a.y-l.y)*(i.x-l.x))r.pop();else break}r.push(i)}return r.pop(),n.length===1&&r.length===1&&n[0].x===r[0].x&&n[0].y===r[0].y?n:n.concat(r)}var qP=ly,hy=dy;const YP=qP,JP=y.forwardRef(({className:t,sideOffset:n=4,...r},s)=>e.jsx(hy,{ref:s,sideOffset:n,className:de("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...r}));JP.displayName=hy.displayName;var hc=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},mc=typeof window>"u"||"Deno"in globalThis;function cn(){}function QP(t,n){return typeof t=="function"?t(n):t}function XP(t){return typeof t=="number"&&t>=0&&t!==1/0}function eE(t,n){return Math.max(t+(n||0)-Date.now(),0)}function Vh(t,n){return typeof t=="function"?t(n):t}function tE(t,n){return typeof t=="function"?t(n):t}function Yf(t,n){const{type:r="all",exact:s,fetchStatus:i,predicate:a,queryKey:l,stale:o}=t;if(l){if(s){if(n.queryHash!==_g(l,n.options))return!1}else if(!ul(n.queryKey,l))return!1}if(r!=="all"){const d=n.isActive();if(r==="active"&&!d||r==="inactive"&&d)return!1}return!(typeof o=="boolean"&&n.isStale()!==o||i&&i!==n.state.fetchStatus||a&&!a(n))}function Jf(t,n){const{exact:r,status:s,predicate:i,mutationKey:a}=t;if(a){if(!n.options.mutationKey)return!1;if(r){if(cl(n.options.mutationKey)!==cl(a))return!1}else if(!ul(n.options.mutationKey,a))return!1}return!(s&&n.state.status!==s||i&&!i(n))}function _g(t,n){return((n==null?void 0:n.queryKeyHashFn)||cl)(t)}function cl(t){return JSON.stringify(t,(n,r)=>Uh(r)?Object.keys(r).sort().reduce((s,i)=>(s[i]=r[i],s),{}):r)}function ul(t,n){return t===n?!0:typeof t!=typeof n?!1:t&&n&&typeof t=="object"&&typeof n=="object"?Object.keys(n).every(r=>ul(t[r],n[r])):!1}function my(t,n){if(t===n)return t;const r=Qf(t)&&Qf(n);if(r||Uh(t)&&Uh(n)){const s=r?t:Object.keys(t),i=s.length,a=r?n:Object.keys(n),l=a.length,o=r?[]:{},d=new Set(s);let c=0;for(let u=0;u<l;u++){const h=r?u:a[u];(!r&&d.has(h)||r)&&t[h]===void 0&&n[h]===void 0?(o[h]=void 0,c++):(o[h]=my(t[h],n[h]),o[h]===t[h]&&t[h]!==void 0&&c++)}return i===l&&c===i?t:o}return n}function Qf(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function Uh(t){if(!Xf(t))return!1;const n=t.constructor;if(n===void 0)return!0;const r=n.prototype;return!(!Xf(r)||!r.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function Xf(t){return Object.prototype.toString.call(t)==="[object Object]"}function nE(t){return new Promise(n=>{setTimeout(n,t)})}function rE(t,n,r){return typeof r.structuralSharing=="function"?r.structuralSharing(t,n):r.structuralSharing!==!1?my(t,n):n}function sE(t,n,r=0){const s=[...t,n];return r&&s.length>r?s.slice(1):s}function iE(t,n,r=0){const s=[n,...t];return r&&s.length>r?s.slice(0,-1):s}var Mg=Symbol();function gy(t,n){return!t.queryFn&&(n!=null&&n.initialPromise)?()=>n.initialPromise:!t.queryFn||t.queryFn===Mg?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}var ys,Tr,zi,kb,aE=(kb=class extends hc{constructor(){super();me(this,ys);me(this,Tr);me(this,zi);ne(this,zi,n=>{if(!mc&&window.addEventListener){const r=()=>n();return window.addEventListener("visibilitychange",r,!1),()=>{window.removeEventListener("visibilitychange",r)}}})}onSubscribe(){T(this,Tr)||this.setEventListener(T(this,zi))}onUnsubscribe(){var n;this.hasListeners()||((n=T(this,Tr))==null||n.call(this),ne(this,Tr,void 0))}setEventListener(n){var r;ne(this,zi,n),(r=T(this,Tr))==null||r.call(this),ne(this,Tr,n(s=>{typeof s=="boolean"?this.setFocused(s):this.onFocus()}))}setFocused(n){T(this,ys)!==n&&(ne(this,ys,n),this.onFocus())}onFocus(){const n=this.isFocused();
vendor: 4,924 bytes, line 291
291this.listeners.forEach(r=>{r(n)})}isFocused(){var n;return typeof T(this,ys)=="boolean"?T(this,ys):((n=globalThis.document)==null?void 0:n.visibilityState)!=="hidden"}},ys=new WeakMap,Tr=new WeakMap,zi=new WeakMap,kb),py=new aE,Di,zr,_i,Nb,lE=(Nb=class extends hc{constructor(){super();me(this,Di,!0);me(this,zr);me(this,_i);ne(this,_i,n=>{if(!mc&&window.addEventListener){const r=()=>n(!0),s=()=>n(!1);return window.addEventListener("online",r,!1),window.addEventListener("offline",s,!1),()=>{window.removeEventListener("online",r),window.removeEventListener("offline",s)}}})}onSubscribe(){T(this,zr)||this.setEventListener(T(this,_i))}onUnsubscribe(){var n;this.hasListeners()||((n=T(this,zr))==null||n.call(this),ne(this,zr,void 0))}setEventListener(n){var r;ne(this,_i,n),(r=T(this,zr))==null||r.call(this),ne(this,zr,n(this.setOnline.bind(this)))}setOnline(n){T(this,Di)!==n&&(ne(this,Di,n),this.listeners.forEach(s=>{s(n)}))}isOnline(){return T(this,Di)}},Di=new WeakMap,zr=new WeakMap,_i=new WeakMap,Nb),Ad=new lE;function oE(){let t,n;const r=new Promise((i,a)=>{t=i,n=a});r.status="pending",r.catch(()=>{});function s(i){Object.assign(r,i),delete r.resolve,delete r.reject}return r.resolve=i=>{s({status:"fulfilled",value:i}),t(i)},r.reject=i=>{s({status:"rejected",reason:i}),n(i)},r}function dE(t){return Math.min(1e3*2**t,3e4)}function fy(t){return(t??"online")==="online"?Ad.isOnline():!0}var xy=class extends Error{constructor(t){super("CancelledError"),this.revert=t==null?void 0:t.revert,this.silent=t==null?void 0:t.silent}};function hu(t){return t instanceof xy}function by(t){let n=!1,r=0,s=!1,i;const a=oE(),l=p=>{var b;s||(g(new xy(p)),(b=t.abort)==null||b.call(t))},o=()=>{n=!0},d=()=>{n=!1},c=()=>py.isFocused()&&(t.networkMode==="always"||Ad.isOnline())&&t.canRun(),u=()=>fy(t.networkMode)&&t.canRun(),h=p=>{var b;s||(s=!0,(b=t.onSuccess)==null||b.call(t,p),i==null||i(),a.resolve(p))},g=p=>{var b;s||(s=!0,(b=t.onError)==null||b.call(t,p),i==null||i(),a.reject(p))},m=()=>new Promise(p=>{var b;i=x=>{(s||c())&&p(x)},(b=t.onPause)==null||b.call(t)}).then(()=>{var p;i=void 0,s||(p=t.onContinue)==null||p.call(t)}),j=()=>{if(s)return;let p;const b=r===0?t.initialPromise:void 0;try{p=b??t.fn()}catch(x){p=Promise.reject(x)}Promise.resolve(p).then(h).catch(x=>{var N;if(s)return;const f=t.retry??(mc?0:3),v=t.retryDelay??dE,w=typeof v=="function"?v(r,x):v,k=f===!0||typeof f=="number"&&r<f||typeof f=="function"&&f(r,x);if(n||!k){g(x);return}r++,(N=t.onFail)==null||N.call(t,r,x),nE(w).then(()=>c()?void 0:m()).then(()=>{n?g(x):j()})})};return{promise:a,cancel:l,continue:()=>(i==null||i(),a),cancelRetry:o,continueRetry:d,canStart:u,start:()=>(u()?j():m().then(j),a)}}var cE=t=>setTimeout(t,0);function uE(){let t=[],n=0,r=o=>{o()},s=o=>{o()},i=cE;const a=o=>{n?t.push(o):i(()=>{r(o)})},l=()=>{const o=t;t=[],o.length&&i(()=>{s(()=>{o.forEach(d=>{r(d)})})})};return{batch:o=>{let d;n++;try{d=o()}finally{n--,n||l()}return d},batchCalls:o=>(...d)=>{a(()=>{o(...d)})},schedule:a,setNotifyFunction:o=>{r=o},setBatchNotifyFunction:o=>{s=o},setScheduler:o=>{i=o}}}var pt=uE(),ws,Sb,jy=(Sb=class{constructor(){me(this,ws)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),XP(this.gcTime)&&ne(this,ws,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(mc?1/0:5*60*1e3))}clearGcTimeout(){T(this,ws)&&(clearTimeout(T(this,ws)),ne(this,ws,void 0))}},ws=new WeakMap,Sb),Mi,ks,Ft,Ns,at,yl,Ss,hn,Hn,Ab,hE=(Ab=class extends jy{constructor(n){super();me(this,hn);me(this,Mi);me(this,ks);me(this,Ft);me(this,Ns);me(this,at);me(this,yl);me(this,Ss);ne(this,Ss,!1),ne(this,yl,n.defaultOptions),this.setOptions(n.options),this.observers=[],ne(this,Ns,n.client),ne(this,Ft,T(this,Ns).getQueryCache()),this.queryKey=n.queryKey,this.queryHash=n.queryHash,ne(this,Mi,gE(this.options)),this.state=n.state??T(this,Mi),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var n;return(n=T(this,at))==null?void 0:n.promise}setOptions(n){this.options={...T(this,yl),...n},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&T(this,Ft).remove(this)}setData(n,r){const s=rE(this.state.data,n,this.options);return rt(this,hn,Hn).call(this,{data:s,type:"success",dataUpdatedAt:r==null?void 0:r.updatedAt,manual:r==null?void 0:r.manual}),s}setState(n,r){rt(this,hn,Hn).call(this,{type:"setState",state:n,setStateOptions:r})}cancel(n){var s,i;const r=(s=T(this,at))==null?void 0:s.promise;return(i=T(this,at))==null||i.cancel(n),r?r.then(cn).catch(cn):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(T(this,Mi))}isActive(){return this.observers.some(n=>tE(n.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Mg||this.state.dataUpdateCount+this.state.errorUpdate
291Count===0}isStatic(){return this.getObserversCount()>0?this.observers.some(n=>Vh(n.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(n=>n.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(n=0){return this.state.data===void 0?!0:n==="static"?!1:this.state.isInvalidated?!0:!eE(this.state.dataUpdatedAt,n)}onFocus(){var r;const n=this.observers.find(s=>s.shouldFetchOnWindowFocus());n==null||n.refetch({cancelRefetch:!1}),(r=T(this,at))==null||r.continue()}onOnline(){var r;const n=this.observers.find(s=>s.shouldFetchOnReconnect());n==null||n.refetch({cancelRefetch:!1}),(r=T(this,at))==null||r.continue()}addObserver(n){this.observers.includes(n)||(this.observers.push(n),this.clearGcTimeout(),T(this,Ft).notify({type:"observerAdded",query:this,observer:n}))}removeObserver(n){this.observers.includes(n)&&(this.observers=this.observers.filter(r=>r!==n),this.observers.length||(T(this,at)&&(T(this,Ss)?T(this,at).cancel({revert:!0}):T(this,at).cancelRetry()),this.scheduleGc()),T(this,Ft).notify({type:"observerRemoved",query:this,observer:n}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||rt(this,hn,Hn).call(this,{type:"invalidate"})}fetch(n,r){var c,u,h;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(r!=null&&r.cancelRefetch))this.cancel({silent:!0});else if(T(this,at))return T(this,at).continueRetry(),T(this,at).promise}if(n&&this.setOptions(n),!this.options.queryFn){const g=this.observers.find(m=>m.options.queryFn);g&&this.setOptions(g.options)}const s=new AbortController,i=g=>{Object.defineProperty(g,"signal",{enumerable:!0,get:()=>(ne(this,Ss,!0),s.signal)})},a=()=>{const g=gy(this.options,r),j=(()=>{const p={client:T(this,Ns),queryKey:this.queryKey,meta:this.meta};return i(p),p})();return ne(this,Ss,!1),this.options.persister?this.options.persister(g,j,this):g(j)},o=(()=>{const g={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:T(this,Ns),state:this.state,fetchFn:a};return i(g),g})();(c=this.options.behavior)==null||c.onFetch(o,this),ne(this,ks,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((u=o.fetchOptions)==null?void 0:u.meta))&&rt(this,hn,Hn).call(this,{type:"fetch",meta:(h=o.fetchOptions)==null?void 0:h.meta});const d=g=>{var m,j,p,b;hu(g)&&g.silent||rt(this,hn,Hn).call(this,{type:"error",error:g}),hu(g)||((j=(m=T(this,Ft).config).onError)==null||j.call(m,g,this),(b=(p=T(this,Ft).config).onSettled)==null||b.call(p,this.state.data,g,this)),this.scheduleGc()};return ne(this,at,by({initialPromise:r==null?void 0:r.initialPromise,fn:o.fetchFn,abort:s.abort.bind(s),onSuccess:g=>{var m,j,p,b;if(g===void 0){d(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(g)}catch(x){d(x);return}(j=(m=T(this,Ft).config).onSuccess)==null||j.call(m,g,this),(b=(p=T(this,Ft).config).onSettled)==null||b.call(p,g,this.state.error,this),this.scheduleGc()},onError:d,onFail:(g,m)=>{rt(this,hn,Hn).call(this,{type:"failed",failureCount:g,error:m})},onPause:()=>{rt(this,hn,Hn).call(this,{type:"pause"})},onContinue:()=>{rt(this,hn,Hn).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),T(this,at).start()}},Mi=new WeakMap,ks=new WeakMap,Ft=new WeakMap,Ns=new WeakMap,at=new WeakMap,yl=new WeakMap,Ss=new WeakMap,hn=new WeakSet,Hn=function(n){const r=s=>{switch(n.type){case"failed":return{...s,fetchFailureCount:n.failureCount,fetchFailureReason:n.error};case"pause":return{...s,fetchStatus:"paused"};case"continue":return{...s,fetchStatus:"fetching"};case"fetch":return{...s,...mE(s.data,this.options),fetchMeta:n.meta??null};case"success":return ne(this,ks,void 0),{...s,data:n.data,dataUpdateCount:s.dataUpdateCount+1,dataUpdatedAt:n.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!n.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=n.error;return hu(i)&&i.revert&&T(this,ks)?{...T(this,ks),fetchStatus:"idle"}
vendor: 5,105 bytes, line 291
291:{...s,error:i,errorUpdateCount:s.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:s.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...s,isInvalidated:!0};case"setState":return{...s,...n.state}}};this.state=r(this.state),pt.batch(()=>{this.observers.forEach(s=>{s.onQueryUpdate()}),T(this,Ft).notify({query:this,type:"updated",action:n})})},Ab);function mE(t,n){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:fy(n.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function gE(t){const n=typeof t.initialData=="function"?t.initialData():t.initialData,r=n!==void 0,s=r?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:n,dataUpdateCount:0,dataUpdatedAt:r?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var En,Cb,pE=(Cb=class extends hc{constructor(n={}){super();me(this,En);this.config=n,ne(this,En,new Map)}build(n,r,s){const i=r.queryKey,a=r.queryHash??_g(i,r);let l=this.get(a);return l||(l=new hE({client:n,queryKey:i,queryHash:a,options:n.defaultQueryOptions(r),state:s,defaultOptions:n.getQueryDefaults(i)}),this.add(l)),l}add(n){T(this,En).has(n.queryHash)||(T(this,En).set(n.queryHash,n),this.notify({type:"added",query:n}))}remove(n){const r=T(this,En).get(n.queryHash);r&&(n.destroy(),r===n&&T(this,En).delete(n.queryHash),this.notify({type:"removed",query:n}))}clear(){pt.batch(()=>{this.getAll().forEach(n=>{this.remove(n)})})}get(n){return T(this,En).get(n)}getAll(){return[...T(this,En).values()]}find(n){const r={exact:!0,...n};return this.getAll().find(s=>Yf(r,s))}findAll(n={}){const r=this.getAll();return Object.keys(n).length>0?r.filter(s=>Yf(n,s)):r}notify(n){pt.batch(()=>{this.listeners.forEach(r=>{r(n)})})}onFocus(){pt.batch(()=>{this.getAll().forEach(n=>{n.onFocus()})})}onOnline(){pt.batch(()=>{this.getAll().forEach(n=>{n.onOnline()})})}},En=new WeakMap,Cb),Tn,mt,As,zn,kr,Pb,fE=(Pb=class extends jy{constructor(n){super();me(this,zn);me(this,Tn);me(this,mt);me(this,As);this.mutationId=n.mutationId,ne(this,mt,n.mutationCache),ne(this,Tn,[]),this.state=n.state||xE(),this.setOptions(n.options),this.scheduleGc()}setOptions(n){this.options=n,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(n){T(this,Tn).includes(n)||(T(this,Tn).push(n),this.clearGcTimeout(),T(this,mt).notify({type:"observerAdded",mutation:this,observer:n}))}removeObserver(n){ne(this,Tn,T(this,Tn).filter(r=>r!==n)),this.scheduleGc(),T(this,mt).notify({type:"observerRemoved",mutation:this,observer:n})}optionalRemove(){T(this,Tn).length||(this.state.status==="pending"?this.scheduleGc():T(this,mt).remove(this))}continue(){var n;return((n=T(this,As))==null?void 0:n.continue())??this.execute(this.state.variables)}async execute(n){var a,l,o,d,c,u,h,g,m,j,p,b,x,f,v,w,k,N,S,A;const r=()=>{rt(this,zn,kr).call(this,{type:"continue"})};ne(this,As,by({fn:()=>this.options.mutationFn?this.options.mutationFn(n):Promise.reject(new Error("No mutationFn found")),onFail:(P,D)=>{rt(this,zn,kr).call(this,{type:"failed",failureCount:P,error:D})},onPause:()=>{rt(this,zn,kr).call(this,{type:"pause"})},onContinue:r,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>T(this,mt).canRun(this)}));const s=this.state.status==="pending",i=!T(this,As).canStart();try{if(s)r();else{rt(this,zn,kr).call(this,{type:"pending",variables:n,isPaused:i}),await((l=(a=T(this,mt).config).onMutate)==null?void 0:l.call(a,n,this));const D=await((d=(o=this.options).onMutate)==null?void 0:d.call(o,n));D!==this.state.context&&rt(this,zn,kr).call(this,{type:"pending",context:D,variables:n,isPaused:i})}const P=await T(this,As).start();return await((u=(c=T(this,mt).config).onSuccess)==null?void 0:u.call(c,P,n,this.state.context,this)),await((g=(h=this.options).onSuccess)==null?void 0:g.call(h,P,n,this.state.context)),await((j=(m=T(this,mt).config).onSettled)==null?void 0:j.call(m,P,null,this.state.variables,this.state.context,this)),await((b=(p=this.options).onSettled)==null?void 0:b.call(p,P,null,n,this.state.context)),rt(this,zn,kr).call(this,{type:"success",data:P}),P}catch(P){try{throw await((f=(x=T(this,mt).config).onError)==null?void 0:f.call(x,P,n,this.state.context,this)),await((w=(v=this.options).onError)==null?void 0:w.call(v,P,n,this.state.context)),await((N=(k=T(this,mt).config).onSettled)==null?void 0:N.call(k,void 0,P,this.state.variables,this.state.context,this)),await((A=(S=this.options).onSettled)==null?void 0:A.call(S,void 0,P,n,this.state.context)),P}finally{rt(this,zn,kr).call(this,{type:"error",error:P})}}finally{T(this,mt).runNext(this)}}},Tn=new WeakMap,mt=new WeakMap,As=new WeakMap,zn=new WeakSet,kr=function(n){const r=s=>{switch(n.type){case"failed":return{...s,failureCount:n.failureCount,failureReason:n.error};case"pause":return{...s,isPaused:!0};case"continue":return{...s,isPaused:!1};
291case"pending":return{...s,context:n.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:n.isPaused,status:"pending",variables:n.variables,submittedAt:Date.now()};case"success":return{...s,data:n.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...s,data:void 0,error:n.error,failureCount:s.failureCount+1,failureReason:n.error,isPaused:!1,status:"error"}}};this.state=r(this.state),pt.batch(()=>{T(this,Tn).forEach(s=>{s.onMutationUpdate(n)}),T(this,mt).notify({mutation:this,type:"updated",action:n})})},Pb);function xE(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var er,mn,wl,Eb,bE=(Eb=class extends hc{constructor(n={}){super();me(this,er);me(this,mn);me(this,wl);this.config=n,ne(this,er,new Set),ne(this,mn,new Map),ne(this,wl,0)}build(n,r,s){const i=new fE({mutationCache:this,mutationId:++Ll(this,wl)._,options:n.defaultMutationOptions(r),state:s});return this.add(i),i}add(n){T(this,er).add(n);const r=uo(n);if(typeof r=="string"){const s=T(this,mn).get(r);s?s.push(n):T(this,mn).set(r,[n])}this.notify({type:"added",mutation:n})}remove(n){if(T(this,er).delete(n)){const r=uo(n);if(typeof r=="string"){const s=T(this,mn).get(r);if(s)if(s.length>1){const i=s.indexOf(n);i!==-1&&s.splice(i,1)}else s[0]===n&&T(this,mn).delete(r)}}this.notify({type:"removed",mutation:n})}canRun(n){const r=uo(n);if(typeof r=="string"){const s=T(this,mn).get(r),i=s==null?void 0:s.find(a=>a.state.status==="pending");return!i||i===n}else return!0}runNext(n){var s;const r=uo(n);if(typeof r=="string"){const i=(s=T(this,mn).get(r))==null?void 0:s.find(a=>a!==n&&a.state.isPaused);return(i==null?void 0:i.continue())??Promise.resolve()}else return Promise.resolve()}clear(){pt.batch(()=>{T(this,er).forEach(n=>{this.notify({type:"removed",mutation:n})}),T(this,er).clear(),T(this,mn).clear()})}getAll(){return Array.from(T(this,er))}find(n){const r={exact:!0,...n};return this.getAll().find(s=>Jf(r,s))}findAll(n={}){return this.getAll().filter(r=>Jf(n,r))}notify(n){pt.batch(()=>{this.listeners.forEach(r=>{r(n)})})}resumePausedMutations(){const n=this.getAll().filter(r=>
vendor: 6,897 bytes, lines 291-300
291r.state.isPaused);return pt.batch(()=>Promise.all(n.map(r=>r.continue().catch(cn))))}},er=new WeakMap,mn=new WeakMap,wl=new WeakMap,Eb);function uo(t){var n;return(n=t.options.scope)==null?void 0:n.id}function ex(t){return{onFetch:(n,r)=>{var u,h,g,m,j;const s=n.options,i=(g=(h=(u=n.fetchOptions)==null?void 0:u.meta)==null?void 0:h.fetchMore)==null?void 0:g.direction,a=((m=n.state.data)==null?void 0:m.pages)||[],l=((j=n.state.data)==null?void 0:j.pageParams)||[];let o={pages:[],pageParams:[]},d=0;const c=async()=>{let p=!1;const b=v=>{Object.defineProperty(v,"signal",{enumerable:!0,get:()=>(n.signal.aborted?p=!0:n.signal.addEventListener("abort",()=>{p=!0}),n.signal)})},x=gy(n.options,n.fetchOptions),f=async(v,w,k)=>{if(p)return Promise.reject();if(w==null&&v.pages.length)return Promise.resolve(v);const S=(()=>{const G={client:n.client,queryKey:n.queryKey,pageParam:w,direction:k?"backward":"forward",meta:n.options.meta};return b(G),G})(),A=await x(S),{maxPages:P}=n.options,D=k?iE:sE;return{pages:D(v.pages,A,P),pageParams:D(v.pageParams,w,P)}};if(i&&a.length){const v=i==="backward",w=v?jE:tx,k={pages:a,pageParams:l},N=w(s,k);o=await f(k,N,v)}else{const v=t??a.length;do{const w=d===0?l[0]??s.initialPageParam:tx(s,o);if(d>0&&w==null)break;o=await f(o,w),d++}while(d<v)}return o};n.options.persister?n.fetchFn=()=>{var p,b;return(b=(p=n.options).persister)==null?void 0:b.call(p,c,{client:n.client,queryKey:n.queryKey,meta:n.options.meta,signal:n.signal},r)}:n.fetchFn=c}}}function tx(t,{pages:n,pageParams:r}){const s=n.length-1;return n.length>0?t.getNextPageParam(n[s],n,r[s],r):void 0}function jE(t,{pages:n,pageParams:r}){var s;return n.length>0?(s=t.getPreviousPageParam)==null?void 0:s.call(t,n[0],n,r[0],r):void 0}var Ge,Dr,_r,Oi,Ri,Mr,Gi,Ii,Tb,vE=(Tb=class{constructor(t={}){me(this,Ge);me(this,Dr);me(this,_r);me(this,Oi);me(this,Ri);me(this,Mr);me(this,Gi);me(this,Ii);ne(this,Ge,t.queryCache||new pE),ne(this,Dr,t.mutationCache||new bE),ne(this,_r,t.defaultOptions||{}),ne(this,Oi,new Map),ne(this,Ri,new Map),ne(this,Mr,0)}mount(){Ll(this,Mr)._++,T(this,Mr)===1&&(ne(this,Gi,py.subscribe(async t=>{t&&(await this.resumePausedMutations(),T(this,Ge).onFocus())})),ne(this,Ii,Ad.subscribe(async t=>{t&&(await this.resumePausedMutations(),T(this,Ge).onOnline())})))}unmount(){var t,n;Ll(this,Mr)._--,T(this,Mr)===0&&((t=T(this,Gi))==null||t.call(this),ne(this,Gi,void 0),(n=T(this,Ii))==null||n.call(this),ne(this,Ii,void 0))}isFetching(t){return T(this,Ge).findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return T(this,Dr).findAll({...t,status:"pending"}).length}getQueryData(t){var r;const n=this.defaultQueryOptions({queryKey:t});return(r=T(this,Ge).get(n.queryHash))==null?void 0:r.state.data}ensureQueryData(t){const n=this.defaultQueryOptions(t),r=T(this,Ge).build(this,n),s=r.state.data;return s===void 0?this.fetchQuery(t):(t.revalidateIfStale&&r.isStaleByTime(Vh(n.staleTime,r))&&this.prefetchQuery(n),Promise.resolve(s))}getQueriesData(t){return T(this,Ge).findAll(t).map(({queryKey:n,state:r})=>{const s=r.data;return[n,s]})}setQueryData(t,n,r){const s=this.defaultQueryOptions({queryKey:t}),i=T(this,Ge).get(s.queryHash),a=i==null?void 0:i.state.data,l=QP(n,a);if(l!==void 0)return T(this,Ge).build(this,s).setData(l,{...r,manual:!0})}setQueriesData(t,n,r){return pt.batch(()=>T(this,Ge).findAll(t).map(({queryKey:s})=>[s,this.setQueryData(s,n,r)]))}getQueryState(t){var r;const n=this.defaultQueryOptions({queryKey:t});return(r=T(this,Ge).get(n.queryHash))==null?void 0:r.state}removeQueries(t){const n=T(this,Ge);pt.batch(()=>{n.findAll(t).forEach(r=>{n.remove(r)})})}resetQueries(t,n){const r=T(this,Ge);return pt.batch(()=>(r.findAll(t).forEach(s=>{s.reset()}),this.refetchQueries({type:"active",...t},n)))}cancelQueries(t,n={}){const r={revert:!0,...n},s=pt.batch(()=>T(this,Ge).findAll(t).map(i=>i.cancel(r)));return Promise.all(s).then(cn).catch(cn)}invalidateQueries(t,n={}){return pt.batch(()=>(T(this,Ge).findAll(t).forEach(r=>{r.invalidate()}),(t==null?void 0:t.refetchType)==="none"?Promise.resolve():this.refetchQueries({...t,type:(t==null?void 0:t.refetchType)??(t==null?void 0:t.type)??"active"},n)))}refetchQueries(t,n={}){const r={...n,cancelRefetch:n.cancelRefetch??!0},s=pt.batch(()=>T(this,Ge).findAll(t).filter(i=>!i.isDisabled()&&!i.isStatic()).map(i=>{let a=i.fetch(void 0,r);return r.throwOnError||(a=a.catch(cn)),i.state.fetchStatus==="paused"?Promise.resolve():a}));return Promise.all(s).then(cn)}fetchQuery(t){const n=this.defaultQueryOptions(t);n.retry===void 0&&(n.retry=!1);const r=T(this,Ge).build(this,n);return r.isStaleByTime(Vh(n.staleTime,r))?r.fetch(n):Promise.resolve(r.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(cn).catch(cn)}fetchInfiniteQuery(t){return t.behavior=ex(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(cn).catch(cn)}ensureInfiniteQueryData(t){return t.behavior=ex(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return Ad.isOnline()?T(this,Dr).resumePausedMutations():Promise.resolve()}getQueryCache(){return T(this,Ge)}getMutationCache(){return T(this,Dr)}getDefaultOptions(){return T(this,_r)}setDefaultOptions(t){ne(this,_r,t)}setQueryDefaults(t,n){T(this,Oi).set(cl(t),{queryKey:t,defaultOptions:n})}getQueryDefaults(t){const n=[...T(this,Oi).values()],r={};return n.forEach(s=>{ul(t,s.queryKey)&&Object.assign(r,s.defaultOptions)}),r}setMutationDefaults(t,n){T(this,Ri).set(cl(t),{mutationKey:t,defaultOptions:n})}getMutationDefaults(t){const n=[...T(this,Ri).values()],r={};return n.forEach(s=>{ul(t,s.mutationKey)&&Object.assign(r,s.defaultOptions)}),r}defaultQueryOptions(t){if(t._defaulted)return t;const n={...T(this,_r).queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return n.queryHash||(n.queryHash=_g(n.queryKey,n)),n.refetchOnReconnect===void 0&&(n.refetchOnReconnect=n.networkMode!=="always"),n.throwOnError===void 0&&(n.throwOnError=!!n.suspense),!n.networkMode&&n.persister&&(n.networkMode="offlineFirst"),n.queryFn===Mg&&(n.enabled=!1),n}defaultMutationOptions(t){return t!=null&&t._defaulted?t:{...T(this,_r).mutations,...(t==null?void 0:t.mutationKey)&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){T(this,Ge).clear(),T(this,Dr).clear()}},Ge=new WeakMap,Dr=new WeakMap,_r=new WeakMap,Oi=new WeakMap,Ri=new WeakMap,Mr=new WeakMap,Gi=new WeakMap,Ii=new WeakMap,Tb),yE=y.createContext(void 0),wE=({client:t,children:n})=>(y.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),e.jsx(yE.Provider,{value:t,children:n}));/** 292 * @remix-run/router v1.23.0 293 * 294 * Copyright (c) Remix Software Inc. 295 * 296 * This source code is licensed under the MIT license found in the 297 * LICENSE.md file in the root directory of this source tree. 298 * 299 * @license MIT 300 */function hl(){return hl=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];
vendor: 5,028 bytes, line 300
300for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},hl.apply(this,arguments)}var Gr;(function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"})(Gr||(Gr={}));const nx="popstate";function kE(t){t===void 0&&(t={});function n(s,i){let{pathname:a,search:l,hash:o}=s.location;return $h("",{pathname:a,search:l,hash:o},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function r(s,i){return typeof i=="string"?i:Cd(i)}return SE(n,r,null,t)}function Ke(t,n){if(t===!1||t===null||typeof t>"u")throw new Error(n)}function vy(t,n){if(!t){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function NE(){return Math.random().toString(36).substr(2,8)}function rx(t,n){return{usr:t.state,key:t.key,idx:n}}function $h(t,n,r,s){return r===void 0&&(r=null),hl({pathname:typeof t=="string"?t:t.pathname,search:"",hash:""},typeof n=="string"?ra(n):n,{state:r,key:n&&n.key||s||NE()})}function Cd(t){let{pathname:n="/",search:r="",hash:s=""}=t;return r&&r!=="?"&&(n+=r.charAt(0)==="?"?r:"?"+r),s&&s!=="#"&&(n+=s.charAt(0)==="#"?s:"#"+s),n}function ra(t){let n={};if(t){let r=t.indexOf("#");r>=0&&(n.hash=t.substr(r),t=t.substr(0,r));let s=t.indexOf("?");s>=0&&(n.search=t.substr(s),t=t.substr(0,s)),t&&(n.pathname=t)}return n}function SE(t,n,r,s){s===void 0&&(s={});let{window:i=document.defaultView,v5Compat:a=!1}=s,l=i.history,o=Gr.Pop,d=null,c=u();c==null&&(c=0,l.replaceState(hl({},l.state,{idx:c}),""));function u(){return(l.state||{idx:null}).idx}function h(){o=Gr.Pop;let b=u(),x=b==null?null:b-c;c=b,d&&d({action:o,location:p.location,delta:x})}function g(b,x){o=Gr.Push;let f=$h(p.location,b,x);c=u()+1;let v=rx(f,c),w=p.createHref(f);try{l.pushState(v,"",w)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;i.location.assign(w)}a&&d&&d({action:o,location:p.location,delta:1})}function m(b,x){o=Gr.Replace;let f=$h(p.location,b,x);c=u();let v=rx(f,c),w=p.createHref(f);l.replaceState(v,"",w),a&&d&&d({action:o,location:p.location,delta:0})}function j(b){let x=i.location.origin!=="null"?i.location.origin:i.location.href,f=typeof b=="string"?b:Cd(b);return f=f.replace(/ $/,"%20"),Ke(x,"No window.location.(origin|href) available to create URL for href: "+f),new URL(f,x)}let p={get action(){return o},get location(){return t(i,l)},listen(b){if(d)throw new Error("A history only accepts one active listener");return i.addEventListener(nx,h),d=b,()=>{i.removeEventListener(nx,h),d=null}},createHref(b){return n(i,b)},createURL:j,encodeLocation(b){let x=j(b);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:g,replace:m,go(b){return l.go(b)}};return p}var sx;(function(t){t.data="data",t.deferred="deferred",t.redirect="redirect",t.error="error"})(sx||(sx={}));function AE(t,n,r){return r===void 0&&(r="/"),CE(t,n,r,!1)}function CE(t,n,r,s){let i=typeof n=="string"?ra(n):n,a=Og(i.pathname||"/",r);if(a==null)return null;let l=yy(t);PE(l);let o=null;for(let d=0;o==null&&d<l.length;++d){let c=BE(a);o=GE(l[d],c,s)}return o}function yy(t,n,r,s){n===void 0&&(n=[]),r===void 0&&(r=[]),s===void 0&&(s="");let i=(a,l,o)=>{let d={relativePath:o===void 0?a.path||"":o,caseSensitive:a.caseSensitive===!0,childrenIndex:l,route:a};d.relativePath.startsWith("/")&&(Ke(d.relativePath.startsWith(s),'Absolute route path "'+d.relativePath+'" nested under path '+('"'+s+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),d.relativePath=d.relativePath.slice(s.length));let c=$r([s,d.relativePath]),u=r.concat(d);a.children&&a.children.length>0&&(Ke(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),yy(a.children,n,u,c)),!(a.path==null&&!a.index)&&n.push({path:c,score:OE(c,a.index),routesMeta:u})};return t.forEach((a,l)=>{var o;if(a.path===""||!((o=a.path)!=null&&o.includes("?")))i(a,l);else for(let d of wy(a.path))i(a,l,d)}),n}function wy(t){let n=t.split("/");if(n.length===0)return[];let[r,...s]=n,i=r.endsWith("?"),a=r.replace(/\?$/,"");if(s.length===0)return i?[a,""]:[a];let l=wy(s.join("/")),o=[];return o.push(...l.map(d=>d===""?a:[a,d].join("/"))),i&&o.push(...l),o.map(d=>t.startsWith("/")&&d===""?"/":d)}function PE(t){t.sort((n,r)=>n.score!==r.score?r.score-n.score:RE(n.routesMeta.map(s=>s.childrenIndex),r.routesMeta.map(s=>s.childrenIndex)))}const EE=/^:[\w-]+$/,TE=3,zE=2,DE=1,_E=10,ME=-2,ix=t=>t==="*";function OE(t,n){let r=t.split("/"),s=r.length;return r.some(ix)&&(s+=ME),n&&(s+=zE),r.filter(i=>!ix(i)).reduce((i,a)=>i+(EE.test(a)?TE:a===""?DE:_E),s)}function RE(t,n){return t.length===n.length&&t.slice(0,-1).every((s,i)=>s===n[i])?t[t.length-1]-n[n.length-1]:0}function GE(t,n,r){let{routesMeta:s}=t,i={},a="/",l=[];for(let o=0;o<s.length;++o){let d=s[o],c=o===s.length-1,u=a==="/"?n:n.slice(a.length)||"/",h=ax({path:d.relativePath,caseSensitive:d.caseSensitive,end:c},u),g=d.route;if(!h&&c&&r&&!s[s.length-1].route.index&&(h=ax({path:d.relativePath,caseSensitive:d.caseSensitive,end:!1},u)),!h)return null;
vendor: 12,850 bytes, lines 300-318
300Object.assign(i,h.params),l.push({params:i,pathname:$r([a,h.pathname]),pathnameBase:WE($r([a,h.pathnameBase])),route:g}),h.pathnameBase!=="/"&&(a=$r([a,h.pathnameBase]))}return l}function ax(t,n){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[r,s]=IE(t.path,t.caseSensitive,t.end),i=n.match(r);if(!i)return null;let a=i[0],l=a.replace(/(.)\/+$/,"$1"),o=i.slice(1);return{params:s.reduce((c,u,h)=>{let{paramName:g,isOptional:m}=u;if(g==="*"){let p=o[h]||"";l=a.slice(0,a.length-p.length).replace(/(.)\/+$/,"$1")}const j=o[h];return m&&!j?c[g]=void 0:c[g]=(j||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:l,pattern:t}}function IE(t,n,r){n===void 0&&(n=!1),r===void 0&&(r=!0),vy(t==="*"||!t.endsWith("*")||t.endsWith("/*"),'Route path "'+t+'" will be treated as if it were '+('"'+t.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+t.replace(/\*$/,"/*")+'".'));let s=[],i="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,o,d)=>(s.push({paramName:o,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)"));return t.endsWith("*")?(s.push({paramName:"*"}),i+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?i+="\\/*$":t!==""&&t!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,n?void 0:"i"),s]}function BE(t){try{return t.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return vy(!1,'The URL path "'+t+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+n+").")),t}}function Og(t,n){if(n==="/")return t;if(!t.toLowerCase().startsWith(n.toLowerCase()))return null;let r=n.endsWith("/")?n.length-1:n.length,s=t.charAt(r);return s&&s!=="/"?null:t.slice(r)||"/"}function KE(t,n){n===void 0&&(n="/");let{pathname:r,search:s="",hash:i=""}=typeof t=="string"?ra(t):t;return{pathname:r?r.startsWith("/")?r:FE(r,n):n,search:VE(s),hash:UE(i)}}function FE(t,n){let r=n.replace(/\/+$/,"").split("/");return t.split("/").forEach(i=>{i===".."?r.length>1&&r.pop():i!=="."&&r.push(i)}),r.length>1?r.join("/"):"/"}function mu(t,n,r,s){return"Cannot include a '"+t+"' character in a manually specified "+("`to."+n+"` field ["+JSON.stringify(s)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function LE(t){return t.filter((n,r)=>r===0||n.route.path&&n.route.path.length>0)}function Rg(t,n){let r=LE(t);return n?r.map((s,i)=>i===r.length-1?s.pathname:s.pathnameBase):r.map(s=>s.pathnameBase)}function Gg(t,n,r,s){s===void 0&&(s=!1);let i;typeof t=="string"?i=ra(t):(i=hl({},t),Ke(!i.pathname||!i.pathname.includes("?"),mu("?","pathname","search",i)),Ke(!i.pathname||!i.pathname.includes("#"),mu("#","pathname","hash",i)),Ke(!i.search||!i.search.includes("#"),mu("#","search","hash",i)));let a=t===""||i.pathname==="",l=a?"/":i.pathname,o;if(l==null)o=r;else{let h=n.length-1;if(!s&&l.startsWith("..")){let g=l.split("/");for(;g[0]==="..";)g.shift(),h-=1;i.pathname=g.join("/")}o=h>=0?n[h]:"/"}let d=KE(i,o),c=l&&l!=="/"&&l.endsWith("/"),u=(a||l===".")&&r.endsWith("/");return!d.pathname.endsWith("/")&&(c||u)&&(d.pathname+="/"),d}const $r=t=>t.join("/").replace(/\/\/+/g,"/"),WE=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),VE=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,UE=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function $E(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}const ky=["post","put","patch","delete"];new Set(ky);const HE=["get",...ky];new Set(HE);/** 301 * React Router v6.30.1 302 * 303 * Copyright (c) Remix Software Inc. 304 * 305 * This source code is licensed under the MIT license found in the 306 * LICENSE.md file in the root directory of this source tree. 307 * 308 * @license MIT 309 */function ml(){return ml=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},ml.apply(this,arguments)}const Ig=y.createContext(null),ZE=y.createContext(null),es=y.createContext(null),gc=y.createContext(null),ts=y.createContext({outlet:null,matches:[],isDataRoute:!1}),Ny=y.createContext(null);function qE(t,n){let{relative:r}=n===void 0?{}:n;sa()||Ke(!1);let{basename:s,navigator:i}=y.useContext(es),{hash:a,pathname:l,search:o}=Ay(t,{relative:r}),d=l;return s!=="/"&&(d=l==="/"?s:$r([s,l])),i.createHref({pathname:d,search:o,hash:a})}function sa(){return y.useContext(gc)!=null}function hr(){return sa()||Ke(!1),y.useContext(gc).location}function Sy(t){y.useContext(es).static||y.useLayoutEffect(t)}function Ml(){let{isDataRoute:t}=y.useContext(ts);return t?oT():YE()}function YE(){sa()||Ke(!1);let t=y.useContext(Ig),{basename:n,future:r,navigator:s}=y.useContext(es),{matches:i}=y.useContext(ts),{pathname:a}=hr(),l=JSON.stringify(Rg(i,r.v7_relativeSplatPath)),o=y.useRef(!1);return Sy(()=>{o.current=!0}),y.useCallback(function(c,u){if(u===void 0&&(u={}),!o.current)return;if(typeof c=="number"){s.go(c);return}let h=Gg(c,JSON.parse(l),a,u.relative==="path");t==null&&n!=="/"&&(h.pathname=h.pathname==="/"?n:$r([n,h.pathname])),(u.replace?s.replace:s.push)(h,u.state,u)},[n,s,l,a,t])}function Ay(t,n){let{relative:r}=n===void 0?{}:n,{future:s}=y.useContext(es),{matches:i}=y.useContext(ts),{pathname:a}=hr(),l=JSON.stringify(Rg(i,s.v7_relativeSplatPath));return y.useMemo(()=>Gg(t,JSON.parse(l),a,r==="path"),[t,l,a,r])}function JE(t,n){return QE(t,n)}function QE(t,n,r,s){sa()||Ke(!1);let{navigator:i}=y.useContext(es),{matches:a}=y.useContext(ts),l=a[a.length-1],o=l?l.params:{};l&&l.pathname;let d=l?l.pathnameBase:"/";l&&l.route;let c=hr(),u;if(n){var h;let b=typeof n=="string"?ra(n):n;d==="/"||(h=b.pathname)!=null&&h.startsWith(d)||Ke(!1),u=b}else u=c;let g=u.pathname||"/",m=g;if(d!=="/"){let b=d.replace(/^\//,"").split("/");m="/"+g.replace(/^\//,"").split("/").slice(b.length).join("/")}let j=AE(t,{pathname:m}),p=rT(j&&j.map(b=>Object.assign({},b,{params:Object.assign({},o,b.params),pathname:$r([d,i.encodeLocation?i.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?d:$r([d,i.encodeLocation?i.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),a,r,s);return n&&p?y.createElement(gc.Provider,{value:{location:ml({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:Gr.Pop}},p):p}function XE(){let t=lT(),n=$E(t)?t.status+" "+t.statusText:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},n),r?y.createElement("pre",{style:i},r):null,null)}const eT=y.createElement(XE,null);class tT extends y.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,r){return r.location!==n.location||r.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:r.error,location:r.location,revalidation:n.revalidation||r.revalidation}}componentDidCatch(n,r){console.error("React Router caught the following error during render",n,r)}render(){return this.state.error!==void 0?y.createElement(ts.Provider,{value:this.props.routeContext},y.createElement(Ny.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function nT(t){let{routeContext:n,match:r,children:s}=t,i=y.useContext(Ig);return i&&i.static&&i.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=r.route.id),y.createElement(ts.Provider,{value:n},s)}function rT(t,n,r,s){var i;if(n===void 0&&(n=[]),r===void 0&&(r=null),s===void 0&&(s=null),t==null){var a;if(!r)return null;if(r.errors)t=r.matches;else if((a=s)!=null&&a.v7_partialHydration&&n.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let l=t,o=(i=r)==null?void 0:i.errors;if(o!=null){let u=l.findIndex(h=>h.route.id&&(o==null?void 0:o[h.route.id])!==void 0);u>=0||Ke(!1),l=l.slice(0,Math.min(l.length,u+1))}let d=!1,c=-1;if(r&&s&&s.v7_partialHydration)for(let u=0;u<l.length;u++){let h=l[u];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(c=u),h.route.id){let{loaderData:g,errors:m}=r,j=h.route.loader&&g[h.route.id]===void 0&&(!m||m[h.route.id]===void 0);if(h.route.lazy||j){d=!0,c>=0?l=l.slice(0,c+1):l=[l[0]];break}}}return l.reduceRight((u,h,g)=>{let m,j=!1,p=null,b=null;r&&(m=o&&h.route.id?o[h.route.id]:void 0,p=h.route.errorElement||eT,d&&(c<0&&g===0?(j=!0,b=null):c===g&&(j=!0,b=h.route.hydrateFallbackElement||null)));let x=n.concat(l.slice(0,g+1)),f=()=>{let v;return m?v=p:j?v=b:h.route.Component?v=y.createElement(h.route.Component,null):h.route.element?v=h.route.element:v=u,y.createElement(nT,{match:h,routeContext:{outlet:u,matches:x,isDataRoute:r!=null},children:v})};return r&&(h.route.ErrorBoundary||h.route.errorElement||g===0)?y.createElement(tT,{location:r.location,revalidation:r.revalidation,component:p,error:m,children:f(),routeContext:{outlet:null,matches:x,isDataRoute:!0}}):f()},null)}var Cy=function(t){return t.UseBlocker="useBlocker",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t}(Cy||{}),Pd=function(t){return t.UseBlocker="useBlocker",t.UseLoaderData="useLoaderData",t.UseActionData="useActionData",t.UseRouteError="useRouteError",t.UseNavigation="useNavigation",t.UseRouteLoaderData="useRouteLoaderData",t.UseMatches="useMatches",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t.UseRouteId="useRouteId",t}(Pd||{});function sT(t){let n=y.useContext(Ig);return n||Ke(!1),n}function iT(t){let n=y.useContext(ZE);return n||Ke(!1),n}function aT(t){let n=y.useContext(ts);return n||Ke(!1),n}function Py(t){let n=aT(),r=n.matches[n.matches.length-1];return r.route.id||Ke(!1),r.route.id}function lT(){var t;let n=y.useContext(Ny),r=iT(Pd.UseRouteError),s=Py(Pd.UseRouteError);return n!==void 0?n:(t=r.errors)==null?void 0:t[s]}function oT(){let{router:t}=sT(Cy.UseNavigateStable),n=Py(Pd.UseNavigateStable),r=y.useRef(!1);return Sy(()=>{r.current=!0}),y.useCallback(function(i,a){a===void 0&&(a={}),r.current&&(typeof i=="number"?t.navigate(i):t.navigate(i,ml({fromRouteId:n},a)))},[t,n])}function dT(t,n){t==null||t.v7_startTransition,t==null||t.v7_relativeSplatPath}function Ey(t){let{to:n,replace:r,state:s,relative:i}=t;sa()||Ke(!1);let{future:a,static:l}=y.useContext(es),{matches:o}=y.useContext(ts),{pathname:d}=hr(),c=Ml(),u=Gg(n,Rg(o,a.v7_relativeSplatPath),d,i==="path"),h=JSON.stringify(u);return y.useEffect(()=>c(JSON.parse(h),{replace:r,state:s,relative:i}),[c,h,i,r,s]),null}function pe(t){Ke(!1)}function cT(t){let{basename:n="/",children:r=null,location:s,navigationType:i=Gr.Pop,navigator:a,static:l=!1,future:o}=t;sa()&&Ke(!1);let d=n.replace(/^\/*/,"/"),c=y.useMemo(()=>({basename:d,navigator:a,static:l,future:ml({v7_relativeSplatPath:!1},o)}),[d,o,a,l]);typeof s=="string"&&(s=ra(s));let{pathname:u="/",search:h="",hash:g="",state:m=null,key:j="default"}=s,p=y.useMemo(()=>{let b=Og(u,d);return b==null?null:{location:{pathname:b,search:h,hash:g,state:m,key:j},navigationType:i}},[d,u,h,g,m,j,i]);return p==null?null:y.createElement(es.Provider,{value:c},y.createElement(gc.Provider,{children:r,value:p}))}function uT(t){let{children:n,location:r}=t;return JE(Hh(n),r)}new Promise(()=>{});function Hh(t,n){n===void 0&&(n=[]);let r=[];return y.Children.forEach(t,(s,i)=>{if(!y.isValidElement(s))return;let a=[...n,i];if(s.type===y.Fragment){r.push.apply(r,Hh(s.props.children,a));return}s.type!==pe&&Ke(!1),!s.props.index||!s.props.children||Ke(!1);let l={id:s.props.id||a.join("-"),caseSensitive:s.props.caseSensitive,element:s.props.element,Component:s.props.Component,index:s.props.index,path:s.props.path,loader:s.props.loader,action:s.props.action,errorElement:s.props.errorElement,ErrorBoundary:s.props.ErrorBoundary,hasErrorBoundary:s.props.ErrorBoundary!=null||s.props.errorElement!=null,shouldRevalidate:s.props.shouldRevalidate,handle:s.props.handle,lazy:s.props.lazy};s.props.children&&(l.children=Hh(s.props.children,a)),r.push(l)}),r}/** 310 * React Router DOM v6.30.1 311 * 312 * Copyright (c) Remix Software Inc. 313 * 314 * This source code is licensed under the MIT license found in the 315 * LICENSE.md file in the root directory of this source tree. 316 * 317 * @license MIT 318 */function Zh(){return Zh=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];
318for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},Zh.apply(this,arguments)}function hT(t,n){if(t==null)return{};var r={},s=Object.keys(t),i,a;for(a=0;a<s.length;a++)i=s[a],!(n.indexOf(i)>=0)&&(r[i]=t[i]);return r}function mT(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function gT(t,n){return t.button===0&&(!n||n==="_self")&&!mT(t)}function qh(t){return t===void 0&&(t=""),new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((n,r)=>{let s=t[r];return n.concat(Array.isArray(s)?s.map(i=>[r,i]):[[r,s]])},[]))}function pT(t,n){let r=qh(t);return n&&n.forEach((s,i)=>{r.has(i)||n.getAll(i).forEach(a=>{r.append(i,a)})}),r}const fT=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],xT="6";try{window.__reactRouterVersion=xT}catch{}const bT="startTransition",lx=Nm[bT];function jT(t){let{basename:n,children:r,future:s,window:i}=t,a=y.useRef();a.current==null&&(a.current=kE({window:i,v5Compat:!0}));let l=a.current,[o,d]=y.useState({action:l.action,location:l.location}),{v7_startTransition:c}=s||{},u=y.useCallback(h=>{c&&lx?lx(()=>d(h)):d(h)},[d,c]);return y.useLayoutEffect(()=>l.listen(u),[l,u]),y.useEffect(()=>dT(s),[s]),y.createElement(cT,{basename:n,children:r,location:o.location,navigationType:o.action,navigator:l,future:s})}const vT=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",yT=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,E=y.forwardRef(function(n,r){let{onClick:s,relative:i,reloadDocument:a,replace:l,state:o,target:d,to:c,preventScrollReset:u,viewTransition:h}
318=n,g=hT(n,fT),{basename:m}=y.useContext(es),j,p=!1;if(typeof c=="string"&&yT.test(c)&&(j=c,vT))try{let v=new URL(window.location.href),w=c.startsWith("//")?new URL(v.protocol+c):new URL(c),k=Og(w.pathname,m);w.origin===v.origin&&k!=null?c=k+w.search+w.hash:p=!0}catch{}let b=qE(c,{relative:i}),x=wT(c,{replace:l,state:o,target:d,preventScrollReset:u,relative:i,viewTransition:h});function f(v){s&&s(v),v.defaultPrevented||x(v)}return y.createElement("a",Zh({},g,{href:j||b,onClick:p||a?s:f,ref:r,target:d}))});var ox;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(ox||(ox={}));var dx;(function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"})(dx||(dx={}));function wT(t,n){let{target:r,replace:s,state:i,preventScrollReset:a,relative:l,viewTransition:o}=n===void 0?{}:n,d=Ml(),c=hr(),u=Ay(t,{relative:l});return y.useCallback(h=>{if(gT(h,r)){h.preventDefault();let g=s!==void 0?s:Cd(c)===Cd(u);d(t,{replace:g,state:i,preventScrollReset:a,relative:l,viewTransition:o})}},[c,d,u,s,i,r,t,a,l,o])}function kT(t){let n=y.useRef(qh(t)),r=y.useRef(!1),s=hr(),i=y.useMemo(()=>pT(s.search,r.current?null:n.current),[s.search]),a=Ml(),l=y.useCallback((o,d)=>{const c=qh(typeof o=="function"?o(i):o);r.current=!0,a("?"+c,d)},[a,i]);return[i,l]}var NT=typeof Element<"u",ST=typeof Map=="function",AT=typeof Set=="function",CT=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function $o(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,s,i;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(s=r;s--!==0;)if(!$o(t[s],n[s]))return!1;return!0}var a;if(ST&&t instanceof Map&&n instanceof Map){if(t.size!==n.size)return!1;for(a=t.entries();!(s=a.next()).done;)if(!n.has(s.value[0]))return!1;for(a=t.entries();!(s=a.next()).done;)if(!$o(s.value[1],n.get(s.value[0])))return!1;return!0}if(AT&&t instanceof Set&&n instanceof Set){if(t.size!==n.size)return!1;for(a=t.entries();!(s=a.next()).done;)if(!n.has(s.value[0]))return!1;return!0}if(CT&&ArrayBuffer.isView(t)&&ArrayBuffer.isView(n)){if(r=t.length,r!=n.length)return!1;for(s=r;s--!==0;)if(t[s]!==n[s])return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf&&typeof t.valueOf=="function"&&typeof n.valueOf=="function")return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString&&typeof t.toString=="function"&&typeof n.toString=="function")return t.toString()===n.toString();if(i=Object.keys(t),r=i.length,r!==Object.keys(n).length)return!1;for(s=r;s--!==0;)if(!Object.prototype.hasOwnProperty.call(n,i[s]))return!1;if(NT&&t instanceof Element)return!1;for(s=r;s--!==0;)if(!((i[s]==="_owner"||i[s]==="__v"||i[s]==="__o")&&t.$$typeof)&&!$o(t[i[s]],n[i[s]]))return!1;return!0}return t!==t&&n!==n}var PT=function(n,r){try{return $o(n,r)}catch(s){if((s.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw s}};const ET=kl(PT);var TT=function(t,n,r,s,i,a,l,o){if(!t){var d;if(n===void 0)d=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[r,s,i,a,l,o],u=0;d=new Error(n.replace(/%s/g,function(){return c[u++]})),d.name="Invariant Violation"}throw d.framesToPop=1,d}},zT=TT;const cx=kl(zT);var DT=function(n,r,s,i){var a=s?s.call(i,n,r):void 0;if(a!==void 0)return!!a;if(n===r)return!0;if(typeof n!="object"||!n||typeof r!="object"||!r)return!1;var l=Object.keys(n),o=Object.keys(r);if(l.length!==o.length)return!1;for(var d=Object.prototype.hasOwnProperty.bind(r),c=0;c<l.length;c++){var u=l[c];if(!d(u))return!1;var h=n[u],g=r[u];if(a=s?s.call(i,h,g,u):void 0,a===!1||a===void 0&&h!==g)return!1}return!0};const _T=kl(DT);var Ty=(t=>(t.BASE="base",t.BODY="body",t.HEAD="head",t.HTML="html",t.LINK="link",t.META="meta",t.NOSCRIPT="noscript",t.SCRIPT="script",t.STYLE="style",t.TITLE="title",t.FRAGMENT="Symbol(react.fragment)",t))(Ty||{}),gu={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]}
318,meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},ux=Object.values(Ty),Bg={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},MT=Object.entries(Bg).reduce((t,[n,r])=>(t[r]=n,t),{}),xn="data-rh",Ci={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},Pi=(t,n)=>{for(let r=t.length-1;r>=0;r-=1){const s=t[r];if(Object.prototype.hasOwnProperty.call(s,n))return s[n]}return null},OT=t=>{let n=Pi(t,"title");const r=Pi(t,Ci.TITLE_TEMPLATE);if(Array.isArray(n)&&(n=n.join("")),r&&n)return r.replace(/%s/g,()=>n);const s=Pi(t,Ci.DEFAULT_TITLE);return n||s||void 0},RT=t=>Pi(t,Ci.ON_CHANGE_CLIENT_STATE)||(()=>{}),pu=(t,n)=>n.filter(r=>typeof r[t]<"u").map(r=>r[t]).reduce((r,s)=>({...r,...s}),{}),GT=(t,n)=>n.filter(r=>typeof r.base<"u").map(r=>r.base).reverse().reduce((r,s)=>{if(!r.length){const i=Object.keys(s);for(let a=0;a<i.length;a+=1){const o=i[a].toLowerCase();if(t.indexOf(o)!==-1&&s[o])return r.concat(s)}}return r},[]),IT=t=>console&&typeof console.warn=="function"&&console.warn(t),ya=(t,n,r)=>{const s={};return r.filter(i=>Array.isArray(i[t])?!0:(typeof i[t]<"u"&&IT(`Helmet: ${t} should be of type "Array". Instead found type "${typeof i[t]}"`),!1)).map(i=>i[t]).reverse().reduce((i,a)=>{const l={};a.filter(d=>{let c;const u=Object.keys(d);for(let g=0;g<u.length;g+=1){const m=u[g],j=m.toLowerCase();n.indexOf(j)!==-1&&!(c==="rel"&&d[c].toLowerCase()==="canonical")&&!(j==="rel"&&d[j].toLowerCase()==="stylesheet")&&(c=j),n.indexOf(m)!==-1&&(m==="innerHTML"||m==="cssText"||m==="itemprop")&&(c=m)}if(!c||!d[c])return!1;const h=d[c].toLowerCase();return s[c]||(s[c]={}),l[c]||(l[c]={}),s[c][h]?!1:(l[c][h]=!0,!0)}).reverse().forEach(d=>i.push(d));const o=Object.keys(l);for(let d=0;d<o.length;d+=1){const c=o[d],u={...s[c],...l[c]};s[c]=u}return i},[]).reverse()},BT=(t,n)=>{if(Array.isArray(t)&&t.length){for(let r=0;r<t.length;r+=1)if(t[r][n])return!0}return!1},KT=t=>({baseTag:GT(["href"],t),bodyAttributes:pu("bodyAttributes",t),defer:Pi(t,Ci.DEFER),encode:Pi(t,Ci.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:pu("htmlAttributes",t),linkTags:ya("link",["rel","href"],t),metaTags:ya("meta",["name","charset","http-equiv","property","itemprop"],t),noscriptTags:ya("noscript",["innerHTML"],t),onChangeClientState:RT(t),scriptTags:ya("script",["src","innerHTML"],t),styleTags:ya("style",["cssText"],t),title:OT(t),titleAttributes:pu("titleAttributes",t),prioritizeSeoTags:BT(t,Ci.PRIORITIZE_SEO_TAGS)}),zy=t=>Array.isArray(t)?t.join(""):t,FT=(t,n)=>{const r=Object.keys(t);for(let s=0;s<r.length;s+=1)if(n[r[s]]&&n[r[s]].includes(t[r[s]]))return!0;return!1},fu=(t,n)=>Array.isArray(t)?t.reduce((r,s)=>(FT(s,n)?r.priority.push(s):r.default.push(s),r),{priority:[],default:[]}):{default:t,priority:[]},hx=(t,n)=>({...t,[n]:void 0}),LT=["noscript","script","style"],Yh=(t,n=!0)=>n===!1?String(t):String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),Dy=t=>Object.keys(t).reduce((n,r)=>{const s=typeof t[r]<"u"?`${r}="${t[r]}"`:`${r}`;return n?`${n} ${s}`:s},""),WT=(t,n,r,s)=>{const i=Dy(r),a=zy(n);return i?`<${t} ${xn}="true" ${i}>${Yh(a,s)}</${t}>`:`<${t} ${xn}="true">${Yh(a,s)}</${t}>`},VT=(t,n,r=!0)=>n.reduce((s,i)=>{const a=i,l=Object.keys(a).filter(c=>!(c==="innerHTML"||c==="cssText")).reduce((c,u)=>{const h=typeof a[u]>
318"u"?u:`${u}="${Yh(a[u],r)}"`;return c?`${c} ${h}`:h},""),o=a.innerHTML||a.cssText||"",d=LT.indexOf(t)===-1;return`${s}<${t} ${xn}="true" ${l}${d?"/>":`>${o}</${t}>`}`},""),_y=(t,n={})=>Object.keys(t).reduce((r,s)=>{const i=Bg[s];return r[i||s]=t[s],r},n),UT=(t,n,r)=>{const s={key:n,[xn]:!0},i=_y(r,s);return[_.createElement("title",i,n)]},Ho=(t,n)=>n.map((r,s)=>{const i={key:s,[xn]:!0};return Object.keys(r).forEach(a=>{const o=Bg[a]||a;if(o==="innerHTML"||o==="cssText"){const d=r.innerHTML||r.cssText;i.dangerouslySetInnerHTML={__html:d}}else i[o]=r[a]}),_.createElement(t,i)}),Kt=(t,n,r=!0)=>{switch(t){case"title":return{toComponent:()=>UT(t,n.title,n.titleAttributes),toString:()=>WT(t,n.title,n.titleAttributes,r)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>_y(n),toString:()=>Dy(n)};default:return{toComponent:()=>Ho(t,n),toString:()=>VT(t,n,r)}}},$T=({metaTags:t,linkTags:n,scriptTags:r,encode:s})=>{const i=fu(t,gu.meta),a=fu(n,gu.link),l=fu(r,gu.script);return{priorityMethods:{toComponent:()=>[...Ho("meta",i.priority),...Ho("link",a.priority),...Ho("script",l.priority)],toString:()=>`${Kt("meta",i.priority,s)} ${Kt("link",a.priority,s)} ${Kt("script",l.priority,s)}`},metaTags:i.default,linkTags:a.default,scriptTags:l.default}},HT=t=>{const{baseTag:n,bodyAttributes:r,encode:s=!0,htmlAttributes:i,noscriptTags:a,styleTags:l,title:o="",titleAttributes:d,prioritizeSeoTags:c}=t;let{linkTags:u,metaTags:h,scriptTags:g}=t,m={toComponent:()=>{},toString:()=>""};return c&&({priorityMethods:m,linkTags:u,metaTags:h,scriptTags:g}=$T(t)),{priority:m,base:Kt("base",n,s),bodyAttributes:Kt("bodyAttributes",r,s),htmlAttributes:Kt("htmlAttributes",i,s),link:Kt("link",u,s),meta:Kt("meta",h,s),noscript:Kt("noscript",a,s),script:Kt("script",g,s),style:Kt("style",l,s),title:Kt("title",{title:o,titleAttributes:d},s)}},Jh=HT,ho=[],My=!!(typeof window<"u"&&window.document&&window.document.createElement),Qh=class{constructor(t,n){Wn(this,"instances",[]);Wn(this,"canUseDOM",My);Wn(this,"context");Wn(this,"value",{setHelmet:t=>{this.context.helmet=t},helmetInstances:{get:()=>this.canUseDOM?ho:this.instances,add:t=>{(this.canUseDOM?ho:this.instances).push(t)},remove:t=>{const n=(this.canUseDOM?ho:this.instances).indexOf(t);(this.canUseDOM?ho:this.instances).splice(n,1)}}});this.context=t,this.canUseDOM=n||!1,n||(t.helmet=Jh({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},ZT={},Oy=_.createContext(ZT),Cs,Ry=(Cs=class extends y.Component{constructor(r){super(r);Wn(this,"helmetData");this.helmetData=new Qh(this.props.context||{},Cs.canUseDOM)}render(){return _.createElement(Oy.Provider,{value:this.helmetData.value},this.props.children)}},Wn(Cs,"canUseDOM",My),Cs),qs=(t,n)=>{const r=document.head||document.querySelector("head"),s=r.querySelectorAll(`${t}[${xn}]`),i=[].slice.call(s),a=[];let l;return n&&n.length&&n.forEach(o=>{const d=document.createElement(t);for(const c in o)if(Object.prototype.hasOwnProperty.call(o,c))if(c==="innerHTML")d.innerHTML=o.innerHTML;else if(c==="cssText")d.styleSheet?d.styleSheet.cssText=o.cssText:d.appendChild(document.createTextNode(o.cssText));else{const u=c,h=typeof o[u]>"u"?"":o[u];d.setAttribute(c,h)}d.setAttribute(xn,"true"),i.some((c,u)=>(l=u,d.isEqualNode(c)))?i.splice(l,1):a.push(d)}
318),i.forEach(o=>{var d;return(d=o.parentNode)==null?void 0:d.removeChild(o)}),a.forEach(o=>r.appendChild(o)),{oldTags:i,newTags:a}},Xh=(t,n)=>{const r=document.getElementsByTagName(t)[0];if(!r)return;const s=r.getAttribute(xn),i=s?s.split(","):[],a=[...i],l=Object.keys(n);for(const o of l){const d=n[o]||"";r.getAttribute(o)!==d&&r.setAttribute(o,d),i.indexOf(o)===-1&&i.push(o);const c=a.indexOf(o);c!==-1&&a.splice(c,1)}for(let o=a.length-1;o>=0;o-=1)r.removeAttribute(a[o]);i.length===a.length?r.removeAttribute(xn):r.getAttribute(xn)!==l.join(",")&&r.setAttribute(xn,l.join(","))},qT=(t,n)=>{typeof t<"u"&&document.title!==t&&(document.title=zy(t)),Xh("title",n)},mx=(t,n)=>{const{baseTag:r,bodyAttributes:s,htmlAttributes:i,linkTags:a,metaTags:l,noscriptTags:o,onChangeClientState:d,scriptTags:c,styleTags:u,title:h,titleAttributes:g}=t;Xh("body",s),Xh("html",i),qT(h,g);const m={baseTag:qs("base",r),linkTags:qs("link",a),metaTags:qs("meta",l),noscriptTags:qs("noscript",o),scriptTags:qs("script",c),styleTags:qs("style",u)},j={},p={};Object.keys(m).forEach(b=>{const{newTags:x,oldTags:f}=m[b];x.length&&(j[b]=x),f.length&&(p[b]=m[b].oldTags)}),n&&n(),d(t,j,p)},wa=null,YT=t=>{wa&&cancelAnimationFrame(wa),t.defer?wa=requestAnimationFrame(()=>{mx(t,()=>{wa=null})}):(mx(t),wa=null)},JT=YT,gx=class extends y.Component{constructor(){super(...arguments);Wn(this,"rendered",!1)}shouldComponentUpdate(n){return!_T(n,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:n}=this.props.context;n.remove(this),this.emitChange()}emitChange(){const{helmetInstances:n,setHelmet:r}=this.props.context;let s=null;const i=KT(n.get().map(a=>{const l={...a.props};return delete l.context,l}));Ry.canUseDOM?JT(i):Jh&&(s=Jh(i)),r(s)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:n}=this.props.context;n.add(this),this.emitChange()}render(){return this.init(),null}},Bu,fe=(Bu=class extends y.Component{shouldComponentUpdate(t){return!ET(hx(this.props,"helmetData"),hx(t,"helmetData"))}mapNestedChildrenToProps(t,n){if(!n)return null;switch(t.type){case"script":case"noscript":return{innerHTML:n};case"style":return{cssText:n};default:throw new Error(`<${t.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(t,n,r,s){return{...n,[t.type]:[...n[t.type]||[],{...r,...this.mapNestedChildrenToProps(t,s)}]}}mapObjectTypeChildren(t,n,r,s){switch(t.type){case"title":return{...n,[t.type]:s,titleAttributes:{...r}};case"body":return{...n,bodyAttributes:{...r}};case"html":return{...n,htmlAttributes:{...r}};default:return{...n,[t.type]:{...r}}}}mapArrayTypeChildrenToProps(t,n){let r={...n};return Object.keys(t).forEach(s=>{r={...r,[s]:t[s]}}),r}warnOnInvalidChildren(t,n){return cx(ux.some(r=>t.type===r),typeof t.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${ux.join(", ")} are allowed. Helmet does not support rendering <${t.type}> elements. Refer to our API for more information.`),cx(!n||typeof n=="string"||Array.isArray(n)&&!n.some(r=>typeof r!="string"),`Helmet expects a string as a child of <${t.type}>. Did you forget to wrap your children in braces? ( <${t.type}>{\`\`}</${t.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(t,n){let r={};return _.Children.forEach(t,s=>{if(!s||!s.props)return;const{children:i,...a}=s.props,l=Object.keys(a).reduce((d,c)=>(d[MT[c]||c]=a[c],d),{});let{type:o}=s;
318switch(typeof o=="symbol"?o=o.toString():this.warnOnInvalidChildren(s,i),o){case"Symbol(react.fragment)":n=this.mapChildrenToProps(i,n);break;case"link":case"meta":case"noscript":case"script":case"style":r=this.flattenArrayTypeChildren(s,r,l,i);break;default:n=this.mapObjectTypeChildren(s,n,l,i);break}}),this.mapArrayTypeChildrenToProps(r,n)}render(){const{children:t,...n}=this.props;let r={...n},{helmetData:s}=n;if(t&&(r=this.mapChildrenToProps(t,r)),s&&!(s instanceof Qh)){const i=s;s=new Qh(i.context,!0),delete r.helmetData}return s?_.createElement(gx,{...r,context:s.value}):_.createElement(Oy.Consumer,null,i=>_.createElement(gx,{...r,context:i}))}},Wn(Bu,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),Bu);function se(t,n){typeof window>"u"||(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:t,...n||{}}))}function we(t){try{const n=new URL(t).pathname.split("/").filter(Boolean);return n[n.length-1]||""}catch{return""}}const QT=tc("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 shadow-soft hover:shadow-medium transition-all duration-300",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-soft",outline:"border-2 border-primary/20 bg-transparent text-foreground hover:bg-primary/5 hover:border-primary/40 transition-all duration-300",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 transition-all duration-300",ghost:"text-foreground hover:bg-muted hover:text-foreground transition-all duration-300",link:"text-primary underline-offset-4 hover:underline hover:text-primary/80 transition-colors",cta:"bg-cta text-cta-foreground hover:brightness-110 hover:scale-[1.02] shadow-md hover:shadow-lg hover:shadow-cta/25 transition-all duration-300 font-semibold",success:"bg-success text-success-foreground hover:bg-success/90 shadow-soft hover:shadow-medium transition-all duration-300",premium:"bg-gradient-primary text-primary-foreground hover:opacity-90 shadow-strong transition-all duration-300 font-semibold"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),q=y.forwardRef(({className:t,variant:n,size:r,asChild:s=!1,...i},a)=>{const l=s?Hv:"button";return e.jsx(l,{className:de(QT({variant:n,size:r,className:t})),ref:a,...i})});q.displayName="Button";var xu="focusScope.autoFocusOnMount",bu="focusScope.autoFocusOnUnmount",px={bubbles:!1,cancelable:!0},XT="FocusScope",Gy=y.forwardRef((t,n)=>{const{loop:r=!1,trapped:s=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...l}=t,[o,d]=y.useState(null),c=Gn(i),u=Gn(a),h=y.useRef(null),g=tt(n,p=>d(p)),m=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(s){let p=function(v){if(m.paused||!o)return;const w=v.target;o.contains(w)?h.current=w:Nr(h.current,{select:!0})},b=function(v){if(m.paused||!o)return;const w=v.relatedTarget;w!==null&&(o.contains(w)||Nr(h.current,{select:!0}))},x=function(v){if(document.activeElement===document.body)for(const k of v)k.removedNodes.length>0&&Nr(o)};document.addEventListener("focusin",p),document.addEventListener("focusout",b);const f=new MutationObserver(x);return o&&f.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",p),document.removeEventListener("focusout",b),f.disconnect()}}},[s,o,m.paused]),y.useEffect(()=>{if(o){xx.add(m);const p=document.activeElement;if(!o.contains(p)){const x=new CustomEvent(xu,px);o.addEventListener(xu,c),o.dispatchEvent(x),x.defaultPrevented||(ez(iz(Iy(o)),{select:!0}),document.activeElement===p&&Nr(o))}return()=>{o.removeEventListener(xu,c),setTimeout(()=>{const x=new CustomEvent(bu,px);o.addEventListener(bu,u),o.dispatchEvent(x),x.defaultPrevented||Nr(p??document.body,{select:!0}),o.removeEventListener(bu,u),xx.remove(m)},0)}}},[o,c,u,m]);const j=y.useCallback(p=>{if(!r&&!s||m.paused)return;const b=p.key==="Tab"&&!p.altKey&&!p.ctrlKey&&!p.metaKey,x=document.activeElement;if(b&&x){const f=p.currentTarget,[v,w]=tz(f);v&&w?!p.shiftKey&&x===w?(p.preventDefault(),r&&Nr(v,{select:!0}
318)):p.shiftKey&&x===v&&(p.preventDefault(),r&&Nr(w,{select:!0})):x===f&&p.preventDefault()}},[r,s,m.paused]);return e.jsx(Pe.div,{tabIndex:-1,...l,ref:g,onKeyDown:j})});Gy.displayName=XT;function ez(t,{select:n=!1}={}){const r=document.activeElement;for(const s of t)if(Nr(s,{select:n}),document.activeElement!==r)return}function tz(t){const n=Iy(t),r=fx(n,t),s=fx(n.reverse(),t);return[r,s]}function Iy(t){const n=[],r=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const i=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||i?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)n.push(r.currentNode);return n}function fx(t,n){for(const r of t)if(!nz(r,{upTo:n}))return r}function nz(t,{upTo:n}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(n!==void 0&&t===n)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function rz(t){return t instanceof HTMLInputElement&&"select"in t}function Nr(t,{select:n=!1}={}){if(t&&t.focus){const r=document.activeElement;t.focus({preventScroll:!0}),t!==r&&rz(t)&&n&&t.select()}}var xx=sz();function sz(){let t=[];return{add(n){const r=t[0];n!==r&&(r==null||r.pause()),t=bx(t,n),t.unshift(n)},remove(n){var r;t=bx(t,n),(r=t[0])==null||r.resume()}}}function bx(t,n){const r=[...t],s=r.indexOf(n);return s!==-1&&r.splice(s,1),r}function iz(t){return t.filter(n=>n.tagName!=="A")}var ju=0;function az(){y.useEffect(()=>{const t=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",t[0]??jx()),document.body.insertAdjacentElement("beforeend",t[1]??jx()),ju++,()=>{ju===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(n=>n.remove()),ju--}},[])}function jx(){const t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}var em=function(t,n){return em=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,s){r.__proto__=s}||function(r,s){for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(r[i]=s[i])},em(t,n)};function By(t,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");em(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}var Vt=function(){return Vt=Object.assign||function(n){for(var r,s=1,i=arguments.length;s<i;s++){r=arguments[s];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]=r[a])}return n},Vt.apply(this,arguments)};function ns(t,n){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&n.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,s=Object.getOwnPropertySymbols(t);i<s.length;i++)n.indexOf(s[i])<0&&Object.prototype.propertyIsEnumerable.call(t,s[i])&&(r[s[i]]=t[s[i]]);return r}function Ky(t,n,r,s){var i=arguments.length,a=i<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,r):s,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,n,r,s);else for(var o=t.length-1;o>=0;o--)(l=t[o])&&(a=(i<3?l(a):i>3?l(n,r,a):l(n,r))||a);return i>3&&a&&Object.defineProperty(n,r,a),a}function Fy(t,n){return function(r,s){n(r,s,t)}}function Ly(t,n,r,s,i,a){function l(x){if(x!==void 0&&typeof x!="function")throw new TypeError("Function expected");return x}for(var o=s.kind,d=o==="getter"?"get":o==="setter"?"set":"value",c=!n&&t?s.static?t:t.prototype:null,u=n||(c?Object.getOwnPropertyDescriptor(c,s.name):{}),h,g=!1,m=r.length-1;m>=0;m--){var j={};for(var p in s)j[p]=p==="access"?{}:s[p];for(var p in s.access)j.access[p]=s.access[p];j.addInitializer=function(x){if(g)throw new TypeError("Cannot add initializers after decoration has completed");a.push(l(x||null))};var b=(0,r[m])(o==="accessor"?{get:u.get,set:u.set}:u[d],j);if(o==="accessor"){if(b===void 0)continue;if(b===null||typeof b!="object")throw new TypeError("Object expected");(h=l(b.get))&&(u.get=h),(h=l(b.set))&&(u.set=h),(h=l(b.init))&&i.unshift(h)}else(h=l(b))&&(o==="field"?i.unshift(h):u[d]=h)}c&&Object.defineProperty(c,s.name,u),g=!0}function Wy(t,n,r){for(var s=arguments.length>2,i=0;i<n.length;i++)r=s?n[i].call(t,r):n[i].call(t);return s?r:void 0}function Vy(t){return typeof t=="symbol"?t:"".concat(t)}function Uy(t,n,r){return typeof n=="symbol"&&(n=n.description?"[".concat(n.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:r?"".concat(r," ",n):n})}function $y(t,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,n)}function F(t,n,r,s){function i(a){return a instanceof r?a:new r(function(l){l(a)})}return new(r||(r=Promise))(function(a,l){function o(u){try{c(s.next(u))}catch(h){l(h)}}function d(u){try{c(s.throw(u))}catch(h){l(h)}}function c(u){u.done?a(u.value):i(u.value).then(o,d)}c((s=s.apply(t,n||[])).next())})}function Hy(t,n){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},s,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=o(0),l.throw=o(1),l.return=o(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function o(c){return function(u){return d([c,u])}}function d(c){if(s)throw new TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(r=0)),r;)try{if(s=1,i&&(a=c[0]&2?i.return:c[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,c[1])).done)return a;switch(i=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]<a[3])){r.label=c[1];break}if(c[0]===6&&r.label<a[1]){r.label=a[1],a=c;break}if(a&&r.label<a[2]){r.label=a[2],r.ops.push(c);break}a[2]&&r.ops.pop(),r.trys.pop();continue}c=n.call(t,r)}catch(u){c=[6,u],i=0}finally{s=a=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}var pc=Object.create?function(t,n,r,s){s===void 0&&(s=r);var i=Object.getOwnPropertyDescriptor(n,r);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[r]}}),Object.defineProperty(t,s,i)}:function(t,n,r,s){s===void 0&&(s=r),t[s]=n[r]};function Zy(t,n){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(n,r)&&pc(n,t,r)}function Ed(t){var n=typeof Symbol=="function"&&Symbol.iterator,r=n&&t[n],s=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function Kg(t,n){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var s=r.call(t),i,a=[],l;try{for(;(n===void 0||n-- >0)&&!(i=s.next()).done;)a.push(i.value)}catch(o){l={error:o}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(l)throw l.error}}return a}function qy(){for(var t=[],n=0;n<arguments.length;n++)t=t.concat(Kg(arguments[n]));return t}function Yy(){for(var t=0,n=0,r=arguments.length;n<r;n++)t+=arguments[n].length;for(var s=Array(t),i=0,n=0;n<r;n++)for(var a=arguments[n],l=0,o=a.length;l<o;l++,i++)s[i]=a[l];return s}function Fg(t,n,r){if(r||arguments.length===2)for(var s=0,i=n.length,a;s<i;s++)(a||!(s in n))&&(a||(a=Array.prototype.slice.call(n,0,s)),a[s]=n[s]);return t.concat(a||Array.prototype.slice.call(n))}function Yi(t){return this instanceof Yi?(this.v=t,this):new Yi(t)}function Jy(t,n,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=r.apply(t,n||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",l),i[Symbol.asyncIterator]=function(){return this},i;function l(m){return function(j){return Promise.resolve(j).then(m,h)}}function o(m,j){s[m]&&(i[m]=function(p){return new Promise(function(b,x){a.push([m,p,b,x])>1||d(m,p)})},j&&(i[m]=j(i[m])))}function d(m,j){try{c(s[m](j))}catch(p){g(a[0][3],p)}}function c(m){m.value instanceof Yi?Promise.resolve(m.value.v).then(u,h):g(a[0][2],m)}function u(m){d("next",m)}function h(m){d("throw",m)}
vendor: 4,003 bytes, line 318
318function g(m,j){m(j),a.shift(),a.length&&d(a[0][0],a[0][1])}}function Qy(t){var n,r;return n={},s("next"),s("throw",function(i){throw i}),s("return"),n[Symbol.iterator]=function(){return this},n;function s(i,a){n[i]=t[i]?function(l){return(r=!r)?{value:Yi(t[i](l)),done:!1}:a?a(l):l}:a}}function Xy(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t[Symbol.asyncIterator],r;return n?n.call(t):(t=typeof Ed=="function"?Ed(t):t[Symbol.iterator](),r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r);function s(a){r[a]=t[a]&&function(l){return new Promise(function(o,d){l=t[a](l),i(o,d,l.done,l.value)})}}function i(a,l,o,d){Promise.resolve(d).then(function(c){a({value:c,done:o})},l)}}function ew(t,n){return Object.defineProperty?Object.defineProperty(t,"raw",{value:n}):t.raw=n,t}var lz=Object.create?function(t,n){Object.defineProperty(t,"default",{enumerable:!0,value:n})}:function(t,n){t.default=n},tm=function(t){return tm=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},tm(t)};function tw(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=tm(t),s=0;s<r.length;s++)r[s]!=="default"&&pc(n,t,r[s]);return lz(n,t),n}function nw(t){return t&&t.__esModule?t:{default:t}}function rw(t,n,r,s){if(r==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof n=="function"?t!==n||!s:!n.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?s:r==="a"?s.call(t):s?s.value:n.get(t)}function sw(t,n,r,s,i){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof n=="function"?t!==n||!i:!n.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?i.call(t,r):i?i.value=r:n.set(t,r),r}function iw(t,n){if(n===null||typeof n!="object"&&typeof n!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof t=="function"?n===t:t.has(n)}function aw(t,n,r){if(n!=null){if(typeof n!="object"&&typeof n!="function")throw new TypeError("Object expected.");var s,i;if(r){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");s=n[Symbol.asyncDispose]}if(s===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");s=n[Symbol.dispose],r&&(i=s)}if(typeof s!="function")throw new TypeError("Object not disposable.");i&&(s=function(){try{i.call(this)}catch(a){return Promise.reject(a)}}),t.stack.push({value:n,dispose:s,async:r})}else r&&t.stack.push({async:!0});return n}var oz=typeof SuppressedError=="function"?SuppressedError:function(t,n,r){var s=new Error(r);return s.name="SuppressedError",s.error=t,s.suppressed=n,s};function lw(t){function n(a){t.error=t.hasError?new oz(a,t.error,"An error was suppressed during disposal."):a,t.hasError=!0}var r,s=0;function i(){for(;r=t.stack.pop();)try{if(!r.async&&s===1)return s=0,t.stack.push(r),Promise.resolve().then(i);if(r.dispose){var a=r.dispose.call(r.value);if(r.async)return s|=2,Promise.resolve(a).then(i,function(l){return n(l),i()})}else s|=1}catch(l){n(l)}if(s===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return i()}function ow(t,n){return typeof t=="string"&&/^\.\.?\//.test(t)?t.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(r,s,i,a,l){return s?n?".jsx":".js":i&&(!a||!l)?r:i+a+"."+l.toLowerCase()+"js"}):t}const dz={__extends:By,__assign:Vt,__rest:ns,__decorate:Ky,__param:Fy,__esDecorate:Ly,__runInitializers:Wy,__propKey:Vy,__setFunctionName:Uy,__metadata:$y,__awaiter:F,__generator:Hy,__createBinding:pc,__exportStar:Zy,__values:Ed,__read:Kg,__spread:qy,__spreadArrays:Yy,__spreadArray:Fg,__await:Yi,__asyncGenerator:Jy,__asyncDelegator:Qy,__asyncValues:Xy,__makeTemplateOb
vendor: 5,740 bytes, lines 318-333
318ject:ew,__importStar:tw,__importDefault:nw,__classPrivateFieldGet:rw,__classPrivateFieldSet:sw,__classPrivateFieldIn:iw,__addDisposableResource:aw,__disposeResources:lw,__rewriteRelativeImportExtension:ow},cz=Object.freeze(Object.defineProperty({__proto__:null,__addDisposableResource:aw,get __assign(){return Vt},__asyncDelegator:Qy,__asyncGenerator:Jy,__asyncValues:Xy,__await:Yi,__awaiter:F,__classPrivateFieldGet:rw,__classPrivateFieldIn:iw,__classPrivateFieldSet:sw,__createBinding:pc,__decorate:Ky,__disposeResources:lw,__esDecorate:Ly,__exportStar:Zy,__extends:By,__generator:Hy,__importDefault:nw,__importStar:tw,__makeTemplateObject:ew,__metadata:$y,__param:Fy,__propKey:Vy,__read:Kg,__rest:ns,__rewriteRelativeImportExtension:ow,__runInitializers:Wy,__setFunctionName:Uy,__spread:qy,__spreadArray:Fg,__spreadArrays:Yy,__values:Ed,default:dz},Symbol.toStringTag,{value:"Module"}));var Zo="right-scroll-bar-position",qo="width-before-scroll-bar",uz="with-scroll-bars-hidden",hz="--removed-body-scroll-bar-size";function vu(t,n){return typeof t=="function"?t(n):t&&(t.current=n),t}function mz(t,n){var r=y.useState(function(){return{value:t,callback:n,facade:{get current(){return r.value},set current(s){var i=r.value;i!==s&&(r.value=s,r.callback(s,i))}}}})[0];return r.callback=n,r.facade}var gz=typeof window<"u"?y.useLayoutEffect:y.useEffect,vx=new WeakMap;function pz(t,n){var r=mz(null,function(s){return t.forEach(function(i){return vu(i,s)})});return gz(function(){var s=vx.get(r);if(s){var i=new Set(s),a=new Set(t),l=r.current;i.forEach(function(o){a.has(o)||vu(o,null)}),a.forEach(function(o){i.has(o)||vu(o,l)})}vx.set(r,t)},[t]),r}function fz(t){return t}function xz(t,n){n===void 0&&(n=fz);var r=[],s=!1,i={read:function(){if(s)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:t},useMedium:function(a){var l=n(a,s);return r.push(l),function(){r=r.filter(function(o){return o!==l})}},assignSyncMedium:function(a){for(s=!0;r.length;){var l=r;r=[],l.forEach(a)}r={push:function(o){return a(o)},filter:function(){return r}}},assignMedium:function(a){s=!0;var l=[];if(r.length){var o=r;r=[],o.forEach(a),l=r}var d=function(){var u=l;l=[],u.forEach(a)},c=function(){return Promise.resolve().then(d)};c(),r={push:function(u){l.push(u),c()},filter:function(u){return l=l.filter(u),r}}}};return i}function bz(t){t===void 0&&(t={});var n=xz(null);return n.options=Vt({async:!0,ssr:!1},t),n}var dw=function(t){var n=t.sideCar,r=ns(t,["sideCar"]);if(!n)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var s=n.read();if(!s)throw new Error("Sidecar medium not found");return y.createElement(s,Vt({},r))};dw.isSideCarExport=!0;function jz(t,n){return t.useMedium(n),dw}var cw=bz(),yu=function(){},fc=y.forwardRef(function(t,n){var r=y.useRef(null),s=y.useState({onScrollCapture:yu,onWheelCapture:yu,onTouchMoveCapture:yu}),i=s[0],a=s[1],l=t.forwardProps,o=t.children,d=t.className,c=t.removeScrollBar,u=t.enabled,h=t.shards,g=t.sideCar,m=t.noRelative,j=t.noIsolation,p=t.inert,b=t.allowPinchZoom,x=t.as,f=x===void 0?"div":x,v=t.gapMode,w=ns(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),k=g,N=pz([r,n]),S=Vt(Vt({},w),i);return y.createElement(y.Fragment,null,u&&y.createElement(k,{sideCar:cw,removeScrollBar:c,shards:h,noRelative:m,noIsolation:j,inert:p,setCallbacks:a,allowPinchZoom:!!b,lockRef:r,gapMode:v}),l?y.cloneElement(y.Children.only(o),Vt(Vt({},S),{ref:N})):y.createElement(f,Vt({},S,{className:d,ref:N}),o))});fc.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};fc.classNames={fullWidth:qo,zeroRight:Zo};var vz=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function yz(){if(!document)return null;var t=document.createElement("style");t.type="text/css";var n=vz();return n&&t.setAttribute("nonce",n),t}function wz(t,n){t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n))}function kz(t){var n=document.head||document.getElementsByTagName("head")[0];n.appendChild(t)}var Nz=function(){var t=0,n=null;return{add:function(r){t==0&&(n=yz())&&(wz(n,r),kz(n)),t++},remove:function(){t--,!t&&n&&(n.parentNode&&n.parentNode.removeChild(n),n=null)}}},Sz=function(){var t=Nz();return function(n,r){y.useEffect(function(){return t.add(n),function(){t.remove()}},[n&&r])}},uw=function(){var t=Sz(),n=function(r){var s=r.styles,i=r.dynamic;return t(s,i),null};return n},Az={left:0,top:0,right:0,gap:0},wu=function(t){return parseInt(t||"",10)||0},Cz=function(t){var n=window.getComputedStyle(document.body),r=n[t==="padding"?"paddingLeft":"marginLeft"],s=n[t==="padding"?"paddingTop":"marginTop"],i=n[t==="padding"?"paddingRight":"marginRight"];return[wu(r),wu(s),wu(i)]},Pz=function(t){if(t===void 0&&(t="margin"),typeof window>"u")return Az;var n=Cz(t),r=document.documentElement.clientWidth,s=window.innerWidth;return{left:n[0],top:n[1],right:n[2],gap:Math.max(0,s-r+n[2]-n[0])}},Ez=uw(),Ei="data-scroll-locked",Tz=function(t,n,r,s){var i=t.left,a=t.top,l=t.right,o=t.gap;return r===void 0&&(r="margin"),` 319 .`.concat(uz,` { 320 overflow: hidden `).concat(s,`; 321 padding-right: `).concat(o,"px ").concat(s,`; 322 } 323 body[`).concat(Ei,`] { 324 overflow: hidden `).concat(s,`; 325 overscroll-behavior: contain; 326 `).concat([n&&"position: relative ".concat(s,";"),r==="margin"&&` 327 padding-left: `.concat(i,`px; 328 padding-top: `).concat(a,`px; 329 padding-right: `).concat(l,`px; 330 margin-left:0; 331 margin-top:0; 332 margin-right: `).concat(o,"px ").concat(s,`; 333 `),r==="padding"&&"padding-right: ".concat(o,"px ").concat(s,";
333")].filter(Boolean).join(""),` 334 } 335 336 .`).concat(Zo,` { 337 right: `).concat(o,"px ").concat(s,`; 338 } 339 340 .`).concat(qo,` { 341 margin-right: `).concat(o,"px ").concat(s,`; 342 } 343 344 .`).concat(Zo," .").concat(Zo,` { 345 right: 0 `).concat(s,`; 346 } 347 348 .`).concat(qo," .").concat(qo,` { 349 margin-right: 0 `).concat(s,`; 350 } 351 352 body[`).concat(Ei,`] { 353 `).concat(hz,": ").concat(o,`px; 354 } 355`)},yx=function(){var t=parseInt(document.body.getAttribute(Ei)||"0",10);return isFinite(t)?t:0},zz=function(){y.useEffect(function(){return document.body.setAttribute(Ei,(yx()+1).toString()),function(){var t=yx()-1;t<=0?document.body.removeAttribute(Ei):document.body.setAttribute(Ei,t.toString())}},[])},Dz=function(t){var n=t.noRelative,r=t.noImportant,s=t.gapMode,i=s===void 0?"margin":s;zz();var a=y.useMemo(function(){return Pz(i)},[i]);return y.createElement(Ez,{styles:Tz(a,!n,i,r?"":"!important")})},nm=!1;if(typeof window<"u")try{var mo=Object.defineProperty({},"passive",{get:function(){return nm=!0,!0}});window.addEventListener("test",mo,mo),window.removeEventListener("test",mo,mo)}catch{nm=!1}var Ys=nm?{passive:!1}:!1,_z=function(t){return t.tagName==="TEXTAREA"},hw=function(t,n){if(!(t instanceof Element))return!1;var r=window.getComputedStyle(t);return r[n]!=="hidden"&&!(r.overflowY===r.overflowX&&!_z(t)&&r[n]==="visible")},Mz=function(t){return hw(t,"overflowY")},Oz=function(t){return hw(t,"overflowX")},wx=function(t,n){var r=n.ownerDocument,s=n;do{typeof ShadowRoot<"u"&&s instanceof ShadowRoot&&(s=s.host);var i=mw(t,s);
vendor: 4,761 bytes, lines 355-358
355if(i){var a=gw(t,s),l=a[1],o=a[2];if(l>o)return!0}s=s.parentNode}while(s&&s!==r.body);return!1},Rz=function(t){var n=t.scrollTop,r=t.scrollHeight,s=t.clientHeight;return[n,r,s]},Gz=function(t){var n=t.scrollLeft,r=t.scrollWidth,s=t.clientWidth;return[n,r,s]},mw=function(t,n){return t==="v"?Mz(n):Oz(n)},gw=function(t,n){return t==="v"?Rz(n):Gz(n)},Iz=function(t,n){return t==="h"&&n==="rtl"?-1:1},Bz=function(t,n,r,s,i){var a=Iz(t,window.getComputedStyle(n).direction),l=a*s,o=r.target,d=n.contains(o),c=!1,u=l>0,h=0,g=0;do{if(!o)break;var m=gw(t,o),j=m[0],p=m[1],b=m[2],x=p-b-a*j;(j||x)&&mw(t,o)&&(h+=x,g+=j);var f=o.parentNode;o=f&&f.nodeType===Node.DOCUMENT_FRAGMENT_NODE?f.host:f}while(!d&&o!==document.body||d&&(n.contains(o)||n===o));return(u&&(Math.abs(h)<1||!i)||!u&&(Math.abs(g)<1||!i))&&(c=!0),c},go=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},kx=function(t){return[t.deltaX,t.deltaY]},Nx=function(t){return t&&"current"in t?t.current:t},Kz=function(t,n){return t[0]===n[0]&&t[1]===n[1]},Fz=function(t){return` 356 .block-interactivity-`.concat(t,` {pointer-events: none;} 357 .allow-interactivity-`).concat(t,` {pointer-events: all;} 358`)},Lz=0,Js=[];function Wz(t){var n=y.useRef([]),r=y.useRef([0,0]),s=y.useRef(),i=y.useState(Lz++)[0],a=y.useState(uw)[0],l=y.useRef(t);y.useEffect(function(){l.current=t},[t]),y.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(i));var p=Fg([t.lockRef.current],(t.shards||[]).map(Nx),!0).filter(Boolean);return p.forEach(function(b){return b.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),p.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(i))})}}},[t.inert,t.lockRef.current,t.shards]);var o=y.useCallback(function(p,b){if("touches"in p&&p.touches.length===2||p.type==="wheel"&&p.ctrlKey)return!l.current.allowPinchZoom;var x=go(p),f=r.current,v="deltaX"in p?p.deltaX:f[0]-x[0],w="deltaY"in p?p.deltaY:f[1]-x[1],k,N=p.target,S=Math.abs(v)>Math.abs(w)?"h":"v";if("touches"in p&&S==="h"&&N.type==="range")return!1;var A=wx(S,N);if(!A)return!0;if(A?k=S:(k=S==="v"?"h":"v",A=wx(S,N)),!A)return!1;if(!s.current&&"changedTouches"in p&&(v||w)&&(s.current=k),!k)return!0;var P=s.current||k;return Bz(P,b,p,P==="h"?v:w,!0)},[]),d=y.useCallback(function(p){var b=p;if(!(!Js.length||Js[Js.length-1]!==a)){var x="deltaY"in b?kx(b):go(b),f=n.current.filter(function(k){return k.name===b.type&&(k.target===b.target||b.target===k.shadowParent)&&Kz(k.delta,x)})[0];if(f&&f.should){b.cancelable&&b.preventDefault();return}if(!f){var v=(l.current.shards||[]).map(Nx).filter(Boolean).filter(function(k){return k.contains(b.target)}),w=v.length>0?o(b,v[0]):!l.current.noIsolation;w&&b.cancelable&&b.preventDefault()}}},[]),c=y.useCallback(function(p,b,x,f){var v={name:p,delta:b,target:x,should:f,shadowParent:Vz(x)};n.current.push(v),setTimeout(function(){n.current=n.current.filter(function(w){return w!==v})},1)},[]),u=y.useCallback(function(p){r.current=go(p),s.current=void 0},[]),h=y.useCallback(function(p){c(p.type,kx(p),p.target,o(p,t.lockRef.current))},[]),g=y.useCallback(function(p){c(p.type,go(p),p.target,o(p,t.lockRef.current))},[]);y.useEffect(function(){return Js.push(a),t.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:g}),document.addEventListener("wheel",d,Ys),document.addEventListener("touchmove",d,Ys),document.addEventListener("touchstart",u,Ys),function(){Js=Js.filter(function(p){return p!==a}),document.removeEventListener("wheel",d,Ys),document.removeEventListener("touchmove",d,Ys),document.removeEventListener("touchstart",u,Ys)}},[]);var m=t.removeScrollBar,j=t.inert;return y.createElement(y.Fragment,null,j?y.createElement(a,{styles:Fz(i)}):null,m?y.createElement(Dz,{noRelative:t.noRelative,gapMode:t.gapMode}):null)}function Vz(t){for(var n=null;t!==null;)t instanceof ShadowRoot&&(n=t.host,t=t.host),t=t.parentNode;return n}const Uz=jz(cw,Wz);var pw=y.forwardRef(function(t,n){return y.createElement(fc,Vt({},t,{ref:n,sideCar:Uz}))});pw.classNames=fc.classNames;var $z=function(t){if(typeof document>"u")return null;var n=Array.isArray(t)?t[0]:t;return n.ownerDocument.body},Qs=new WeakMap,po=new WeakMap,fo={},ku=0,fw=function(t){return t&&(t.host||fw(t.parentNode))},Hz=function(t,n){return n.map(function(r){if(t.contains(r))return r;var s=fw(r);return s&&t.contains(s)?s:(console.error("aria-hidden",r,"in not contained inside",t,". Doing nothing"),null)}).filter(function(r){return!!r})},Zz=function(t,n,r,s){var i=Hz(n,Array.isArray(t)?t:[t]);fo[r]||(fo[r]=new WeakMap);var a=fo[r],l=[],o=new Set,d=new Set(i),c=function(h){!h||o.has(h)||(o.add(h),c(h.parentNode))};
vendor: 4,235 bytes, line 358
358i.forEach(c);var u=function(h){!h||d.has(h)||Array.prototype.forEach.call(h.children,function(g){if(o.has(g))u(g);else try{var m=g.getAttribute(s),j=m!==null&&m!=="false",p=(Qs.get(g)||0)+1,b=(a.get(g)||0)+1;Qs.set(g,p),a.set(g,b),l.push(g),p===1&&j&&po.set(g,!0),b===1&&g.setAttribute(r,"true"),j||g.setAttribute(s,"true")}catch(x){console.error("aria-hidden: cannot operate on ",g,x)}})};return u(n),o.clear(),ku++,function(){l.forEach(function(h){var g=Qs.get(h)-1,m=a.get(h)-1;Qs.set(h,g),a.set(h,m),g||(po.has(h)||h.removeAttribute(s),po.delete(h)),m||h.removeAttribute(r)}),ku--,ku||(Qs=new WeakMap,Qs=new WeakMap,po=new WeakMap,fo={})}},qz=function(t,n,r){r===void 0&&(r="data-aria-hidden");var s=Array.from(Array.isArray(t)?t:[t]),i=$z(t);return i?(s.push.apply(s,Array.from(i.querySelectorAll("[aria-live]"))),Zz(s,i,r,"aria-hidden")):function(){return null}},xc="Dialog",[xw,MR]=Ls(xc),[Yz,Nn]=xw(xc),bw=t=>{const{__scopeDialog:n,children:r,open:s,defaultOpen:i,onOpenChange:a,modal:l=!0}=t,o=y.useRef(null),d=y.useRef(null),[c,u]=Tl({prop:s,defaultProp:i??!1,onChange:a,caller:xc});return e.jsx(Yz,{scope:n,triggerRef:o,contentRef:d,contentId:Ka(),titleId:Ka(),descriptionId:Ka(),open:c,onOpenChange:u,onOpenToggle:y.useCallback(()=>u(h=>!h),[u]),modal:l,children:r})};bw.displayName=xc;var jw="DialogTrigger",vw=y.forwardRef((t,n)=>{const{__scopeDialog:r,...s}=t,i=Nn(jw,r),a=tt(n,i.triggerRef);return e.jsx(Pe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Vg(i.open),...s,ref:a,onClick:ye(t.onClick,i.onOpenToggle)})});vw.displayName=jw;var Lg="DialogPortal",[Jz,yw]=xw(Lg,{forceMount:void 0}),ww=t=>{const{__scopeDialog:n,forceMount:r,children:s,container:i}=t,a=Nn(Lg,n);return e.jsx(Jz,{scope:n,forceMount:r,children:y.Children.map(s,l=>e.jsx(Ws,{present:r||a.open,children:e.jsx(fg,{asChild:!0,container:i,children:l})}))})};ww.displayName=Lg;var Td="DialogOverlay",kw=y.forwardRef((t,n)=>{const r=yw(Td,t.__scopeDialog),{forceMount:s=r.forceMount,...i}=t,a=Nn(Td,t.__scopeDialog);return a.modal?e.jsx(Ws,{present:s||a.open,children:e.jsx(Xz,{...i,ref:n})}):null});kw.displayName=Td;var Qz=ll("DialogOverlay.RemoveScroll"),Xz=y.forwardRef((t,n)=>{const{__scopeDialog:r,...s}=t,i=Nn(Td,r);return e.jsx(pw,{as:Qz,allowPinchZoom:!0,shards:[i.contentRef],children:e.jsx(Pe.div,{"data-state":Vg(i.open),...s,ref:n,style:{pointerEvents:"auto",...s.style}})})}),Gs="DialogContent",Nw=y.forwardRef((t,n)=>{const r=yw(Gs,t.__scopeDialog),{forceMount:s=r.forceMount,...i}=t,a=Nn(Gs,t.__scopeDialog);return e.jsx(Ws,{present:s||a.open,children:a.modal?e.jsx(e3,{...i,ref:n}):e.jsx(t3,{...i,ref:n})})});Nw.displayName=Gs;var e3=y.forwardRef((t,n)=>{const r=Nn(Gs,t.__scopeDialog),s=y.useRef(null),i=tt(n,r.contentRef,s);return y.useEffect(()=>{const a=s.current;if(a)return qz(a)},[]),e.jsx(Sw,{...t,ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ye(t.onCloseAutoFocus,a=>{var l;a.preventDefault(),(l=r.triggerRef.current)==null||l.focus()}),onPointerDownOutside:ye(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,o=l.button===0&&l.ctrlKey===!0;(l.button===2||o)&&a.preventDefault()}),onFocusOutside:ye(t.onFocusOutside,a=>a.preventDefault())})}),t3=y.forwardRef((t,n)=>{const r=Nn(Gs,t.__scopeDialog),s=y.useRef(!1),i=y.useRef(!1);return e.jsx(Sw,{...t,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var l,o;(l=t.onCloseAutoFocus)==null||l.call(t,a),a.defaultPrevented||(s.current||(o=r.triggerRef.current)==null||o.focus(),a.preventDefault()),s.current=!1,i.current=!1},onInteractOutside:a=>{var d,c;(d=t.onInteractOutside)==null||d.call(t,a),a.defaultPrevented||(s.current=!0,a.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const l=a.target;((c=r.triggerRef.current)==null?void 0:c.contains(l))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&i.current&&a.preventDefault()}})}),Sw=y.forwardRef((t,n)=>{const{__scopeDialog:r,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,...l}=t,o=Nn(Gs,r),d=y.useRef(null),c=tt(n,d);return az(),e.jsxs(e.Fragment,{children:[e.jsx(Gy,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:i,onUnmountAutoFocus:a,children:e.jsx(Qd,{role:"dialog",id:o.c
358ontentId,"aria-describedby":o.descriptionId,"aria-labelledby":o.titleId,"data-state":Vg(o.open),...l,ref:c,onDismiss:()=>o.onOpenChange(!1)})}),e.jsxs(e.Fragment,{children:[e.jsx(n3,{titleId:o.titleId}),e.jsx(s3,{contentRef:d,descriptionId:o.descriptionId})]})]})}),Wg="DialogTitle",Aw=y.forwardRef((t,n)=>{const{__scopeDialog:r,...s}=t,i=Nn(Wg,r);return e.jsx(Pe.h2,{id:i.titleId,...s,ref:n})});Aw.displayName=Wg;var Cw="DialogDescription",Pw=y.forwardRef((t,n)=>{const{__scopeDialog:r,...s}=t,i=Nn(Cw,r);return e.jsx(Pe.p,{id:i.descriptionId,...s,ref:n})});Pw.displayName=Cw;var Ew="DialogClose",Tw=y.forwardRef((t,n)=>{const{__scopeDialog:r,...s}=t,i=Nn(Ew,r);return e.jsx(Pe.button,{type:"button",...s,ref:n,onClick:ye(t.onClick,()=>i.onOpenChange(!1))})});Tw.displayName=Ew;function Vg(t){return t?"open":"closed"}var zw="DialogTitleWarning",[OR,Dw]=_A(zw,{contentName:Gs,titleName:Wg,docsSlug:"dialog"}),n3=({titleId:t})=>{const n=Dw(zw),r=`\`${n.contentName}\` requires a \`${n.titleName}\` for the component to be accessible for screen reader users. 359 360If you want to hide the \`${n.titleName}\`, you can wrap it with our VisuallyHidden component. 361 362For more information, see https://radix-ui.com/primitives/docs/components/${n.docsSlug}`;return y.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},r3="DialogDescriptionWarning",s3=({contentRef:t,descriptionId:n})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Dw(r3).contentName}}.`;return y.useEffect(()=>{var a;const i=(a=t.current)==null?void 0:a.getAttribute("aria-describedby");n&&i&&(document.getElementById(n)||console.warn(s))},[s,t,n]),null},i3=bw,a3=vw,l3=ww,_w=kw,Mw=Nw,Ow=Aw,Rw=Pw,o3=Tw;const d3=i3,c3=a3,u3=l3,Gw=y.forwardRef(({className:t,...n},r)=>e.jsx(_w,{className:de("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...n,ref:r}));Gw.displayName=_w.displayName;const h3=tc("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),Iw=y.forwardRef(({side:t="right",className:n,children:r,...s},i)=>e.jsxs(u3,{children:[e.jsx(Gw,{}),e.jsxs(Mw,{ref:i,className:de(h3({side:t}),n),...s,children:[r,e.jsxs(o3,{className:"absolute right-4 top-4 roun
362ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[e.jsx(Hi,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Iw.displayName=Mw.displayName;const Bw=({className:t,...n})=>e.jsx("div",{className:de("flex flex-col space-y-2 text-center sm:text-left",t),...n});Bw.displayName="SheetHeader";const Kw=y.forwardRef(({className:t,...n},r)=>e.jsx(Ow,{ref:r,className:de("text-lg font-semibold text-foreground",t),...n}));Kw.displayName=Ow.displayName;const m3=y.forwardRef(({className:t,...n},r)=>e.jsx(Rw,{ref:r,className:de("text-sm text-muted-foreground",t),...n}));m3.displayName=Rw.displayName;const rs="/assets/adshero-logo-CSJkS1R4.png",oe={profitAudit:"https://calendly.com/adshero/ecom-ads-check"},g3=()=>{const[t,n]=y.useState(!1),r=s=>{if(window.location.pathname!=="/"){window.location.href=`/#${s}`;return}const i=document.getElementById(s);i&&(i.scrollIntoView({behavior:"smooth"}),n(!1))};return e.jsx("header",{className:"fixed top-0 left-0 right-0 z-50 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80 border-b border-border",children:e.jsx("div",{className:"container mx-auto px-4 max-w-7xl",children:e.jsxs("div",{className:"flex items-center justify-between h-16 md:h-20",children:[e.jsx("div",{className:"flex items-center",children:e.jsx("a",{href:"/",className:"flex items-center group",children:e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-8 md:h-10 w-auto transition-all duration-200 group-hover:scale-105 group-hover:opacity-90"})})}),e.jsxs("nav",{className:"hidden md:flex items-center gap-8",children:[e.jsx("a",{href:"/#problem",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Problem"}),e.jsx("a",{href:"/#losung",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Lösung"}),e.jsx("a",{href:"/#case-studies",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Case Studies"}),e.jsx("a",{href:"/#uber-uns",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Ãber uns"}),e.jsx("a",{href:"/google-ads-agentur",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Google Ads Agentur"}),e.jsx("a",{href:"/blog",className:"text-foreground hover:text-cta transition-colors font-medium",children:"Blog"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(q,{asChild:!0,variant:"cta",size:"lg",className:"hidden md:inline-flex",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Header"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:"Profit-Audit starten"})}),e.jsxs(d3,{open:t,onOpenChange:n,children:[e.jsx(c3,{asChild:!0,children:e.jsxs(q,{variant:"ghost",size:"icon",className:"md:hidden",children:[e.jsx(L2,{className:"h-6 w-6"}),e.jsx("span",{className:"sr-only",children:"Menü öffnen"})]})}),e.jsxs(Iw,{side:"right",className:"w-[300px] sm:w-[400px]",children:[e.jsx(Bw,{children:e.jsx(Kw,{className:"text-left",children:"Navigation"})}),e.jsxs("nav",{className:"flex flex-col gap-6 mt-8",children:[e.jsx("button",{onClick:()=>r("problem"),className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Problem"}),e.jsx("button",{onClick:()=>r("losung"),className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Lösung"}),e.jsx("button",{onClick:()=>r("case-studies"),className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Case Studies"}),e.jsx("button",{onClick:()=>r("uber-uns"),className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Ãber uns"}),e.jsx("a",{href:"/google-ads-agentur",className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Google Ads Agentur"}),e.jsx("a",{href:"/blog",className:"text-left text-lg font-medium text-foreground hover:text-cta transition-colors py-2",children:"Blog"}),e.jsx("div",{className:"pt-4 border-t border-border",children:e.jsx(q,{asChild:!0,variant:"cta",size:"lg",className:"w-full",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Header"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:"Profit-Audit starten"})})})]})]})]})]})]})})})},p3=tc("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function cr({className:t,variant:n,...r}){return e.jsx("div",{className:de(p3({variant:n}),t),...r})}const f3=()=>e.jsx("section",{className:"relative bg-gradient-hero pt-20 pb-24 md:pt-32 md:pb-40",children:e.jsx("div",{className:"container mx-auto px-4 max-w-7xl",children:e.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[e.jsx(cr,{variant:"secondary",className:"mb-6 text-sm font-medium px-4 py-2",children:"E-Commerce Growth Agentur"}),e.jsx("h1",{className:"text-3xl sm:text-4xl md:text-6xl lg:text-7xl font-bold text-foreground mb-6 leading-tight",children:"Mehr Gewinn mit Google Ads â nicht nur mehr Umsatz."}),e.jsx("p",{className:"text-lg md:text-xl text-muted-foreground mb-10 max-w-3xl mx-auto leading-relaxed",children:"Wir helfen Online-Shops dabei, profitabel zu skalieren â mit POAS-Tracking, Conversion-Optimierung und Google Ads, die endlich auf Gewinn statt ROAS optimieren."}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center items-center mb-12",children:[e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-6 md:px-8 py-4 md:py-6 h-auto w-full sm:w-auto",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Hero"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:[e.jsx("span",{className:"hidden sm:inline",children:"ð "}),"Profit-Audit starten",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})}),e.jsx(q,{asChild:!0,size:"lg",variant:"outline",className:"text-base md:text-lg px-6 md:px-8 py-4 md:py-6 h-auto w-full sm:w-auto",children:e.jsx("a",{href:"#case-studies",children:"Oder Case Studies ansehen"})})]}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-6 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"Google Partner"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"Ãber 13 Mio. ⬠Werbebudget verwaltet"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"Spezialisiert auf PMax & POAS"})]})]})]})})}),x3="/assets/google-partner-qNCX8Il9.svg",Fw="/assets/profitmetrics-badge-l52kHhy2.png",b3="/assets/shopify-partner-BtRagBhD.png",j3=[{name:"Google Partner",logo:x3,alt:"Google Partner Badge",className:"h-14 sm:h-16 md:h-20"},{name:"ProfitMetrics",logo:Fw,alt:"ProfitMetrics Certified Agency Partner",className:"h-16 sm:h-20 md:h-24"},{name:"Shopify Partners",logo:b3,alt:"Shopify Partners Badge",className:"h-12 sm:h-14 md:h-18"}],v3=()=>e.jsx("section",{className:"py-16 md:py-20 bg-primary",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsx("div",{className:"text-center mb-10",children:e.jsx("p",{className:"text-sm text-white/60 font-medium tracking-wider up
362percase",children:"Dein qualifizierter E-Commerce Partner"})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4 md:gap-6",children:j3.map(t=>e.jsx("div",{className:"bg-white/5 hover:bg-white/10 rounded-xl p-6 sm:p-8 md:p-10 flex items-center justify-center min-h-[80px] sm:min-h-[120px] md:min-h-[150px] transition-all duration-300",children:e.jsx("img",{src:t.logo,alt:t.alt,className:`${t.className} w-auto object-contain brightness-0 invert opacity-90`})},t.name))}),e.jsx("div",{className:"text-center mt-10",children:e.jsxs("p",{className:"text-sm text-white/60",children:["Ãber ",e.jsx("span",{className:"font-bold text-cta",children:"13 Mio. ⬠Werbebudget"})," in Google Ads verwaltet"]})})]})}),y3=()=>{const t=[{icon:Z2,title:"ROAS sieht gut aus â Konto nicht",description:"Du feierst 400% ROAS, aber am Monatsende fehlt das Geld auf dem Konto."},{icon:ac,title:"PMax optimiert in die falsche Richtung",description:"Performance Max pusht Umsatz, nicht Profit â und frisst Budget bei Ladenhütern."},{icon:Dl,title:"Blindflug bei Produktprofitabilität",description:"Du weiÃt nicht, welche deiner Produkte wirklich Gewinn bringen."},{icon:ic,title:"Tracking-Chaos",description:"Deine Conversion-Daten sind unvollständig â Google optimiert ins Leere."},{icon:yg,title:"Skalierung = Weniger Gewinn",description:"Mehr Budget sollte mehr Profit bringen â aber irgendwie ist das Gegenteil der Fall."},{icon:A0,title:"Agentur optimiert auf falsche KPIs",description:"Deine aktuelle Agentur feiert ROAS-Zahlen â aber du zahlst die Zeche."}];return e.jsx("section",{id:"problem",className:"py-20 md:py-32 bg-secondary",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-16",children:[e.jsx("div",{className:"inline-block px-4 py-2 rounded-full bg-destructive/10 border border-destructive/20 mb-6",children:e.jsx("p",{className:"text-sm font-semibold text-destructive",children:"Das Problem der meisten E-Commerce Shops"})}),e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-6 leading-tight",children:"Du optimierst auf die falsche Metrik"}),e.jsxs("p",{className:"text-xl text-muted-foreground max-w-3xl mx-auto",children:["Die meisten Agenturen und Google selbst pushen ROAS. Aber ROAS zeigt dir nur Umsatz pro Werbe-Euro â nicht, was davon als ",e.jsx("strong",{className:"text-foreground",children:"Gewinn"})," bei dir ankommt."]})]}),e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:t.map((n,r)=>{const s=n.icon;return e.jsx("div",{className:"group p-6 rounded-lg bg-background/50 border border-border hover:border-destructive/50 transition-all duration-300 hover:shadow-lg",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"flex-shrink-0 w-12 h-12 rounded-lg bg-destructive/10 flex items-center justify-center group-hover:bg-destructive/20 transition-colors",children:e.jsx(s,{className:"h-6 w-6 text-destructive"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground mb-2 group-hover:text-destructive transition-colors",children:n.title}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n.description})]})]})},r)})}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl md:text-2xl font-semibold text-foreground mb-8 max-w-3xl mx-auto",children:"Du kannst nicht profitabel skalieren, wenn du nicht weiÃt, welche Produkte wirklich Geld verdienen."}),e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-6 md:px-8 py-4 md:py-6 h-auto w-full sm:w-auto max-w-full",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Problem"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt Profit-Audit starten",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})]})]})})},ce=y.forwardRef(({className:t,...n},r)=>e.jsx("div",{ref:r,className:de("rounded-lg border bg-card text-card-foreground shadow-sm",t),...n}));ce.displayName="Card";const bc=y.forwardRef(({className:t,...n},r)=>e.jsx("div",{ref:r,className:de("flex flex-col space-y-1.5 p-6",t),...n}));
362bc.displayName="CardHeader";const Ug=y.forwardRef(({className:t,...n},r)=>e.jsx("h3",{ref:r,className:de("text-2xl font-semibold leading-none tracking-tight",t),...n}));Ug.displayName="CardTitle";const $g=y.forwardRef(({className:t,...n},r)=>e.jsx("p",{ref:r,className:de("text-sm text-muted-foreground",t),...n}));$g.displayName="CardDescription";const Vs=y.forwardRef(({className:t,...n},r)=>e.jsx("div",{ref:r,className:de("p-6 pt-0",t),...n}));Vs.displayName="CardContent";const Lw=y.forwardRef(({className:t,...n},r)=>e.jsx("div",{ref:r,className:de("flex items-center p-6 pt-0",t),...n}));Lw.displayName="CardFooter";const w3=()=>{const t=[{icon:Dl,title:"POAS-Tracking",description:"Wir messen den realen Gewinn pro Ad Spend. POAS zeigt dir klar: Profitabel, Breakeven, Unprofitabel â ohne Rätselraten oder ROAS-Schönfärberei."},{icon:H2,title:"Product-Labeling",description:'Jedes Produkt wird klassifiziert: "Profitabel", "Unprofitabel", "Low Traffic", "Bestseller". So flieÃt dein Budget nur noch zu Gewinnern.'},{icon:Os,title:"Budget-Intelligenz",description:"Wir schichten Budgets systematisch um â weg von Margenkillern und hin zu skalierbaren Produkten."},{icon:S0,title:"Conversion & Tracking Exzellenz",description:"Consent, GA4, Server-Side Tracking, CRO & SEO. Wir entfernen jede technische Hürde, damit deine Ads maximal performen."}];return e.jsx("section",{id:"losung",className:"py-20 md:py-32 bg-gradient-hero",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-7xl",children:[e.jsxs("div",{className:"text-center mb-16",children:[e.jsx("div",{className:"inline-block px-4 py-2 rounded-full bg-success/10 border border-success/20 mb-6",children:e.jsx("p",{className:"text-sm font-semibold text-success",children:"Die Lösung"})}),e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-4 leading-tight",children:"ProfitEngine⢠Framework von AdsHero"}),e.jsx("p",{className:"text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto",children:"Das einzige Google-Ads-System, das auf tatsächlichen Gewinnen statt ROAS basiert."})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-6 mb-12",children:t.map((n,r)=>{const s=n.icon;return e.jsxs(ce,{className:"group border-l-4 border-l-success border hover:border-success/50 transition-all duration-300 shadow-soft hover:shadow-medium",children:[e.jsxs(bc,{children:[e.jsx("div",{className:"h-12 w-12 rounded-lg bg-success/10 group-hover:bg-success/20 flex items-center justify-center mb-4 transition-colors duration-300",children:e.jsx(s,{className:"h-6 w-6 text-success"})}),e.jsx(Ug,{className:"text-xl md:text-2xl group-hover:text-success transition-colors duration-300",children:n.title})]}),e.jsx(Vs,{children:e.jsx($g,{className:"text-base leading-relaxed",children:n.description})})]},r)})}),e.jsx("div",{className:"text-center",children:e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-6 md:px-8 py-4 md:py-6 h-auto w-full sm:w-auto max-w-full",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Solution"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:[e.jsx("span",{className:"hidden sm:inline",children:"Verstehe deinen Profit â starte den Audit"}),e.jsx("span",{className:"sm:hidden",children:"Profit-Audit starten"}),e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})})]})})},rm="/assets/stahlia-logo-DQaLEDk5.png",k3="/assets/trachtenflirt-logo-C4DRZMZr.webp",N3="/assets/trazer-logo-ndVrLAlE.png",S3=()=>{const t=[{company:"Stahlia GmbH",logo:rm,subtitle:"Beschläge & Möbelbauteile",headline:"+85% Umsatz in 90 Tagen â bei fast gleichem Budget.",stats:[{label:"Juni",value:"45.000 ⬠Umsatz",subvalue:"9.800 ⬠Adspend"},{label:"August",value:"74.000 ⬠Umsatz",subvalue:"11.300 ⬠Adspend"}],highlights:["Gewinn: +40,7% (Juli), +38,0% (August)","Gesamt-Gewinnsteigerung: +94%","Amazon-Abhängigkeit signifikant reduziert","Shopify-Shop als eigenständige Profit-Quelle aufgebaut"]},{company:"Trachtenflirt",logo:k3,subtitle:"Mode / Fashion (Trachten)",headline:"Von 0 auf 52.000 Kunden in 5 Jahren â mit POAS 50% mehr Gewinn.",stats:[{label:"Erstes Jahr (2020)",value:"9.000 Kunden",subvalue:"Komplettaufbau von Grund auf"},{label:"November 2025",value:"52.000 Kunden",subvalue:"POAS-Werte: 4-5"}],highlights:["Von 0 auf 52.000 Kunden seit 2020","Umstellung auf POAS in 2024: +50% Gewinn","POAS-Werte 2025: 4-5 (Top-Performance)","Komplettaufbau E-Commerce (vorher nur B2B/Offline)"]},{company:"trazer",logo:N3,subtitle:"Sportbekleidung (Traction Socks)",headline:"Von 2k auf >50k Monatsumsatz in 5 Monaten.",stats:[{label:"Mai 2021 (Start)",value:"~2.000 ⬠Umsatz",subvalue:"Kaum Ads-Investment"},{label:"Juli - Sept 2021",value:">50.000 ⬠Umsatz/Monat",subvalue:"Mittlere 5-stellige Ads-Investition"}],highlights:["Durchschnittlicher ROAS: 3,11","Google Ads ROAS: 4,73","Multi-Channel: Facebook/Instagram + Google Ads (Shopping, Such, Display)","CRO-Optimierungen am Shop durchgeführt"]}];return e.jsx("section",{id:"case-studies",className:"py-20 md:py-32 bg-background",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-7xl",children:[e.jsxs("div",{className:"text-center mb-16",children:[e.jsx("div",{className:"inline-block px-4 py-2 rounded-full bg-success/10 border border-success/20 mb-6",children:e.jsx("p",{className:"text-sm font-semibold text-success",children:"Bewiesene Ergebnisse"})}),e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-4 leading-tight",children:"Shops, die mit AdsHero profitabel skaliert haben"})]}),e.jsx("div",{className:"grid lg:grid-cols-3 gap-8",children:t.map((n,r)=>e.jsxs(ce,{className:"group border-l-4 border-l-success border hover:border-success/50 transition-all duration-300 shadow-medium hover:shadow-strong",children:[e.jsxs(bc,{children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsx("div",{className:"flex items-center gap-3",children:e.jsx("img",{src:n.logo,alt:`${n.company} Logo`,className:"h-12 w-auto object-contain"})}),e.jsxs(cr,{variant:"default",className:"bg-success/15 text-success border border-success/30",children:[e.jsx(Os,{className:"h-3 w-3 mr-1"}),"Success"]})]}),e.jsxs("div",{children:[e.jsx(Ug,{className:"text-xl mb-1 group-hover:text-success transition-colors duration-300",children:n.company}),e.jsx($g,{className:"text-sm",children:n.subtitle})]}),e.jsx("p",{className:"text-lg font-bold text-foreground mt-4",children:n.headline})]}),e.jsxs(Vs,{children:[n.stats.length>0&&e.jsx("div",{className:"mb-6 space-y-3",children:n.stats.map((s,i)=>e.jsxs("div",{className:`p-4 rounded-lg border-l-2 ${i===0?"bg-muted/50 border-l-muted-foreground
362/30":"bg-success/5 border-l-success"}`,children:[e.jsx("p",{className:"text-sm font-semibold text-muted-foreground mb-1",children:s.label}),e.jsx("p",{className:`text-base font-bold ${i===0?"text-foreground":"text-success"}`,children:s.value}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.subvalue})]},i))}),e.jsx("ul",{className:"space-y-2 mb-6",children:n.highlights.map((s,i)=>e.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[e.jsx("span",{className:"text-success mt-0.5 font-bold",children:"â"}),e.jsx("span",{className:"text-muted-foreground",children:s})]},i))})]})]},r))})]})})},A3=()=>{const t=[{aspect:"Transparenz & Daten",typical:"Betreiben Agentur Blackbox Marketing",adshero:"Datengetrieben und 100% transparent",adsheroWins:!0},{aspect:"Geschäftsmodell",typical:"Wollen Kunden lange binden und schaffen Abhängigkeiten",adshero:"Geben Wissen inhouse an dein Team weiter",adsheroWins:!0},{aspect:"Herangehensweise",typical:"Scheuklappen-Vorgehen: Haben nur ihren Bereich im Auge",adshero:"Ganzheitliche Herangehensweise",adsheroWins:!0},{aspect:"Fokus",typical:"Fokus auf Umsatzgenerierung wie durch ständige Rabattaktionen",adshero:"Fokus auf hohen Cashflow und maximalen Profit",adsheroWins:!0},{aspect:"Kommunikation",typical:"Schleppende Kommunikation und schlechte Erreichbarkeit",adshero:"Proaktive Kommunikation und schnelle Erreichbarkeit",adsheroWins:!0},{aspect:"Team-Qualität",typical:"Spürbar weniger Expertise bei Mitarbeitern als beim Inhaber",adshero:"Absolute A-Player und Fachexperten auf jeder Position",adsheroWins:!0},{aspect:"Beratung",typical:"Bringen nur wenig eigene Ideen ein",adshero:"Bringen fundierte Empfehlungen in allen Bereichen mit ein",adsheroWins:!0},{aspect:"Ziel & Motivation",typical:"Wollen mit möglichst wenig Arbeit maximalen Profit für sich selbst erzielen",adshero:"Maximieren deinen Gewinn und bringen Wissen langfristig in dein Unternehmen",adsheroWins:!0}];return e.jsx("section",{className:"py-20 md:py-32 bg-secondary",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsx("div",{className:"text-center mb-16",children:e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-4 leading-tight",children:"Der Unterschied zwischen uns und 99% der Agenturen"})}),e.jsx("div",{className:"hidden md:block bg-card rounded-xl shadow-strong overflow-hidden border-2 border-border mb-12",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b-2 border-border",children:[e.jsx("th",{className:"text-left p-6 font-bold text-foreground",children:"Bereich"}),e.jsx("th",{className:"text-left p-6 font-bold text-muted-foreground",children:"Typische Agentur"}),e.jsx("th",{className:"text-left p-6 font-bold text-cta bg-cta/10 border-l-4 border-cta",children:"AdsHero"})]})}),e.jsx("tbody",{children:t.map((n,r)=>e.jsxs("tr",{className:`border-b border-border ${r%2===0?"bg-secondary/20":""}`,children:[e.jsx("td",{className:"p-6 font-semibold text-foreground",children:n.aspect}),e.jsx("td",{className:"p-6",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(Hi,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),e.jsx("span",{className:"text-muted-foreground",children:n.typical})]})}),e.jsx("td",{className:"p-6 bg-cta/10 border-l-4 border-cta",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(Rh,{className:"h-5 w-5 text-cta flex-shrink-0 mt-0.5"}),e.jsx("span",{className:"text-foreground font-medium",children:n.adshero})]})})]},r))})]})})}),e.jsx("div",{className:"md:hidden space-y-4 mb-12",children:t.map((n,r)=>e.jsxs("div",{className:"bg-card rounded-lg shadow-strong border-2 border-border p-4",children:[e.jsx("h3",{className:"font-bold text-foreground mb-4 text-lg",children:n.aspect}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3 p-3 bg-destructive/5 rounded-lg",children:[e.jsx(Hi,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:"Typische Agentur"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n.typical})]})]}),e.jsxs("div",{className:"flex items-start gap-3 p-3 bg-cta/10 rounded-lg border-l-4 border-cta",children:[e.jsx(Rh,{className:"h-5 w-5 text-cta flex-shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-cta mb-1",children:"AdsHero"}),e.jsx("p",{className:"text-sm text-foreground font-medium",children:n.adshero})]})]})]})]},r))}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl md:text-2xl font-bold text-foreground mb-8",children:"Wir skalieren nur, was Geld verdient. Punkt."}),e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-6 md:px-8 py-4 md:py-6 h-auto w-full sm:w-auto max-w-full",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Comparison"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt Profit-Audit buchen",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})]})]})})};function C3(t){return Object.prototype.toString.call(t)==="[object Object]"}function Sx(t){return C3(t)||Array.isArray(t)}function P3(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Hg(t,n){const r=Object.keys(t),s=Object.keys(n);if(r.length!==s.length)return!1;const i=JSON.stringify(Object.keys(t.breakpoints||{})),a=JSON.stringify(Object.keys(n.breakpoints||{}));return i!==a?!1:r.every(l=>{const o=t[l],d=n[l];return typeof o=="function"?`${o}`==`${d}`:!Sx(o)||!Sx(d)?o===d:Hg(o,d)})}function Ax(t){return t.concat().sort((n,r)=>n.name>r.name?1:-1).map(n=>n.options)}function E3(t,n){if(t.length!==n.length)return!1;const r=Ax(t),s=Ax(n);return r.every((i,a)=>{const l=s[a];return Hg(i,l)})}function Zg(t){return typeof t=="number"}function sm(t){return typeof t=="string"}function jc(t){return typeof t=="boolean"}function Cx(t){return Object.prototype.toString.call(t)==="[object Object]"}function De(t){return Math.abs(t)}function qg(t){return Math.sign(t)}function Fa(t,n){return De(t-n)}function T3(t,n){if(t===0||n===0||De(t)<=De(n))return 0;const r=Fa(De(t),De(n));return De(r/t)}function z3(t){return Math.round(t*100)/100}function gl(t){return pl(t).map(Number)}function vn(t){return t[Ol(t)]}function Ol(t){return Math.max(0,t.length-1)}function Yg(t,n){return n===Ol(t)}function Px(t,n=0){return Array.from(Array(t),(r,s)=>n+s)}function pl(t){return Object.keys(t)}function Ww(t,n){return[t,n].reduce((r,s)=>
vendor: 12,477 bytes, line 362
362(pl(s).forEach(i=>{const a=r[i],l=s[i],o=Cx(a)&&Cx(l);r[i]=o?Ww(a,l):l}),r),{})}function im(t,n){return typeof n.MouseEvent<"u"&&t instanceof n.MouseEvent}function D3(t,n){const r={start:s,center:i,end:a};function s(){return 0}function i(d){return a(d)/2}function a(d){return n-d}function l(d,c){return sm(t)?r[t](d):t(n,d,c)}return{measure:l}}function fl(){let t=[];function n(i,a,l,o={passive:!0}){let d;if("addEventListener"in i)i.addEventListener(a,l,o),d=()=>i.removeEventListener(a,l,o);else{const c=i;c.addListener(l),d=()=>c.removeListener(l)}return t.push(d),s}function r(){t=t.filter(i=>i())}const s={add:n,clear:r};return s}function _3(t,n,r,s){const i=fl(),a=1e3/60;let l=null,o=0,d=0;function c(){i.add(t,"visibilitychange",()=>{t.hidden&&j()})}function u(){m(),i.clear()}function h(b){if(!d)return;l||(l=b,r(),r());const x=b-l;for(l=b,o+=x;o>=a;)r(),o-=a;const f=o/a;s(f),d&&(d=n.requestAnimationFrame(h))}function g(){d||(d=n.requestAnimationFrame(h))}function m(){n.cancelAnimationFrame(d),l=null,o=0,d=0}function j(){l=null,o=0}return{init:c,destroy:u,start:g,stop:m,update:r,render:s}}function M3(t,n){const r=n==="rtl",s=t==="y",i=s?"y":"x",a=s?"x":"y",l=!s&&r?-1:1,o=u(),d=h();function c(j){const{height:p,width:b}=j;return s?p:b}function u(){return s?"top":r?"right":"left"}function h(){return s?"bottom":r?"left":"right"}function g(j){return j*l}return{scroll:i,cross:a,startEdge:o,endEdge:d,measureSize:c,direction:g}}function Is(t=0,n=0){const r=De(t-n);function s(c){return c<t}function i(c){return c>n}function a(c){return s(c)||i(c)}function l(c){return a(c)?s(c)?t:n:c}function o(c){return r?c-r*Math.ceil((c-n)/r):c}return{length:r,max:n,min:t,constrain:l,reachedAny:a,reachedMax:i,reachedMin:s,removeOffset:o}}function Vw(t,n,r){const{constrain:s}=Is(0,t),i=t+1;let a=l(n);function l(g){return r?De((i+g)%i):s(g)}function o(){return a}function d(g){return a=l(g),h}function c(g){return u().set(o()+g)}function u(){return Vw(t,o(),r)}const h={get:o,set:d,add:c,clone:u};return h}function O3(t,n,r,s,i,a,l,o,d,c,u,h,g,m,j,p,b,x,f){const{cross:v,direction:w}=t,k=["INPUT","SELECT","TEXTAREA"],N={passive:!1},S=fl(),A=fl(),P=Is(50,225).constrain(m.measure(20)),D={mouse:300,touch:400},G={mouse:500,touch:600},O=j?43:25;let V=!1,R=0,Y=0,U=!1,H=!1,C=!1,z=!1;function I(K){if(!f)return;function le(Ve){(jc(f)||f(K,Ve))&&Oe(Ve)}const Ne=n;S.add(Ne,"dragstart",Ve=>Ve.preventDefault(),N).add(Ne,"touchmove",()=>{},N).add(Ne,"touchend",()=>{}).add(Ne,"touchstart",le).add(Ne,"mousedown",le).add(Ne,"touchcancel",Re).add(Ne,"contextmenu",Re).add(Ne,"click",Ze,!0)}function $(){S.clear(),A.clear()}function L(){const K=z?r:n;A.add(K,"touchmove",te,N).add(K,"touchend",Re).add(K,"mousemove",te,N).add(K,"mouseup",Re)}function ee(K){const le=K.nodeName||"";return k.includes(le)}function J(){return(j?G:D)[z?"mouse":"touch"]}function be(K,le){const Ne=h.add(qg(K)*-1),Ve=u.byDistance(K,!j).distance;return j||De(K)<P?Ve:b&&le?Ve*.5:u.byIndex(Ne.get(),0).distance}function Oe(K){const le=im(K,s);z=le,C=j&&le&&!K.buttons&&V,V=Fa(i.get(),l.get())>=2,!(le&&K.button!==0)&&(ee(K.target)||(U=!0,a.pointerDown(K),c.useFriction(0).useDuration(0),i.set(l),L(),R=a.readPoint(K),Y=a.readPoint(K,v),g.emit("pointerDown")))}function te(K){if(!im(K,s)&&K.touches.length>=2)return Re(K);const Ne=a.readPoint(K),Ve=a.readPoint(K,v),ut=Fa(Ne,R),Ct=Fa(Ve,Y);if(!H&&!z&&(!K.cancelable||(H=ut>Ct,!H)))return Re(K);const Pt=a.pointerMove(K);ut>p&&(C=!0),c.useFriction(.3).useDuration(.75),o.start(),i.add(w(Pt)),K.preventDefault()}function Re(K){const Ne=u.byDistance(0,!1).index!==h.get(),Ve=a.pointerUp(K)*J(),ut=be(w(Ve),Ne),Ct=T3(Ve,ut),Pt=O-10*Ct,ht=x+Ct/50;H=!1,U=!1,A.clear(),c.useDuration(Pt).useFriction(ht),d.distance(ut,!j),z=!1,g.emit("pointerUp")}function Ze(K){C&&(K.stopPropagation(),K.preventDefault(),C=!1)}function Fe(){return U}return{init:I,destroy:$,pointerDown:Fe}}function R3(t,n){let s,i;function a(h){return h.timeStamp}function l(h,g){const j=`client${(g||t.scroll)==="x"?"X":"Y"}`;return(im(h,n)?h:h.touches[0])[j]}function o(h){return s=h,i=h,l(h)}function d(h){const g=l(h)-l(i),m=a(h)-a(s)>170;return i=h,m&&(s=h),g}function c(h){if(!s||!i)return 0;const g=l(i)-l(s),m=a(h)-a(s),j=a(h)-a(i)>170,p=g/m;return m&&!j&&De(p)>.1?p:0}return{pointerDown:o,pointerMove:d,pointerUp:c,readPoint:l}}function G3(){function t(r){const{offsetTop:s,offsetLeft:i,offsetWidth:a,offsetHeight:l}=r;return{top:s,right:i+a,bottom:s+l,left:i,width:a,height:l}}return{measure:t}}function I3(t){function n(s){return t*(s/100)}return{measure:n}}function B3(t,n,r,s,i,a,l){const o=[t].concat(s);let d,c,u=[],h=!1;function g(b){return i.measureSize(l.measure(b))}function m(b){if(!a)return;c=g(t),u=s.map(g);function x(f){for(const v of f){if(h)return;const w=v.target===t,k=s.indexOf(v.target),N=w?c:u[k],S=g(w?t:s[k]);if(De(S-N)>=.5){b.reInit(),n.emit("resize");break}}}d=new ResizeObserver(f=>{(jc(a)||a(b,f))&&x(f)}),r.requestAnimationFrame(()=>{o.forEach(f=>d.observe(f))})}function j(){h=!0,d&&d.disconnect()}return{init:m,destroy:j}}function K3(t,n,r,s,i,a){let l=0,o=0,d=i,c=a,u=t.get(),h=0;function g(){const N=s.get()-t.get(),S=!d;let A=0;return S?(l=0,r.set(s),t.set(s),A=N):(r.set(t),l+=N/d,l*=c,u+=l,t.add(l),A=u-h),o=qg(A),h=u,k}function m(){const N=s.get()-n.get();return De(N)<.001}function j(){return d}function p(){return o}function b(){return l}function x(){return v(i)}function f(){return w(a)}function v(N){return d=N,k}function w(N){return c=N,k}const k={direction:p,duration:j,velocity:b,seek:g,settled:m,useBaseFriction:f,useBaseDuration:x,useFriction:w,useDuration:v};return k}function F3(t,n,r,s,i){const a=i.measure(10),l=i.measure(50),o=Is(.1,.99);let d=!1;function c(){return!(d||!t.reachedAny(r.get())||!t.reachedAny(n.get()))}function u(m){if(!c())return;const j=t.reachedMin(n.get())?"min":"max",p=De(t[j]-n.get()),b=r.get()-n.get(),x=o.constrain(p/l);r.subtract(b*x),!m&&De(b)<a&&(r.set(t.constrain(r.get())),s.useDuration(25).useBaseFriction())}function h(m){d=!m}return{shouldConstrain:c,constrain:u,toggleActive:h}}function L3(t,n,r,s,i){const a=Is(-n+t,0),l=h(),o=u(),d=g();function c(j,p){return Fa(j,p)<=1}function u(){const j=l[0],p=vn(l),b=l.lastIndexOf(j),x=l.indexOf(p)+1;return Is(b,x)}function h(){return r.map((j,p)=>{const{min:b,max:x}=a,f=a.constrain(j),v=!p,w=Yg(r,p);return v?x:w||c(b,f)?b:c(x,f)?x:f}).map(j=>parseFloat(j.toFixed(3)))}function g(){if(n<=t+i)return[a.max];if(s==="keepSnaps")return l;const{min:j,max:p}=o;return l.slice(j,p)}return{snapsContained:d,scrollContainLimit:o}}function W3(t,n,r){const s=n[0],i=r?s-t:vn(n);return{limit:Is(i,s)}}function V3(t,n,r,s){const a=n.min+.1,l=n.max+.1,{reachedMin:o,reachedMax:d}=Is(a,l);function c(g){return g===1?d(r.get()):g===-1?o(r.get()):!1}function u(g){if(!c(g))return;const m=t*(g*-1);s.forEach(j=>j.add(m))}return{loop:u}}function U3(t){const{max:n,length:r}=t;function s(a){const l=a-n;return r?l/-r:0}return{get:s}}function $3(t,n,r,s,i){const{startEdge:a,endEdge:l}=t,{groupSlides:o}=i,d=h().map(n.measure),c=g(),u=m();function h(){return o(s).map(p=>vn(p)[l]-p[0][a]).map(De)}function g(){return s.map(p=>r[a]-p[a]).map(p=>-De(p))}function m(){return o(c).map(p=>p[0]).map((p,b)=>p+d[b])}return{snaps:c,snapsAligned:u}}function H3(t,n,r,s,i,a){const{groupSlides:l}=i,{min:o,max:d}=s,c=u();function u(){const g=l(a),m=!t||n==="keepSnaps";return r.length===1?[a]:m?g:g.slice(o,d).map((j,p,b)=>{const x=!p,f=Yg(b,p);if(x){const v=vn(b[0])+1;return Px(v)}if(f){const v=Ol(a)-vn(b)[0]+1;return Px(v,vn(b)[0])}return j})}return{slideRegistry:c}}function Z3(t,n,r,s,i){const{reachedAny:a,removeOffset:l,constrain:o}=s;function d(j){return j.concat().sort((p,b)=>De(p)-De(b))[0]}function c(j){const p=t?l(j):o(j),b=n.map((f,v)=>({diff:u(f-p,0),index:v})).sort((f,v)=>De(f.diff)-De(v.diff)),{index:x}=b[0];return{index:x,distance:p}}function u(j,p){const b=[j,j+r,j-r];if(!t)return j;if(!p)return d(b);const x=b.filter(f=>qg(f)===p);return x.length?d(x):vn(b)-r}function h(j,p){const b=n[j]-i.get(),x=u(b,p);return{index:j,distance:x}}function g(j,p){const b=i.get()+j,{index:x,distance:f}=c(b),v=!t&&a(b);if(!p||v)return{index:x,distance:j};const w=n[x]-f,k=j+u(w,0);return{index:x,distance:k}}return{byDistance:g,byIndex:h,shortcut:u}}function q3(t,n,r,s,i,a,l){function o(h){const g=h.distance,m=h.index!==n.get();a.add(g),g&&(s.duration()?t.start():(t.update(),t.render(1),t.update())),m&&(r.set(n.get()),n.set(h.index),l.emit("select"))}function d(h,g){const m=i.byDistance(h,g);o(m)}function c(h,g){const m=n.clone().set(h),j=i.byIndex(m.get(),g);o(j)}return{distance:d,index:c}}function Y3(t,n,r,s,i,a,l,o){const d={passive:!0,capture:!0};let c=0;function u(m){if(!o)return;function j(p){if(new Date().getTime()-c>10)return;l.emit("slideFocusStart"),t.scrollLeft=0;const f=r.findIndex(v=>v.includes(p));Zg(f)&&(i.useDuration(0),s.index(f,0),l.emit("slideFocus"))}a.add(document,"keydown",h,!1),n.forEach((p,b)=>{a.add(p,"focus",x=>{(jc(o)||o(m,x))&&j(b)},d)})}function h(m){m.code==="Tab"&&(c=new Date().getTime())}return{init:u}}function Pa(t){let n=t;function r(){return n}function s(d){n=l(d)}function i(d){n+=l(d)}function a(d){n-=l(d)}function l(d){return Zg(d)?d:d.get()}return{get:r,set:s,add:i,subtract:a}}function Uw(t,n){const r=t.scroll==="x"?l:o,s=n.style;let i=null,a=!1;function l(g){return`translate3d(${g}px,0px,0px)`}function o(g){return`translate3d(0px,${g}px,0px)`}function d(g){if(a)return;const m=z3(t.direction(g));m!==i&&(s.transform=r(m),i=m)}function c(g){a=!g}function u(){a||(s.transform="",n.getAttribute("style")||n.removeAttribute("style"))}return{clear:u,to:d,toggleActive:c}}function J3(t,n,r,s,i,a,l,o,d){const u=gl(i),h=gl(i).reverse(),g=x().concat(f());function m(S,A){return S.reduce((P,D)=>P-i[D],A)}function j(S,A){return S.reduce((P,D)=>m(P,A)>0?P.concat([D]):P,[])}function p(S){return a.map((A,P)=>({start:A-s[P]+.5+S,end:A+n-.5+S}))}function b(S,A,P){const D=p(A);return S.map(G=>{const O=P?0:-r,V=P?r:0,R=P?"end":"start",Y=D[G][R];return{index:G,loopPoint:Y,slideLocation:Pa(-1),translate:Uw(t,d[G]),target:()=>o.get()>Y?O:V}})}function x(){const S=l[0],A=j(h,S);return b(A,r,!1)}function f(){const S=n-l[0]-1,A=j(u,S);return b(A,-r,!0)}function v(){return g.every(({index:S})=>{const A=u.filter(P=>P!==S);return m(A,n)<=.1})}function w(){g.forEach(S=>{const{target:A,translate:P,slideLocation:D}=S,G=A();G!==D.get()&&(P.to(G),D.set(G))})}function k(){g.forEach(S=>S.translate.clear())}return{canLoop:v,clear:k,loop:w,loopPoints:g}}function Q3(t,n,r){let s,i=!1;function a(d){if(!r)return;function c(u){for(const h of u)if(h.type==="childList"){d.reInit(),n.emit("slidesChanged");break}}s=new MutationObserver(u=>{i||(jc(r)||r(d,u))&&c(u)}),s.observe(t,{childList:!0})}function l(){s&&s.disconnect(),i=!0}return{init:a,destroy:l}}function X3(t,n,r,s){const i={};let a=null,l=null,o,d=!1;function c(){o=new IntersectionObserver(j=>{d||(j.forEach(p=>{const b=n.indexOf(p.target);i[b]=p}),a=null,l=null,r.emit("slidesInView"))},{root:t.parentElement,threshold:s}),n.forEach(j=>o.observe(j))}function u(){o&&o.disconnect(),d=!0}function h(j){return pl(i).reduce((p,b)=>{const x=parseInt(b),{isIntersecting:f}=i[x];return(j&&f||!j&&!f)&&p.push(x),p},[])}function g(j=!0){if(j&&a)return a;if(!j&&l)return l;const p=h(j);return j&&(a=p),j||(l=p),p}return{init:c,destroy:u,get:g}}function eD(t,n,r,s,i,a){const{measureSize:l,startEdge:o,endEdge:d}=t,c=r[0]&&i,u=j(),h=p(),g=r.map(l),m=b();function j(){if(!c)return 0;const f=r[0];return De(n[o]-f[o])}function p(){if(!c)return 0;const f=a.getComputedStyle(vn(s));return parseFloat(f.getPropertyValue(`margin-${d}`))}function b(){return r.map((f,v,w)=>{const k=!v,N=Yg(w,v);return k?g[v]+u:N?g[v]+h:w[v+1][o]-f[o]}).map(De)}return{slideSizes:g,slideSizesWithGaps:m,startGap:u,endGap:h}}function tD(t,n,r,s,i,a,l,o,d){const{startEdge:c,endEdge:u,direction:h}=t,g=Zg(r);function m(x,f){return gl(x).filter(v=>v%f===0).map(v=>x.slice(v,v+f))}function j(x){return x.length?gl(x).reduce((f,v,w)=>{const k=vn(f)||0,N=k===0,S=v===Ol(x),A=i[c]-a[k][c],P=i[c]-a[v][u],D=!s&&N?h(l):0,G=!s&&S?h(o):0,O=De(P-G-(A+D));return w&&O>n+d&&f.push(v),S&&f.push(x.length),f},[]).map((f,v,w)=>{const k=Math.max(w[v-1]||0);return x.slice(k,f)}):[]}function p(x){return g?m(x,r):j(x)}return{groupSlides:p}}function nD(t,n,r,s,i,a,l){const{align:o,axis:d,direction:c,startIndex:u,loop:h,duration:g,dragFree:m,dragThreshold:j,inViewThreshold:p,slidesToScroll:b,skipSnaps:x,containScroll:f,watchResize:v,w
vendor: 7,104 bytes, line 362
362atchSlides:w,watchDrag:k,watchFocus:N}=a,S=2,A=G3(),P=A.measure(n),D=r.map(A.measure),G=M3(d,c),O=G.measureSize(P),V=I3(O),R=D3(o,O),Y=!h&&!!f,U=h||!!f,{slideSizes:H,slideSizesWithGaps:C,startGap:z,endGap:I}=eD(G,P,D,r,U,i),$=tD(G,O,b,h,P,D,z,I,S),{snaps:L,snapsAligned:ee}=$3(G,R,P,D,$),J=-vn(L)+vn(C),{snapsContained:be,scrollContainLimit:Oe}=L3(O,J,ee,f,S),te=Y?be:ee,{limit:Re}=W3(J,te,h),Ze=Vw(Ol(te),u,h),Fe=Ze.clone(),he=gl(r),K=({dragHandler:Xt,scrollBody:da,scrollBounds:$s,options:{loop:mr}})=>{mr||$s.constrain(Xt.pointerDown()),da.seek()},le=({scrollBody:Xt,translate:da,location:$s,offsetLocation:mr,previousLocation:gr,scrollLooper:Bl,slideLooper:pr,dragHandler:Tc,animation:zc,eventHandler:ca,scrollBounds:Kl,options:{loop:Fl}},Hs)=>{const en=Xt.settled(),Dc=!Kl.shouldConstrain(),Q=Fl?en:en&&Dc,ge=Q&&!Tc.pointerDown();ge&&zc.stop();const je=$s.get()*Hs+gr.get()*(1-Hs);mr.set(je),Fl&&(Bl.loop(Xt.direction()),pr.loop()),da.to(mr.get()),ge&&ca.emit("settle"),Q||ca.emit("scroll")},Ne=_3(s,i,()=>K(oa),Xt=>le(oa,Xt)),Ve=.68,ut=te[Ze.get()],Ct=Pa(ut),Pt=Pa(ut),ht=Pa(ut),An=Pa(ut),Jt=K3(Ct,ht,Pt,An,g,Ve),Us=Z3(h,te,J,Re,An),Qt=q3(Ne,Ze,Fe,Jt,Us,An,l),Gl=U3(Re),Il=fl(),vt=X3(n,r,l,p),{slideRegistry:Ln}=H3(Y,f,te,Oe,$,he),Ec=Y3(t,r,Ln,Qt,Jt,Il,l,N),oa={ownerDocument:s,ownerWindow:i,eventHandler:l,containerRect:P,slideRects:D,animation:Ne,axis:G,dragHandler:O3(G,t,s,i,An,R3(G,i),Ct,Ne,Qt,Jt,Us,Ze,l,V,m,j,x,Ve,k),eventStore:Il,percentOfView:V,index:Ze,indexPrevious:Fe,limit:Re,location:Ct,offsetLocation:ht,previousLocation:Pt,options:a,resizeHandler:B3(n,l,i,r,G,v,A),scrollBody:Jt,scrollBounds:F3(Re,ht,An,Jt,V),scrollLooper:V3(J,Re,ht,[Ct,ht,Pt,An]),scrollProgress:Gl,scrollSnapList:te.map(Gl.get),scrollSnaps:te,scrollTarget:Us,scrollTo:Qt,slideLooper:J3(G,O,J,H,C,L,te,ht,r),slideFocus:Ec,slidesHandler:Q3(n,l,w),slidesInView:vt,slideIndexes:he,slideRegistry:Ln,slidesToScroll:$,target:An,translate:Uw(G,n)};return oa}function rD(){let t={},n;function r(c){n=c}function s(c){return t[c]||[]}function i(c){return s(c).forEach(u=>u(n,c)),d}function a(c,u){return t[c]=s(c).concat([u]),d}function l(c,u){return t[c]=s(c).filter(h=>h!==u),d}function o(){t={}}const d={init:r,emit:i,off:l,on:a,clear:o};return d}const sD={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function iD(t){function n(a,l){return Ww(a,l||{})}function r(a){const l=a.breakpoints||{},o=pl(l).filter(d=>t.matchMedia(d).matches).map(d=>l[d]).reduce((d,c)=>n(d,c),{});return n(a,o)}function s(a){return a.map(l=>pl(l.breakpoints||{})).reduce((l,o)=>l.concat(o),[]).map(t.matchMedia)}return{mergeOptions:n,optionsAtMedia:r,optionsMediaQueries:s}}function aD(t){let n=[];function r(a,l){return n=l.filter(({options:o})=>t.optionsAtMedia(o).active!==!1),n.forEach(o=>o.init(a,t)),l.reduce((o,d)=>Object.assign(o,{[d.name]:d}),{})}function s(){n=n.filter(a=>a.destroy())}return{init:r,destroy:s}}function zd(t,n,r){const s=t.ownerDocument,i=s.defaultView,a=iD(i),l=aD(a),o=fl(),d=rD(),{mergeOptions:c,optionsAtMedia:u,optionsMediaQueries:h}=a,{on:g,off:m,emit:j}=d,p=G;let b=!1,x,f=c(sD,zd.globalOptions),v=c(f),w=[],k,N,S;function A(){const{container:he,slides:K}=v;N=(sm(he)?t.querySelector(he):he)||t.children[0];const Ne=sm(K)?N.querySelectorAll(K):K;S=[].slice.call(Ne||N.children)}function P(he){const K=nD(t,N,S,s,i,he,d);if(he.loop&&!K.slideLooper.canLoop()){const le=Object.assign({},he,{loop:!1});return P(le)}return K}function D(he,K){b||(f=c(f,he),v=u(f),w=K||w,A(),x=P(v),h([f,...w.map(({options:le})=>le)]).forEach(le=>o.add(le,"change",G)),v.active&&(x.translate.to(x.location.get()),x.animation.init(),x.slidesInView.init(),x.slideFocus.init(Fe),x.eventHandler.init(Fe),x.resizeHandler.init(Fe),x.slidesHandler.init(Fe),x.options.loop&&x.slideLooper.loop(),N.offsetParent&&S.length&&x.dragHandler.init(Fe),k=l.init(Fe,w)))}function G(he,K){const le=$();O(),D(c({startIndex:le},he),K),d.emit("reInit")}function O(){x.dragHandler.destroy(),x.eventStore.clear(),x.translate.clear(),x.slideLooper.clear(),x.resizeHandler.destroy(),x.slidesHandler.destroy(),x.slidesInView.destroy(),x.animation.destroy(),l.destroy(),o.clear()}function V(){b||(b=!0,o.clear(),O(),d.emit("destroy"),d.clear())}function R(he,K,le){!v.active||b||(x.scrollBody.useBaseFriction().useDuration(K===!0?0:v.duration),x.scrollTo.index(he,le||0))}function Y(he){const K=x.index.add(1).get();R(K,he,-1)}function U(he){const K=x.index.add(-1).get();R(K,he,1)}function H(){return x.index.add(1).get()!==$()}function C(){return x.index.add(-1).get()!==$()}function z(){return x.scrollSnapList}function I(){return x.scrollProgress.get(x.offsetLocation.get())}function $(){return x.index.get()}function L(){return x.indexPrevious.get()}function ee(){return x.slidesInView.get()}function J(){return x.slidesInView.get(!1)}function be(){return k}function Oe(){return x}function te(){return t}function Re(){return N}function Ze(){return S}const Fe={canScrollNext:H,canScrollPrev:C,containerNode:Re,internalEngine:Oe,destroy:V,off:m,on:g,emit:j,plugins:be,previousScrollSnap:L,reInit:p,rootNode:te,scrollNext:Y,scrollPrev:U,scrollProgress:I,scrollSnapList:z,scrollTo:R,selectedScrollSnap:$,slideNodes:Ze,slidesInView:ee,slidesNotInView:J};return D(n,r),setTimeout(()=>d.emit("init"),0),Fe}zd.globalOptions=void 0;function Jg(t={},n=[]){const r=y.useRef(t),s=y.useRef(n),[i,a]=y.useState(),[l,o]=y.useState(),d=y.useCallback(()=>{i&&i.reInit(r.current,s.current)},[i]);return y.useEffect(()=>{Hg(r.current,t)||(r.current=t,d())},[t,d]),y.useEffect(()=>{E3(s.current,n)||(s.current=n,d())},[n,d]),y.useEffect(()=>{if(P3()&&l){zd.globalOptions=Jg.globalOptions;const c=zd(l,r.current,s.current);return a(c),()=>c.destroy()}else a(void 0)},[l,a]),[o,i]}Jg.globalOptions=void 0;const $w=y.createContext(null);function vc(){const t=y.useContext($w);if(!t)throw new Error("useCarousel must be used within a <Carousel />");return t}const Hw=y.forwardRef(({orientation:t="horizontal",opts:n,setApi:r,plugins:s,className:i,children:a,...l},o)=>{const[d,c]=Jg({...n,axis:t==="horizontal"?"x":"y"},s),[u,h]=y.useState(!1),[g,m]=y.useState(!1),j=y.useCallback(f=>{f&&(h(f.canScrollPrev()),m(f.canScrollNext()))},[]),p=y.useCallback(()=>{c==null||c.scrollPrev()},[c]),b=y.useCallback(()=>{c==null||c.scrollNext()},[c]),x=y.useCallback(f=>{f.key==="ArrowLeft"?(f.preventDefault(),p()):f.key==="ArrowRight"&&(f.preventDefault(),b())},[p,b]);return y.useEffect(()=>{!c||!r||r(c)},[c,r]),y.useEffect(()=>{if(c)return j(c),c.on("reInit",j),c.on("select",j),()=>{c==null||c.off("select",j)}},[c,j]),e.jsx($w.Provider,{value:{carouselRef:d,api:c,opts:n,orientation:t||((n==null?void 0:n.axis)==="y"?"vertical":"horizontal"),scrollPrev:p,scrollNext:b,canScrollPrev:u,canScrollNext:g},children:e.jsx("div",{ref:o,onKeyDownCapture:x,className:de("relative",i),role:"region","aria-roledescription":"carousel",...l,children:a})})});
362Hw.displayName="Carousel";const Zw=y.forwardRef(({className:t,...n},r)=>{const{carouselRef:s,orientation:i}=vc();return e.jsx("div",{ref:s,className:"overflow-hidden",children:e.jsx("div",{ref:r,className:de("flex",i==="horizontal"?"-ml-4":"-mt-4 flex-col",t),...n})})});Zw.displayName="CarouselContent";const qw=y.forwardRef(({className:t,...n},r)=>{const{orientation:s}=vc();return e.jsx("div",{ref:r,role:"group","aria-roledescription":"slide",className:de("min-w-0 shrink-0 grow-0 basis-full",s==="horizontal"?"pl-4":"pt-4",t),...n})});qw.displayName="CarouselItem";const lD=y.forwardRef(({className:t,variant:n="outline",size:r="icon",...s},i)=>{const{orientation:a,scrollPrev:l,canScrollPrev:o}=vc();return e.jsxs(q,{ref:i,variant:n,size:r,className:de("absolute h-8 w-8 rounded-full",a==="horizontal"?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",t),disabled:!o,onClick:l,...s,children:[e.jsx(vg,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Previous slide"})]})});lD.displayName="CarouselPrevious";const oD=y.forwardRef(({className:t,variant:n="outline",size:r="icon",...s},i)=>{const{orientation:a,scrollNext:l,canScrollNext:o}=vc();return e.jsxs(q,{ref:i,variant:n,size:r,className:de("absolute h-8 w-8 rounded-full",a==="horizontal"?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",t),disabled:!o,onClick:l,...s,children:[e.jsx(dt,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Next slide"})]})});oD.displayName="CarouselNext";const Qg="/assets/eric-huether-BhU_TtSb.webp",yc="/assets/andrei-anissimov-DUAG4_nz.webp",Yw="/assets/simon-weber-fEo8tyvp.webp",dD=[{company:"",author:"Eric Hüther",role:"Digitaler Solopreneur",headline:"Nach nur 1 Jahr Umsatz x 10",text:"Wir bekommen sensationell günstige Leads und monatlich tausende Webinar-Teilnehmer. Und durch die dadurch mögliche Skalierung, hat sich mein Umsatz ungelogen binnen eines Jahres mehr als verzehnfacht! Dankeschön!",image:Qg},{company:"Trader IQ GmbH",author:"Andrei Anissimov",role:"Geschäftsführer",headline:"293.706 ⬠Umsatz bei ROAS 768,65 %",text:"Gordon und Christoph haben meine Leadkosten halbieren können. Ich hatte vorher schon mit vielen Agenturen gearbeitet. Die Jungs von AdsVantage haben aber alles übertroffen.",image:yc},{company:"Traction Socks (jetzt: trazer GmbH)",author:"Simon Weber",role:"Geschäftsführer",headline:"Von 2.000 ⬠auf >50.000 ⬠Monatsumsatz",text:"Ich bin absolut begeistert und empfehle AdsVantage sehr gerne weiter. Sie haben mein Unternehmen von Anfang an begleitet und Traction Socks skaliert. Davor hatte ich nur immer Enttäuschungen erlebt mit anderen Agenturen.",image:Yw},{company:"Hangowear GmbH",author:"Team Trachtenflirt",role:"",headline:"Von 0 auf 9.000 Kunden in 9 Monaten",text:"Die Kommunikation ist wirklich klasse! Es findet ein reger Ideenaustausch statt und es werden gemeinsame Konzepte erarbeitet. Hier bringt Christoph seine Expertise mit, geht aber immer auf unsere Bedürfnisse ein. Vor allem die Zuverlässigkeit ist lobenswert, Christoph ist stets erreichbar und so können wir bei Bedarf auch flexibel reagieren. Vielen Dank für die tolle Zusammenarbeit, wir freuen uns auf viele weitere spannende Projekte mit AdsVantage!",image:null}],Jw=()=>{const[t,n]=y.useState(),[r,s]=y.useState(0),[i,a]=y.useState(0);return y.useState(()=>{t&&(a(t.scrollSnapList().length),s(t.selectedScrollSnap()),t.on("select",()=>{s(t.selectedScrollSnap())}))}),e.jsx("section",{className:"py-24 bg-gradient-to-b from-background via-muted/30 to-background",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-7xl",children:[e.jsxs("div",{className:"flex items-center justify-between mb-12",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-3xl md:text-5xl font-bold mb-2",children:"Referenzen"}),e.jsx("p",{className:"text-xl text-muted-foreground",children:"unserer Google Ads Agentur"})]}),e.jsxs("div",{className:"hidden md:flex gap-2",children:[e.jsx(q,{variant:"outline",size:"icon",className:"rounded-full",onClick:()=>t==null?void 0:t.scrollPrev(),children:e.jsx(z2,{className:"h-4 w-4"})}),e.jsx(q,{variant:"outline",size:"icon",className:"rounded-full",onClick:()=>t==null?void 0:t.scrollNext(),children:e.jsx(k0,{className:"h-4 w-4"})})]})]}),e.jsx(Hw,{setApi:n,opts:{align:"start",loop:!0},className:"w-full",children:e.jsx(Zw,{children:dD.map((l,o)=>e.jsx(qw,{className:"md:basis-1/2",children:e.jsx(ce,{className:"bg-card/50 backdrop-blur border-2 card-gold-hover transition-all duration-300 h-full",children:e.jsxs(Vs,{className:"p-8 md:p-10 flex flex-col h-full",children:[e.jsx("h3",{className:"text-2xl md:text-3xl font-bold mb-6",children:l.headline}),e.jsxs("p",{className:"text-foreground text-base md:text-lg mb-8 leading-relaxed flex-grow",children:['"',l.text,'"']}),e.jsxs("div",{className:"flex items-center gap-4 pt-6 border-t border-border",children:[l.image?e.jsx("img",{src:l.image,alt:l.author,className:"w-16 h-16 rounded-full object-cover shrink-0"}):e.jsx("div",{className:"w-16 h-16 rounded-full bg-gradient-to-br from-primary/30 to-primary/10 flex items-center justify-center text-xl font-bold text-primary shrink-0",children:l.author.split(" ").map(d=>d[0]).join("")}),e.jsxs("div",{children:[e.jsx("p",{className:"font-bold text-lg",children:l.author}),l.role&&e.jsx("p",{className:"text-sm text-muted-foreground",children:l.role}),l.company&&e.jsx("p",{className:"text-sm text-muted-foreground",children:l.company})]})]})]})})},o))})}),e.jsx("div",{className:"flex justify-center gap-2 mt-8",children:Array.from({length:i}).map((l,o)=>e.jsx("button",{className:`h-2 rounded-full transition-all duration-300 ${o===r?"w-8 bg-cta":"w-2 bg-muted-foreground
362/30"}`,onClick:()=>t==null?void 0:t.scrollTo(o),"aria-label":`Go to slide ${o+1}`},o))})]})})},cD=()=>(y.useEffect(()=>{const t=document.createElement("script");t.src="https://www.provenexpert.com/widget/landing_adshero-gmbh.js?feedback=1&avatar=1&competence=1&language=de-de&style=white",t.async=!0,document.body.appendChild(t);const n=document.createElement("link");return n.rel="stylesheet",n.href="https://www.provenexpert.com/css/widget_landing.css",n.media="screen,print",document.head.appendChild(n),()=>{t.parentNode&&document.body.removeChild(t),n.parentNode&&document.head.removeChild(n)}},[]),e.jsx("section",{className:"py-20 md:py-24 bg-background border-y border-border/50",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-5xl",children:[e.jsxs("div",{className:"text-center mb-10",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold",children:"Das sagen unsere Kunden"}),e.jsx("p",{className:"text-muted-foreground mt-3 text-lg",children:"Verifizierte Bewertungen auf ProvenExpert"})]}),e.jsx("div",{id:"pewl"})]})})),uD=()=>{const t=["Die Profitabilität deiner wichtigsten Produkte","Welche Produkte du sofort skalieren solltest","Welche Produkte Geld verbrennen","Tracking-Lücken & Consent-Probleme","Den 30-Tage-Plan für mehr Gewinn"];return e.jsxs("section",{className:"py-20 md:py-32 bg-gradient-primary relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-grid-pattern opacity-5"}),e.jsx("div",{className:"container mx-auto px-4 max-w-5xl relative z-10",children:e.jsx(ce,{className:"border-4 border-cta/20 shadow-strong bg-card/95 backdrop-blur",children:e.jsxs(Vs,{className:"p-8 md:p-12",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx(cr,{variant:"default",className:"bg-cta text-cta-foreground mb-4 text-sm px-4 py-2",children:"Wert 450 â¬"}),e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-4 leading-tight",children:"Der kostenlose Profit-Audit"}),e.jsx("p",{className:"text-xl text-muted-foreground mb-8",children:"In 20 Minuten erfährst du:"})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-4 mb-10",children:t.map((n,r)=>e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Zt,{className:"h-6 w-6 text-cta flex-shrink-0 mt-1"}),e.jsx("p",{className:"text-lg text-foreground font-medium",children:n})]},r))}),e.jsx("div",{className:"text-center",children:e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-xl px-5 sm:px-6 md:px-12 py-4 md:py-8 h-auto shadow-strong hover:scale-105 transition-transform w-full sm:w-auto max-w-full",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"ProfitAudit"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:[e.jsx("span",{className:"hidden sm:inline",children:"ð Jetzt kostenlosen Profit-Audit sichern"}),e.jsx("span",{className:"sm:hidden",children:"Profit-Audit sichern"}),e.jsx(dt,{className:"ml-2 md:ml-3 h-5 md:h-6 w-5 md:w-6"})]})})})]})})})]})},wc="/assets/christoph-bogner-Bl6nD63o.webp",ia="/assets/gordon-kuckluck-DY5myWuO.webp",hD=()=>e.jsx("section",{id:"uber-uns",className:"py-20 md:py-32 bg-primary",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-16",children:[e.jsx("p",{className:"text-cta font-semibold tracking-wide uppercase text-sm mb-4",children:"Ãber uns"}),e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-white mb-6 leading-tight",children:"Die Agentur für Shops, die rechnen können."}),e.jsx("p",{className:"text-lg md:text-xl text-white/70 max-w-3xl mx-auto leading-relaxed",children:"Wir helfen E-Commerce Brands dabei, profitabel zu skalieren â mit datengetriebenen Google Ads, echtem Tracking und klarer Conversion-Strategie."})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-16",children:[e.jsx("div",{className:"bg-white/5 backdrop-blur-sm p-8 rounded-2xl border border-white/10 hover:bg-white/10 transition-all duration-300 group",children:e.jsxs("div",{className:"flex flex-col sm:flex-row items-center sm:items-start gap-6",children:[e.jsx("img",{src:ia,alt:"Gordon Kuckluck - Co-Founder & Google Ads Experte",className:"w-28 h-28 rounded-xl object-cover ring-2 ring-white/20 group-hover:ring-cta/50 transition-all"}),e.jsxs("div",{className:"text-center sm:text-left",children:[e.jsx("h3",{className:"text-xl font-bold text-white mb-1",children:"Gordon Kuckluck"}),e.jsx("p",{className:"text-cta font-medium mb-3",children:"Founder & Google Ads Experte"}),e.jsx("p",{className:"text-white/60 text-sm leading-relaxed mb-4",children:"Gordon, ein echtes Nordlicht, liebt es, mit seiner Familie am Warnemünder Strand zu entspannen."}),e.jsxs("a",{href:"https://www.linkedin.com/in/gordon-kuckluck/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-white/60 hover:text-cta transition-colors text-sm",children:[e.jsx(Bn,{className:"h-4 w-4"}),"LinkedIn"]})]})]})}),e.jsx("div",{className:"bg-white/5 backdrop-blur-sm p-8 rounded-2xl border border-white/10 hover:bg-white/10 transition-all duration-300 group",children:e.jsxs("div",{className:"flex flex-col sm:flex-row items-center sm:items-start gap-6",children:[e.jsx("img",{src:wc,alt:"Christoph Bogner - Founder & Growth Strategist",className:"w-28 h-28 rounded-xl object-cover ring-2 ring-white/20 group-hover:ring-cta/50 transition-all"}),e.jsxs("div",{className:"text-center sm:text-left",children:[e.jsx("h3",{className:"text-xl font-bold text-white mb-1",children:"Christoph Bogner"}),e.jsx("p",{className:"text-cta font-medium mb-3",children:"Founder & Growth Strategist"}),e.jsx("p",{className:"text-white/60 text-sm leading-relaxed mb-4",children:"Christoph aus dem idyllischen Niederbayern genieÃt es, mit seiner Frau die Berge zu erkunden."}),e.jsxs("a",{href:"https://www.linkedin.com/in/christoph-bogner-798a83ba/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-white/60 hover:text-cta transition-colors text-sm",children:[e.jsx(Bn,{className:"h-4 w-4"}),"LinkedIn"]})]})]})})]}),e.jsx("div",{className:"border-l-4 border-cta pl-6 md:pl-8 py-4 mb-16 max-w-4xl mx-auto",children:e.jsx("p",{className:"text-lg md:text-xl text-white/80 leading-relaxed italic",children:'âWir sind nicht am Markt, um den schnellen Euro zu machen. Wir bieten langfristig gedachte Unterstützung und stellen uns klar gegen Schnellschüsse und unseriöse Anbieter."'})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 md:gap-8 mb-16",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-3xl md:text-4xl font-bold text-cta mb-2",children:"13 Mio+"}),e.jsx("div",{className:"text-white/60 text-sm md:text-base",children:"Verwaltetes Budget"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-3xl md:text-4xl font-bold text-cta mb-2",children:"2 Mio+"}),e.jsx("div",{className:"text-white/60 text-sm md:text-base",children:"Leads & Kunden"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-3xl md:text-4xl font-bold text-cta mb-2",children:"7+"}),e.jsx("div",{className:"text-white/60 text-sm md:text-base",children:"Jahre Google Ads"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-3xl md:text-4xl font-bold text-cta mb-2",children:"14+"}),e.jsx("div",{className:"text-white/60 text-sm md:text-base",children:"Jahre Marketing"})]})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-white/50 text-sm mb-3",children:"Kostenlose E-Commerce Tipps auf YouTube"}),e.jsxs("a",{href:"https://www.youtube.com/@AdsHeroGmbH",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-white/70 hover:text-cta transition-colors text-sm font-medium",children:[e.jsx(wg,{className:"h-5 w-5"}),"Kanal besuchen â"]})]})]})});var kc="Collapsible",[mD,Qw]=Ls(kc),[gD,Xg]=mD(kc),Xw=y.forwardRef((t,
vendor: 4,195 bytes, line 362
362n)=>{const{__scopeCollapsible:r,open:s,defaultOpen:i,disabled:a,onOpenChange:l,...o}=t,[d,c]=Tl({prop:s,defaultProp:i??!1,onChange:l,caller:kc});return e.jsx(gD,{scope:r,disabled:a,contentId:Ka(),open:d,onOpenToggle:y.useCallback(()=>c(u=>!u),[c]),children:e.jsx(Pe.div,{"data-state":tp(d),"data-disabled":a?"":void 0,...o,ref:n})})});Xw.displayName=kc;var ek="CollapsibleTrigger",tk=y.forwardRef((t,n)=>{const{__scopeCollapsible:r,...s}=t,i=Xg(ek,r);return e.jsx(Pe.button,{type:"button","aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":tp(i.open),"data-disabled":i.disabled?"":void 0,disabled:i.disabled,...s,ref:n,onClick:ye(t.onClick,i.onOpenToggle)})});tk.displayName=ek;var ep="CollapsibleContent",nk=y.forwardRef((t,n)=>{const{forceMount:r,...s}=t,i=Xg(ep,t.__scopeCollapsible);return e.jsx(Ws,{present:r||i.open,children:({present:a})=>e.jsx(pD,{...s,ref:n,present:a})})});nk.displayName=ep;var pD=y.forwardRef((t,n)=>{const{__scopeCollapsible:r,present:s,children:i,...a}=t,l=Xg(ep,r),[o,d]=y.useState(s),c=y.useRef(null),u=tt(n,c),h=y.useRef(0),g=h.current,m=y.useRef(0),j=m.current,p=l.open||o,b=y.useRef(p),x=y.useRef(void 0);return y.useEffect(()=>{const f=requestAnimationFrame(()=>b.current=!1);return()=>cancelAnimationFrame(f)},[]),In(()=>{const f=c.current;if(f){x.current=x.current||{transitionDuration:f.style.transitionDuration,animationName:f.style.animationName},f.style.transitionDuration="0s",f.style.animationName="none";const v=f.getBoundingClientRect();h.current=v.height,m.current=v.width,b.current||(f.style.transitionDuration=x.current.transitionDuration,f.style.animationName=x.current.animationName),d(s)}},[l.open,s]),e.jsx(Pe.div,{"data-state":tp(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!p,...a,ref:u,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":j?`${j}px`:void 0,...t.style},children:p&&i})});function tp(t){return t?"open":"closed"}var fD=Xw,xD=tk,bD=nk,jD=y.createContext(void 0);function vD(t){const n=y.useContext(jD);return t||n||"ltr"}var Sn="Accordion",yD=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[np,wD,kD]=qv(Sn),[Nc,RR]=Ls(Sn,[kD,Qw]),rp=Qw(),rk=_.forwardRef((t,n)=>{const{type:r,...s}=t,i=s,a=s;return e.jsx(np.Provider,{scope:t.__scopeAccordion,children:r==="multiple"?e.jsx(CD,{...a,ref:n}):e.jsx(AD,{...i,ref:n})})});rk.displayName=Sn;var[sk,ND]=Nc(Sn),[ik,SD]=Nc(Sn,{collapsible:!1}),AD=_.forwardRef((t,n)=>{const{value:r,defaultValue:s,onValueChange:i=()=>{},collapsible:a=!1,...l}=t,[o,d]=Tl({prop:r,defaultProp:s??"",onChange:i,caller:Sn});return e.jsx(sk,{scope:t.__scopeAccordion,value:_.useMemo(()=>o?[o]:[],[o]),onItemOpen:d,onItemClose:_.useCallback(()=>a&&d(""),[a,d]),children:e.jsx(ik,{scope:t.__scopeAccordion,collapsible:a,children:e.jsx(ak,{...l,ref:n})})})}),CD=_.forwardRef((t,n)=>{const{value:r,defaultValue:s,onValueChange:i=()=>{},...a}=t,[l,o]=Tl({prop:r,defaultProp:s??[],onChange:i,caller:Sn}),d=_.useCallback(u=>o((h=[])=>[...h,u]),[o]),c=_.useCallback(u=>o((h=[])=>h.filter(g=>g!==u)),[o]);return e.jsx(sk,{scope:t.__scopeAccordion,value:l,onItemOpen:d,onItemClose:c,children:e.jsx(ik,{scope:t.__scopeAccordion,collapsible:!0,children:e.jsx(ak,{...a,ref:n})})})}),[PD,Sc]=Nc(Sn),ak=_.forwardRef((t,n)=>{const{__scopeAccordion:r,disabled:s,dir:i,orientation:a="vertical",...l}=t,o=_.useRef(null),d=tt(o,n),c=wD(r),h=vD(i)==="ltr",g=ye(t.onKeyDown,m=>{var A;if(!yD.includes(m.key))return;const j=m.target,p=c().filter(P=>{var D;return!((D=P.ref.current)!=null&&D.disabled)}),b=p.findIndex(P=>P.ref.current===j),x=p.length;if(b===-1)return;m.preventDefault();let f=b;const v=0,w=x-1,k=()=>{f=b+1,f>w&&(f=v)},N=()=>{f=b-1,f<v&&(f=w)};switch(m.key){case"Home":f=v;break;case"End":f=w;break;case"ArrowRight":a==="horizontal"&&(h?k():N());break;case"ArrowDown":a==="vertical"&&k();break;case"ArrowLeft":a==="horizontal"&&(h?N():k());break;case"ArrowUp":a==="vertical"&&N();break}const S=f%x;(A=p[S].ref.current)==null||A.focus()});return e.jsx(PD,{scope:r,disabled:s,direction:i,orientation:a,children:e.jsx(np.Slot,{scope:r,children:e.jsx(Pe.div,{...l,"data-orientation":a,ref:d,onKeyDown:s?void 0:g})})})}
362),Dd="AccordionItem",[ED,sp]=Nc(Dd),lk=_.forwardRef((t,n)=>{const{__scopeAccordion:r,value:s,...i}=t,a=Sc(Dd,r),l=ND(Dd,r),o=rp(r),d=Ka(),c=s&&l.value.includes(s)||!1,u=a.disabled||t.disabled;return e.jsx(ED,{scope:r,open:c,disabled:u,triggerId:d,children:e.jsx(fD,{"data-orientation":a.orientation,"data-state":mk(c),...o,...i,ref:n,disabled:u,open:c,onOpenChange:h=>{h?l.onItemOpen(s):l.onItemClose(s)}})})});lk.displayName=Dd;var ok="AccordionHeader",dk=_.forwardRef((t,n)=>{const{__scopeAccordion:r,...s}=t,i=Sc(Sn,r),a=sp(ok,r);return e.jsx(Pe.h3,{"data-orientation":i.orientation,"data-state":mk(a.open),"data-disabled":a.disabled?"":void 0,...s,ref:n})});dk.displayName=ok;var am="AccordionTrigger",ck=_.forwardRef((t,n)=>{const{__scopeAccordion:r,...s}=t,i=Sc(Sn,r),a=sp(am,r),l=SD(am,r),o=rp(r);return e.jsx(np.ItemSlot,{scope:r,children:e.jsx(xD,{"aria-disabled":a.open&&!l.collapsible||void 0,"data-orientation":i.orientation,id:a.triggerId,...o,...s,ref:n})})});ck.displayName=am;var uk="AccordionContent",hk=_.forwardRef((t,n)=>{const{__scopeAccordion:r,...s}=t,i=Sc(Sn,r),a=sp(uk,r),l=rp(r);return e.jsx(bD,{role:"region","aria-labelledby":a.triggerId,"data-orientation":i.orientation,...l,...s,ref:n,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...t.style}})});hk.displayName=uk;function mk(t){return t?"open":"closed"}var TD=rk,zD=lk,DD=dk,gk=ck,pk=hk;const ip=TD,Jn=y.forwardRef(({className:t,...n},r)=>e.jsx(zD,{ref:r,className:de("border-b",t),...n}));Jn.displayName="AccordionItem";const Qn=y.forwardRef(({className:t,children:n,...r},s)=>e.jsx(DD,{className:"flex",children:e.jsxs(gk,{ref:s,className:de("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",t),...r,children:[n,e.jsx(w0,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));Qn.displayName=gk.displayName;const Xn=y.forwardRef(({className:t,children:n,...r},s)=>e.jsx(pk,{ref:s,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r,children:e.jsx("div",{className:de("pb-4 pt-0",t),children:n})}));Xn.displayName=pk.displayName;const _D=()=>{const t=[{question:"Was ist POAS?",answer:"Profit on Ad Spend â zeigt dir den echten Gewinn nach Werbekosten. Im Gegensatz zu ROAS, der nur Umsatz misst, berücksichtigt POAS deine tatsächlichen Margen und gibt dir ein klares Bild deiner Profitabilität."},{question:"Funktioniert das nur für groÃe Shops?",answer:"Nein â ab 30k Monatsumsatz funktioniert POAS hervorragend. Sobald du eine gewisse Datenbasis hast, können wir klare Profitabilitäts-Analysen durchführen und deine profitabelsten Produkte identifizieren."},{question:"Funktioniert POAS auch bei Shops mit tausenden Produkten und kleinen Margen?",answer:"Gerade bei Shops mit vielen SKUs und unterschiedlichen Margen zeigt POAS seine Stärke. Statt alle Produkte gleich zu behandeln, identifizieren wir die wirklichen Gewinnbringer und stoppen die Budget-Verbrenner. Bei einem Beschlag-Shop mit über 10.000 Artikeln konnten wir so den Nettogewinn um 127% steigern â bei gleichem Ad-Spend."},{question:"Brauche ich PMax?",answer:"Ja â aber richtig gesteuert. Wir steuern PMax profit-basiert statt blind. Durch gezieltes Product-Labeling und POAS-Signale wird PMax zu einer echten Gewinnmaschine statt einer Blackbox."},{question:"Wie schnell sehe ich Ergebnisse?",answer:"Viele Kunden sehen Klarheit & erste Profitsteigerungen in 30 Tagen. Die vollständige Optimierung und Skalierung entwickelt sich typischerweise über 60-90 Tage, da wir systematisch datenbasiert vorgehen."},{question:"Was unterscheidet euch von anderen Agenturen?",answer:"Wir optimieren auf Gewinn, nicht nur auf Umsatz. Während andere Agenturen ROAS maximieren und mehr Budget fordern, fokussieren wir uns ausschlieÃlich darauf, was wirklich zählt: deine Profitabilität und nachhaltiges Wachstum."},{question:"Benötige ich technisches Know-how?",answer:"Nein. Wir kümmern uns um die gesamte te
362chnische Implementierung â von Server-Side Tracking über GA4-Setup bis hin zu Consent-Management. Du erhältst klare, verständliche Reports mit konkreten Handlungsanweisungen."}];return e.jsx("section",{className:"py-20 md:py-32 bg-gradient-hero",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-4xl",children:[e.jsx("div",{className:"text-center mb-16",children:e.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-foreground mb-4 leading-tight",children:"Häufig gestellte Fragen"})}),e.jsx(ip,{type:"single",collapsible:!0,className:"space-y-4",children:t.map((n,r)=>e.jsxs(Jn,{value:`item-${r}`,className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft card-gold-hover",children:[e.jsx(Qn,{className:"text-left text-lg font-semibold hover:no-underline",children:n.question}),e.jsx(Xn,{className:"text-muted-foreground leading-relaxed",children:n.answer})]},r))})]})})},MD="/assets/adshero-logo-white-Cc9BhcI8.png",OD=()=>{window.dispatchEvent(new CustomEvent("openCookieBanner"))},Ac=()=>e.jsx("footer",{className:"bg-primary text-primary-foreground py-16",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-7xl",children:[e.jsxs("div",{className:"grid md:grid-cols-4 gap-8 mb-12",children:[e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("img",{src:MD,alt:"AdsHero Logo",className:"h-10 w-auto mb-4"}),e.jsx("p",{className:"text-primary-foreground/80 mb-6 max-w-md",children:"Die Agentur für E-Commerce Shops, die profitabel skalieren wollen â mit POAS-Tracking und datengetriebenen Google Ads."}),e.jsx(q,{asChild:!0,variant:"cta",size:"lg",className:"mb-6",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"Footer"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Profit-Audit starten",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})}),e.jsxs("div",{className:"space-y-2 mb-6",children:[e.jsx("h4",{className:"text-lg font-semibold mb-3",children:"Kontakt"}),e.jsxs("a",{onClick:()=>se("phone_click",{location:"Footer"}),href:"tel:+4915204500499",className:"flex items-center gap-2 text-primary-foreground/80 hover:text-cta transition-all duration-300 group",children:[e.jsx(W2,{className:"h-4 w-4 group-hover:text-cta transition-all duration-300 group-hover:drop-shadow-[0_0_8px_hsl(var(--cta)/0.5)]"}),"+49 (0) 152 - 045 004 99"]}),e.jsxs("a",{onClick:()=>se("email_click",{location:"Footer"}),href:"mailto:[email protected]",className:"flex items-center gap-2 text-primary-foreground/80 hover:text-cta transition-all duration-300 group",children:[e.jsx(sc,{className:"h-4 w-4 group-hover:text-cta transition-all duration-300 group-hover:drop-shadow-[0_0_8px_hsl(var(--cta)/0.5)]"}),"[email protected]"]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-lg font-semibold mb-3",children:"Social Media"}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(q,{asChild:!0,variant:"outline",size:"icon",className:"bg-primary-foreground/10 border-primary-foreground/20 hover:bg-cta/20 hover:border-cta/40 hover:shadow-gold-glow-sm transition-all duration-300",children:e.jsx("a",{href:"https://www.youtube.com/@AdsHeroGmbH",target:"_blank",rel:"noopener noreferrer","aria-label":"YouTube",children:e.jsx(wg,{className:"h-5 w-5 transition-colors duration-300 group-hover:text-cta"})})}),e.jsx(q,{asChild:!0,variant:"outline",size:"icon",className:"bg-primary-foreground/10 border-primary-foreground/20 hover:bg-cta/20 hover:border-cta/40 hover:shadow-gold-glow-sm transition-all duration-300",children:e.jsx("a",{href:"https://www.facebook.com/profile.php?id=100071068456756",target:"_blank",rel:"noopener noreferrer","aria-label":"Facebook",children:e.jsx(O2,{className:"h-5 w-5 transition-colors duration-300 group-hover:text-cta"})})})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-lg font-semibold mb-4",children:"Leistungen"}),e.jsxs("ul",{className:"space-y-2 text-primary-foreground/80",children:[e.jsx("li",{children:e.jsx(E,{to:"/google-ads-agentur",className:"hover:text-cta transition-all duration-300",children:"Google Ads Agentur"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-optimieren",className:"hover:text-cta transition-all duration-300",children:"Google Ads optimieren"})}),e.jsx("li",{children:e.jsx(E,{to:"/profit-analyse",className:"hover:text-cta transition-all duration-300",children:"Profit-Analyse"})}),e.jsx("li",{children:e.jsx(E,{to:"/warum-roas-luegt",className:"hover:text-cta transition-all duration-300",children:"POAS statt ROAS"})}),e.jsx("li",{children:e.jsx(E,{to:"/feed-only-performance-max",className:"hover:text-cta transition-all duration-300",children:"Feed-Only Performance Max"})})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-lg font-semibold mb-4",children:"Unternehmen"}
362),e.jsxs("ul",{className:"space-y-2 text-primary-foreground/80",children:[e.jsx("li",{children:e.jsx("a",{href:"/#uber-uns",className:"hover:text-cta transition-all duration-300",children:"Ãber uns"})}),e.jsx("li",{children:e.jsx("a",{href:"/#case-studies",className:"hover:text-cta transition-all duration-300",children:"Case Studies"})}),e.jsx("li",{children:e.jsx(E,{to:"/blog",className:"hover:text-cta transition-all duration-300",children:"Blog"})}),e.jsx("li",{children:e.jsx(E,{to:"/impressum",className:"hover:text-cta transition-all duration-300",children:"Impressum"})}),e.jsx("li",{children:e.jsx(E,{to:"/datenschutz",className:"hover:text-cta transition-all duration-300",children:"Datenschutz"})}),e.jsx("li",{children:e.jsxs("button",{onClick:OD,className:"flex items-center gap-2 hover:text-cta transition-all duration-300 text-left group",children:[e.jsx(rc,{className:"h-4 w-4 group-hover:text-cta transition-all duration-300 group-hover:drop-shadow-[0_0_8px_hsl(var(--cta)/0.5)]"}),"Cookie-Einstellungen"]})})]}),e.jsxs("div",{className:"mt-6",children:[e.jsx("h4",{className:"text-lg font-semibold mb-3",children:"Team"}),e.jsxs("ul",{className:"space-y-2 text-primary-foreground/80",children:[e.jsx("li",{children:e.jsxs("a",{href:"https://www.linkedin.com/in/gordon-kuckluck/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 hover:text-cta transition-all duration-300 group",children:[e.jsx(Bn,{className:"h-4 w-4 group-hover:text-cta transition-all duration-300 group-hover:drop-shadow-[0_0_8px_hsl(var(--cta)/0.5)]"}),"Gordon Kuckluck"]})}),e.jsx("li",{children:e.jsxs("a",{href:"https://www.linkedin.com/in/christoph-bogner-798a83ba/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 hover:text-cta transition-all duration-300 group",children:[e.jsx(Bn,{className:"h-4 w-4 group-hover:text-cta transition-all duration-300 group-hover:drop-shadow-[0_0_8px_hsl(var(--cta)/0.5)]"}),"Christoph Bogner"]})})]})]})]})]}),e.jsx("div",{className:"border-t border-primary-foreground/20 pt-8 text-center text-primary-foreground/60",children:e.jsxs("p",{children:["© ",new Date().getFullYear()," AdsHero. Alle Rechte vorbehalten."]})})]})}),RD=()=>{const t={"@context":"https://schema.org","@type":"Organization",name:"AdsHero",url:"https://adshero.de",logo:"https://adshero.de/adshero-logo.png",description:"Google Ads Agentur für E-Commerce mit Fokus auf POAS (Profit on Ad Spend) statt ROAS.",address:{"@type":"PostalAddress",addressCountry:"DE"},sameAs:["https://www.linkedin.com/company/adshero"],contactPoint:{"@type":"ContactPoint",contactType:"customer service",availableLanguage:["German"]}},n={"@context":"https://schema.org","@type":"WebSite",name:"AdsHero",url:"https://adshero.de",potentialAction:{"@type":"SearchAction",target:"https://adshero.de/blog?q={search_term_string}","query-input":"required name=search_term_string"}},r={"@context":"https://schema.org","@type":"ProfessionalService",name:"AdsHero - Google Ads Agentur",description:"Spezialisierte Google Ads Agentur für E-Commerce Shops mit Fokus auf Profit-Optimierung durch POAS-Tracking.",url:"https://adshero.de",priceRange:"â¬â¬â¬",areaServed:{"@type":"Country",name:"Germany"},serviceType:["Google Ads Management","E-Commerce Marketing","Conversion Tracking","POAS Optimization"]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Agentur für E-Commerce | AdsHero"}),e.jsx("meta",{name:"description",content:"Die E-Commerce Growth Agentur für profitables Skalieren. POAS-Tracking, Conversion-Optimierung und Google Ads, die auf Gewinn statt ROAS optimieren."}),e.jsx("meta",{name:"keywords",content:"Google Ads Agentur, E-Commerce, POAS, Profit on Ad Spend, Google Ads Optimierung, Performance Marketing, Conversion Tracking"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de"}),e.jsx("meta",{property:"og:title",content:"Google Ads Agentur für E-Commerce | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Die E-Commerce Growth Agentur für profitables Skalieren. POAS statt ROAS â echte Gewinn-Optimierung für deinen Shop."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de"}),e.jsx("meta",{property:"og:image",content:"https://adshero.de/og-image.jpg"}),e.jsx("meta",{property:"og:locale",content:"de_DE"}),e.jsx("meta",{property:"og:site_name",content:"AdsHero"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Google Ads Agentur für E-Commerce | AdsHero"}),e.jsx("meta",{name:"twitter:description",content:"Die E-Commerce Growth Agentur für profitables Skalieren. POAS statt ROAS â echte Gewinn-Optimierung."}),e.jsx("meta",{name:"twitter:image",content:"https://adshero.de/og-image.jpg"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(t)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(n)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(r)})]}),e.jsxs("div",{className:"min-h-screen pt-16 md:pt-20",children:[e.jsx(f3,{}),e.jsx(v3,{}),e.jsx(y3,{}),e.jsx(w3,{}),e.jsx(S3,{}),e.jsx(A3,{}),e.jsx(Jw,{}),e.jsx(cD,{}),e.jsx(uD,{}),e.jsx(hD,{}),e.jsx(_D,{}),e.jsx(Ac,{})]})]})},Ex=({slug:t,title:n,description:r,date:s,readingTime:i,category:a,image:l})=>{const o=s;return e.jsx(E,{to:`/${t}`,className:"block group",children:e.jsxs(ce,{className:"h-full transition-all duration-300 hover:shadow-xl hover:-translate-y-1 border-border/50 card-gold-hover",children:[l&&e.jsx("div",{className:"aspect-video overflow-hidden rounded-t-lg",children:e.jsx("img",{src:l,alt:n,className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"})}),e.jsxs(bc,{children:[e.jsx("div",{className:"flex items-center gap-2 mb-3",children:e.jsx(cr,{variant:"secondary",className:"text-xs",children:a})}),e.jsx("h3",{className:"text-xl font-bold text-foreground group-hover:text-cta transition-colors line-clamp-2",children:n})]}),e.jsx(Vs,{children:e.jsx("p",{className:"text-muted-foreground line-clamp-3",children:r})}),e.jsxs(Lw,{className:"flex items-center justify-between pt-4 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nc,{className:"h-3.5 w-3.5"}),e.jsx("time",{dateTime:s,children:o})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx($i,{className:"h-3.5 w-3.5"}),e.jsxs("span",{children:[i," Min."]})]})]}),e.jsx(dt,{className:"h-4 w-4 text-cta transition-transform group-hover:translate-x-1"})]})]})})},si=[{slug:"google-ads-agentur",title:"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen",description:"Google Ads Agentur finden: 7 Kriterien für die r
362ichtige Wahl, typische Kosten (1.500-5.000â¬/Monat) und Red Flags. Ehrlicher Vergleich Agentur vs. Freelancer vs. In-House.",date:"13. April 2026",modifiedDate:"13. April 2026",readingTime:12,category:"Google Ads"},{slug:"google-ads-optimieren",title:"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn",description:"Mehr Gewinn aus Google Ads: 7 erprobte Hebel von Conversion Tracking über POAS bis Feed-Optimierung. Für E-Commerce Shops mit 10.000â¬+ Ad Spend.",date:"26. März 2026",modifiedDate:"26. März 2026",readingTime:20,category:"Google Ads"},{slug:"feed-only-performance-max",title:"Feed-Only Performance Max 2026 â Komplette Anleitung",description:"Performance Max nur mit Produkt-Feed: So richtest du Feed-Only PMax ein, optimierst Custom Labels und steuerst Eintragsgruppen gezielt. Inkl. Schritt-für-Schritt Anleitung.",date:"20. Februar 2026",modifiedDate:"26. März 2026",readingTime:22,category:"Google Ads"},{slug:"warum-roas-luegt",title:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce",description:"ROAS zeigt Umsatz, nicht Gewinn. Erfahre, warum POAS die bessere Kennzahl ist und wie du deine Google Ads auf echten Profit optimierst â mit Praxis-Beispielen.",date:"21. Januar 2026",modifiedDate:"26. März 2026",readingTime:12,category:"POAS Framework"},{slug:"performance-max-kampagnen",title:"Performance Max Kampagnen 2026 â Der ultimative Leitfaden",description:"Performance Max komplett erklärt: Schritt-für-Schritt Setup für E-Commerce und Leadgen. Asset-Gruppen, Zielgruppensignale, Optimierung + Video-Tutorial.",date:"20. Dezember 2022",modifiedDate:"26. März 2026",readingTime:45,category:"Google Ads",image:"/src/assets/blog/performance-max-kampagnen/featured.webp"},{slug:"youtube-ads-kosten",title:"YouTube Ads Kosten 2026: Aktuelle CPV/CPM Benchmarks + Rechner",description:"Was kosten YouTube Ads wirklich? Aktuelle CPV- und CPM-Benchmarks für 2026, inkl. Shorts Ads, Demand Gen und interaktivem Kostenrechner.",date:"19. November 2025",modifiedDate:"26. März 2026",readingTime:10,category:"YouTube Ads",image:"/src/assets/blog/youtube-ads-kosten/featured.webp"},{slug:"google-ads-conversion-shopify",title:"Google Ads Conversion Tracking Shopify 2026 â 5 Methoden im Vergleich",description:"5 Methoden für Google Ads Conversion Tracking in Shopify im Vergleich â von nativ bis Server-Side mit ProfitMetrics. Finde die beste Lösung für deinen Shop.",date:"19. November 2024",modifiedDate:"26. März 2026",readingTime:15,category:"Google Ads",image:"/src/assets/blog/google-ads-conversion-shopify/featured.webp"},{slug:"demand-gen-google-ads",title:"Google Ads Demand Gen 2026 â Komplette Anleitung + 5 Profi-Strukturen",description:"Demand Gen Kampagnen in Google Ads: 5 bewährte Strukturen, YouTube Placement Exclusions und der Vergleich mit Performance Max. Inkl. Video-Tutorial.",date:"20. November 2025",modifiedDate:"26. März 2026",readingTime:18,category:"Google Ads",image:"/src/assets/blog/demand-gen-google-ads/featured.jpg"},{slug:"google-ads-tutorial",title:"Google Ads Tutorial 2026: Kampagne erstellen (Schritt-für-Schritt + Video)",description:"Google Ads Kampagne erstellen in 30 Minuten: Schritt-für-Schritt Anleitung mit AI Max, Smart Bidding und Enhanced Conversions. Inkl. 22-Min Video-Tutorial.",date:"14. September 2022",modifiedDate:"26. März 2026",readingTime:22,category:"Google Ads",image:"/src/assets/blog/google-ads-tutorial/featured.webp"},{slug:"google-ads-enhanced-conversions-einrichten",title:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung",description:"Enhanced Conversions in Google Ads über GTM einrichten: Schritt-für-Schritt Anleitung inkl. Enhanced Conversions for Leads, Diagnose und Consent Mode V2.",date:"15. März 2023",modifiedDate:"26. März 2026",readingTime:15,category:"Google Ads"},{slug:"google-ads-google-tag-manager",title:"Google Ads mit Google Tag Manager verknüpfen 2026 â Komplette Anleitung",description:"Google Ads mit GTM verbinden: Conversion Tracking, Remarketing Tags und Consent Mode V2.1 einrichten. Komplette Schritt-für-Schritt Anleitung.",date:"10. Januar 2023",modifiedDate:"26. März 2026",readingTime:18,category:"Google Ads"},{slug:"google-ads-portfolio-gebotsstrategie",title:"Portfolio-Gebotsstrategie 2026 â Wann sie sinnvoll ist (und wann nicht)",description:"Portfolio-Gebotsstrategien in Google Ads: Wann lohnt sich der Einsatz wirklich? Vor- und Nachteile, Setup-Anleitung und AI Max Synergien im Ãberblick.",date:"5. Mai 2023",modifiedDate:"26. März 2026",readingTime:12,category:"Google Ads"},{slug:"youtube-werbung-schalten",title:"YouTube Werbung schalten 2026: Demand Gen Anleitung in 5 Schritten",description:"YouTube Werbung schalten mit Demand Gen in 5 Schritten: Alle Formate erklärt, Kosten-Ãberblick, Targeting-Optionen und Creative Best Practices für 2026.",date:"20. August 2022",modifiedDate:"26. März 2026",readingTime:20,category:"YouTube Ads"},{slug:"youtube-shorts-ads-ultimativer-leitfaden",title:"YouTube Shorts Ads 2026 â Der ultimative Leitfaden",description:"YouTube Shorts Ads von A bis Z: Demand Gen Integration, Creative Specs, Targeting-Strategien und aktuelle Kosten. Der komplette Leitfaden für 2026.",date:"12. Juni 2023",modifiedDate:"26. März 2026",readingTime:14,category:"YouTube Ads"},{slug:"google-ads-black-friday",title:"Google Ads Black Friday 2026 â Strategien für maximalen Umsatz",description:"Black Friday Google Ads Strategie: Budget-Planung, Kampagnen-Struktur und Gebots-Optimierung für maximalen Umsatz an BFCM. Inkl. Zeitplan und Checkliste.",date:"1. November 2023",modifiedDate:"26. März 2026",readingTime:16,category:"Google Ads"},{slug:"google-ads-fehler",title:"10 Google Ads Fehler 2026, die dein Budget verbrennen",description:"Die 10 teuersten Google Ads Fehler und wie du sie sofort behebst. Von falschem Conversion Tracking bis zur falschen Gebotsstrategie â mit schnellen Fixes.",date:"8. Februar 2023",modifiedDate:"26. März 2026",readingTime:18,category:"Google Ads"},{slug:"google-ads-conversion-wordpress",title:"Google Ads Conversion Tracking WordPress 2026 â Die richtige Methode",description:"Google Ads Conversion Tracking für WordPress richtig einrichten: GTM-Methode, Consent Mode V2, Contact Form 7, WooCommerce und Server-Side Tracking erklärt.",date:"25. April 2023",modifiedDate:"26. März 2026",readingTime:20,category:"Google Ads"}],ss=t=>si.find(n=>n.slug===t),GD=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Blog | AdsHero"}),e.jsx("meta",{name:"description",content:"Expertenwissen zu Google Ads, Performance Max, YouTube Ads und E-Commerce Wachstum. Praktische Tipps für mehr Gewinn mit deinen Kampagnen."}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/blog"}),e.jsx("meta",{property:"og:title",content:"Google Ads Blog | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Expertenwissen zu Google Ads, Performance Max und E-Commerce Wachstum"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/blog"}),e.jsx("meta",{property:"og:type",content:"website"})]}),e.jsx("div",{className:"min-h-screen bg-background pt-24 pb-20",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsxs("header",{className:"text-center mb-16 max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-5xl font-bold text-foreground mb-6",children:"Google Ads Blog"}),e.jsx("p",{className:"text-xl text-muted-foreground",children:"Expertenwissen, Strategien und Best Practices für profitables E-Commerce Wachstum"})]}),si.length>0&&e.jsxs("section",{className:"mb-16",children:[e.jsx("h2",{className:"text-2xl font-bold text-foreground mb-8",children:"Top-Artikel"}),e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-8",children:si.slice(0,3).map(t=>e.jsx(Ex,{...t},t.slug))})]}),si.length>3&&e.jsxs("section",{children:[e.jsx("h2",{className:"text-2xl font-bold text-foreground mb-8",children:"Alle Artikel"}),e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-8",children:si.slice(3).map(t=>e.jsx(Ex,{...t},t.slug))})]}),si.length===0&&e.jsx("div",{className:"text-center py-20",children:e.jsx("p",{className:"text-xl text-muted-foreground",children:"Keine Blog-Posts gefunden. Führe das Migration Script aus, um Posts zu importieren."})})]})})]}),Ut={calendlyLink:oe.profitAudit,endOfArticle:{headline:"Brauchst du Hilfe bei Google Ads?",description:"Lass uns in einem kostenlosen Strategiegespräch analysieren, wo dein gröÃtes Gewinnpotential liegt.",buttonText:"Kostenlose Gewinn-Analyse anfragen"},midArticle:{headline:"ð¯ Willst du mehr Gewinn aus deinen Google Ads?",description:"Wir analysieren dein Konto kostenlos und zeigen dir, wo du mit dem POAS-Framework echten Profit statt nur Umsatz holst.",buttonText:"Jetzt kostenlose Gewinn-Analyse anfragen â"}},fk=()=>e.jsx("div",{className:"mt-16 p-8 rounded-2xl bg-primary/5 border border-primary/10",children:e.jsxs("div",{className:"text-center max-w-2xl mx-auto",children:[e.jsx("h3",{className:"text-2xl font-bold text-foreground mb-4",children:Ut.endOfArticle.headline}),e.jsx("p",{className:"text-muted-foreground mb-6",children:Ut.endOfArticle.description}),e.jsx(q,{asChild:!0,size:"lg",className:"gap-2 w-full sm:w-auto",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we(Ut.calendlyLink),location:"BlogCTA"}),href:Ut.calendlyLink,target:"_blank",rel:"noopener noreferrer",children:Ut.endOfArticle.buttonText})})]})}),ID=({sections:t,title:n="Inhaltsverzeichnis"})=>{const[r,s]=y.useState(!1),i=(a,l)=>{a.preventDefault();const o=document.getElementById(l);if(o){const c=o.getBoundingClientRect().top+window.pageYOffset+-100;window.scrollTo({top:c,behavior:"smooth"})}};return e.jsxs("nav",{className:"my-6 md:my-8 border border-cta/20 rounded-xl bg-gradient-to-r from-cta/5 to-cta/10 overflow-hidden","aria-label":"Table of contents",children:[e.jsxs("button",{onClick:()=>s(!r),className:"w-full flex items-center justify-between p-3 md:p-4 md:cursor-default","aria-expanded":r,"aria-controls":"toc-content",children:[e.jsx("h2",{className:"text-base md:text-lg font-semibold text-foreground",children:n}),e.jsx("span",{className:"md:hidden",children:r?e.jsx(D2,{className:"w-5 h-5 text-muted-foreground"}):e.jsx(w0,{className:"w-5 h-5 text-muted-foreground"})})]}),e.jsx("div",{id:"toc-content",className:`${r?"block":"hidden"} md:block border-t border-border/20`,children:e.jsx("ul",{className:"p-3 md:p-4 space-y-2",children:t.map((a,l)=>e.jsx("li",{children:e.jsxs("a",{href:`#${a.id}`,onClick:o=>i(o,a.id),className:"flex items-start gap-2 md:gap-3 text-xs sm:text-sm text-muted-foreground hover:text-cta transition-colors group",children:[e.jsx("span",{className:"text-cta/60 font-medium min-w-[1.25rem] md:min-w-[1.5rem]",children:(l+1).toString().padStart(2,"0")}),e.jsx("span",{className:"group-hover:translate-x-1 transition-transform",children:a.title})]})},a.id))})})]})},xk=y.forwardRef(({...t},n)=>e.jsx("nav",{ref:n,"aria-label":"breadcrumb",...t}));xk.displayName="Breadcrumb";const bk=y.forwardRef(({className:t,...n},r)=>e.jsx("ol",{ref:r,className:de("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",t),...n}));bk.displayName="BreadcrumbList";const Yo=y.forwardRef(({className:t,...n},r)=>e.jsx("li",{ref:r,className:de("inline-flex items-center gap-1.5",t),...n}));Yo.displayName="BreadcrumbItem";const lm=y.forwardRef(({asChild:t,className:n,...r},s)=>{const i=t?Hv:"a";return e.jsx(i,{ref:s,className:de("transition-colors hover:text-foreground",n),...r})});lm.displayName="BreadcrumbLink";const jk=y.forwardRef(({className:t,...n},r)=>e.jsx("span",{ref:r,role:"link","aria-disabled":"true","aria-current":"page",className:de("font-normal text-foreground",t),...n}));jk.displayName="BreadcrumbPage";const om=({children:t,className:n,...r})=>e.jsx("li",{role:"presentation","aria-hidden":"true",className:de("[&>svg]:size-3.5",n),...r,children:t??e.jsx(k0,{})});om.displayName="BreadcrumbSeparator";const BD=({author:t})=>e.jsx("div",{className:"mt-12 mb-8 p-6 md:p-8 rounded-2xl bg-gradient-to-br from-muted/30 to-muted/50 border border-border/50 card-gold-hover",children:e.jsxs("div",{className:"flex flex-col sm:flex-row gap-6 items-start",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("img",{src:t.image,alt:t.name,className:"w-24 h-24 md:w-32 md:h-32 rounded-full object-cover ring-4 ring-background shadow-xl",loading:"lazy"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"mb-3",children:[e.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-1",children:t.name}),e.jsx("p",{className:"text-sm md:text-base text-cta font-medium",children:t.role})]}),e.jsx("p",{className:"text-sm md:text-base text-muted-foreground leading-relaxed mb-4",children:t.bio}),(t.linkedin||t.email)&&e.jsxs("div",{className:"flex flex-wrap gap-3",children:[t.linkedin&&e.jsxs("a",{href:t.linkedin,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-background hover:bg-cta/10 border border-border/50 hover:border-cta/30 transition-colors text-sm font-medium icon-gold-hover",children:[e.jsx(Bn,{className:"w-4 h-4"}),e.jsx("span",{children:"LinkedIn"})]}),t.email&&e.jsxs("a",{onClick:()=>se("email_click",{location:"AuthorBio"}),href:`mailto:${t.email}`,className:"inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-background hover:bg-cta/10 border border-border/50 hover:border-cta/30 transition-colors text-sm font-medium icon-gold-hover",children:[e.jsx(sc,{className:"w-4 h-4"}),e.jsx("span",{children:"E-Mail"})]})]})]})]})}),nt=({title:t,date:n,modifiedDate:r,readingTime:s,featuredImage:i,sections:a,author:l,children:o})=>{const d=y.useRef(null),[c,u]=y.useState([]);y.useEffect(()=>{if(!d.current)return;if(a&&a.length>0){u(a);return}const j=d.current.querySelectorAll("h2"),p=[];
362j.forEach(b=>{const x=b.textContent||"";if(!x.trim())return;let f=b.id;f||(f=C1(x),b.id=f),p.push({id:f,title:x.trim()})}),u(p)},[a,o]);const h=a||c,g=h.length>=5,m={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:t,item:typeof window<"u"?window.location.href:""}]};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(fe,{children:e.jsx("script",{type:"application/ld+json",children:JSON.stringify(m)})}),e.jsx("div",{className:"container mx-auto px-4 pt-20 md:pt-24 pb-4",children:e.jsx(xk,{children:e.jsxs(bk,{children:[e.jsx(Yo,{children:e.jsx(lm,{asChild:!0,children:e.jsx(E,{to:"/",children:"Home"})})}),e.jsx(om,{}),e.jsx(Yo,{children:e.jsx(lm,{asChild:!0,children:e.jsx(E,{to:"/blog",children:"Blog"})})}),e.jsx(om,{}),e.jsx(Yo,{children:e.jsx(jk,{className:"max-w-[200px] sm:max-w-md truncate",children:t})})]})})}),e.jsx("div",{className:"container mx-auto px-4 pb-8",children:e.jsx(E,{to:"/blog",children:e.jsxs(q,{variant:"ghost",className:"gap-2",children:[e.jsx(vg,{className:"h-4 w-4"}),"Zurück zum Blog"]})})}),e.jsxs("article",{className:"container mx-auto px-4 pb-20",children:[e.jsxs("header",{className:"max-w-4xl mx-auto mb-8 md:mb-12",children:[e.jsx("h1",{className:"text-3xl sm:text-4xl md:text-5xl font-bold text-foreground mb-4 md:mb-6 leading-tight",children:t}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4 md:gap-6 text-sm md:text-base text-muted-foreground mb-6 md:mb-8",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(nc,{className:"h-4 w-4"}),r?e.jsxs("span",{children:["Aktualisiert: ",e.jsx("time",{dateTime:r,children:r})]}):e.jsx("time",{dateTime:n,children:n})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx($i,{className:"h-4 w-4"}),e.jsxs("span",{children:[s," Min. Lesezeit"]})]})]})]}),e.jsxs("div",{className:"max-w-4xl mx-auto",children:[g&&e.jsx(ID,{sections:h}),e.jsx("div",{ref:d,className:"prose prose-slate dark:prose-invert max-w-none prose-headings:scroll-mt-24 prose-img:rounded-xl",children:o}),l&&e.jsx(BD,{author:l}),e.jsx(fk,{})]})]}),e.jsx(Ac,{})]})},ie=()=>e.jsxs("div",{className:"bg-gradient-to-r from-cta/10 to-cta/5 p-6 md:p-8 rounded-xl my-8 md:my-12 border border-cta/20 not-prose",children:[e.jsx("h3",{className:"text-xl md:text-2xl font-bold mb-3 text-foreground",children:Ut.midArticle.headline}),e.jsx("p",{className:"text-muted-foreground mb-6",children:Ut.midArticle.description}),e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we(Ut.calendlyLink),location:"InlineBlogCTA"}),href:Ut.calendlyLink,target:"_blank",rel:"noopener noreferrer",className:"inline-block w-full sm:w-auto text-center bg-cta text-cta-foreground hover:brightness-110 px-6 py-3 rounded-lg font-semibold transition-all shadow-md hover:shadow-lg hover:shadow-cta/25",children:Ut.midArticle.buttonText})]}),Nu="/assets/featured-vo9j6tIz.webp",KD="/assets/irrtum-C_S818t9.webp",FD="/assets/anzeigenformate-Ds5NMJF7.webp",LD="/assets/gebotsstrategie-UlB0RjvS.webp",ct={gordon:{name:"Gordon Kuckluck",role:"CEO & Founder von AdsHero",bio:"Gordon ist Gründer und CEO von AdsHero. Er spezialisiert sich auf YouTube Ads und Performance Marketing und hilft E-Commerce-Unternehmen dabei, profitable Werbekampagnen zu skalieren und messbare Ergebnisse zu erzielen.",image:ia,linkedin:"https://www.linkedin.com/in/gordon-kuckluck",email:"[email protected]"},andrei:{name:"Andrei Anissimov",role:"Performance Marketing Experte & Gründer",bio:"Andrei ist Gründer von AdsHero und spezialisiert auf Performance Marketing mit YouTube Ads und Google Ads. Mit über 8 Jahren Erfahrung hilft er E-Commerce-Unternehmen dabei, profitable Werbekampagnen zu skalieren.",image:yc,linkedin:"https://www.linkedin.com/company/adshero",email:"[email protected]"},simon:{name:"Simon Weber",role:"YouTube Ads Strategist",bio:"Simon ist YouTube Ads Spezialist bei AdsHero und hilft Unternehmen dabei, mit Video-Marketing messbare Ergebnisse zu erzielen.",image:Yw,linkedin:"https://www.linkedin.com/company/adshero"},christoph:{name:"Christoph Bogner",role:"Performance Marketing Manager",bio:"Christoph optimiert YouTube und Google Ads Kampagnen für maximale Conversions und ROI.",image:wc,linkedin:"https://www.linkedin.com/company/adshero"}},WD=t=>{const n={Januar:"01",Februar:"02",März:"03",April:"04",Mai:"05",Juni:"06",Juli:"07",August:"08",September:"09",Oktober:"10",November:"11",Dezember:"12"},r=t.match(/(\d+)\.\s+(\w+)\s+(\d{4})/);if(!r)return new Date().toISOString();const s=r[1].padStart(2,"0"),i=n[r[2]];return`${r[3]}-${i}-${s}`},VD=()=>{const t=ss("youtube-ads-kosten");if(!t)return null;const n=WD(t.date);return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:t.title}),e.jsx("meta",{name:"description",content:t.description}),e.jsx("link",{rel:"canonical",href:`https://adshero.de/${t.slug}`}),e.jsx("meta",{property:"og:title",content:t.title}),e.jsx("meta",{property:"og:description",content:t.description}),e.jsx("meta",{property:"og:image",content:Nu}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BlogPosting",headline:t.title,image:[Nu],datePublished:n,dateModified:n,author:{"@type":"Organization",name:"AdsHero"},publisher:{"@type":"Organization",name:"AdsHero"}})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was kosten YouTube Ads 2026?",acceptedA
362nswer:{"@type":"Answer",text:"Im DACH-Raum liegen die Kosten für überspringbare In-Stream Ads bei â¬0.03-â¬0.30 pro View. YouTube Shorts Ads kosten â¬2-8 CPM. Die genauen Kosten hängen von deiner Zielgruppe, Branche und Gebotsstrategie ab."}},{"@type":"Question",name:"Welches YouTube Ads Format ist am günstigsten?",acceptedAnswer:{"@type":"Answer",text:"Ãberspringbare In-Stream Ads sind oft das günstigste Format, da du nur zahlst, wenn jemand deine Anzeige mindestens 30 Sekunden anschaut oder damit interagiert."}},{"@type":"Question",name:"Was ist Performance Max für YouTube?",acceptedAnswer:{"@type":"Answer",text:"Performance Max für Video ist eine vollautomatisierte Kampagnenart, die deine Anzeigen über alle YouTube-Placements (In-Stream, Shorts, Discovery) hinweg ausspielt und dabei KI-gestützt auf Conversions optimiert."}},{"@type":"Question",name:"Was ist der Unterschied zwischen Demand Gen und Performance Max?",acceptedAnswer:{"@type":"Answer",text:"Demand Gen fokussiert sich auf YouTube, Gmail und Discover mit mehr kreativer Kontrolle und ist ideal für Brand Building + Performance. Performance Max läuft über alle Google-Kanäle (inkl. Search, Shopping, Maps) mit vollständiger Automatisierung und ist ideal für E-Commerce mit Shopping Feed."}}]})})]}),e.jsx(nt,{featuredImage:Nu,title:t.title,date:t.date,modifiedDate:t.modifiedDate,readingTime:t.readingTime,author:ct.gordon,children:e.jsxs("div",{className:"prose prose-lg max-w-none",children:[e.jsxs("div",{className:"bg-primary/10 border-l-4 border-primary p-6 rounded-lg mb-8 not-prose",children:[e.jsx("p",{className:"text-sm font-semibold text-primary mb-2",children:"⨠Aktualisiert: November 2026"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Dieser Guide wurde mit den neuesten YouTube Ads Features, aktuellen Kostenrichtwerten und Performance Max Best Practices aktualisiert."})]}),e.jsx("p",{className:"text-xl text-muted-foreground leading-relaxed mb-8",children:"YouTube Ads können für Performance Marketing extrem effektiv sein â aber nur, wenn du verstehst, wofür du wirklich bezahlst und wie du dein Budget optimal einsetzt. In diesem Guide erfährst du alles über YouTube Ads Kosten, Abrechnungsmodelle und die besten Strategien für 2026."}),e.jsx("div",{className:"my-12 not-prose",children:e.jsx("div",{className:"aspect-video rounded-xl overflow-hidden shadow-xl bg-muted",children:e.jsx("iframe",{className:"w-full h-full",src:"https://www.youtube.com/embed/ZKLX_jN4RNs",title:"YouTube Ads Kosten erklärt",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})})}),e.jsx("h2",{id:"wofuer-bezahlen",className:"text-3xl font-bold mt-12 mb-6",children:"Wofür bezahlst du bei YouTube Ads?"}),e.jsx("p",{className:"mb-6",children:"Es gibt einen weit verbreiteten Irrtum über YouTube Ads Kosten: Viele denken, sie zahlen nur, wenn jemand ihr Video länger als 30 Sekunden anschaut. Das stimmt so nicht ganz â die Abrechnung hängt stark vom gewählten Anzeigenformat und Kampagnenziel ab."}),e.jsxs("div",{className:"my-8 not-prose",children:[e.jsx("img",{src:KD,alt:"Weit verbreiteter Irrtum: Du zahlst bei YouTube nur, wenn jemand dein Video länger als 30 Sekunden anschaut",className:"w-full rounded-xl shadow-lg",loading:"lazy",decoding:"async"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-3 text-center italic",children:"Der weit verbreitete Irrtum über YouTube Ads Kosten"})]}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Die Wahrheit:"})," Bei überspringbaren In-Stream Ads zahlst du tatsächlich nur, wenn jemand dein Video mindestens 30 Sekunden anschaut (oder bis zum Ende, falls es kürzer ist) oder damit interagiert. Bei anderen Formaten wie Bumper Ads (6 Sekunden, nicht überspringbar) zahlst du jedoch per CPM (Cost per Mille = Kosten pro 1.000 Impressionen)."]}),e.jsx("h2",{id:"aenderungen-2026",className:"text-3xl font-bold mt-12 mb-6",children:"ð Was hat sich 2024/2026 bei YouTube Ads geändert?"}),e.jsxs("div",{className:"bg-muted/50 p-8 rounded-xl mb-8 not-prose",children:[e.jsx("h3",{className:"text-xl font-bold mb-4",children:"Die wichtigsten Upd
362ates:"}),e.jsxs("ul",{className:"space-y-4 text-foreground",children:[e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"Shorts Ads für Performance Marketing:"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Seit 2024 kannst du YouTube Shorts gezielt für Conversion-Kampagnen nutzen. CPM liegt bei â¬2-8 im DACH-Raum â deutlich günstiger als traditionelle In-Stream Ads bei hoher Reichweite."})]})]}),e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"Performance Max für YouTube:"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Neue KI-gesteuerte Kampagnenart, die automatisch über alle YouTube-Placements optimiert. Besonders effektiv für E-Commerce mit mindestens 50 Conversions pro Monat."})]})]}),e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"Aktuelle Kostenentwicklung 2026:"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Die Kosten sind im Vergleich zu 2024 weitgehend stabil geblieben. Ãberspringbare In-Stream Ads: â¬0.03-â¬0.30 pro View (DACH). Die Preise variieren stark nach Branche und Targeting."})]})]}),e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"Demand Gen ersetzt Video Action Campaigns:"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Seit Q4 2024 werden alle Video Action Campaigns automatisch zu Demand Gen upgraded. Neue Features: Gmail & Discover Placements, bessere Asset-Tests, Brand Safety Controls für YouTube Home Feed & Watch Next."})]})]}),e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"New Customer Acquisition Goals (neu Nov 2026):"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Mit Demand Gen kannst du gezielt nur neue Kunden ansprechen und bestehende Kunden ausschlieÃen. Durchschnittlich 11,5% höhere New Customer Ratio bei -3% geringeren Akquisitionskosten."})]})]}),e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"text-primary font-bold flex-shrink-0",children:"â¢"}),e.jsxs("div",{children:[e.jsx("strong",{children:"Consent Mode v2:"}),e.jsx("span",{className:"text-muted-foreground ml-1",children:"Seit März 2024 Pflicht in der EU. Tracking funktioniert jetzt auch ohne Cookie-Zustimmung (eingeschränkt) über Conversion Modeling."})]})]})]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"anzeigenformate",className:"text-3xl font-bold mt-12 mb-6",children:"Ãbersicht: Anzeigenformat, Gebotsstrategie & Kampagnenziel"}),e.jsx("p",{className:"mb-6",children:"Je nach Kampagnenziel und Anzeigenformat gelten unterschiedliche Abrechnungsmodelle und Gebotsstrategien. Die folgende Ãbersicht zeigt dir, welche Kombinationen möglich sind und wann du wofür bezahlst:"}),e.jsxs("div",{className:"my-8 not-prose",children:[e.jsx("img",{src:FD,alt:"Ãbersicht YouTube Anzeigenformate und Gebotsstrategien",className:"w-full rounded-xl shadow-lg",loading:"lazy",decoding:"async"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-3 text-center italic",children:"Komplette Ãbersicht aller YouTube Ads Formate und Abrechnungsmodelle"})]}),e.jsxs("div",{className:"bg-muted/30 p-6 rounded-lg my-8 not-prose",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"ð¡ Wichtig zu wissen:"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["⢠",e.jsx("strong",{className:"text-foreground",children:"YouTube Shorts Ads (neu 2024):"}),' Können mit "Conversions maximieren" oder "Ziel-CPA" eingesetzt werden â ideal für Performance Marketing mit kleinem Budget']}),e.jsxs("li",{children:["⢠",e.jsx("strong",{className:"text-foreground",children:"CPV (Cost per View):"})," Du zahlst nur, wenn jemand mindestens 30 Sekunden schaut oder mit der Anzeige interagiert"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{className:"text-foreground",children:"CPM (Cost per Mille):"})," Du zahlst pro 1.000 Impressionen, unabhängig davon, ob jemand interagiert"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{className:"text-foreground",children:"CPA (Cost per Action):"})," Du zahlst nur für tatsächliche Conversions (z.B. Käufe, Leads)"]})]})]}),e.jsx("h2",{className:"text-3xl font-bold mt-12 mb-6",children:"Bestes Anzeigenformat für Performance Marketing"}),e.jsxs("p",{className:"mb-6",children:["Für Performance Marketing Kampagnen mit dem Ziel Leads oder Käufe zu generieren, empfehlen wir ",e.jsx("strong",{children:"überspringbare In-Stream Anzeigen"})," mit der Gebotsstrategie ",e.jsx("strong",{children:'"Conversions maximieren"'})," oder ",e.jsx("strong",{children:'"Ziel-CPA"'}),"."]}),e.jsxs("div",{className:"my-8 not-prose",children:[e.jsx("img",{src:LD,alt:"Empfohlene Gebotsstrategie für Leads und Kunden",className:"w-full rounded-xl shadow-lg",loading:"lazy",decoding:"async"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-3 text-center italic",children:'Ãberspringbare In-Stream Anzeigen mit "Conversions maximieren" â ideal für Performance Marketing'})]}),e.jsxs("div",{className:"bg-primary/10 p-6 rounded-lg my-8 not-prose",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"â
Warum dieses Format?"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Du zahlst nur für engagierte Nutzer (mindestens 30 Sekunden View)"}),e.jsx("li",{children:"⢠Niedrigere Kosten pro View im Vergleich zu nicht-überspringbaren Ads"}),e.jsx("li",{children:"⢠KI-Optimierung auf tatsächliche Conversions, nicht nur Views"}),e.jsx("li",{children:"⢠GroÃe Reichweite bei kontrollierten Kosten"}),e.jsx("li",{children:"⢠Ideal für Produkte/Dienstleistungen, die Erklärung brauchen"})]})]}),e.jsx("h2",{id:"kampagnentypen-vergleich",className:"text-3xl font-bold mt-12 mb-6",children:"ð Welcher YouTube Ads Kampagnentyp ist der richtige für dich?"}),e.jsx("p",{className:"mb-6",children:"2026 stehen dir drei Haupt-Kampagnentypen zur Verfügung. Jeder hat seine Stärken und ist für unterschiedliche Ziele und Budgets geeignet:"}),e.jsxs("div",{className:"grid md:grid-cols-3 gap-6 mb-8 not-prose",children:[e.jsxs("div",{className:"border border-border rounded-xl p-6 bg-card",children:[e.jsx("h3",{className:"text-xl font-bold mb-3 text-foreground",children:"1. Demand Gen ð"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Nachfolger von Video Action Campaigns"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Ideal für:"})," Brand Building + Performance Marketing"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Placements:"})," YouTube, Gmail, Discover"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kontrolle:"})," Hoch (Placement-Auswahl möglich)"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kosten:"})," â¬0.03-â¬0.30 CPV / â¬2-12 CPM"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Min. Budget:"})," â¬20-30/Tag"]})]})]})]}),e.jsxs("div",{className:"border border-border rounded-xl p-6 bg-card",children:[e.jsx("h3",{className:"text-xl font-bold mb-3 text-foreground",children:"2. Performance Max"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Vollautomatisierte Multi-Channel-Kampagne"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Ideal für:"})," E-Commerce mit Shopping Feed, maximale Skalierung"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Placements:"})," Alle Google-Kanäle (YouTube, Search, Display, Maps)"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kontrolle:"})," Niedrig (vollautomatisiert)"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kosten:"})," Variabel basierend auf Ziel-CPA/ROAS"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Min. Budget:"})," â¬50/Tag, mind. 50 Conv/Monat empfohlen"]})]})]})]}),e.jsxs("div",{className:"border border-border rounded-xl p-6 bg-card",children:[e.jsx("h3",{className:"text-xl font-bold mb-3 text-foreground",children:"3. Klassische Video"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"In-Stream, Bumper, Shorts"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Ideal für:"})," Brand Awareness, Retargeting, spezifische Zielgruppen"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Placements:"})," Nur YouTube (volle Kontrolle)"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kontrolle:"})," Maximum (Placement, Gebot, Format)"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Kosten:"})," â¬0.03-â¬0.30 CPV / â¬2-10 CPM"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary",children:"â¢"}),e.jsxs("span",{className:"text-muted-foreground",children:[e.jsx("strong",{className:"text-foreground",children:"Min. Budget:"})," â¬10-20/Tag"]})]})]})]})]}),e.jsxs("div",{className:"bg-gradient-to-r from-primary/5 to-primary/10 p-8 rounded-xl mb-8 border border-primary/20 not-prose",children:[e.jsx("h3",{className:"text-xl font-bold mb-4 text-foreground",children:"ð¯ Entscheidungsbaum: Welcher Typ passt zu mir?"}),e.jsx("div",{className:"space-y-3 text-sm",children:e.jsxs("div",{className:"pl-4 border-l-2 border-primary/30",children:[e.jsx("p",{className:"font-semibold text-foreground mb-2",children:"Hast du einen Product Feed (E-Commerce)?"}),e.jsxs("div",{className:"pl-4 space-y-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-foreground",children:"ââ JA â Mind. 50 Conversions/Monat?"}),e.jsxs("div",{className:"pl-6 space-y-1 mt-1",children:[e.jsxs("p",{className:"text-muted-foreground",children:["ââ JA â ",e.jsx("span",{className:"font-bold text-primary",children:"Performance Max"})," (maximale Skalierung)"]}),e.jsxs("p",{className:"text-muted-foreground",children:["ââ NEIN â ",e.jsx("span",{className:"font-bold text-primary",children:"Demand Gen"})," (bessere Kontrolle beim Start)"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-foreground",children:"ââ NEIN â Willst du auch Gmail/Discover nutzen?"}),e.jsxs("div",{className:"pl-6 space-y-1 mt-1",children:[e.jsxs("p",{className:"text-muted-foreground",children:["ââ JA â ",e.jsx("span",{className:"font-bold text-primary",children:"Demand Gen"})," (Multi-Placement)"]}),e.jsxs("p",{className:"text-muted-foreground",children:["ââ NEIN â ",e.jsx("span",{className:"font-bold text-primary",children:"Klassische Video Kampagnen"})," (YouTube only)"]}
vendor: 10,897 bytes, line 362
362)]})]})]})]})})]}),e.jsx("h2",{id:"performance-max",className:"text-3xl font-bold mt-12 mb-6",children:"ð Performance Max für YouTube (2026)"}),e.jsxs("p",{className:"mb-6",children:["Seit 2024 bietet Google die ",e.jsx("strong",{children:"Performance Max für Video"}),"Kampagne an â eine vollautomatisierte Lösung, die deine Anzeigen über alle YouTube-Placements (In-Stream, Shorts, Discovery) hinweg ausspielt und dabei KI-gestützt auf dein Conversion-Ziel optimiert."]}),e.jsxs("div",{className:"bg-primary/10 p-6 rounded-lg mb-8 not-prose",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Wann Performance Max nutzen?"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-green-600 font-bold",children:"â
"}),e.jsx("span",{className:"text-muted-foreground",children:"Du hast mind. 50 Conversions pro Monat (bessere KI-Optimierung)"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-green-600 font-bold",children:"â
"}),e.jsx("span",{className:"text-muted-foreground",children:"E-Commerce mit Product Feed (Shopping-Integration)"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-green-600 font-bold",children:"â
"}),e.jsx("span",{className:"text-muted-foreground",children:"Du willst maximale Reichweite bei optimalen Kosten"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-green-600 font-bold",children:"â
"}),e.jsx("span",{className:"text-muted-foreground",children:"Test neuer Zielgruppen mit automatischem Audience-Targeting"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-red-600 font-bold",children:"â"}),e.jsx("span",{className:"text-muted-foreground",children:"NICHT für Brand Awareness ohne Conversion-Tracking"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-red-600 font-bold",children:"â"}),e.jsx("span",{className:"text-muted-foreground",children:"NICHT wenn du weniger als 30 Conversions pro Monat hast"})]})]})]}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Unsere Erfahrung:"})," Performance Max funktioniert besonders gut für E-Commerce-Unternehmen mit etabliertem Conversion-Tracking. Bei weniger als 50 Conversions pro Monat empfehlen wir Demand Gen oder klassische Video Kampagnen mit manueller Kontrolle über Placements und Zielgruppen."]}),e.jsx("h2",{id:"demand-gen",className:"text-3xl font-bold mt-12 mb-6",children:"ð¯ Demand Gen Kampagnen â Der Nachfolger von Video Action Campaigns (2026)"}),e.jsxs("p",{className:"mb-6",children:["Seit 2024 hat Google Video Action Campaigns durch ",e.jsx("strong",{children:"Demand Gen"})," ersetzt. Diese Kampagnenart ist speziell für visuelle, immersive Werbung konzipiert und erreicht 3 Milliarden monatliche Nutzer über YouTube, Gmail und Google Discover."]}),e.jsxs("div",{className:"grid md:grid-cols-3 gap-6 mb-8 not-prose",children:[e.jsxs("div",{className:"bg-muted/50 p-6 rounded-xl",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"ðº YouTube"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Home Feed"}),e.jsx("li",{children:"⢠Watch Next Feed"}),e.jsx("li",{children:"⢠In-Stream"}),e.jsx("li",{children:"⢠Shorts"})]})]}),e.jsxs("div",{className:"bg-muted/50 p-6 rounded-xl",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"ð§ Gmail"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Posteingang"}),e.jsx("li",{children:"⢠Visuelle Anzeigen"}),e.jsx("li",{children:"⢠Carousel Ads"})]})]}),e.jsxs("div",{className:"bg-muted/50 p-6 rounded-xl",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"ð Discover"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Google Discover Feed"}),e.jsx("li",{children:"⢠Android & iOS"}),e.jsx("li",{children:"⢠Native Integration"})]})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"ð° Kosten für Demand Gen 2026"}),e.jsx("div",{className:"bg-muted/50 p-6 rounded-xl mb-6 not-prose",children:e.jsxs("ul",{className:"space-y-3 text-sm",children:[e.jsxs("li",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-foreground",children:"YouTube In-Stream:"}),e.jsx("span",{className:"font-bold text-primary",children:"â¬0.03-â¬0.30 CPV"})]}),e.jsxs("li",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-foreground",children:"YouTube Shorts:"}),e.jsx("span",{className:"font-bold text-primary",children:"â¬2-8 CPM"})]}),e.jsxs("li",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-foreground",children:"Gmail:"}),e.jsx("span",{className:"font-bold text-primary",children:"â¬4-10 CPM"})]}),e.jsxs("li",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-foreground",children:"Discover Feed:"}),e.jsx("span",{className:"font-bold text-primary",children:"â¬3-12 CPM"})]})]})}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"ð Demand Gen vs Performance Max"}),e.jsx("div",{className:"overflow-x-auto mb-8",children:e.jsxs("table",{className:"w-full border-collapse not-prose",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3 font-bold text-foreground",children:"Kriterium"}),e.jsx("th",{className:"text-left p-3 font-bold text-foreground",children:"Demand Gen"}),e.jsx("th",{className:"text-left p-3 font-bold text-foreground",children:"Performance Max"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"p-3 font-semibold text-foreground",children:"Ziel"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Nachfrage schaffen, visuelle Inspiration"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Performance maximieren, alle Google-Kanäle"})]}),e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"p-3 font-semibold text-foreground",children:"Placements"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"YouTube, Gmail, Discover"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"YouTube + Search + Display + Shopping + Maps"})]}),e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"p-3 font-semibold text-foreground",children:"Kontrolle"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Mehr kreative Kontrolle, Placement-Auswahl"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Vollautomatisiert, keine Placement-Kontrolle"})]}),e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"p-3 font-semibold text-foreground",children:"Best für"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Brand Building + Performance, visuell starke Produkte"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"E-Commerce mit Shopping Feed, maximale Skalierung"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-3 font-semibold text-foreground",children:"Creative Assets"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Fokus auf Video & Bild-Carousel"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:"Video, Text, Bild â gemischt"})]})]})]})}),e.jsxs("div",{className:"bg-primary/10 p-6 rounded-lg mb-8 not-prose",children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Wann Demand Gen nutzen?"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-green-600 mb-2",children:"â
Perfekt wenn:"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Du hast starke Video-Creatives und willst maximale Kontrolle"}),e.jsx("li",{children:"⢠Deine Zielgruppe scrollt viel auf YouTube, Gmail oder Discover"}),e.jsx("li",{children:"⢠Du willst Brand Awareness UND Conversions gleichzeitig"}),e.jsx("li",{children:"⢠Visuell ansprechende Produkte (Fashion, Lifestyle, Home Deco)"}),e.jsx("li",{children:"⢠Du willst exakt wissen, wo deine Ads erscheinen (Placement-Reports)"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-red-600 mb-2",children:"â NICHT nutzen wenn:"}),e.jsxs("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"⢠Du weniger als 30 Conversions pro Monat hast"}),e.jsx("li",{children:"⢠Du keine guten Video-Assets hast"}),e.jsx("li",{children:"⢠Du maximale Automatisierung willst (â nutze Performance Max)"}),e.jsx("li",{children:"⢠Du hauptsächlich auf Search Traffic setzt"})]})]})]})]}),e.jsx("h2",{id:"aktuelle-kosten",className:"text-3xl font-bold mt-12 mb-6",children:"ð° Aktuelle YouTube Ads Kosten 2026 (DACH-Raum)"}),e.jsx("div",{className:"bg-muted/50 p-8 rounded-xl mb-8 not-prose",children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Ãberspringbare In-Stream Ads"}),e.jsx("p",{className:"text-3xl font-bold text-primary mb-2",children:"â¬0.03 - â¬0.30"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"pro View (CPV)"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"Durchschnitt: â¬0.10-â¬0.15 für B2C, â¬0.15-â¬0.30 für B2B"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"YouTube Shorts Ads ð"}),e.jsx("p",{className:"text-3xl font-bold text-primary mb-2",children:"â¬2 - â¬8"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"pro 1.000 Impressionen (CPM)"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"Besonders günstig für Reichweite, höhere Frequency möglich"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Bumper Ads (6 Sek.)"}),e.jsx("p",{className:"text-3xl font-bold text-primary mb-2",children:"â¬3 - â¬10"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"pro 1.000 Impressionen (CPM)"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"Ideal für Brand Awareness und Retargeting"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Demand Gen (Multi-Placement) ð"}),e.jsx("p",{className:"text-3xl font-bold text-primary mb-2",children:"â¬2 - â¬12"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"CPM (variabel je nac
362h Placement)"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"YouTube: â¬2-8, Gmail: â¬4-10, Discover: â¬3-12 CPM"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-3 text-foreground",children:"Performance Max Video"}),e.jsx("p",{className:"text-3xl font-bold text-primary mb-2",children:"variabel"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"basierend auf Ziel-CPA/ROAS"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"KI optimiert automatisch auf dein Conversion-Ziel"})]})]})}),e.jsxs("p",{className:"text-sm text-muted-foreground italic mb-8",children:["ð¡ ",e.jsx("strong",{children:"Hinweis:"})," Die tatsächlichen Kosten können je nach Branche, Targeting, Qualität der Anzeige und Wettbewerb stark variieren. Diese Werte basieren auf unseren Erfahrungen mit über 50 Kundenaccounts im DACH-Raum (Stand: November 2026)."]}),e.jsx("h2",{id:"tipps",className:"text-3xl font-bold mt-12 mb-6",children:"ð 6 Tipps zur Kostenoptimierung bei YouTube Ads (2026)"}),e.jsxs("div",{className:"space-y-6 mb-8",children:[e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"1. Starke Hook in den ersten 5 Sekunden"}),e.jsx("p",{className:"text-muted-foreground",children:"Da Nutzer nach 5 Sekunden überspringen können, musst du ihre Aufmerksamkeit sofort gewinnen. Teste verschiedene Hooks und analysiere die View Rate."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"2. Conversion-Tracking richtig einrichten"}),e.jsx("p",{className:"text-muted-foreground",children:"Ohne sauberes Tracking kann der Algorithmus nicht auf Conversions optimieren. Nutze Enhanced Conversions und Consent Mode v2 für bessere Datenqualität."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"3. Negative Placements nutzen"}),e.jsx("p",{className:"text-muted-foreground",children:"SchlieÃe unpassende YouTube-Kanäle aus, auf denen deine Ads erscheinen. Das verbessert die Qualität deiner Views und senkt die Kosten."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"4. A/B-Testing von Video-Creatives"}),e.jsx("p",{className:"text-muted-foreground",children:"Teste mindestens 2-3 verschiedene Videos gleichzeitig. Oft haben Videos mit ähnlichem Inhalt komplett unterschiedliche CPAs."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"5. Start mit kleinem Budget & skaliere schrittweise"}),e.jsx("p",{className:"text-muted-foreground",children:"Beginne mit â¬20-30 pro Tag, sammle Daten und skaliere nur profitable Kampagnen. Zu schnelles Hochskalieren führt oft zu höheren CPAs."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"6. Nutze Brand Safety Controls (neu 2026) ð"}),e.jsx("p",{className:"text-muted-foreground",children:"Mit den neuen Brand Safety Settings für Demand Gen kannst du verhindern, dass deine Ads neben unangemessenen Inhalten erscheinen. Das verbessert nicht nur dein Brand Image, sondern oft auch die Performance (höhere View Rates bei passenden Placements). Drei Modi verfügbar: Standard (most brands), Expanded (max reach), Limited (strict guidelines)."})]})]}),e.jsx("h2",{id:"fazit",className:"text-3xl font-bold mt-12 mb-6",children:"Fazit: Lohnen sich YouTube Ads 2026?"}),e.jsxs("p",{className:"text-lg mb-6",children:["YouTube Ads sind 2026 eines der effektivsten Performance Marketing Tools â vorausgesetzt, du setzt sie richtig ein. Mit der Einführung von ",e.jsx("strong",{children:"Demand Gen"})," (Nachfolger von Video Action Campaigns) hast du 2026 noch mehr Möglichkeiten, de
362ine Zielgruppe über YouTube, Gmail und Discover zu erreichen."]}),e.jsxs("p",{className:"mb-6",children:["Die Kosten sind im Vergleich zu 2024 stabil geblieben und liegen für überspringbare In-Stream Ads bei â¬0.03-â¬0.30 pro View im DACH-Raum. Entscheidend ist nicht nur der CPV, sondern vor allem der ",e.jsx("strong",{children:"Cost per Acquisition"})," â und hier kannst du mit der richtigen Strategie, guten Creatives und sauberem Tracking enorme Erfolge erzielen."]}),e.jsxs("div",{className:"bg-gradient-to-r from-primary/5 to-primary/10 p-8 rounded-xl my-8 border border-primary/20 not-prose",children:[e.jsx("p",{className:"text-lg font-semibold text-foreground mb-4",children:"ð¯ Unsere Empfehlung für 2026:"}),e.jsxs("ul",{className:"space-y-3 text-sm text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"font-bold text-foreground min-w-[180px]",children:"Einsteiger (< 30 Conv/Monat):"}),e.jsx("span",{children:"Start mit klassischen Video Kampagnen (In-Stream), sammle Daten und optimiere deine Creatives"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"font-bold text-foreground min-w-[180px]",children:"Fortgeschritten (30-50 Conv/Monat):"}),e.jsx("span",{children:"Teste Demand Gen für mehr Reichweite über Gmail/Discover bei besserer Kontrolle"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"font-bold text-foreground min-w-[180px]",children:"E-Commerce (> 50 Conv/Monat):"}),e.jsx("span",{children:"Performance Max für maximale Skalierung über alle Google-Kanäle hinweg"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-6 italic",children:"ð¡ Pro-Tipp: Kombiniere mehrere Kampagnentypen für optimale Ergebnisse. Demand Gen für Mid-Funnel, Performance Max für Bottom-Funnel Conversions."})]})]})})]})},xo="/assets/featured-sdOPNn9D.webp",UD="/assets/automatische-shopify-conversions-B-QrZlPL.webp",$D="/assets/profitmetrics-dashboard-CDxBK6Ju.webp",HD="/assets/shopify-kundenereignisse-CsH05boJ.png",ZD="/assets/shopify-theme-liquid-bearbeiten-C3eWav9g.webp",Tx=(t,n=!1)=>{const r={Januar:"01",Februar:"02",März:"03",April:"04",Mai:"05",Juni:"06",Juli:"07",August:"08",September:"09",Oktober:"10",November:"11",Dezember:"12"},s=t.match(/(\d+)\.\s+(\w+)\s+(\d{4})/);if(!s)return new Date().toISOString();const i=s[1].padStart(2,"0"),a=r[s[2]];return`${s[3]}-${a}-${i}T10:00:00+00:00`},qD=()=>{const t=ss("google-ads-conversion-shopify");if(!t)return null;const n=Tx(t.date),r=t.modifiedDate?Tx(t.modifiedDate,!0):n;return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:t.title}),e.jsx("meta",{name:"description",content:t.description}),e.jsx("link",{rel:"canonical",href:`https://adshero.de/${t.slug}`}),e.jsx("meta",{property:"og:title",content:t.title}),e.jsx("meta",{property:"og:description",content:t.description}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:url",content:`https://adshero.de/${t.slug}`}),e.jsx("meta",{property:"og:image",content:xo}),e.jsx("meta",{property:"article:published_time",content:n}),e.jsx("meta",{property:"article:modified_time",content:r}),e.jsx("meta",{property:"article:author",content:"Christoph Bogner"}),e.jsx("meta",{property:"article:section",content:t.category}),e.jsx("meta",{property:"article:tag",content:"Shopify"}),e.jsx("meta",{property:"article:tag",content:"Google Ads"}),e.jsx("meta",{property:"article:tag",content:"Conversion Tracking"}),e.jsx("meta",{property:"article:tag",content:"Server-Side Tracking"}),e.jsx("meta",{property:"article:tag",content:"Google Tag Manager"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:t.title}),e.jsx("meta",{name:"twitter:description",content:t.description}),e.jsx("meta",{name:"twitter:image",content:xo}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BlogPosting",headline:t.title,description:t.description,image:xo,author:{"@type":"Person",name:"Christoph Bogner"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/logo.png"}},datePublished:n,dateModified:r})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was sind Shopify Customer Events?",acceptedA
362nswer:{"@type":"Answer",text:"Customer Events sind eine neue API von Shopify (seit Q4 2024), die es ermöglicht, Tracking-Pixel update-sicher über die Shopify-Admin zu verwalten, statt direkt im Theme-Code. Das macht Updates einfacher und verhindert, dass Tracking beim Theme-Wechsel verloren geht."}},{"@type":"Question",name:"Was ist der Unterschied zwischen Client-Side und Server-Side Tracking?",acceptedAnswer:{"@type":"Answer",text:"Client-Side Tracking läuft im Browser des Kunden und verliert 30-40% der Daten durch Ad-Blocker, iOS-Restriktionen und Cookie-Consent. Server-Side Tracking sendet Daten direkt vom Server zu Google und erreicht 95%+ Genauigkeit."}},{"@type":"Question",name:"Lohnt sich Server-Side Tracking für meinen Shop?",acceptedAnswer:{"@type":"Answer",text:"Server-Side Tracking lohnt sich ab ca. 10.000⬠monatlichem Ad Spend. Bei diesem Budget macht schon 1% mehr Conversion-Genauigkeit die Kosten wett. Dazu kommt: Bessere Kampagnen-Optimierung durch vollständige Daten und Profit-Tracking statt nur Umsatz."}},{"@type":"Question",name:"Was ist POAS und warum ist es besser als ROAS?",acceptedAnswer:{"@type":"Answer",text:"POAS (Profit on Ad Spend) optimiert auf Gewinn statt Umsatz. Während ROAS nur den Umsatz betrachtet, rechnet POAS automatisch Produktkosten, Versand und andere Ausgaben mit ein. So optimierst du auf echten Profit, nicht nur auf Umsatz."}},{"@type":"Question",name:"Kann ich von der alten Theme-Methode zu Customer Events wechseln?",acceptedAnswer:{"@type":"Answer",text:"Ja! Entferne einfach den alten Tracking-Code aus deinem Theme und richte Customer Events über die Shopify-Admin ein. Das dauert ca. 15-20 Minuten und macht dein Tracking update-sicher."}},{"@type":"Question",name:"Wie viele Conversions verliere ich ohne Server-Side Tracking?",acceptedAnswer:{"@type":"Answer",text:"Im Durchschnitt 30-40% deiner echten Conversions. Bei iOS-Nutzern sogar bis zu 60%. Das bedeutet: Google optimiert deine Kampagnen nur auf 60-70% deiner echten Daten."}},{"@type":"Question",name:"Ist Server-Side Tracking DSGVO-konform?",acceptedAnswer:{"@type":"Answer",text:"Ja, bei korrekter Einrichtung. ProfitMetrics bietet z.B. automatische Consent-Mode-Integration und hostet Server in der EU. Wichtig: Du brauchst weiterhin Cookie-Banner und Datenschutzerklärung."}},{"@type":"Question",name:"Bekomme ich wirklich 50% Rabatt bei ProfitMetrics?",acceptedAnswer:{"@type":"Answer",text:"Ja! Als Certified ProfitMetrics Partner bieten wir 50% Rabatt auf die ersten 3 Monate + kostenlose Einrichtung (Wert: 299â¬) + 1 Stunde Onboarding. Kontaktiere uns und erwähne diesen Artikel."}}]})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"HowTo",name:"Server-Side Tracking mit ProfitMetrics einrichten",description:"Schritt-für-Schritt Anleitung zur Einrichtung von Server-Side Conversion Tracking für Google Ads in Shopify mit ProfitMetrics",step:[{"@type":"HowToStep",name:"ProfitMetrics Account erstellen",text:"Registriere dich bei ProfitMetrics und verbinde deinen Shopify-Shop."},{"@type":"HowToStep",name:"Google Ads verbinden",text:"Verbinde dein Google Ads Konto mit ProfitMetrics über die Integration."},{"@type":"HowToStep",name:"Server-Side Tracking aktivieren",text:"Aktiviere Server-Side Tracking in den ProfitMetrics Einstellungen."},{"@type":"HowToStep",name:"Conversion Actions einrichten",text:"Wähle aus, welche Events (Purchase, Add to Cart, etc.) zu Google gesendet werden sollen."},{"@type":"HowToStep",name:"Testen und verifizieren",text:"Führe Test-Bestellungen durch und prüfe im ProfitMetrics Dashboard, ob alle Events korrekt ankommen."}]})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Google Ads Conversion Tracking Shopify",item:"https://adshero.de/google-ads-conversion-shopify"}]})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"VideoObject",name:"Google Ads Conversion Tracking in Shopify einrichten â Komplette Anleitung",description:"Schritt-für-Schritt Anleitung zur Einrichtung von Google Ads Conversion Tracking in Shopify über Google Channel und Google Tag Manager",thumbnailUrl:"https://img.youtube.com/vi/MBgKgJ2m4jA/maxresdefault.jpg",uploadDate:"2024-11-19T10:00:00+00:00",contentUrl:"https://www.youtube.com/watch?v=MBgKgJ2m4jA",embedUrl:"https://www.youtube.com/embed/MBgKgJ2m4jA",duration:"PT15M",publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/logo.png"}}})})]}),e.jsxs(nt,{title:t.title,date:t.date,modifiedDate:t.modifiedDate,readingTime:t.readingTime,featuredImage:xo,author:ct.christophBogner,children:[e.jsxs("div",{className:"bg-primary/10 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold text-lg mb-2",children:"ð UPDATE November 2026"}),e.jsxs("p",{className:"mb-2",children:["Artikel komplett überarbeitet. Shopify hat 2024 ",e.jsx("strong",{children:"Customer Events & Web Pixels API"})," eingeführt."]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Alte Theme-Integrationen nicht mehr optimal. Wir zeigen alle 5 Methoden inkl. Server-Side Tracking."})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/30 border-l-4 border-blue-500 p-6 rounded-r-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"â ï¸ Wichtiger Hinweis zu DSGVO & Google Consent Mode V2"}),e.jsxs("p",{className:"mb-3",children:["Alle in diesem Artikel vorgestellten Tracking-Methoden erfordern eine DSGVO-konforme Einbindung mit Cookie-Consent. Seit März 2024 ist der ",e.jsx("strong",{children:"Google Consent Mode V2"})," verpflichtend für alle Google Ads Werbetreibenden in der EU."]}),e.jsxs("p",{className:"mb-3",children:["Bei Shopify kannst du Tools wie ",e.jsx("strong",{children:"Usercentrics, Cookiebot oder Pandectes"})," nutzen, um den Consent Mode V2 zu implementieren."]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Disclaimer:"})," Wir sind keine Anwälte und keine Datenschutzbeauftragten. Diese Hinweise geben wir nach bestem Wissen, aber ohne Gewähr. Für rechtsverbindliche Auskünfte kontaktiere bitte einen Fachanwalt für Datenschutzrecht."]})]}),e.jsxs("p",{className:"text-lg mb-6",children:["Google Ads Conversion Tracking in Shopify 2026: ",e.jsx("strong",{children:"30-40% Datenverlust"})," bei Standard-Tracking durch iOS 14.5+, Ad-Blocker und Browser-Restriktionen. Das kostet dich bares Geld, weil Google deine Kampagnen nur auf 60-70% deiner echten Conversions optimiert."]}),e.jsxs("p",{className:"mb-6",children:["In diesem Artikel zeige ich dir ",e.jsx("strong",{children:"alle 5 Methoden"})," für Google Ads Conversion Tracking in Shopify â von der einfachsten Lösung für Einsteiger bis hin zu professionellem Server-Side Tracking mit 95%+ Datengenauigkeit."]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"ð Ãberblick: Die 5 Methoden"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Google & YouTube App"})," â Einfachste Lösung für Einsteiger"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Shopify Customer Events"})," â Neue native Shopify-Lösung (2024)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Tag Manager"})," â Für fortgeschrittene Marketer"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Manuelle Theme-Integration"})," â Veraltet, nicht empfohlen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Server-Side Tracking"})," â Premium-Lösung mit 95%+ Genauigkeit"]})]})]}),e.jsxs("div",{className:"my-8 bg-card border border-border rounded-lg overflow-hidden",children:[e.jsxs("div",{className:"bg-gradient-to-r from-primary/10 to-primary/5 p-4 border-b border-border",children:[e.jsx("h3",{className:"font-bold text-lg mb-1",children:"ðº Video-Tutorial: Schritt-für-Schritt Anleitung"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Komplette Einrichtung über den Google Channel & Google Tag Manager (beide Methoden)"})]}),e.jsx("div",{className:"relative w-full",style:{paddingBottom:"56.25%"},children:e.jsx("iframe",{className:"absolute top-0 left-0 w-full h-full",src:"https://www.youtube.com/embed/MBgKgJ2m4jA",title:"Google Ads Conversion Tracking Shopify - Schritt-für-Schritt Anleitung",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,loading:"lazy"})}),e.jsx("div",{className:"p-4 bg-muted/30",children:e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Das Video zeigt die Einrichtung von ",e.jsx("strong",{children:"Methode 1 (Google & YouTube App)"})," und ",e.jsx("strong",{children:"Methode 3 (Google Tag Manager)"})," im Detail."]})})]}),e.jsxs("div",{className:"bg-gradient-to-r from-muted/80 to-muted/40 p-6 rounded-lg my-6 border border-border",children:[e.jsxs("p",{className:"mb-3",children:[e.jsx("strong",{children:"ð Teil einer Artikel-Serie:"})," Dieser Artikel ist Teil unserer Google Ads Conversion Tracking Serie. Weitere hilfreiche Artikel:"]}),e.jsx("ul",{className:"list-disc pl-6 space-y-2 text-sm",children:e.jsx("li",{children:e.jsx("a",{href:"/youtube-ads-kosten",className:"text-primary hover:underline",children:"YouTube Ads Kosten â Was kostet Werbung auf YouTube 2026?"})})})]}),e.jsxs("div",{className:"my-12 p-6 rounded-xl bg-gradient-to-r from-primary/10 to-primary/5 border border-primary/20",children:[e.jsx("h3",{className:"text-xl font-bold mb-3",children:"ð¯ Kostenlose Tracking-Analyse für deinen Shop"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Unsicher, welche Methode für dich passt? Wir analysieren dein aktuelles Tracking kostenlos und zeigen dir, wie viele Conversions du verlierst."}),e.jsx(q,{asChild:!0,size:"lg",className:"w-full sm:w-auto",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/tracking-analyse"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/tracking-analyse",target:"_blank",rel:"noopener noreferrer",children:"Jetzt kostenlose Analyse buchen"})})]}),e.jsx("h2",{id:"warum-tracking-2026",className:"text-3xl font-bold mt-12 mb-6",children:"Warum ist Conversion Tracking 2026 anders?"}),e.jsx("p",{className:"mb-4",children:"Seit iOS 14.5 (2021) und den zunehmenden Browser-Restriktionen (Safari ITP, Firefox ETP) hat sich Conversion Tracking massiv verändert:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"iOS 14.5+ blockiert"})," standardmäÃig Third-Party Tracking"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Safari ITP"}
362)," löscht Cookies nach 7 Tagen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ad-Blocker"})," werden von 30-40% der Nutzer verwendet"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Cookie-Consent-Banner"})," reduzieren Tracking zusätzlich"]})]}),e.jsxs("div",{className:"bg-destructive/10 border-l-4 border-destructive p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â ï¸ Das Problem:"}),e.jsxs("p",{children:["Standard Client-Side Tracking sieht nur noch ",e.jsx("strong",{children:"60-70% deiner echten Conversions"}),". Das bedeutet: Google optimiert deine Kampagnen auf unvollständige Daten â und du verschwendest Budget."]})]}),e.jsx("h2",{id:"methode-1-google-youtube-app",className:"text-3xl font-bold mt-12 mb-6",children:"Methode 1: Google & YouTube App â (Einfachste Lösung)"}),e.jsxs("p",{className:"mb-4",children:["Die ",e.jsx("strong",{children:"Google & YouTube App"})," ist die einfachste Methode, um Google Ads Conversion Tracking in Shopify einzurichten. Sie ist perfekt für Einsteiger und kleine Shops mit wenig technischem Know-how."]}),e.jsxs("div",{className:"bg-blue-500/10 border-l-4 border-blue-500 p-6 rounded-r-lg my-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¥ Video-Tutorial verfügbar"}),e.jsxs("p",{className:"mb-3",children:["Du bevorzugst eine Video-Anleitung? Schau dir unser"," ",e.jsx("a",{href:"#video-tutorial",className:"text-primary hover:underline font-semibold",children:"vollständiges Video-Tutorial"})," ","an â dort zeigen wir die Einrichtung dieser Methode Schritt für Schritt (ab 0:00)."]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Einrichtung in 5 Minuten"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"App installieren:"}),' Gehe im Shopify Admin zu Apps â Suche "Google & YouTube" â Installieren']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Konto verbinden:"})," Melde dich mit deinem Google-Konto an (das mit Google Ads verknüpft ist)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads Account auswählen:"})," Wähle den Google Ads Account aus, den du tracken möchtest"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Aktionen aktivieren:"})," Die App richtet automatisch Conversion-Aktionen ein (Purchase, Add to Cart, Begin Checkout)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Fertig!"})," Das Tracking ist aktiviert und sendet Conversions zu Google Ads"]})]}),e.jsxs("div",{className:"my-6",children:[e.jsx("img",{src:UD,alt:"Automatische Shopify Conversions in Google Ads",className:"rounded-lg border border-border w-full",loading:"lazy"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Die Google & YouTube App richtet automatisch Conversion-Aktionen ein"})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Vorteile & Nachteile"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-green-700 dark:text-green-400",children:"â
Vorteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Einfachste Einrichtung (5 Minuten)"}),e.jsx("li",{children:"â Kein technisches Wissen nötig"}),e.jsx("li",{children:"â Automatische Updates von Shopify"}),e.jsx("li",{children:"â Kostenlos"}),e.jsx("li",{children:"â Offizielle Shopify-Lösung"})]})]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-destructive",children:"â Nachteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Nur Client-Side Tracking (30-40% Datenverlust)"}),e.jsx("li",{children:"â Keine Custom Events möglich"}),e.jsx("li",{children:"â Limitierte Kontrolle über Tracking"}),e.jsx("li",{children:"â Keine Profit-Daten (nur Umsatz)"}),e.jsx("li",{children:"â Weniger genau als Server-Side"})]})]})]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"ð¡ Empfehlung:"}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Perfekt für:"})," Einsteiger, kleine Shops (<5.000⬠Ad Spend/Monat), schneller Start ohne technisches Know-how.",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Nicht geeignet für:"})," GroÃe Shops mit hohem Ad Spend, fortgeschrittene Tracking-Anforderungen, maximale Datengenauigkeit."]})]}),e.jsx("h2",{id:"methode-2-customer-events",className:"text-3xl font-bold mt-12 mb-6",children:"Methode 2: Shopify Customer Events & Web Pixels ð (Beste native Lösung)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Customer Events"})," sind Shopifys neue Art, Tracking-Pixel zu verwalten (seit Q4 2024). Statt den Code direkt ins Theme zu schreiben, verwaltest du Pixel
362über die Shopify-Admin â das macht dein Tracking ",e.jsx("strong",{children:"update-sicher"})," und ",e.jsx("strong",{children:"theme-unabhängig"}),"."]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Was sind Customer Events?"}),e.jsx("p",{className:"mb-4",children:"Customer Events sind standardisierte Events, die Shopify automatisch trackt:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"page_viewed"})," â Seitenaufruf"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"product_viewed"})," â Produktseite angesehen"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"collection_viewed"})," â Kategorie angesehen"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"cart_viewed"})," â Warenkorb angesehen"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"product_added_to_cart"})," â Produkt in Warenkorb gelegt"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"checkout_started"})," â Checkout begonnen"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"checkout_completed"})," â Bestellung abgeschlossen"]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Einrichtung: Google Ads Pixel als Customer Event"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-4 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Customer Events öffnen:"}),e.jsx("br",{}),'Shopify Admin â Einstellungen â Customer Events â "Custom pixel hinzufügen"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Pixel benennen:"}),e.jsx("br",{}),'Name: "Google Ads Conversion Tracking"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Code einfügen:"}),e.jsx("br",{}),"Füge folgenden Code ein (ersetze ",e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"AW-CONVERSION_ID"})," mit deiner Google Ads Conversion-ID):"]})]}),e.jsx("div",{className:"my-6 bg-muted p-6 rounded-lg overflow-x-auto",children:e.jsx("pre",{className:"text-sm",children:e.jsx("code",{children:`// Google Ads Conversion Tracking Pixel 363(function() { 364 // Conversion ID aus Google Ads 365 const CONVERSION_ID = 'AW-123456789'; // â Hier deine ID eintragen 366 const CONVERSION_LABEL_PURCHASE = 'abcd1234'; // Purchase Label 367 const CONVERSION_LABEL_ADD_TO_CART = 'xyz9876'; // Add to Cart Label 368 369 // Google Ads gtag laden 370 const script = document.createElement('script'); 371 script.src = \`https://www.googletagmanager.com/gtag/js?id=\${CONVERSION_ID}\`; 372 script.async = true; 373 document.head.appendChild(script); 374 375 window.dataLayer = window.dataLayer || []; 376 function gtag(){dataLayer.push(arguments);} 377 gtag('js', new Date()); 378 gtag('config', CONVERSION_ID); 379 380 // Purchase Event tracken 381 analytics.subscribe('checkout_completed', (event) => { 382 const orderValue = event.data.checkout.totalPrice.amount; 383 const currency = event.data.checkout.currencyCode; 384 385 gtag('event', 'conversion', { 386 'send_to': \`\${CONVERSION_ID}/\${CONVERSION_LABEL_PURCHASE}\`, 387 'value': orderValue, 388 'currency': currency, 389 'transaction_id': event.data.checkout.order.id 390 }); 391 }); 392 393 // Add to Cart Event tracken 394 analytics.subscribe('product_added_to_cart', (event) => { 395 const productValue = event.data.cartLine.merchandise.price.amount; 396 const currency = event.data.cartLine.merchandise.price.currencyCode; 397 398 gtag('event', 'conversion', { 399 'send_to': \`\${CONVERSION_ID}/\${CONVERSION_LABEL_ADD_TO_CART}\`, 400 'value': productValue, 401 'currency': currency 402 }); 403 }); 404})();`})})}),e.jsxs("ol",{start:4,className:"list-decimal list-inside space-y-3 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-ID & Labels aus Google Ads holen:"}),e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1 text-sm",children:[e.jsx("li",{children:'Google Ads â Tools â Conversions â "Kaufabschluss" â Details'}),e.jsx("li",{children:'Kopiere "Conversion-ID" (z.B. AW-123456789)'}),e.jsx("li",{children:'Kopiere "Conversion-Label" (z.B. abcd1234)'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Speichern & Testen:"}),' Klicke "Speichern" und führe eine Test-Bestellung durch']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Verifizieren:"})," Prüfe nach 24h in Google Ads â Conversions, ob Events ankommen"]})]}),e.jsxs("div",{className:"my-6",children:[e.jsx("img",{src:HD,alt:"Shopify Kundenereignisse im Shopify Admin - Einstellungen Menü",className:"rounded-lg border border-border w-full",loading:"lazy"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 text-center",children:'Customer Events findest du in den Shopify Einstellungen unter "Kundenereignisse"'})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Vorteile & Nac
404hteile"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-green-700 dark:text-green-400",children:"â
Vorteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Update-sicher (unabhängig vom Theme)"}),e.jsx("li",{children:"â Theme-Wechsel ohne Tracking-Verlust"}),e.jsx("li",{children:"â Zentrale Verwaltung in Shopify-Admin"}),e.jsx("li",{children:"â Standardisierte Events von Shopify"}),e.jsx("li",{children:"â Einfacher als manuelle Theme-Integration"})]})]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-destructive",children:"â Nachteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Immer noch Client-Side (30-40% Datenverlust)"}),e.jsx("li",{children:"â Erfordert Code-Kenntnisse"}),e.jsx("li",{children:"â Weniger Kontrolle als GTM"}),e.jsx("li",{children:"â Debugging komplexer"})]})]})]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"ð¡ Empfehlung:"}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Perfekt für:"})," Shops mit 5.000-10.000⬠Ad Spend/Monat, die eine native Shopify-Lösung wollen und Theme-Updates nicht gefährden möchten.",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Nicht geeignet für:"})," Maximale Tracking-Genauigkeit (nutze Server-Side), komplexe Custom Events (nutze GTM)."]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"methode-3-google-tag-manager",className:"text-3xl font-bold mt-12 mb-6",children:"Methode 3: Google Tag Manager + Custom Pixel ð¯ (Fortgeschritten)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Google Tag Manager (GTM)"})," bietet maximale Flexibilität für fortgeschrittene Marketer. Du kannst Custom Events, erweiterte E-Commerce-Events und komplexe Trigger einrichten â perfekt für Shops mit individuellen Tracking-Anforderungen."]}),e.jsxs("div",{className:"bg-blue-500/10 border-l-4 border-blue-500 p-6 rounded-r-lg my-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¥ Video-Tutorial verfügbar"}),e.jsxs("p",{className:"mb-3",children:["Die GTM-Einrichtung ist komplex? Kein Problem! In unserem"," ",e.jsx("a",{href:"#video-tutorial",className:"text-primary hover:underline font-semibold",children:"Video-Tutorial"})," ","zeigen wir dir die komplette Einrichtung mit Google Tag Manager Schritt für Schritt."]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Wann GTM nutzen?"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-6 ml-4",children:[e.jsxs("li",{children:["Du trackst ",e.jsx("strong",{children:"mehr als nur Standard-Conversions"})," (z.B. Scroll-Tiefe, Video-Views, Quiz-Interaktionen)"]}),e.jsxs("li",{children:["Du nutzt ",e.jsx("strong",{children:"mehrere Marketing-Plattformen"})," (Google Ads, Meta, TikTok) und willst alle über GTM verwalten"]}),e.jsxs("li",{children:["Du brauchst ",e.jsx("strong",{children:"erweiterte E-Commerce-Daten"})," (Produkt-Impressionen, List-Views, etc.)"]}),e.jsxs("li",{children:["Du hast ein ",e.jsx("strong",{children:"Marketing-Team"}),", das Tags ohne Entwickler ändern können soll"]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Einrichtung (Ãberblick)"}),e.jsxs("div",{className:"bg-muted/50 border border-border p-6 rounded-lg my-6",children:[e.jsxs("p",{className:"text-sm mb-4",children:[e.jsx("strong",{children:"Hinweis:"})," Eine vollständige GTM-Anleitung würde den Rahmen sprengen. Hier die wichtigsten Schritte im Ãberblick:"]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm ml-4",children:[e.jsx("li",{children:"GTM-Container erstellen (tagmanager.google.com)"}),e.jsx("li",{children:"GTM über Shopify Customer Events einbinden (Custom Pixel mit GTM-Script)"}),e.jsx("li",{children:"DataLayer in Shopify konfigurieren (für E-Commerce-Events)"}),e.jsx("li",{children:"Google Ads Conversion-Tags in GTM erstellen"}),e.jsx("li",{children:"Trigger für Events einrichten (Purchase, Add to Cart, etc.)"}),e.jsx("li",{children:"Testen mit GTM Preview-Mode"})]})]}),e.jsxs("details",{className:"bg-muted/30 p-6 rounded-lg my-6 border border-border",children:[e.jsx("summary",{className:"font-semibold cursor-pointer mb-4 hover:text-primary transition-colors",children:"ð Für Fortgeschrittene: Detaillierte GTM-Anleitung mit Data Layer Variablen"}),e.jsxs("div",{className:"mt-4 space-y-4 text-sm",children:[e.jsx("p",{children:"Um alle Shopify Standard-Events korrekt in GTM zu erfassen, benötigst du:"}),e.jsxs("div",{children:[e.jsx("h5",{className:"font-semibold mb-2",children:"1. Data Layer Variablen erstellen"}),e.jsx("p",{className:"mb-2",children:"Für einen Kauf benötigst du z.B. diese Variablen:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1 mb-3",children:[e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"currency"})," â Währung"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"checkout.totalPrice.amount"})," â Kaufbetrag"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"checkout.token"})," â Bestell-ID"]})]}),e.jsx("p",{className:"mb-2 font-medium",children:"So erstellst du eine Data Layer Variable:"}),e.jsxs("ol",{className:"list-decimal pl-6 space-y-1",children:[e.jsx("li",{children:'GTM â Variablen â
404 "Neu"'}),e.jsx("li",{children:'Name vergeben (z.B. "DLV - currency")'}),e.jsx("li",{children:'"Variable konfigurieren" â "Datenschichtvariable"'}),e.jsx("li",{children:'Bei "Name" die exakte Shopify-Bezeichnung eingeben (z.B. "currency")'})]}),e.jsxs("p",{className:"mt-3 text-muted-foreground",children:["Alle Shopify Standard-Event Variablen findest du in der"," ",e.jsx("a",{href:"https://shopify.dev/docs/api/web-pixels-api/standard-events",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Shopify Dokumentation"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h5",{className:"font-semibold mb-2",children:"2. Trigger erstellen"}),e.jsx("p",{className:"mb-2",children:"Für jeden Event-Typ einen Trigger:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"checkout_completed"})," (Kauf)"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"add_to_cart"})," (In den Warenkorb)"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"product_viewed"})," (Produkt angesehen)"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded",children:"collection_viewed"})," (Kategorie angesehen)"]})]})]}),e.jsxs("div",{children:[e.jsx("h5",{className:"font-semibold mb-2",children:"3. Tags erstellen"}),e.jsx("p",{className:"mb-2",children:"Für jede Conversion Action einen Google Ads Conversion Tag mit:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"Conversion ID (AW-XXXXXXXXX)"}),e.jsx("li",{children:"Conversion Label (eindeutig pro Event-Typ)"}),e.jsx("li",{children:"Value (aus Data Layer Variable)"}),e.jsx("li",{children:"Currency (aus Data Layer Variable)"}),e.jsx("li",{children:"Transaction ID (aus Data Layer Variable)"})]})]}),e.jsx("div",{className:"bg-blue-50 dark:bg-blue-950/30 p-4 rounded-lg mt-4",children:e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"ð¡ Tipp:"}),' Vergiss nicht, am Ende auf "Senden" â "Veröffentlichen" zu klicken, damit deine Ãnderungen live gehen!']})})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Vorteile & Nachteile"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-green-700 dark:text-green-400",children:"â
Vorteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Maximale Flexibilität & Kontrolle"}
404),e.jsx("li",{children:"â Custom Events ohne Code-Ãnderungen"}),e.jsx("li",{children:"â Zentrale Tag-Verwaltung für alle Plattformen"}),e.jsx("li",{children:"â Erweiterte E-Commerce-Daten"}),e.jsx("li",{children:"â Version Control & Rollback"}),e.jsx("li",{children:"â Preview-Mode zum Testen"})]})]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-3 text-destructive",children:"â Nachteile"}),e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsx("li",{children:"â Komplexe Einrichtung (2-4 Stunden)"}),e.jsx("li",{children:"â Erfordert GTM-Kenntnisse"}),e.jsx("li",{children:"â Immer noch Client-Side (30-40% Datenverlust)"}),e.jsx("li",{children:"â Performance-Impact bei vielen Tags"}),e.jsx("li",{children:"â Fehleranfällig bei falscher Konfiguration"})]})]})]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"ð¡ Empfehlung:"}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Perfekt für:"})," E-Commerce-Profis, Agenturen, Shops mit individuellen Tracking-Anforderungen und mehreren Marketing-Kanälen.",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Nicht geeignet für:"})," Einsteiger ohne GTM-Kenntnisse, Shops die nur Google Ads tracken (zu komplex)."]})]}),e.jsx("h2",{id:"methode-4-theme-integration",className:"text-3xl font-bold mt-12 mb-6",children:"Methode 4: Manuelle Theme-Integration â ï¸ (LEGACY â Nicht empfohlen)"}),e.jsxs("div",{className:"bg-destructive/10 border-l-4 border-destructive p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â ï¸ WICHTIGER HINWEIS:"}),e.jsxs("p",{className:"mb-3",children:["Diese Methode ist ",e.jsx("strong",{children:"veraltet"})," und wird ",e.jsx("strong",{children:"nicht mehr empfohlen"}),". Seit der Einführung von Customer Events (2024) ist die manuelle Theme-Integration die schlechteste Wahl."]}),e.jsx("p",{className:"text-sm",children:e.jsx("strong",{children:"Warum nicht mehr nutzen?"})}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1 mt-2 ml-4",children:[e.jsx("li",{children:"Tracking geht bei Theme-Updates verloren"}),e.jsx("li",{children:"Theme-Wechsel erfordert Neueinrichtung"}),e.jsx("li",{children:"Fehleranfällig bei falscher Code-Platzierung"}),e.jsx("li",{children:"Schwierig zu debuggen"})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Wenn du noch die alte Methode nutzt: Jetzt migrieren!"}),e.jsxs("p",{className:"mb-4",children:["Falls du noch den Google Ads Tracking-Code manuell in dein Theme eingefügt hast (z.B. in ",e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"theme.liquid"})," oder ",e.jsx("code",{className:"bg-muted px-2 py-1 rounded text-sm",children:"checkout.liquid"}),"), solltest du ",e.jsx("strong",{children:"dringend zu Customer Events wechseln"}),"."]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-3",children:"ð Migrations-Guide: Von Theme zu Customer Events"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Backup erstellen:"})," Theme duplizieren (Shopify Admin â Online Store â Themes â Duplicate)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Alten Code entfernen:"}),e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsxs("li",{children:["Ãffne Theme-Code â ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"theme.liquid"})]}),e.jsxs("li",{children:["Suche nach Google Ads Code (beginnt mit ",e.jsx("code",{className:"bg-muted px-1 rounded",children:'<script async src="https://www.googletagmanager.com/gtag/js"'}),")"]}),e.jsx("li",{children:"Lösche kompletten Google Ads Block"})]})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Customer Events einrichten:"})," Folge der Anleitung in Methode 2 (siehe oben)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Testen:"})," Test-Bestellung durchführen und in Google Ads prüfen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"24h warten:"})," Parallelbetrieb schadet nicht â erst nach 24h alten Code löschen"]})]})]}),e.jsxs("div",{className:"my-6",children:[e.jsx("img",{src:ZD,alt:"Theme.liquid Code bearbeiten",className:"rounded-lg border border-border w-full",loading:"lazy"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Alten Tracking-Code aus theme.liquid entfernen und zu Customer Events migrieren"})]}),e.jsx("h2",{id:"methode-5-server-side-tracking",className:"text-3xl font-bold mt-12 mb-6",children:"Methode 5: Server-Side Tracking mit ProfitMetrics ð (Premium-Lösung)"}),e.jsxs("p",{className:"mb-4 text-lg",children:[e.jsx("strong",{children:"Server-Side Tracking"})," ist die professionelle Lösung für maximale Tracking-Genauigkeit. Statt im Browser zu tracken, werden Daten ",e.jsx("strong",{children:"direkt vom Server"})," zu Google Ads gesendet â das umgeht Ad-Blocker, iOS-Restriktionen und Cookie-Consent und erreicht ",e.jsx("strong",{children:"95%+ Datengenauigkeit"}),"."]}),e.jsxs("div",{className:"bg-destructive/10 border-l-4 border-destructive p-6 rounded-r-lg my-8",children:[e.jsx("h4",{className:"font-semibold text-lg mb-3",children:"â ï¸ Das Problem mit Client-Side Tracking"}),e.jsxs("p",{className:"mb-4",children:["Alle bisherigen Methoden (1-4) nutzen ",e.jsx("strong",{children:"Client-Side Tracking"})," â das Tracking läuft im Browser des Kunden. Dadurch verlierst du ",e.jsx("strong",{children:"30-40% deiner Conversions"}),":"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 text-sm ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"iOS 14.5+ blockiert"})," Third-Party Tracking (betrifft 50%+ der Nutzer)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ad-Blocker"})," verhindern Tracking (30-40% der Desktop-Nutzer)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Cookie-Consent-
404Banner"})," reduzieren Tracking zusätzlich (20-30% lehnen ab)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Safari ITP"})," löscht Cookies nach 7 Tagen"]})]}),e.jsx("p",{className:"mt-4 font-semibold",children:"â Du siehst nur 60-70% deiner echten Conversions. Google optimiert auf unvollständige Daten."})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Die Lösung: Server-Side Tracking"}),e.jsxs("p",{className:"mb-4",children:["Server-Side Tracking sendet Conversion-Daten ",e.jsx("strong",{children:"direkt vom Server"})," (nicht vom Browser) an Google Ads. Das funktioniert auch, wenn der Browser des Kunden Tracking blockiert."]}),e.jsxs("div",{className:"grid md:grid-cols-3 gap-6 my-8",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-2 text-green-700 dark:text-green-400",children:"ð 95%+ Genauigkeit"}),e.jsx("p",{className:"text-sm",children:"Erfasse nahezu alle Conversions â unabhängig von Browser-Einstellungen oder Ad-Blockern."})]}),e.jsxs("div",{className:"bg-blue-500/10 border border-blue-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-2 text-blue-700 dark:text-blue-400",children:"ð DSGVO-konform"}),e.jsx("p",{className:"text-sm",children:"Server-Hosting in EU, automatische Consent-Mode-Integration, volle Datenkontrolle."})]}),e.jsxs("div",{className:"bg-purple-500/10 border border-purple-500/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold mb-2 text-purple-700 dark:text-purple-400",children:"ð¯ Bessere Optimierung"}),e.jsx("p",{className:"text-sm",children:"Google optimiert auf 95%+ der echten Daten statt nur 60-70%. Das bedeutet: Besserer ROAS."})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"ProfitMetrics: Mehr als nur Server-Side Tracking"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"ProfitMetrics"})," ist nicht nur ein Server-Side Tracking Tool â es ist eine komplette ",e.jsx("strong",{children:"Profit-Analytics-Plattform"})," speziell für Shopify-Stores. Als ",e.jsx("strong",{children:"Certified ProfitMetrics Partner"})," setzen wir ProfitMetrics bei unseren Kunden ein (z.B. Trachtenflirt, Stahlia) und wissen:",e.jsx("strong",{children:"Es lohnt sich ab ca. 10.000⬠Ad Spend/Monat"}),"."]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:$D,alt:"ProfitMetrics Dashboard mit Server-Side Tracking und Profit-Analytics",className:"rounded-lg border border-border w-full shadow-lg",loading:"lazy"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 text-center",children:"ProfitMetrics Dashboard: Server-Side Tracking + Profit-Analytics in einem Tool"})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"ProfitMetrics Features im Ãberblick"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 my-8",children:[e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð¯"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Server-Side Conversion Tracking"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"95%+ Tracking-Genauigkeit für Google Ads, Meta & TikTok. Umgeht Ad-Blocker, iOS-Restriktionen und Cookie-Consent."})]})]})}),e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð°"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"POAS statt ROAS â Optimiere auf Profit"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sende echte Profit-Werte zu Google Ads (nicht nur Umsatz). Google optimiert automatisch auf Gewinn statt Umsatz."})]})]})}),e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Automatische Kostensynchronisation"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Importiert automatisch Ad Costs von Google Ads, Meta, TikTok â und rechnet Produktkosten, Versand, Transaktionsgebühren mit ein."})]})]})}),e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Real-time Profit Dashboard"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sieh auf einen Blick: Umsatz, Kosten, Profit, POAS â nach Kampagne, Produkt, Channel. Live-Daten ohne Verzögerung."})]})]})}),e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Lifetime Value (LTV) Tracking"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Tracke nicht nur First-Order, sondern den echten Customer Lifetime Value. Optimiere auf langfristige Profitabilität."})]})]})}),e.jsx("div",{className:"bg-card border border-border p-6 rounded-lg",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"text-2xl",children:"ð¨"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Product-Level Attribution"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sieh genau, welche Produkte über welche Kampagnen verkauft werden. Identifiziere Gewinner & Verlierer auf Produkt-Ebene."})]})]})})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Für wen lohnt sich ProfitMetrics?"}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-6",children:[e.jsx("h4",{className:"font-bold mb-3",children:"â
ProfitMetrics lohnt sich für dich, wenn:"}),e.jsxs("ul",{className:"space-y-2 text-sm ml-4",children:[e.jsxs("li",{children:["â Du ",e.jsx("strong",{children:"ab ca. 10.000⬠Ad Spend/Monat"})," ausgibst"]}),e.jsxs("li",{children:["â Du ",e.jsx("strong",{children:"maximale Tracking-Genauigkeit"})," brauchst (95%+ statt 60-70%)"]}),e.jsxs("li",{children:["â Du auf ",e.jsx("strong",{children:"Profit statt nur Umsatz"})," optimieren willst"]}),e.jsxs("li",{children:["â Du viele ",e.jsx("strong",{children:"SKUs"})," hast und Product-Level Attribution brauchst"]}),e.jsxs("li",{children:["â Du ",e.jsx("strong",{children:"mehrere Kanäle"})," nutzt (Google Ads, Meta, TikTok) und zentrale Attribution willst"]}),e.jsxs("li",{children:["â Du ein ",e.jsx("strong",{children:"professionelles E-Commerce-Business"})," aufbaust und datengetrieben skalieren willst"]})]}),e.jsx("h4",{className:"font-bold mt-6 mb-3",children:"â ProfitMetrics lohnt sich NICHT, wenn:"}),e.jsxs("ul",{className:"space-y-2 text-sm ml-4",children:[e.jsxs("li",{children:["â Du ",e.jsx("strong",{children:"<5.000⬠Ad Spend/Monat"})," ausgibst (ROI zu gering)"]}),e.jsxs("li",{children:["â Du nur ",e.jsx("strong",{children:"Hobby-Shop"})," bist und keine Skalierung planst"]}),e.jsxs("li",{children:["â Du ",e.jsx("strong",{children:"kein Budget"})," für Tools hast (ab 49â¬/Monat)"]})]})]}),e.jsxs("div",{className:"bg-gradient-to-r from-green-500/20 to-green-500/10 border-2 border-green-500/30 p-8 rounded-xl my-12 shadow-lg",children:[e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("div",{className:"text-4xl",children:"ð"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-bold mb-2",children:"Exklusiv für AdsHero-Interessenten: 50% Rabatt + Gratis-Setup!"}),e.jsxs("p",{className:"text-muted-foreground",children:["Als ",e.jsx("strong",{children:"Certified ProfitMetrics Partner"})," haben wir für dich ein exklusives Angebot ausgehandelt."]})]})]}),e.jsxs("div",{className:"bg-background/80 backdrop-blur p-6 rounded-lg mb-6",children:[e.jsx("h4",{className:"font-bold text-lg mb-4",children:"Das bekommst du:"}),e.jsxs("ul",{className:"space-y-3",children:[e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"50% Rabatt auf die ersten 3 Monate"})," â Spare über 150â¬!"]}
404)]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Kostenlose Einrichtung"})," (Wert: 299â¬) â Wir richten ProfitMetrics komplett für dich ein"]})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"1 Stunde persönliches Onboarding"})," â Wir zeigen dir alle Features & optimieren deine Kampagnen"]})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Direkter Support"})," â Bei Fragen sind wir für dich da"]})]})]})]}),e.jsxs("div",{className:"bg-background/80 backdrop-blur p-6 rounded-lg mb-6",children:[e.jsx("h4",{className:"font-bold mb-3",children:"So bekommst du den Rabatt:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm ml-4",children:[e.jsxs("li",{children:["Klicke auf ",e.jsx("strong",{children:'"Jetzt Beratung buchen"'})," und buche ein kostenloses Erstgespräch"]}),e.jsx("li",{children:"Erwähne im Gespräch, dass du über diesen Artikel kommst"}),e.jsx("li",{children:"Wir richten ProfitMetrics für dich ein und aktivieren den 50% Rabatt"})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsx(q,{asChild:!0,size:"lg",className:"flex-1",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/profitmetrics-demo"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/profitmetrics-demo",target:"_blank",rel:"noopener noreferrer",children:"Jetzt Beratung buchen & 50% Rabatt sichern"})}),e.jsx(q,{asChild:!0,size:"lg",variant:"outline",className:"flex-1",children:e.jsx("a",{href:"https://profitmetrics.io/?fpr=adsvantage15",target:"_blank",rel:"noopener noreferrer",children:"ProfitMetrics ansehen"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-4 text-center",children:"* ProfitMetrics Affiliate-Link. Unterstützt uns ohne Zusatzkosten für dich. Der 50% Rabatt gilt nur über uns."})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Einrichtung: So funktioniert's"}),e.jsx("p",{className:"mb-4",children:"Die Einrichtung von ProfitMetrics dauert ca. 30 Minuten â mit unserer Hilfe sogar noch schneller. Wir übernehmen die komplette Einrichtung für dich (im Rahmen des Exklusiv-Angebots kostenlos)."}),e.jsxs("ol",{className:"list-decimal list-inside space-y-4 mb-8 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"ProfitMetrics Account erstellen:"}),e.jsx("br",{}),"Registriere dich bei ProfitMetrics und wähle den passenden Plan"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Shopify-Shop verbinden:"}),e.jsx("br",{}),"Ein Klick â ProfitMetrics verbindet sich mit deinem Shop und importiert automatisch Bestellungen, Produkte, Kosten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads verbinden:"}),e.jsx("br",{}),"Verbinde dein Google Ads Konto. ProfitMetrics richtet automatisch Server-Side Tracking ein"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion Actions konfigurieren:"}),e.jsx("br",{}),"Wähle aus, welche Events zu Google gesendet werden sollen (Purchase, Add to Cart, Begin Checkout, etc.)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Testen & Verifizieren:"}),e.jsx("br",{}),"Führe eine Test-Bestellung durch. Im ProfitMetrics Dashboard siehst du in Echtzeit, ob alles funktioniert"]})]}),e.jsxs("div",{className:"bg-muted/50 border border-border p-6 rounded-lg my-6",children:[e.jsx("h4",{className:"font-bold mb-2",children:"ð¡ Tipp: Lass uns die Einrichtung machen!"}),e.jsxs("p",{className:"text-sm",children:["Im Rahmen unseres Exklusiv-Angebots richten wir ProfitMetrics ",e.jsx("strong",{children:"kostenlos"})," für dich ein (Wert: 299â¬). Dazu 1 Stunde Onboarding, wo wir dir alles zeigen und deine Kampagnen optimieren."]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Kosten-Nutzen-Rechnung: Lohnt sich ProfitMetrics?"}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg my-6",children:[e.jsx("h4",{className:"font-bold mb-4",children:"Beispiel-Rechnung für einen Shop mit 10.000⬠Ad Spend/Monat:"}),e.jsxs("div",{className:"space-y-4 text-sm",children:[e.jsxs("div",{className:"border-b border-border pb-4",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Kosten:"}),e.jsxs("ul",{className:"space-y-1 ml-4",children:[e.jsx("li",{children:"ProfitMetrics: 99â¬/Monat (regulär)"}),e.jsx("li",{children:e.jsx("strong",{children:"Mit 50% Rabatt (erste 3 Monate): 49,50â¬/Monat"})}
404),e.jsx("li",{children:"Nach 3 Monaten: 99â¬/Monat (immer noch günstiger als Setup-Aufwand für eigenes Server-Side Tracking)"})]})]}),e.jsxs("div",{className:"border-b border-border pb-4",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Nutzen durch besseres Tracking (95%+ statt 60-70% Conversions):"}),e.jsxs("ul",{className:"space-y-1 ml-4",children:[e.jsx("li",{children:"Aktuell sichtbare Conversions: ~60-70% (bei Client-Side)"}),e.jsx("li",{children:"Mit Server-Side: 95%+ sichtbar"}),e.jsxs("li",{children:["â ",e.jsx("strong",{children:"+35-40% mehr sichtbare Conversions"})]})]})]}),e.jsxs("div",{className:"border-b border-border pb-4",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Was bedeutet das für deine Kampagnen?"}),e.jsxs("ul",{className:"space-y-1 ml-4",children:[e.jsxs("li",{children:["Google optimiert auf ",e.jsx("strong",{children:"vollständige Daten"})," (statt nur 60-70%)"]}),e.jsx("li",{children:"Bessere Bid-Strategie â Mehr profitable Conversions"}),e.jsxs("li",{children:["Konservativ: ",e.jsx("strong",{children:"+10-15% mehr profitable Sales"})," bei gleichem Budget"]})]})]}),e.jsxs("div",{className:"bg-green-500/10 p-4 rounded-lg",children:[e.jsx("p",{className:"font-bold mb-2",children:"Break-Even-Rechnung:"}),e.jsxs("p",{className:"mb-2",children:["Bei 10.000⬠Ad Spend und durchschnittlich 4,0 ROAS:",e.jsx("br",{}),"â 40.000⬠Umsatz/Monat",e.jsx("br",{}),"â Bei 20% Marge: 8.000⬠Profit/Monat"]}),e.jsxs("p",{className:"font-semibold text-green-700 dark:text-green-400",children:["Schon +1,25% mehr profitable Conversions decken die Kosten (99â¬).",e.jsx("br",{}),"Realistisch: ",e.jsx("strong",{children:"+10-15% mehr Profit = +800-1.200â¬/Monat"})]}),e.jsx("p",{className:"mt-3 text-lg font-bold",children:"â ROI: 800-1.200% ð"})]})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Praxis-Beispiele: Echte Ergebnisse mit ProfitMetrics"}),e.jsx("p",{className:"mb-6",children:"Wir setzen ProfitMetrics bei mehreren unserer Kunden ein. Zwei Beispiele, wo Server-Side Tracking + POAS-Optimierung den Durchbruch gebracht haben:"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:[e.jsxs("div",{className:"bg-card border-2 border-primary/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold text-lg mb-3",children:"Trachtenflirt â POAS-Optimierung 2024"}),e.jsxs("ul",{className:"space-y-2 text-sm mb-4",children:[e.jsxs("li",{children:["â Umstellung auf ",e.jsx("strong",{children:"POAS"})," (Profit on Ad Spend) statt ROAS"]}),e.jsxs("li",{children:["â ",e.jsx("strong",{children:"+50% Gewinn"})," in 6 Monaten"]}),e.jsxs("li",{children:["â Typische POAS-Werte: ",e.jsx("strong",{children:"4-5"})," (vorher ROAS ~3)"]}),e.jsx("li",{children:"â Server-Side Tracking â 40% mehr sichtbare Conversions"})]}),e.jsx(q,{asChild:!0,variant:"outline",size:"sm",className:"w-full",children:e.jsx("a",{href:"/#case-studies",children:"Zur Case Study"})})]}),e.jsxs("div",{className:"bg-card border-2 border-primary/20 p-6 rounded-lg",children:[e.jsx("h4",{className:"font-bold text-lg mb-3",children:"Stahlia â Profit-optimierte Kampagnen"}),e.jsxs("ul",{className:"space-y-2 text-sm mb-4",children:[e.jsxs("li",{children:["â ",e.jsx("strong",{children:"+94% Gewinn"})," in 3 Monaten durch Profit-Optimierung"]}),e.jsx("li",{children:"â Product-Level Attribution â Unprofitable Produkte pausiert"}),e.jsx("li",{children:"â Server-Side Tracking â Bessere Bid-Strategien"}),e.jsx("li",{children:"â Budget nur leicht erhöht: 9.800 ⬠â 11.300 ⬠Ad Spend/Monat"})]}),e.jsx(q,{asChild:!0,variant:"outline",size:"sm",className:"w-full",children:e.jsx("a",{href:"/#case-studies",children:"Zur Case Study"})})]})]}),e.jsx("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"ð¡ Wichtig:"})," Die Ergebnisse sind natürlich nicht nur durch ProfitMetrics entstanden, sondern durch die Kombination aus Server-Side Tracking, POAS-Optimierung und unserer Kampagnen-Strategie. Aber ohne vollständige Tracking-Daten wären diese Ergebnisse nicht möglich gewesen."]})}),e.jsx("h2",{id:"vergleichstabelle",className:"text-3xl font-bold mt-16 mb-6",children:"ð Vergleichstabelle: Alle 5 Methoden im Ãberblick"}),e.jsx("p",{className:"mb-6",children:"Welche Methode passt zu dir? Hier alle 5 Methoden im direkten Vergleich:"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse border border-border text-sm",children:[e.jsx("thead",{className:"bg-muted",children:e.jsxs("tr",{children:[e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Methode"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Setup-Zeit"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Schwierigkeit"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Tracking-Art"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Genauigkeit"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Kosten"}),e.jsx("th",{className:"border border-border p-3 text-left font-bold",children:"Für wen?"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"1. Google & YouTube App"}),e.jsx("td",{className:"border border-border p-3",children:"5 Min"}),e.jsx("td",{className:"border border-border p-3",children:e.jsx("span",{className:"inline-block bg-green-500/20 text-green-700 dark:text-green-400 px-2 py-1 rounded text-xs",children:"Sehr einfach"})}),e.jsx("td",{className:"border border-border p-3",children:"Client-Side"}),e.jsx("td",{className:"border border-border p-3",children:"60-70%"}),e.jsx("td",{className:"border border-border p-3",children:"Kostenlos"}),e.jsx("td",{className:"border border-border p-3",children:"Einsteiger, <5k Ad Spend"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"2. Customer Events"}),e.jsx("td",{className:"border border-border p-3",children:"20 Min"}),e.jsx("td",{className:"border border-border p-3",children:e.jsx("span",{className:"inline-block bg-yellow-500/20 text-yellow-700 dark:text-yellow-400 px-2 py-1 rounded text-xs",children:"Mittel"})}),e.jsx("td",{className:"border border-border p-3",children:"Client-Side"}),e.jsx("td",{className:"border border-border p-3",children:"60-70%"}),e.jsx("td",{className:"border border-border p-3",children:"Kostenlos"}),e.jsx("td",{className:"border border-border p-3",children:"5-10k Ad Spend, Update-sicher"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"3. Google Tag Manager"}),e.jsx("td",{className:"border border-border p-3",children:"2-4 Std"}),e.jsx("td",{className:"border border-border p-3",children:e.jsx("span",{className:"inline-block bg-orange-500/20 text-orange-700 dark:text-orange-400 px-2 py-1 rounded text-xs",children:"Fortgeschritten"})}),e.jsx("td",{className:"border border-border p-3",children:"Client-Side"}),e.jsx("td",{className:"border border-border p-3",children:"60-70%"}),e.jsx("td",{className:"border border-border p-3",children:"Kostenlos"}),e.jsx("td",{className:"border border-border p-3",children:"Profis, Custom Events"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"4. Theme-Integration"}),e.jsx("td",{className:"border border-border p-3",children:"30 Min"}),e.jsx("td",{className:"border border-border p-3",children:e.jsx("span",{className:"inline-block bg-red-500/20 text-red-700 dark:text-red-400 px-2 py-1 rounded text-xs",children:"VERALTET"})}),e.jsx("td",{className:"border border-border p-3",children:"Client-Side"}),e.jsx("td",{className:"border border-border p-3",children:"60-70%"}),e.jsx("td",{className:"border border-border p-3",children:"Kostenlos"}),e.jsx("td",{className:"border border-border p-3",children:"â ï¸ Nicht empfohlen"})]}),e.jsxs("tr",{className:"bg-primary/5 border-2 border-primary",children:[e.jsx("td",{className:"border border-border p-3 font-bold",children:"5. Server-Side (ProfitMetrics)"}),e.jsx("td",{className:"border border-border p-3",children:"30 Min*"}),e.jsx("td",{className:"border border-border p-3",children:e.jsx("span",{className:"inline-block bg-green-500/20 text-green-700 dark:text-green-400 px-2 py-1 rounded text-xs",children:"Einfach"})}),e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Server-Side"}),e.jsx("td",{className:"border border-border p-3 font-semibold text-green-600 dark:text-green-400",children:"95%+"}),e.jsx("td",{className:"border border-border p-3",children:"Ab 49â¬/Monat**"}),e.jsx("td",{className:"border border-border p-3",children:">10k Ad Spend, Profit-Fokus"})]})]})]})}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["* Mit unserer Hilfe (kostenlose Einrichtung im Exklusiv-Angebot)",e.jsx("br",{}),"** Mit 50% Rabatt für AdsHero-Kunden (erste 3 Monate)"]}),e.jsxs("div",{className:"bg-orange-50 dark:bg-orange-950/30 border-l-4 border-orange-500 p-6 rounded-r-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"â ï¸ WICHTIG: Wähle nur EINE Methode!"}),e.jsxs("p",{className:"mb-3",children:["Nutze ",e.jsx("strong",{children:"nicht mehrere Tracking-Methoden gleichzeitig"})," im selben Shop! Das führt zu doppelten oder mehrfachen Conversions in deinem Google Ads Account."]}),e.jsx("p",{className:"mb-3",children:'Beispiel: Wenn du Methode 1 (Google App) UND Methode 2 (Customer Events) gleichzeitig aktiviert hast, wird jeder Kauf zweimal getrackt. Deine Zahlen sehen dann zwar "schöner" aus ð, sind aber völlig verfälscht.'}),e.jsx("p",{className:"font-semibold",children:"Entscheide dich für die Methode, die am besten zu deinem Shop passt, und deaktiviere alle anderen!"})]}),e.jsxs("div",{className:"bg-gradient-to-r from-primary/10 to-primary/5 border border-primary/20 p-8 rounded-xl my-12",children:[e.jsx("h3",{className:"text-2xl font-bold mb-6",children:"ð¯ Welche Methode passt zu dir?"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"text-3xl",children:"ð¡"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Du gibst <5.000â¬/Monat für Ads aus?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["â Nutze ",e.jsx("strong",{children:"Methode 1: Google & YouTube App"}),". Einfach, schnell, kostenlos."]})]})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"text-3xl",children:"ð§"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Du gibst 5.000-10.000â¬/Monat aus und willst update-sicheres Tracking?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["â Nutze ",e.jsx("strong",{children:"Methode 2: Customer Events"}),". Beste native Shopify-Lösung, theme-unabhängig."]})]})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"text-3xl",children:"ð¨"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Du brauchst Custom Events und trackst mehrere Plattformen?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["â Nutze ",e.jsx("strong",{children:"Methode 3: Google Tag Manager"}),". Maximale Flexibilität für Profis."]})]})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"text-3xl",children:"ð"}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-bold mb-2",children:"Du gibst >10.000â¬/Monat aus und willst maximale Genauigkeit + Profit-Optimierung?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["â Nutze ",e.jsx("strong",{children:"Methode 5: Server-Side mit ProfitMetrics"}),". 95%+ Genauigkeit, POAS statt ROAS, komplette Profit-Analytics."]}),e.jsx(q,{asChild:!0,size:"sm",className:"mt-3",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/profitmetrics-demo"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/profitmetrics-demo",target:"_blank",rel:"noopener noreferrer",children:"Jetzt 50% Rabatt sichern"})})]})]})]})]}),e.jsx("h2",{id:"verifizierung",className:"text-3xl font-bold mt-16 mb-6",children:"â
Tracking verifizieren: S
404o prüfst du, ob alles funktioniert"}),e.jsx("p",{className:"mb-6",children:"Egal welche Methode du nutzt â nach der Einrichtung musst du prüfen, ob Conversions bei Google Ads ankommen."}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Schritt 1: Test-Bestellung durchführen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 mb-6 ml-4",children:[e.jsxs("li",{children:["Ãffne deinen Shop ",e.jsx("strong",{children:"im Inkognito-Modus"})," (wichtig!)"]}),e.jsx("li",{children:"Lege ein Produkt in den Warenkorb"}),e.jsx("li",{children:`SchlieÃe den Checkout ab (nutze Shopify's Test-Zahlungsmethode "Bogus Gateway")`}),e.jsx("li",{children:"Notiere dir die Bestellnummer"})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Schritt 2: In Google Ads prüfen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 mb-6 ml-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads öffnen"})," â Tools â Conversions"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Aktion auswählen"}),' (z.B. "Kaufabschluss")']}),e.jsx("li",{children:e.jsx("strong",{children:'Zeitraum auf "Heute" setzen'})}),e.jsxs("li",{children:[e.jsx("strong",{children:"Prüfen, ob Conversion angezeigt wird"}),e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1 text-sm",children:[e.jsx("li",{children:"Manchmal dauert es 10-30 Minuten, bis Conversions in Google Ads erscheinen"}),e.jsx("li",{children:"Bei Server-Side Tracking (ProfitMetrics): Erscheint meist innerhalb von 1-2 Minuten"})]})]})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Schritt 3: Bei Server-Side Tracking â ProfitMetrics Dashboard checken"}),e.jsx("p",{className:"mb-4",children:"Wenn du ProfitMetrics nutzt, siehst du Conversions in Echtzeit im Dashboard:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 mb-6 ml-4",children:[e.jsx("li",{children:"Ãffne ProfitMetrics Dashboard"}),e.jsx("li",{children:'Gehe zu "Events" oder "Real-time Orders"'}),e.jsx("li",{children:"Deine Test-Bestellung sollte dort innerhalb 1-2 Minuten erscheinen"}),e.jsx("li",{children:"Prüfe, ob alle Daten korrekt sind (Order Value, Product, Conversion Label)"})]}),e.jsxs("div",{className:"bg-accent/50 border border-border p-6 rounded-lg my-8",children:[e.jsx("h4",{className:"font-bold mb-2",children:"ð¡ Tipp: 24 Stunden warten"}),e.jsx("p",{className:"text-sm",children:"Manchmal verzögern sich Conversions in Google Ads. Warte 24 Stunden und prüfe erneut. Falls nach 24h keine Conversion sichtbar ist, stimmt etwas mit dem Setup nicht."})]}),e.jsx("h3",{className:"text-2xl font-bold mt-8 mb-4",children:"Google Tag Assistant verwenden"}),e.jsxs("p",{className:"mb-4",children:["Der"," ",e.jsx("a",{href:"https://tagassistant.google.com/",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Google Tag Assistant"})," ","ist das beste Tool, um dein Tracking zu überprüfen:"]}),e.jsxs("div",{className:"bg-muted/50 p-6 rounded-lg mb-6",children:[e.jsx("h4",{className:"font-semibold mb-3",children:"Schritt-für-Schritt Test:"}),e.jsxs("ol",{className:"list-decimal pl-6 space-y-2 text-sm",children:[e.jsxs("li",{children:["Ãffne"," ",e.jsx("a",{href:"https://tagassistant.google.com/",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"tagassistant.google.com"})]}),e.jsx("li",{children:'Gib deine Shop-URL ein und klicke auf "Connect"'}),e.jsx("li",{children:'Ein neuer Tab mit deinem Shop öffnet sich (rechts unten: "Tag Assistant Connected")'}),e.jsx("li",{children:"Navigiere in deinem Shop: Produkte ansehen, in den Warenkorb legen, Checkout"}),e.jsx("li",{children:"Wechsle zurück zum Tag Assistant Tab"}),e.jsxs("li",{children:['Klicke auf "Continue" und wähle den ',e.jsx("strong",{children:"Google Ads Tag (beginnt mit AW-)"})]}),e.jsx("li",{children:"Du solltest verschiedene Events sehen: view_item, add_to_cart, purchase, etc."})]})]}),e.jsxs("div",{className:"bg-green-50 dark:bg-green-950/30 border-l-4 border-green-500 p-4 rounded-r-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â
Was du sehen solltest:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1 text-sm",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Event Name:"}),' z.B. "purchase", "add_to_cart"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion Label:"})," Eindeutige ID zur Identifizierung in Google Ads"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Value & Currency:"}
404)," Bei Käufen der Wert und die Währung"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Transaction ID:"})," Bei Käufen die eindeutige Bestell-ID"]})]})]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-6",children:[e.jsx("strong",{children:"Hinweis für Custom Pixels (Methode 2):"})," Falls der neue Tag Assistant noch nicht mit Custom Pixels funktioniert, kannst du vorübergehend die"," ",e.jsx("a",{href:"https://chrome.google.com/webstore/detail/tag-assistant-legacy-by-g/kejbdjndbnbjgmefkgdddjlbokphdefk",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Tag Assistant Legacy Extension"})," ","verwenden."]}),e.jsx(ie,{}),e.jsx("h2",{id:"faq",className:"text-3xl font-bold mt-16 mb-6",children:"â Häufig gestellte Fragen (FAQ)"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Was sind Shopify Customer Events?"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Customer Events sind eine neue API von Shopify (seit Q4 2024), die es ermöglicht, Tracking-Pixel ",e.jsx("strong",{children:"update-sicher"})," über die Shopify-Admin zu verwalten, statt direkt im Theme-Code. Das macht Updates einfacher und verhindert, dass Tracking beim Theme-Wechsel verloren geht."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Was ist der Unterschied zwischen Client-Side und Server-Side Tracking?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-3",children:[e.jsx("strong",{children:"Client-Side Tracking"})," läuft im Browser des Kunden und verliert 30-40% der Daten durch Ad-Blocker, iOS-Restriktionen und Cookie-Consent. Der Browser sendet die Conversion zu Google â wird aber oft blockiert."]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Server-Side Tracking"})," sendet Daten direkt vom Server zu Google und erreicht 95%+ Genauigkeit. Da der Server sendet (nicht der Browser), werden Ad-Blocker und iOS-Restriktionen umgangen."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Lohnt sich Server-Side Tracking für meinen Shop?"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Server-Side Tracking lohnt sich ab ca. ",e.jsx("strong",{children:"10.000⬠monatlichem Ad Spend"}),". Bei diesem Budget macht schon 1% mehr Conversion-Genauigkeit die Kosten wett. Dazu kommt: Bessere Kampagnen-Optimierung durch vollständige Daten und Profit-Tracking statt nur Umsatz."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Was ist POAS und warum ist es besser als ROAS?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-3",children:[e.jsx("strong",{children:"POAS (Profit on Ad Spend)"})," optimiert auf Gewinn statt Umsatz. Während ROAS nur den Umsatz betrachtet, rechnet POAS automatisch Produktkosten, Versand und andere Ausgaben mit ein. So optimierst du auf echten Profit, nicht nur auf Umsatz."]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Beispiel:"})," Produkt A hat 100⬠Umsatz, 20⬠Kosten â 80⬠Gewinn. Produkt B hat 100⬠Umsatz, 70⬠Kosten â 30⬠Gewinn. ROAS behandelt beide gleich (100⬠Umsatz). POAS optimiert auf Produkt A (höherer Gewinn)."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Kann ich von der alten Theme-Methode zu Customer Events wechseln?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-3",children:[e.jsx("strong",{children:"Ja, unbedingt!"})," Die alte Theme-Integration ist veraltet und sollte nicht mehr genutzt werden."]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"So migrierst du: Entferne einfach den alten Tracking-Code aus deinem Theme (theme.liquid) und richte Customer Events über die Shopify-Admin ein (siehe Methode 2). Das dauert ca. 15-20 Minuten und macht dein Tracking update-sicher."})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Wie viele Conversions verliere ich ohne Server-Side Tracking?"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Im Durchschnitt ",e.jsx("strong",{children:"30-40% deiner echten Conversions"}),". Bei iOS-Nutzern sogar bis zu 60%. Das bedeutet: Google optimiert deine Kampagnen nur auf 60-70% deiner echten Daten. Das führt zu schlechteren Kampagnen-Ergebnissen und verschwendetem Budget."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Ist Server-Side Tracking DSGVO-konform?"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Ja, bei korrekter Einrichtung."})," ProfitMetrics bietet z.B. automatische Consent-Mode-Integration und hostet Server in der EU. Das macht Server-Side Tracking DSGVO-konform. Wichtig: Du brauchst weiterhin Co
404okie-Banner und Datenschutzerklärung."]})]}),e.jsxs("div",{className:"bg-card border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Bekomme ich wirklich 50% Rabatt bei ProfitMetrics?"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-3",children:[e.jsx("strong",{children:"Ja!"})," Als Certified ProfitMetrics Partner bieten wir exklusiv für AdsHero-Interessenten:"]}),e.jsxs("ul",{className:"list-disc list-inside text-sm text-muted-foreground space-y-1 ml-4",children:[e.jsx("li",{children:"50% Rabatt auf die ersten 3 Monate"}),e.jsx("li",{children:"Kostenlose Einrichtung (Wert: 299â¬)"}),e.jsx("li",{children:"1 Stunde persönliches Onboarding"})]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-3",children:["Kontaktiere uns über ",e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/profitmetrics-demo"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/profitmetrics-demo",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"diesen Link"})," und erwähne diesen Artikel."]})]})]}),e.jsx("h2",{id:"fazit",className:"text-3xl font-bold mt-16 mb-6",children:"ð¯ Fazit & Empfehlung 2026"}),e.jsxs("div",{className:"bg-gradient-to-r from-primary/10 to-primary/5 border border-primary/20 p-8 rounded-xl my-8",children:[e.jsxs("p",{className:"text-lg mb-6",children:["Google Ads Conversion Tracking in Shopify 2026 ist ",e.jsx("strong",{children:"nicht mehr so einfach wie früher"}),". iOS 14.5+, Ad-Blocker und Browser-Restriktionen kosten dich 30-40% deiner Conversions â und damit bares Geld."]}),e.jsx("h3",{className:"font-bold text-xl mb-4",children:"Unsere klare Empfehlung:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-background/80 backdrop-blur p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¡ Für Einsteiger (<5k Ad Spend/Monat):"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Nutze die ",e.jsx("strong",{children:"Google & YouTube App"})," (Methode 1). Einfach, kostenlos, schnell."]})]}),e.jsxs("div",{className:"bg-background/80 backdrop-blur p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð§ Für etablierte Shops (5-10k Ad Spend/Monat):"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Nutze ",e.jsx("strong",{children:"Shopify Customer Events"})," (Methode 2). Update-sicher, theme-unabhängig, beste native Lösung."]})]}),e.jsxs("div",{className:"bg-background/80 backdrop-blur p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¨ Für Profis mit Custom-Anforderungen:"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Nutze ",e.jsx("strong",{children:"Google Tag Manager"})," (Methode 3). Maximale Flexibilität für individuelle Events."]})]}),e.jsxs("div",{className:"bg-primary/20 border-2 border-primary p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð Für seriöse E-Commerce-Businesses (>10k Ad Spend/Monat):"}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-3",children:["Nutze ",e.jsx("strong",{children:"Server-Side Tracking mit ProfitMetrics"})," (Methode 5). 95%+ Genauigkeit, POAS statt ROAS, komplette Profit-Analytics.",e.jsx("strong",{children:"Exklusiv: 50% Rabatt + kostenlose Einrichtung für AdsHero-Kunden."})]}),e.jsx(q,{asChild:!0,size:"lg",className:"w-full sm:w-auto",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/profitmetrics-demo"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/profitmetrics-demo",target:"_blank",rel:"noopener noreferrer",children:"Jetzt Beratung buchen & 50% Rabatt sichern"})})]})]})]}),e.jsxs("p",{className:"text-lg font-semibold mt-8 mb-4",children:["Die wichtigste Lektion: ",e.jsx("strong",{children:"Je mehr du investierst, desto wichtiger ist genaues Tracking."})]}),e.jsx("p",{className:"mb-6",children:"Bei 10.000â¬+ Ad Spend sind 30-40% Datenverlust nicht mehr akzeptabel. Hier lohnt sich die Investition in Server-Side Tracking â allein schon, weil Google deine Kampagnen auf vollständige Daten optimieren kann."}),e.jsx("div",{className:"mt-16 p-8 rounded-2xl bg-primary/5 border border-primary/10",children:e.jsxs("div",{className:"text-center max-w-2xl mx-auto",children:[e.jsx("h3",{className:"text-2xl font-bold text-foreground mb-4",children:"Brauchst du Hilfe bei der Umsetzung?"}),e.jsx("p",{className:"text-muted-foreground mb-6",children:"Wir helfen dir bei der Einrichtung von Google Ads Conversion Tracking in Shopify â egal ob Customer Events, GTM oder Server-Side Tracking mit ProfitMetrics. Buche jetzt ein kostenloses Erstgespräch."}),e.jsx(q,{asChild:!0,size:"lg",className:"gap-2 w-full sm:w-auto",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we("https://calendly.com/adshero/tracking-beratung"),location:"GoogleAdsConversionShopify"}),href:"https://calendly.com/adshero/tracking-beratung",target:"_blank",rel:"noopener noreferrer",children:"Jetzt kostenlose Beratung buchen"})})]})})]})]})},bo="/assets/featured-CqtmgqO4.jpg",YD="/assets/aehnliches-segment-CJXsSKjY.webp",JD="/assets/anzeige-erstellen-CGdAlMw3.webp",Su="/assets/attribution-bericht-CBKszEWP.webp",QD="/assets/interessante-fakten-Cva_Kwt8.webp",XD="/assets/kampagnentyp-__eUlYD7.webp",e_="/assets/texte-vorschau-XXWVcLna.webp",zx="/assets/vorbereitete-conversions-Dv-vYfPS.webp",t_="/assets/youtube-platzierungen-cEra4HDz.webp",n_=()=>{const t=ss("demand-gen-google-ads"),n=ct.gordon;if(!t)return null;const r={"@context":"https://schema.org","@type":"BlogPosting",headline:t.title,de
404scription:t.description,image:`https://adshero.de${bo}`,datePublished:"2026-11-20T10:00:00+00:00",dateModified:"2026-03-26T10:00:00+00:00",author:{"@type":"Person",name:n.name,url:n.linkedin},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/logo.png"}},mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/demand-gen-google-ads"}},s={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Demand Gen",item:"https://adshero.de/demand-gen-google-ads"}]},i={"@context":"https://schema.org","@type":"VideoObject",name:"Google Ads Demand Gen Kampagne erstellen 2026 â Komplette Anleitung",description:"Schritt-für-Schritt Tutorial zur Erstellung profitabler Demand Gen Kampagnen mit Best Practices und Profi-Tipps",thumbnailUrl:"https://img.youtube.com/vi/G7KZ0sXgnVQ/maxresdefault.jpg",uploadDate:"2026-11-20T10:00:00+00:00",contentUrl:"https://www.youtube.com/watch?v=G7KZ0sXgnVQ",embedUrl:"https://www.youtube.com/embed/G7KZ0sXgnVQ",duration:"PT20M",publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/logo.png"}}},a={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was sind Google Ads Demand Gen Kampagnen?",acceptedAnswer:{"@type":"Answer",text:"Demand Gen Kampagnen sind der Nachfolger von Video Action Campaigns (VAC) und ermöglichen visuelles Storytelling auf YouTube, Discover und Gmail. Sie erreichen über 3 Milliarden Nutzer monatlich und sind ideal für Mid-Funnel Marketing."}},{"@type":"Question",name:"Demand Gen oder Performance Max â was ist besser?",acceptedAnswer:{"@type":"Answer",text:"Demand Gen ist ideal für Prospecting, Brand Awareness und visuelle Produkte. Performance Max eignet sich besser für Lower Funnel und Multi-Channel-Ansätze. Eine Kombination beider Kampagnentypen liefert oft die besten Ergebnisse."}},{"@type":"Question",name:"Wie lange dauert die Lernphase bei Demand Gen?",acceptedAnswer:{"@type":"Answer",text:"Die Lernphase dauert in der Regel 4-6 Wochen bei Lead Gen Kampagnen. Bei E-Commerce mit höheren Conversion-Volumina kann sie kürzer sein (2-4 Wochen). Wichtig: Keine Ãnderungen während der Lernphase!"}},{"@type":"Question",name:"Was kosten Demand Gen Kampagnen?",acceptedAnswer:{"@type":"Answer",text:"Die Kosten variieren je nach Branche und Gebotstrategie. Typische CPMs liegen zwischen 15-40â¬. CPAs variieren stark: E-Commerce 20-80â¬, Lead Gen 30-150â¬, B2B 100-300â¬. Empfohlenes Mindestbudget: 50â¬/Tag für Prospecting."}},{"@type":"Question",name:"Welche Creative-Formate funktionieren am besten?",acceptedAnswer:{"@type":"Answer",text:"Quadratische Bilder (1:1, 1200x1200px) und vertikale Videos (9:16, 1080x1920px) für YouTube Shorts performen am besten. Wichtig: Mindestens 5-10 Bild-Varianten und 3-5 Video-Varianten für effektives Testing."}},{"@type":"Question",name:"Kann ich Demand Gen für B2B nutzen?",acceptedAnswer:{"@type":"Answer",text:"Ja! Demand Gen funktioniert auch für B2B, besonders wenn du visuell ansprechende Services hast, der Sales Cycle 2-6 Monate ist (Mid-Funnel ideal) und du Lookalike Audiences von bestehenden Kunden nutzt."}},{"@type":"Question",name:"Wie viele Ad Groups sollte ich erstellen?",acceptedAnswer:{"@type":"Answer",text:"Standard: 1-2 Ad Groups reichen für die meisten Advertiser (Prospecting und Remarketing). Advanced: 3-5 Ad Groups für granulare Kontrolle nach Funnel-Stage, Produktkategorie oder Audience-Temperatur. Wichtig: Jede Ad Group braucht min. 50â¬/Tag Budget!"}},{"@type":"Question",name:"Was ist der Unterschied zu Display Kampagnen?",acceptedAnswer:{"@type":"Answer",text:"Demand Gen nutzt YouTube, Gmail und Discover mit Creative-First Ansatz und Smart Bidding mit Video-Signals. Display Kampagnen nutzen das Google Display Network (GDN), sind Image-fokussiert und haben weniger Smart Bidding Optionen. Empfehlung: Nutze Demand Gen statt Display für bessere Performance."}},{"@type":"Question",name:"Wie oft sollte ich Demand Gen Kampagnen optimieren?",acceptedA
404nswer:{"@type":"Answer",text:"Wochen 1-4: Keine Optimierungen (Learning Phase!). Ab Woche 5: Alle 2 Wochen YouTube Placement Exclusions, alle 2-4 Wochen Creative Testing, alle 4 Wochen Zielgruppen-Performance prüfen, alle 8 Wochen Gebotstrategie anpassen."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsxs("title",{children:[t.title," | AdsHero"]}),e.jsx("meta",{name:"description",content:t.description}),e.jsx("meta",{name:"keywords",content:"Demand Gen, Google Ads, YouTube Ads, Video Marketing, Performance Max, Video Action Campaigns, Google Ads 2026, YouTube Marketing, Demand Generation, Performance Marketing"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/demand-gen-google-ads"}),e.jsx("meta",{property:"og:title",content:t.title}),e.jsx("meta",{property:"og:description",content:t.description}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/demand-gen-google-ads"}),e.jsx("meta",{property:"og:image",content:`https://adshero.de${bo}`}),e.jsx("meta",{property:"og:locale",content:"de_DE"}),e.jsx("meta",{property:"og:site_name",content:"AdsHero"}),e.jsx("meta",{property:"article:published_time",content:"2026-11-20T10:00:00+00:00"}),e.jsx("meta",{property:"article:modified_time",content:"2026-11-20T10:00:00+00:00"}),e.jsx("meta",{property:"article:author",content:n.name}),e.jsx("meta",{property:"article:section",content:"Google Ads"}),e.jsx("meta",{property:"article:tag",content:"Demand Gen"}),e.jsx("meta",{property:"article:tag",content:"Google Ads"}),e.jsx("meta",{property:"article:tag",content:"YouTube Ads"}),e.jsx("meta",{property:"article:tag",content:"Performance Marketing"}),e.jsx("meta",{property:"article:tag",content:"Video Marketing"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:t.title}),e.jsx("meta",{name:"twitter:description",content:t.description}),e.jsx("meta",{name:"twitter:image",content:`https://adshero.de${bo}`}),e.jsx("meta",{name:"twitter:site",content:"@adshero"}),e.jsx("meta",{name:"twitter:creator",content:"@adshero"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(r)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)})]}),e.jsxs(nt,{title:t.title,date:t.date,modifiedDate:t.modifiedDate,readingTime:t.readingTime,featuredImage:bo,author:n,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-6",children:"Google Ads Demand Gen Kampagnen sind der Nachfolger von Video Action Campaigns (VAC) und seit 2024 DAS Tool für visuelles Performance Marketing auf YouTube, Discover und Gmail. Mit über 3 Milliarden monatlichen Nutzern und YouTube Shorts, die täglich 50+ Milliarden Views generieren, ist die Reichweite enorm."}),e.jsx("p",{className:"mb-6",children:e.jsx("strong",{children:"Das erwartet dich in diesem Guide:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"â
Schritt-für-Schritt Anleitung zur Kampagnenerstellung"}),e.jsx("li",{children:"â
5 professionelle Strukturen von Thomas Eccel (Demand Gen Experte)"}),e.jsx("li",{children:"â
2026 Updates: New Customer Acquisition Goals, Web to App Connect"}),e.jsx("li",{children:"â
YouTube Placement Exclusions (kritisch für Performance!)"}),e.jsx("li",{children:"â
Demand Gen vs Performance Max Vergleich"}),e.jsx("li",{children:"â
Video-Tutorial mit Timestamps"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Für wen eignet sich Demand Gen?"}),e.jsx("br",{}),"Ideal für E-Commerce, Lead Gen, B2B und B2C mit visuellen Produkten/Services. Besonders stark im Mid-Funnel für Awareness und Consideration."]}),e.jsx("h2",{children:"Was sind Google Ads Demand Gen Kampagnen?"}),e.jsx("p",{children:"Demand Gen ist Googles Creative-First Kampagnentyp für visuelles Storytelling im Mid-Funnel. Der Nachfolger von Video Action Campaigns (VAC) kombiniert die Stärken von YouTube, Gmail und Discover."}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Die 3 Platzierungen im Ãberblick"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"1. YouTube (Hauptplatzierung)"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"YouTube Startseiten-Feed"}),e.jsx("li",{children:'"Als Nächstes"-Videos'}),e.jsx("li",{children:"YouTube Shorts (50+ Mrd. Views/Tag!)"}),e.jsx("li",{children:"In-Stream Skippable Ads"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"2. Gmail (Promotion Tab)"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"Visuell ansprechende Ads im Promotion-Tab"}),e.jsx("li",{children:"Höhere Klickraten als Standard Display"}),e.jsx("li",{children:"Ideal für E-Mail-affine Zielgruppen"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"3. Discover Feed"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"Google News & Discover"}),e.jsx("li",{children:"Mobile-First Platzierung"}),e.jsx("li",{children:"Perfekt für Mobile-First Brands"})]})]}),e.jsxs("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border-l-4 border-yellow-500 p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"âï¸ Optional: Display-Erweiterung"}),e.jsxs("p",{className:"mb-2",children:["Bei der Kampagnenerstellung kannst du die ",e.jsx("strong",{children:"Display-Erweiterung aktivieren oder deaktivieren"}),"."]}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Aktiviert:"})," Deine Anzeigen erscheinen zusätzlich im Google Display Network (GDN)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Deaktiviert:"})," Nur auf YouTube, Gmail & Discover (empfohlen für mehr Kontrolle)"]})]}),e.jsxs("p",{className:"mt-3 text-sm",children:[e.jsx("strong",{children:"Empfehlung:"})," Starte ohne Display-Erweiterung für bessere Performance-Analyse. Du kannst sie später jederzeit aktivieren."]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Demand Gen vs Display/VAC"}),e.jsx("p",{className:"mb-4",children:"Im Vergleich zu Display Kampagnen:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"â
2x höhere Engagement-Rate"}),e.jsx("li",{children:"â
Bessere Creative-Kontrolle"}),e.jsx("li",{children:"â
Smart Bidding mit Video-Signals"}),e.jsx("li",{children:"â
Lookalike Audiences basierend auf Customer Lists"})]}),e.jsx("img",{src:QD,alt:"Interessante Fakten zu Google Ads Demand Gen Kampagnen",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Wichtige Fakten:"}),e.jsxs("ul",{className:"space-y-2",children:[e.jsx("li",{children:"⢠Du k
404annst bis zu 3 Milliarden aktive Nutzer pro Monat erreichen"}),e.jsx("li",{children:"⢠1 von 3 Verbrauchern geben an, Produkte über Google-Feeds gekauft zu haben"}),e.jsx("li",{children:"⢠63% der Verbraucher entdecken neue Produkte in Google-Feeds"}),e.jsx("li",{children:"⢠YouTube ist 2-mal wahrscheinlicher als andere Video- und Social-Media-Plattformen zur Recherche"})]})]}),e.jsx("h2",{children:"Demand Gen vs Performance Max â Der Vergleich 2026"}),e.jsx("p",{className:"mb-6",children:"Die häufigste Frage: Welcher Kampagnentyp passt zu mir? Hier die klare Antwort:"}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Vergleichstabelle"}),e.jsx("div",{className:"overflow-x-auto mb-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border border-border p-3 text-left",children:"Kriterium"}),e.jsx("th",{className:"border border-border p-3 text-left",children:"Demand Gen"}),e.jsx("th",{className:"border border-border p-3 text-left",children:"Performance Max"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Funnel-Position"}),e.jsx("td",{className:"border border-border p-3",children:"Mid-Funnel (Awareness/Consideration)"}),e.jsx("td",{className:"border border-border p-3",children:"Lower Funnel (Conversion)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Platzierungen"}),e.jsx("td",{className:"border border-border p-3",children:"YouTube, Gmail, Discover"}),e.jsx("td",{className:"border border-border p-3",children:"Alle Google-Kanäle (Search, Display, Shopping, YouTube, Gmail, Discover)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Creative-Kontrolle"}),e.jsx("td",{className:"border border-border p-3",children:"Hoch (eigene Assets)"}),e.jsx("td",{className:"border border-border p-3",children:"Niedrig (automatische Kombination)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Zielgruppen-Kontrolle"}),e.jsx("td",{className:"border border-border p-3",children:"Signale (Lookalike, Custom, In-Market)"}),e.jsx("td",{className:"border border-border p-3",children:"Signale + Auto-Discovery"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Gebotsstrategien"}),e.jsx("td",{className:"border border-border p-3",children:"Max Clicks, CPA, ROAS"}),e.jsx("td",{className:"border border-border p-3",children:"Nur Conversion-basiert (CPA, ROAS)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Budget-Flexibilität"}),e.jsx("td",{className:"border border-border p-3",children:"Höher"}),e.jsx("td",{className:"border border-border p-3",children:"Niedriger (braucht mehr Lerndata)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Best for"}),e.jsx("td",{className:"border border-border p-3",children:"Prospecting, Visual Storytelling"}),e.jsx("td",{className:"border border-border p-3",children:"Retargeting, All-in-One"})]})]})]})}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Wann Demand Gen?"}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"â
Wenn du:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsx("li",{children:"Neue Zielgruppen erschlieÃen willst (Prospecting)"}),e.jsx("li",{children:"Brand Awareness aufbauen möchtest"}),e.jsx("li",{children:"Visuell ansprechende Produkte hast"}),e.jsx("li",{children:"YouTube & Shorts fokussieren möchtest"}),e.jsx("li",{children:"Mid-Funnel Performance verbessern willst"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Wann Performance Max?"}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"â
Wenn du:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsx("li",{children:"Bestehende Kunden retargeten willst"}),e.jsx("li",{children:"Alle Google-Kanäle gleichzeitig nutzen möchtest"}),e.jsx("li",{children:"Wenig Creative-Ressourcen hast"}),e.jsx("li",{children:"Lower Funnel Conversions maximieren willst"}),e.jsx("li",{children:"Shopping-Feed hast (E-Commerce)"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Die Kombinations-Strategie (Empfohlen!)"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Setup:"})}),e.jsxs("ol",{className:"list-decimal pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Performance Max"})," für Warm Traffic (Remarketing, Brand Searches)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Demand Gen"})," für Cold Traffic (Prospecting, Lookalikes)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Attribution Report nutzen"}
404)," um Multi-Touch Pfade zu verstehen"]})]}),e.jsx("img",{src:Su,alt:"Attribution Report für Demand Gen und Performance Max Kampagnen",className:"rounded-lg shadow-lg mb-6"}),e.jsx("p",{className:"mb-8",children:"Diese Strategie nutzt die Stärken beider Kampagnentypen und verhindert Kannibalisierung."}),e.jsx("h2",{children:"Demand Gen Kampagne erstellen â Schritt für Schritt"}),e.jsx("p",{className:"mb-6",children:"Hier die komplette Anleitung mit Screenshots und Video-Tutorial."}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Video-Tutorial (20 Min.)"}),e.jsx("div",{className:"aspect-video my-8",children:e.jsx("iframe",{className:"w-full h-full rounded-lg shadow-lg",src:"https://www.youtube.com/embed/G7KZ0sXgnVQ",title:"Google Ads Demand Gen Kampagne erstellen 2026",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Timestamps:"}),e.jsxs("ul",{className:"space-y-2",children:[e.jsx("li",{children:"⢠00:00 â Einführung Demand Gen vs Performance Max"}),e.jsx("li",{children:"⢠02:30 â Kampagnentyp auswählen"}),e.jsx("li",{children:"⢠05:15 â Conversion-Ziel einrichten"}),e.jsx("li",{children:"⢠08:00 â Zielgruppen & Lookalike Audiences"}),e.jsx("li",{children:"⢠11:45 â Creative Assets hochladen"}),e.jsx("li",{children:"⢠15:20 â Gebotsstrategien erklärt"}),e.jsx("li",{children:"⢠18:00 â Erste Optimierungen nach Launch"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Schritt 1: Kampagnenziel auswählen"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Neue Kampagne erstellen:"})}),e.jsxs("ol",{className:"list-decimal pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:["Google Ads â ",e.jsx("strong",{children:"Neue Kampagne"})]}),e.jsxs("li",{children:["Ziel wählen:",e.jsxs("ul",{className:"list-disc pl-6 mt-2 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Website-Traffic"})," (für Awareness)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversions"})," (Standard, empfohlen)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ohne Zielvorhaben"})," (für Experten)"]})]})]})]}),e.jsx("img",{src:XD,alt:"Google Ads Demand Gen Kampagnentyp auswählen",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("p",{className:"mb-8",children:["3. Kampagnentyp: ",e.jsx("strong",{children:"Demand Gen"})," auswählen"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Schritt 2: Kampagneneinstellungen"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Budget & Gebotsstrategie:"})}),e.jsx("div",{className:"overflow-x-auto mb-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border border-border p-3 text-left",children:"Gebotstrategie"}),e.jsx("th",{className:"border border-border p-3 text-left",children:"Wann nutzen?"}),e.jsx("th",{className:"border border-border p-3 text-left",children:"Empfohlenes Budget"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Klicks maximieren"}),e.jsx("td",{className:"border border-border p-3",children:"Anfang (Learning Phase)"}),e.jsx("td",{className:"border border-border p-3",children:"50-100â¬/Tag"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Ziel-CPA"}),e.jsx("td",{className:"border border-border p-3",children:"Nach 50+ Conversions"}),e.jsx("td",{className:"border border-border p-3",children:"100-200â¬/Tag"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border p-3 font-semibold",children:"Ziel-ROAS"}),e.jsx("td",{className:"border border-border p-3",children:"Nach 100+ Conversions mit Umsatzdaten"}),e.jsx("td",{className:"border border-border p-3",children:"200â¬+/Tag"})]})]})]})}),e.jsxs("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border-l-4 border-yellow-500 p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"â ï¸ Wichtig:"}),e.jsxs("ul",{className:"space-y-2",children:[e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"Standorte & Sprachen auf Ad Group Level"})," (nicht Kampagnen-Level!)"]}),e.jsxs("li",{children:["⢠",e.jsx("strong",{children:"Video Partner deaktivieren"})," (nur Google-owned Properties nutzen!)"]})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Schritt 3: Zielgruppen-Signale einrichten"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Die 3 besten Zielgruppen-Typen:"})}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"A) Lookalike Audiences (Customer Match)"}),e.jsxs("ol",{className:"list-decimal pl-6 space-y-2",children:[e.jsx("li",{children:"Kundenliste hochladen (min. 1.000 Kontakte)"}),e.jsx("li",{children:"Google erstellt automatisch ähnliche Zielgruppen"}),e.jsx("li",{children:'Reichweite: "Ausgeglichen" (5%) empfohlen'})]})]}),e.jsx("img",{src:YD,alt:"Ãhnliches Segment erstellen für Demand Gen",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Performance-Boost:"}),e.jsx("p",{className:"mt-2",children:"+11,5% neue Kunden bei -3% niedrigeren Akquisekosten (Google Studie, Okt 2026)"})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"B) Custom Segments"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Interessen + Keywords komb
404inieren"}),e.jsx("li",{children:'Beispiel: "Yoga" + "Fitness Studio in der Nähe"'})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"C) In-Market Audiences"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Nutzer mit aktiver Kaufabsicht"}),e.jsx("li",{children:"Ideal für E-Commerce"})]})]}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Pro-Tipp:"}),e.jsx("p",{className:"mt-2",children:"Max. 3-5 Signale pro Ad Group. Zu viele Signale verwässern die Performance!"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Schritt 4: Creative Assets hochladen"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Asset-Anforderungen:"})}),e.jsx("img",{src:JD,alt:"Demand Gen Anzeige erstellen mit Creative Assets",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Bilder (20 max):"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Format: Quadratisch (1:1, 1200x1200px) oder Landscape (1.91:1, 1200x628px)"}),e.jsx("li",{children:"Dateiformat: JPG, PNG"}),e.jsx("li",{children:"MaximalgröÃe: 5 MB"}),e.jsxs("li",{children:[e.jsx("strong",{children:"Best Practice:"})," Mindestens 10-15 Varianten für Testing"]})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Videos (5 max):"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"YouTube-Links hochladen"}),e.jsx("li",{children:"Formate: Vertikal (9:16), Quadratisch (1:1), Horizontal (16:9)"}),e.jsx("li",{children:"Länge: 10-60 Sekunden ideal"}),e.jsxs("li",{children:[e.jsx("strong",{children:"Best Practice:"})," Erste 3 Sekunden sind entscheidend!"]})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Logos (5 max):"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Quadratisch: 1200x1200px"}),e.jsx("li",{children:"Landscape: 1200x300px"})]})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Text-Assets:"})}),e.jsx("img",{src:e_,alt:"Demand Gen Texte und Vorschau für verschiedene Platzierungen",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Ãberschriften: Max. 5 (je 40 Zeichen)"}),e.jsx("li",{children:"Beschreibungen: Max. 5 (je 90 Zeichen)"}),e.jsx("li",{children:"Call-to-Action: Automatisch oder benutzerdefiniert"}),e.jsx("li",{children:"Unternehmensname: 25 Zeichen"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Vorschau:"})," Prüfe alle Platzierungen (YouTube, Discover, Gmail)"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Schritt 5: Conversion Tracking überprüfen"}),e.jsx("p",{className:"mb-4",children:"Vor dem Launch unbedingt checken:"}),e.jsx("img",{src:zx,alt:"Vorbereitete Conversions für Demand Gen Kampagnen",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsx("li",{children:"â Google Ads Tag installiert"}),e.jsx("li",{children:"â Enhanced Conversions aktiv"}),e.jsx("li",{children:"â Alle relevanten Conversions importiert"}),e.jsx("li",{children:"â Attribution Window korrekt (30 Tage empfohlen)"})]}),e.jsx(ie,{}),e.jsx("h2",{children:"Die 5 besten Demand Gen Strukturen 2026"}),e.jsxs("p",{className:"mb-8",children:["Diese 5 Strukturen stammen aus dem ",e.jsx("strong",{children:"Demand Gen Optimization Playbook von Thomas Eccel"}),", einem der führenden Demand Gen Experten im DACH-Raum."]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Struktur #1: Prospecting vs Remarketing (Standard)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Für:"})," Die meisten Advertiser",e.jsx("br",{}),e.jsx("strong",{children:"Komplexität:"})," âââââ"]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Setup:"}),e.jsx("pre",{className:"text-sm overflow-x-auto",children:`Kampagne: Demand Gen - E-Com 405âââ Ad Group 1: Prospecting 406â âââ Zielgruppen: Lookalike (5%), In-Market, Custom 407â âââ Budget: 70% 408â âââ Gebotstrategie: Max Clicks â Ziel-CPA 409âââ Ad Group 2: Remarketing 410â âââ Zielgruppen: Website-Besucher (letzten 30 Tage) 411â âââ Budget: 30% 412â âââ Gebotstrategie: Ziel-ROAS`})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Einfache Umsetzung"}),e.jsx("li",{children:"â Klare Trennung zwischen Kalt & Warm"}),e.jsx("li",{children:"â Unterschiedliche Gebotsstrategien möglich"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Nachteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Weniger Granularität"}),e.jsx("li",{children:"â Kein Audience-Testing"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best for:"})," Advertiser mit begrenztem Budget (<500â¬/Tag)"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Struktur #2: Cold vs Warm Audience Split"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Für:"})," E-Commerce mit 2 verschiedenen CPAs",e.jsx("br",{}),e.jsx("strong",{children:"Komplexität:"})," âââââ"]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Setup:"}),e.jsx("pre",{className:"text-sm overflow-x-auto",children:`Kampagne: Demand Gen - E-Com 413âââ Ad Group 1: Ice Cold (Lookalike 10%) 414â âââ Ziel-CPA: 80⬠415â âââ Creative: Awareness-fokussiert 416âââ Ad Group 2: Cold (Lookalike 5%) 417â âââ Ziel-CPA: 60⬠418â âââ Creative: Problem/Solution 419âââ Ad Group 3: Warm (Custom Intent) 420â âââ Ziel-CPA: 40⬠421â âââ Creative: Produkt-Features 422âââ Ad Group 4: Hot (Site Visitors 1-7d) 423â âââ Ziel-CPA: 25⬠424â âââ Creative: Angebot/Rabatt`})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Granulare Kontrolle über CPAs"}),e.jsx("li",{children:"â Creative-Matching nach Funnel-Stage"}),e.jsx("li",{children:"â Bessere Budget-Allokation"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Nachteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Braucht mehr Budget (min. 200â¬/Tag)"}),e.jsx("li",{children:"â Komplexere Verwaltung"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best for:"})," E-Commerce Shops mit klaren Funnel-Stages"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Struktur #3: Funnel Stage Mapping (Lead Gen)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Für:"})," B2B & Lead Gen mit langen Sales Cycles",e.jsx("br",{}),e.jsx("strong",{children:"Komplexität:"})," âââââ"]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Setup:"}),e.jsx("pre",{className:"text-sm overflow-x-auto",children:`Kampagne 1: Demand Gen - ToFu (Top of Funnel) 425âââ Budget: 50% 426âââ Ziel: Awareness 427âââ Ad Groups: 428 âââ Cold Audiences (Lookalike 10%) 429 âââ In-Market Audiences 430 431Kampagne 2: Demand Gen - MoFu (Middle of Funnel) 432âââ Budget: 30% 433âââ Ziel: Engagement 434âââ Ad Groups: 435 âââ Warm Audiences (Site Visitors 8-30d) 436 âââ Video Viewers (50%+) 437 âââ Engaged Custom Audiences 438 439Kampagne 3: Demand Gen - BoFu (Bottom of Funnel) 440âââ Budget: 20% 441âââ Ziel: Conversions 442âââ Ad Groups: 443 âââ Hot Audiences (Site Visitors 1-7d) 444 âââ Shopping Cart Abandoners 445 âââ Form Starters (nicht abgeschickt)`})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Perfekt für lange Sales Cycles"}),e.jsx("li",{children:"â Unterschiedliche Messaging per Funnel-Stage"}),e.jsx("li",{children:"â Klare Attribution"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Nachteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Komplexes Setup"}),e.jsx("li",{children:"â Braucht hohes Budget (min. 500â¬/Tag)"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best for:"})," B2B SaaS, High-Ticket Products (>500â¬)"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Struktur #4: Value-Based Split (LTV)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Für:"})," SaaS & Enterprise mit unterschiedlichen Customer Values",e.jsx("br",{}),e.jsx("strong",{children:"Komplexität:"})," âââââ"]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Setup:"}),e.jsx("pre",{className:"text-sm overflow-x-auto",children:`Kampagne: Demand Gen - SaaS 446âââ Ad Group 1: Enterprise (LTV >10.000â¬) 447â âââ Zielgruppen: Lookalike Top 1% 448â âââ Ziel-ROAS: 300% 449â âââ Creative: Enterprise Features 450âââ Ad Group 2: SMB (LTV 1.000-10.000â¬) 451â âââ Zielgruppen: Lookalike 5% 452â âââ Ziel-ROAS: 200% 453â âââ Creative: SMB Use Cases 454âââ Ad Group 3: Starter (LTV <1.000â¬) 455â âââ Zielgruppen: Lookalike 10% 456â âââ Ziel-CPA: 150⬠457â âââ Creative: Einfache Onboarding`})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Maximiert Profit, nicht nur Conversions"}),e.jsx("li",{children:"â Fokus auf High-Value Customers"}),e.jsx("li",{children:"â Besserer ROAS langfristig"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Nachteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Braucht genaue LTV-Daten"}),e.jsx("li",{children:"â Komplexes Tracking notwendig"}),e.jsx("li",{children:"â Lange Lernphase (8-12 Wochen)"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best for:"})," SaaS, Membership-Sites, Enterprise"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"Struktur #5: E-Com Multi-Product"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Für:"}
457)," E-Commerce mit mehreren Produktkategorien",e.jsx("br",{}),e.jsx("strong",{children:"Komplexität:"})," âââââ"]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Setup:"}),e.jsx("pre",{className:"text-sm overflow-x-auto",children:`Kampagne: Demand Gen - E-Com Fashion 458âââ Ad Group 1: Damen - Oberteile 459â âââ Produkt-Feed: Kategorien 1-10 460â âââ Zielgruppen: Female 18-45 461âââ Ad Group 2: Damen - Unterteile 462â âââ Produkt-Feed: Kategorien 11-20 463â âââ Zielgruppen: Female 18-45 464âââ Ad Group 3: Herren - Oberteile 465â âââ Produkt-Feed: Kategorien 21-30 466â âââ Zielgruppen: Male 18-55 467âââ Ad Group 4: Accessoires 468â âââ Produkt-Feed: Kategorien 31-40 469â âââ Zielgruppen: All Genders`})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Produkt-spezifische Zielgruppen"}),e.jsx("li",{children:"â Bessere Creative-Relevanz"}),e.jsx("li",{children:"â Granulare Performance-Analyse"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Nachteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"â Viele Ad Groups = mehr Arbeit"}),e.jsx("li",{children:"â Braucht groÃe Produktpalette"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best for:"})," Fashion, Home & Living, Multi-Category E-Com"]}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Empfehlung:"}),e.jsxs("p",{className:"mt-2",children:["Starte mit ",e.jsx("strong",{children:"Struktur #1"})," und skaliere später zu Struktur #2 oder #3 je nach Budget und Komplexität."]})]}),e.jsx("h2",{children:"Demand Gen Optimierungen â Die wichtigsten Hebel"}),e.jsx("p",{className:"mb-8",children:"Nach dem Launch kommen die eigentlichen Performance-Gewinne durch intelligente Optimierungen."}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"1. YouTube Placement Exclusions (KRITISCH!)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Das gröÃte Problem:"})," Demand Gen spielt auch auf Low-Quality YouTube-Kanälen aus, die keine Conversions bringen."]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Die Lösung: Bulk Placement Exclusions"})}),e.jsx("img",{src:t_,alt:"YouTube Platzierungen filtern und ausschlieÃen für Demand Gen",className:"rounded-lg shadow-lg mb-6"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Schritt-für-Schritt:"})}),e.jsxs("ol",{className:"list-decimal pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:["Google Ads â ",e.jsx("strong",{children:"Statistiken und Berichte"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:'"Wann und wo Anzeigen ausgeliefert wurden"'})," (Platzierungen)"]}),e.jsxs("li",{children:["Filter: ",e.jsx("strong",{children:"Conversions < 0,10"})," UND ",e.jsx("strong",{children:"Kosten > 100â¬"})]}),e.jsx("li",{children:"Alle schlechten Placements markieren"}),e.jsxs("li",{children:[e.jsx("strong",{children:'"AusschlieÃen"'})," â Kampagnen-Level"]})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Empfohlene Exclusions (Standard):"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"YouTube Kanäle mit CTR < 0,5%"}),e.jsx("li",{children:"Kanäle ohne Conversions nach 100⬠Spend"}),e.jsx("li",{children:"Musikvideos (auÃer du verkaufst Musik-Produkte)"}),e.jsx("li",{children:"Gaming-Kanäle (auÃer du verkaufst Gaming-Produkte)"}),e.jsx("li",{children:"News-Kanäle (oft niedrige Engagement-Qualität)"})]}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Pro-Tipp:"}),e.jsx("p",{className:"mt-2",children:"Wiederhole das alle 2-4 Wochen! Neue schlechte Placements kommen laufend hinzu."})]}),e.jsxs("div",{className:"bg-green-50 dark:bg-green-900/20 border-l-4 border-green-500 p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Performance-Impact:"}),e.jsx("p",{className:"mt-2",children:"Durchschnittlich -15% CPA nach Exclusions (eigene Daten, 50+ Accounts)"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"2. Audience Segment Optimization"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Attribution Report nutzen:"})}),e.jsx("img",{src:Su,alt:"Attribution Report analysieren für Demand Gen Optimierung",className:"rounded-lg shadow-lg mb-6"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Was zeigt der Report?"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Multi-Touch Attribution Paths"}),e.jsx("li",{children:"Welche Kampagnen assistieren bei Conversions"}),e.jsx("li",{children:"Demand Gen + Performance Max Synergien"})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Action Steps:"})}),e.jsxs("ol",{className:"list-decimal pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:e.jsx("strong",{children:"Zeitfenster â Attribution â Conversion-Pfade"})}),e.jsxs("li",{children:["Filter auf ",e.jsx("strong",{children:"Demand Gen Kampagnen"})]}),e.jsxs("li",{children:["Analysiere:",e.jsxs("ul",{className:"list-disc pl-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Welche Audiences assistieren am meisten?"}
469),e.jsx("li",{children:"Welche Audiences konvertieren direkt?"}),e.jsx("li",{children:"Welche Pfade sind am häufigsten?"})]})]})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Optimierung:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"High Assist, Low Direct:"})," Budget erhöhen, diese Audiences sind Mid-Funnel Gold"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"High Direct:"})," In separates Remarketing verschieben"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Low Assist & Direct:"})," Budget reduzieren oder pausieren"]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"3. Creative Testing & Rotation"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Best Practices:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:["Min. ",e.jsx("strong",{children:"10-15 Bild-Varianten"})," hochladen"]}),e.jsxs("li",{children:["Min. ",e.jsx("strong",{children:"3-5 Video-Varianten"})," testen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ad Rotation:"}),' "Optimieren" (Standard)']})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Testing-Framework:"})}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Woche 1-2: Learning Phase"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Alle Assets laufen lassen"}),e.jsx("li",{children:"Keine Ãnderungen!"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Woche 3-4: First Optimization"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Top 3 Performer identifizieren"}),e.jsx("li",{children:"Low Performer (CTR < 0,3%) entfernen"}),e.jsx("li",{children:"Neue Varianten testen (ähnlich zu Top Performern)"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Woche 5+: Continuous Testing"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Alle 2 Wochen neue Creatives testen"}),e.jsx("li",{children:"Saisonale Anpassungen (Weihnachten, Sommer, etc.)"})]})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Creative-Analytics:"}),e.jsx("br",{}),"Google Ads â ",e.jsx("strong",{children:"Produkt-Feed"})," â ",e.jsx("strong",{children:"Creative-Performance"}),e.jsx("br",{}),"Sortiere nach Conversions & CTR"]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"4. Conversion Lift Studies (für groÃe Budgets)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Was ist das?"}),e.jsx("br",{}),"Google testet deine Kampagne gegen eine Kontrollgruppe ohne Ads."]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Anforderungen:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Min. 300.000⬠Spend/Jahr"}),e.jsx("li",{children:"Verfügbar über Google Support"})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Warum wichtig?"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsxs("li",{children:["Zeigt ",e.jsx("strong",{children:"echten inkrementellen Lift"}),", nicht nur Last-Click"]}),e.jsx("li",{children:"Beweist ROI gegenüber Stakeholdern"}),e.jsx("li",{children:"Optimiert Gebotsstrategie"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"5. Attribution Report analysieren"}),e.jsx("img",{src:Su,alt:"Attribution Report für vorbereitete Conversions",className:"rounded-lg shadow-lg mb-6"}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Die wichtigsten Metriken:"})}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"A) Vorbereitete Conversions"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsxs("li",{children:["Wie viele Conversions hat Demand Gen ",e.jsx("strong",{children:"assistiert"}),"?"]}),e.jsx("li",{children:"Zeigt Mid-Funnel Impact"})]})]}),e.jsx("img",{src:zx,alt:"Vorbereitete Conversions im Detail",className:"rounded-lg shadow-lg mb-6"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"B) Conversion-Pfade"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsxs("li",{children:["Typischer Pfad: ",e.jsx("strong",{children:"Demand Gen â Performance Max â Conversion"})]}),e.jsxs("li",{children:["Oder: ",e.jsx("strong",{children:"Demand Gen â Search â Conversion"})]})]})]}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8",children:[e.jsx("p",{className:"font-semibold",children:"Action:"}),e.jsx("p",{className:"mt-2",children:"Wenn Demand Gen hohe Assists hat, Budget ERHÃHEN (auch wenn Direct Conversions niedrig sind)!"})]}),e.jsx("h2",{children:"2026 Updates & neue Features"}),e.jsx("p",{className:"mb-8",children:"Google hat im Oktober 2026 wichtige Updates für Demand Gen veröffentlicht. Hier die wichtigsten:"}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"1. New Customer Acquisition Goals"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Was ist das?"}),e.jsx("br",{}),"Ein neues Conversion-Ziel, das auf ",e.jsx("strong",{children:"Neukunden"})," optimiert (nicht Bestandskunden)."]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Performance-Boost:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"+11,5% mehr neue Kunden"}),e.jsx("li",{children:"-3% niedrigere Akquisekosten"}),e.jsx("li",{children:"Durchschnittswerte laut Google-Studie (Oktober 2026)"})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Setup:"})}),e.jsxs("ol",{className:"list-decimal pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:["Google Ads â ",e.jsx("strong",{children:"Conversion-Ziele"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:'"Neukunden-Akquise"'})," aktivieren"]}),e.jsx("li",{children:"Customer Match Liste hochladen (Bestandskunden ausschlieÃen)"}),e.jsxs("li",{children:["Gebotstrategie: ",e.jsx("strong",{children:'"Nur neue Kunden"'})," oder ",e.jsx("strong",{children:'"Neue Kunden priorisieren"'})]})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Wann nutzen?"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-4 space-y-2",children:[e.jsx("li",{children:"Du hast eine groÃe Bestandskunden-Liste (>10.000 Kunden)"}),e.jsx("li",{children:"Lifetime Value von Neukunden ist deutlich höher"}),e.jsx("li",{children:"Du möchtest aggressive Skalierung"})]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Wann NICHT nutzen?"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-8 space-y-2",children:[e.jsx("li",{children:"Kleine Kundenbasis (<1.000 Kunden)"}),e.jsx("li",{children:"Repeat-Purchase Rate sehr hoch (>50%)"}),e.jsx("li",{children:"Budget zu niedrig (<200â¬/Tag)"})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"2. Web to App Connect (Deep Linking)"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Was ist das?"}),e.jsx("br",{}),"Nutzer, die auf eine Web-Ad klicken, werden direkt in die App weitergeleitet (falls installiert)."]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Vorteile:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Bessere UX"}),e.jsx("li",{children:"Höhere Conversion-Rate in der App"}),e.jsx("li",{children:"Cross-Device Tracking"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Setup:"}),e.jsx("br",{}
469),"Nur verfügbar für Apps mit Firebase/Adjust Integration. Google Support kontaktieren für Aktivierung."]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"3. Bulk Placement Exclusions"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Was ist neu?"}),e.jsx("br",{}),"Du kannst jetzt bis zu ",e.jsx("strong",{children:"10.000 Placements gleichzeitig"})," ausschlieÃen (vorher max. 500)."]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Warum wichtig?"}),e.jsx("br",{}),"Schnellere Optimierung und Massenausschluss von Low-Quality Channels möglich."]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"4. Lookalike Audiences Performance-Boost"}),e.jsxs("p",{className:"mb-4",children:[e.jsx("strong",{children:"Was ist neu?"}),e.jsx("br",{}),"Googles Machine Learning für Lookalike Audiences wurde stark verbessert."]}),e.jsx("p",{className:"mb-4",children:e.jsx("strong",{children:"Performance-Boost:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"20-30% bessere Match-Quality"}),e.jsx("li",{children:"Schnellere Expansion (von 2,5% auf 5% möglich ohne Performance-Loss)"})]}),e.jsxs("p",{className:"mb-8",children:[e.jsx("strong",{children:"Best Practice:"}),e.jsx("br",{}),"Nutze ",e.jsx("strong",{children:"5% Lookalike"})," statt 2,5% oder 10%. Kombiniere mehrere Customer Lists."]}),e.jsx("h2",{children:"Wichtige Best Practices & Profi-Tipps"}),e.jsx("p",{className:"mb-8",children:"Hier die wichtigsten Learnings aus 100+ Demand Gen Kampagnen:"}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"1. Kampagnenstruktur"}),e.jsxs("ul",{className:"list-none space-y-4 mb-8",children:[e.jsxs("li",{children:["â
",e.jsx("strong",{children:"1 Kampagne reicht"})," für die meisten Advertiser",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"Ausnahme: Funnel Stage Mapping (siehe Struktur #3)"})]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"30-50 Produkte pro Ad Group"})," ideal",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"Zu wenig: Keine Diversifikation | Zu viel: Google kann nicht optimieren"})]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Location & Language auf Ad Group Level"}),e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"Flexiblere Kontrolle und bessere Performance-Analyse"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"2. Budget & Gebotsstrategien"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Mindestbudget:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Prospecting: 50-100â¬/Tag"}),e.jsx("li",{children:"Remarketing: 30-50â¬/Tag"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Gebotsstrategie-Progression:"}),e.jsxs("ol",{className:"list-decimal pl-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Woche 1-4:"})," Klicks maximieren (Learning)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Woche 5-8:"})," Ziel-CPA (nach 50+ Conversions)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Woche 9+:"})," Ziel-ROAS (nach 100+ Conversions mit Umsatzdaten)"]})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Target CPA/ROAS richtig setzen:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Starte 20-30% über deinem Break-Even"}),e.jsx("li",{children:"Reduziere langsam (-10% alle 2 Wochen)"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"3. Creative Best Practices"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Format-Mix:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"60% Quadratisch (1:1) für Discover/Gmail"}),e.jsx("li",{children:"30% Vertikal (9:16) für YouTube Shorts"}),e.jsx("li",{children:"10% Horizontal (16:9) für YouTube In-Stream"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Creative Dos:"}),e.jsxs("ul",{className:"list-none space-y-2",children:[e.jsx("li",{children:"â
Erste 3 Sekunden Hook (Video)"}),e.jsx("li",{children:"â
Untertitel (80% schauen ohne Ton)"}),e.jsx("li",{children:"â
Klare CTA am Ende"}),e.jsx("li",{children:"â
Brand-Logo sichtbar"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Creative Don'ts:"}),e.jsxs("ul",{className:"list-none space-y-2",children:[e.jsx("li",{children:"â Mehr als 20% Text im Bild"}),e.jsx("li",{children:"â Stock-Fotos (wirken unecht)"}),e.jsx("li",{children:"â Lange Videos (>60 Sekunden)"}),e.jsx("li",{children:"â Zu viele Text-Ebenen"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"4. Learning Phase Regeln"}),e.jsxs("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border-l-4 border-yellow-500 p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"â ï¸ Keine Ãnderungen während der Lernphase!"}),e.jsx("p",{className:"mt-4 mb-3",children:e.jsx("strong",{children:"Learning Phase Dauer:"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"E-Commerce: 2-4 Wochen"}),e.jsx("li",{children:"Lead Gen: 4-6 Wochen"}),e.jsx("li",{children:"B2B: 6-8 Wochen"})]}),e.jsx("p",{className:"mt-4 mb-3",children:e.jsx("strong",{children:'Was zählt als "Ãnderung"?'})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Budget-Ãnderung >20%"}),e.jsx("li",{children:"Gebotstrategie-Wechsel"}),e.jsx("li",{children:"GroÃe Zielgruppen-Ãnderungen"}),e.jsx("li",{children:"Creative-Asset Austausch (>50%)"})]}),e.jsx("p",{className:"mt-4 mb-3",children:e.jsx("strong",{children:"Ausnahmen (okay während Learning):"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"YouTube Placement Exclusions"}),e.jsx("li",{children:"Negativ-Keywords (wenn vorhanden)"}),e.jsx("li",{children:"Budget-Erhöhung <20%"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"5. Attribution Best Practices"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Attribution Window:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Standard: 30 Tage Click, 1 Tag View"}),e.jsx("li",{children:"Empfohlen: 30 Tage Click, 7 Tage View (für Mid-Funnel)"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg mb-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Conversion-Werte:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Immer Umsatzwerte tracken (wenn E-Com)"}),e.jsx("li",{children:"Unterschiedliche Werte für verschiedene Conversions"}),e.jsx("li",{children:"Beispiel: Kauf = 100â¬, Newsletter = 5â¬"})]})]}),e.jsx("h3",{className:"text-2xl font-semibold mt-8 mb-4",children:"6. Nur Google-Owned Properties nutzen!"}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-3",children:"â ï¸ Video Partner DEAKTIVIEREN!"}),e.jsx("p",{className:"mt-4 mb-3",children:e.jsx("strong",{children:"Warum?"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Video Partner Network = Third-Party Websites"}),e.jsx("li",{children:"Schlechtere Platzierungen"}),e.jsx("li",{children:"Höhere Fraud-Rate"}),e.jsx("li",{children:"Niedrigere Conversion-Rate"})]}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Wo einstellen?"}),e.jsx("br",{}),"Kampagneneinstellungen â ",e.jsx("strong",{children:'"Video Partner im Display-Netzwerk"'})," â ",e.jsx("strong",{children:"AUS"})]})]}),e.jsx("h2",{children:"Häufige Fehler vermeiden"}),e.jsx("p",{className:"mb-8",children:"Die 10 häufigsten Fehler, die wir bei Demand Gen Kampagnen sehen:"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #1: Zu viele Kampagnen"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Jedes Produkt/jede Zielgruppe bekommt eine eigene Kampagne."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Budget wird zu dünn verteilt, keine Kampagne erreicht Learning Phase."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Max. 1-2 Demand Gen Kampagnen, dafür mehrere Ad Groups."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #2: Falsche Funnel-Positionierung"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Demand Gen wird als Lower-Funnel Tool genutzt (wie Performance Max)."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Hohe CPAs, enttäuschte Erwartungen."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Demand Gen ist Mid-Funnel. Erwarte keine Performance Max Conversion Rates!"]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #3: Zu wenig Creative-Varianten"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Nur 2-3 Bilder und 1 Video hochgeladen."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Google kann nicht optimieren, Creative Fatigue nach 2-3 Wochen."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Min. 10-15 Bilder und 3-5 Videos."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #4: Video Partner nicht ausgeschlossen"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Default-Einstellung lässt Video Partner aktiv."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," 20-30% des Budgets geht auf Third-Party Websites mit schlechter Performance."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Immer deaktivieren!"]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #5: Zu frühe Optimierungen"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"}),' Nach 3-4 Tagen wird bereits optimiert, weil "noch keine Conversions".']}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Learning Phase wird ständig neu gestartet, Kampagne performt nie."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Min. 4 Wochen warten vor ersten groÃen Optimierungen."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #6: Keine YouTube Placement Exclusions"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," 50-60% des Budgets geht auf Low-Quality Placements."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Hohe CPAs, schlechte Performance."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Alle 2-4 Wochen schlechte Placements ausschlieÃen (siehe oben)."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #7: Falsche Gebotstrategie"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Direkt mit Ziel-ROAS starten (ohne Conversion-Historie)."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Kampagne bekommt kein Traffic, weil Google keine Daten hat."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Immer mit Klicks maximieren starten, dann zu Ziel-CPA, dann zu Ziel-ROAS."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #8: Attribution Report ignorieren"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Nur Last-Click Conversions werden betrachtet."]}
469),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"}),' Demand Gen wird als "schlecht" eingestuft, obwohl es viele Conversions assistiert.']}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Attribution Report analysieren, vorbereitete Conversions beachten!"]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #9: Zu enge Zielgruppen"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"}),' Nur exakte Custom Audiences (z.B. "Yoga + München + Female 25-30").']}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Reichweite zu niedrig, Kampagne kann nicht skalieren."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Starte mit breiten Signalen (Lookalike 5-10%), lass Google optimieren."]})]}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-900/20 border-l-4 border-red-500 p-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"â Fehler #10: Conversion Tracking nicht korrekt"}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Problem:"})," Google Ads Tag fehlt oder Enhanced Conversions nicht aktiv."]}),e.jsxs("p",{className:"text-sm mb-2",children:[e.jsx("strong",{children:"Resultat:"})," Google kann nicht optimieren, schlechte Performance."]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:"Lösung:"})," Vor Launch Conversion Tracking testen (Google Tag Assistant nutzen)."]})]})]}),e.jsx("h2",{children:"FAQ â Häufig gestellte Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Was sind Google Ads Demand Gen Kampagnen?"}),e.jsx("p",{children:"Demand Gen Kampagnen sind der Nachfolger von Video Action Campaigns (VAC) und ermöglichen visuelles Storytelling auf YouTube, Discover und Gmail. Sie erreichen über 3 Milliarden Nutzer monatlich und sind ideal für Mid-Funnel Marketing."})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Demand Gen oder Performance Max â was ist besser?"}),e.jsx("p",{className:"mb-3",children:"Demand Gen ist ideal für Prospecting, Brand Awareness und visuelle Produkte. Performance Max eignet sich besser für Lower Funnel und Multi-Channel-Ansätze. Eine Kombination beider Kampagnentypen liefert oft die besten Ergebnisse."}),e.jsxs("p",{children:[e.jsx("strong",{children:"Empfehlung:"})," Demand Gen für Cold Traffic, Performance Max für Warm Traffic & Retargeting."]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Wie lange dauert die Lernphase bei Demand Gen?"}),e.jsxs("p",{className:"mb-3",children:["Die Lernphase dauert in der Regel ",e.jsx("strong",{children:"4-6 Wochen bei Lead Gen Kampagnen"}),". Bei E-Commerce mit höheren Conversion-Volumina kann sie kürzer sein (2-4 Wochen)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wichtig:"})," Keine Ãnderungen während der Lernphase!"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Was kosten Demand Gen Kampagnen?"}),e.jsx("p",{className:"mb-3",children:"Die Kosten variieren je nach Branche und Gebotstrategie:"}),e.jsxs("p",{className:"mb-2",children:[e.jsx("strong",{children:"Typische CPMs:"})," 15-40â¬"]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"CPAs variieren stark:"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"E-Commerce: 20-80â¬"}),e.jsx("li",{children:"Lead Gen: 30-150â¬"}),e.jsx("li",{children:"B2B: 100-300â¬"})]}),e.jsxs("p",{className:"mt-3",children:[e.jsx("strong",{children:"Empfohlenes Mindestbudget:"})," 50â¬/Tag für Prospecting"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Welche Creative-Formate funktionieren am besten?"}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Top Performer:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-3 space-y-1",children:[e.jsx("li",{children:"Quadratische Bilder (1:1, 1200x1200px)"}),e.jsx("li",{children:"Vertikale Videos (9:16, 1080x1920px) für YouTube Shorts"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Wichtig:"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsx("li",{children:"Mindestens 5-10 Bild-Varianten"}),e.jsx("li",{children:"Mindestens 3-5 Video-Varianten"}),e.jsx("li",{children:"Erste 3 Sekunden sind entscheidend (Hook!)"}),e.jsx("li",{children:"Untertitel verwenden (80% schauen ohne Ton)"})]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Kann ich Demand Gen für B2B nutzen?"}),e.jsxs("p",{className:"mb-3",children:[e.jsx("strong",{children:"Ja!"})," Demand Gen funktioniert auch für B2B, besonders wenn:"]}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Du visuell ansprechende Services hast"}
469),e.jsx("li",{children:"Sales Cycle 2-6 Monate ist (Mid-Funnel ideal)"}),e.jsx("li",{children:"Du Lookalike Audiences von bestehenden Kunden nutzt"})]}),e.jsxs("p",{className:"mt-3",children:[e.jsx("strong",{children:"Best Practice:"})," Funnel Stage Mapping Struktur (siehe Struktur #3 oben)"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Wie viele Ad Groups sollte ich erstellen?"}),e.jsxs("p",{className:"mb-3",children:[e.jsx("strong",{children:"Standard:"})," 1-2 Ad Groups reichen für die meisten Advertiser"]}),e.jsxs("ul",{className:"list-disc pl-6 mb-3 space-y-1",children:[e.jsx("li",{children:"Ad Group 1: Prospecting"}),e.jsx("li",{children:"Ad Group 2: Remarketing"})]}),e.jsxs("p",{className:"mb-3",children:[e.jsx("strong",{children:"Advanced:"})," 3-5 Ad Groups für granulare Kontrolle"]}),e.jsxs("ul",{className:"list-disc pl-6 mb-3 space-y-1",children:[e.jsx("li",{children:"Nach Funnel-Stage"}),e.jsx("li",{children:"Nach Produktkategorie"}),e.jsx("li",{children:"Nach Audience-Temperatur"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wichtig:"})," Jede Ad Group braucht min. 50â¬/Tag Budget!"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Was ist der Unterschied zu Display Kampagnen?"}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Demand Gen:"})}),e.jsxs("ul",{className:"list-none mb-3 space-y-1",children:[e.jsx("li",{children:"â
YouTube, Gmail, Discover"}),e.jsx("li",{children:"â
Creative-First (Bilder + Videos)"}),e.jsx("li",{children:"â
Smart Bidding mit Video-Signals"}),e.jsx("li",{children:"â
Lookalike Audiences"})]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Display:"})}),e.jsxs("ul",{className:"list-disc pl-6 mb-3 space-y-1",children:[e.jsx("li",{children:"Google Display Network (GDN)"}),e.jsx("li",{children:"Image-fokussiert"}),e.jsx("li",{children:"Weniger Smart Bidding Optionen"}),e.jsx("li",{children:"Ãltere Technologie"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Empfehlung:"})," Nutze Demand Gen statt Display für bessere Performance."]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-semibold mb-3",children:"Wie oft sollte ich Demand Gen Kampagnen optimieren?"}),e.jsxs("p",{className:"mb-3",children:[e.jsx("strong",{children:"Wochen 1-4:"})," Keine Optimierungen (Learning Phase!)"]}),e.jsx("p",{className:"mb-3",children:e.jsx("strong",{children:"Ab Woche 5:"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Alle 2 Wochen:"})," YouTube Placement Exclusions"]}
469),e.jsxs("li",{children:[e.jsx("strong",{children:"Alle 2-4 Wochen:"})," Creative Testing (neue Assets hinzufügen)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Alle 4 Wochen:"})," Zielgruppen-Performance prüfen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Alle 8 Wochen:"})," Gebotstrategie anpassen (falls nötig)"]})]})]})]}),e.jsx(fk,{})]})]})},jo="/assets/featured-DT4cfRDN.webp",r_="/assets/google-ads-neue-kampagne-w-Jo-xuG.webp",s_="/assets/google-ads-kampagne-ohne-zielvorhaben-CywjlqQW.webp",i_="/assets/google-ads-kampagnentyp-suche-DqgZzE12.webp",a_="/assets/vorrangiges-zielvorhaben-auswaehlen-BDQIrgjc.webp",l_="/assets/kampagnenziele-auswaehlen-DnTcgfx5.webp",o_="/assets/kampagnenname-erweiterte-conversions-FhHlfRgi.webp",d_="/assets/gebotsstrategie-kundenakquisition-T1hO-PmL.webp",c_="/assets/partner-werbenetzwerke-deaktivieren-Dnvt4PYk.webp",u_="/assets/google-ads-suchnetzwerk-partner-ebay-DZ5mPSBH.webp",h_="/assets/google-ads-displaynetzwerk-ebay-D0qZyxgs.webp",m_="/assets/google-ads-standorte-CcMyam4I.webp",g_="/assets/google-ads-sprachen-CzyvS2BE.webp",p_="/assets/google-ads-zielgruppensegmente-DBlXIXB_.webp",f_="/assets/keywords-und-assets-erstellen-DcHKHfko.webp",x_="/assets/google-ads-anzeigengruppe-DrTneU5X.webp",b_="/assets/google-ads-anzeigen-DfnqltJY.webp",j_="/assets/google-ads-kampagne-veroeffentlichen-BWl_fDh2.webp",Dx=t=>{const n={Januar:"01",Februar:"02",März:"03",April:"04",Mai:"05",Juni:"06",Juli:"07",August:"08",September:"09",Oktober:"10",November:"11",Dezember:"12"},r=t.split(" ");if(r.length===3){const s=r[0].replace(".","").padStart(2,"0"),i=n[r[1]];return`${r[2]}
469-${i}-${s}`}return t},v_=()=>{const t="14. September 2022",n="26. März 2026",r=Dx(t),s=Dx(n),i=ct.gordon,a={"@context":"https://schema.org","@type":"Article",headline:"Google Ads Tutorial 2026: Kampagne erstellen (Schritt-für-Schritt + Video)",description:"Schritt-für-Schritt Anleitung zur Erstellung einer profitablen Google Ads Kampagne mit AI Max, Smart Bidding und Enhanced Conversions.",image:`https://adshero.de${jo}`,datePublished:r,dateModified:s,author:{"@type":"Person",name:"Gordon Kuckluck",url:"https://www.linkedin.com/in/gordon-kuckluck/"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/logo.png"}}},l={"@context":"https://schema.org","@type":"HowTo",name:"Google Ads Kampagne erstellen 2026",description:"Schritt-für-Schritt Anleitung zur Erstellung einer Google Ads Suchkampagne",totalTime:"PT30M",step:[{"@type":"HowToStep",name:"Vorbereitung",text:"Ziele definieren, Conversion-Aktionen einrichten, Landing Pages vorbereiten"},{"@type":"HowToStep",name:"Kampagne erstellen",text:"Neue Kampagne ohne Zielvorhaben erstellen, Suchnetzwerk auswählen"},{"@type":"HowToStep",name:"Gebotsstrategie festlegen",text:"Conversions maximieren als Gebotsstrategie wählen"},{"@type":"HowToStep",name:"Partner-Netzwerke deaktivieren",text:"Suchnetzwerk-Partner deaktivieren für bessere Kontrolle"},{"@type":"HowToStep",name:"Keywords und Anzeigen erstellen",text:"Relevante Keywords hinzufügen und responsive Suchanzeigen erstellen"}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Tutorial 2026: Kampagne erstellen (Schritt-für-Schritt + Video) | AdsHero"}),e.jsx("meta",{name:"description",content:"Google Ads Kampagne erstellen in 30 Minuten: Schritt-für-Schritt Anleitung mit AI Max, Smart Bidding und Enhanced Conversions. Inkl. 22-Min Video-Tutorial."}),e.jsx("meta",{name:"keywords",content:"google ads tutorial, google ads kampagne erstellen, google werbung schalten, google ads anleitung, google ads 2026, ai max google ads, smart bidding, enhanced conversions, google ads für anfänger, google ads lernen, google ads schritt für schritt"}),e.jsx("meta",{property:"og:title",content:"Google Ads Tutorial 2026: Kampagne erstellen (Schritt-für-Schritt + Video)"}),e.jsx("meta",{property:"og:description",content:"Lerne, wie du profitabel Google Ads Kampagnen erstellst. Mit AI Max, Smart Bidding, Enhanced Conversions und Budget-Tipps für 2026."}),e.jsx("meta",{property:"og:image",content:`https://adshero.de${jo}`}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-tutorial"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Google Ads Tutorial 2026: Kampagne erstellen (Schritt-für-Schritt + Video)"}),e.jsx("meta",{name:"twitter:description",content:"Lerne, wie du profitabel Google Ads Kampagnen erstellst. Mit AI Max, Smart Bidding und Budget-Tipps für 2026."}),e.jsx("meta",{name:"twitter:image",content:`https://adshero.de${jo}`}),e.jsx("meta",{property:"article:published_time",content:r}),e.jsx("meta",{property:"article:modified_time",content:s}),e.jsx("meta",{property:"article:author",content:"Gordon Kuckluck"}),e.jsx("meta",{property:"article:section",content:"Google Ads"}),e.jsx("meta",{property:"article:tag",content:"Google Ads"}),e.jsx("meta",{property:"article:tag",content:"Tutorial"}),e.jsx("meta",{property:"article:tag",content:"Anleitung"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-tutorial"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]}),e.jsx(nt,{title:"Google Ads Tutorial 2026 â Komplette Schritt-für-Schritt Anleitung",date:t,modifiedDate:n,readingTime:22,featuredImage:jo,author:i,children:e.jsxs("div",{className:"prose prose-lg max-w-none",children:[e.jsx("p",{className:"text-xl leading-relaxed text-muted-foreground",children:"Du willst mit Google Ads durchstarten, aber weiÃt nicht, wo du anfangen s
469ollst? In diesem Tutorial zeige ich dir Schritt für Schritt, wie du eine profitable Google Ads Suchkampagne erstellst â aktuell für 2026 mit allen wichtigen Updates zu AI Max, Smart Bidding und Enhanced Conversions."}),e.jsx("p",{children:"Egal, ob du E-Commerce Shop betreibst oder Leads generieren willst: Nach diesem Tutorial kannst du selbstständig Google Ads Kampagnen erstellen und optimieren. Ich zeige dir alle wichtigen Einstellungen, verrate dir die häufigsten Anfängerfehler und gebe dir exklusive Pro-Tipps aus über 8 Jahren Agenturerfahrung."}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8 rounded-r-lg",children:[e.jsx("p",{className:"text-lg font-semibold mb-2",children:"â±ï¸ Geschätzte Dauer: 30 Minuten"}),e.jsx("p",{className:"mb-0",children:"Nach diesem Tutorial hast du deine erste Google Ads Kampagne live und kannst direkt mit dem Testen beginnen!"})]}),e.jsx("h2",{id:"vorbereitung",children:"Die Vorbereitung"}),e.jsx("p",{children:"Bevor du in Google Ads loslegst, solltest du einige Vorbereitungen treffen. Eine gute Vorbereitung spart dir später viel Zeit, Geld und Nerven!"}),e.jsx("h3",{children:"1. Google Ads Konto erstellen"}),e.jsxs("p",{children:["Falls du noch kein Google Ads Konto hast, gehe zu ",e.jsx("a",{href:"https://ads.google.com",target:"_blank",rel:"noopener noreferrer",children:"ads.google.com"})," und erstelle ein Konto. Du brauchst dafür nur ein Google-Konto (Gmail)."]}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 border-l-4 border-amber-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-amber-900 dark:text-amber-200 mb-2",children:"â ï¸ Wichtiger Tipp:"}),e.jsxs("p",{className:"mb-0 text-amber-800 dark:text-amber-300",children:['Google wird dir beim ersten Login einen "Smart-Kampagnen"-Assistenten zeigen. ',e.jsx("strong",{children:"Ãberspringe diesen!"})," Smart-Kampagnen sind für Anfänger verlockend, geben dir aber zu wenig Kontrolle. Folge stattdessen diesem Tutorial für eine klassische Suchkampagne."]})]}),e.jsx("h3",{children:"2. Ziele definieren"}),e.jsx("p",{children:"Was willst du mit Google Ads erreichen? Die Antwort entscheidet über deine gesamte Kampagnenstrategie:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"E-Commerce:"})," Verkäufe generieren, ROAS (Return on Ad Spend) von mindestens 3:1"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Leadgen:"})," Qualifizierte Leads sammeln, CPA (Cost per Acquisition) unter deinem Break-Even"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Branding:"})," Bekanntheit steigern (für Anfänger eher nicht empfohlen)"]})]}),e.jsx("p",{children:"Schreib dir dein Ziel auf â das hilft dir später bei der Optimierung enorm!"}),e.jsx("h3",{children:"3. Conversion-Tracking einrichten"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das ist der wichtigste Schritt!"})," Ohne Conversion-Tracking kannst du nicht messen, ob deine Kampagne erfolgreich ist."]}),e.jsx("p",{children:"Eine Conversion ist eine gewünschte Aktion auf deiner Website, z.B.:"}),e.jsxs("ul",{children:[e.jsx("li",{children:"Kauf abschlieÃen (E-Commerce)"}),e.jsx("li",{children:"Formular ausfüllen (Leadgen)"}),e.jsx("li",{children:"Telefon-Anruf"}),e.jsx("li",{children:"Newsletter-Anmeldung"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wie richtest du Conversion-Tracking ein?"})," Das hängt von deinem Shop-System ab:"]}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Shopify:"})," Lies unseren detaillierten Guide zu"," ",e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:"Google Ads Conversion Tracking in Shopify"})," ","â dort zeigen wir dir 5 verschiedene Methoden inklusive Server-Side Tracking."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"WooCommerce, Magento, Custom:"})," Nutze den Google Tag Manager (GTM) â das ist die flexibelste Methode."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Keine Website?"})," Nutze Offline Conversion Import für CRM-Daten."]})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ 2026 Update: Enhanced Conversions"}),e.jsxs("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:["Enhanced Conversions sind 2026 Best Practice! Sie verbessern die Tracking-Genauigkeit um durchschnittlich 10%, indem First-Party-Daten (E-Mail, Name, Telefon) gehashed an Google geschickt werden. Aktiviere Enhanced Conversions ",e.jsx("strong",{children:"unbedingt"})," beim Setup!"]})]}),e.jsx("h3",{children:"4. Landing Page vorbereiten"}),e.jsx("p",{children:"Deine Landing Page entscheidet über Erfolg oder Misserfolg deiner Kampagne. Eine gute Landing Page hat:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Klare Ãberschrift:"}
469)," User muss sofort verstehen, worum es geht"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Relevanz zum Keyword:"}),' Suchst du nach "vegane Seife kaufen", sollte die Landing Page genau das bieten']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Starker CTA:"}),' "Jetzt kaufen", "Kostenloses Angebot anfordern", etc.']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Schnelle Ladezeit:"})," Unter 3 Sekunden (nutze Google PageSpeed Insights zum Testen)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Mobile-optimiert:"})," 60-70% deiner Besucher kommen von Mobile!"]})]}),e.jsx("h3",{children:"5. Keyword-Recherche durchführen"}),e.jsxs("p",{children:["Welche Suchbegriffe nutzen deine potenziellen Kunden? Das findest du mit dem ",e.jsx("strong",{children:"Google Keyword Planer"})," heraus (kostenlos in Google Ads verfügbar)."]}),e.jsx("p",{children:e.jsx("strong",{children:"Beispiel für E-Commerce (vegane Seife):"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"vegane seife kaufen (High Intent â sofort kaufbereit)"}),e.jsx("li",{children:"vegane seife ohne palmöl (Spezifisch â wahrscheinlich hohe Conversion Rate)"}),e.jsx("li",{children:"beste vegane seife (Informational â niedrigere Conversion Rate)"}),e.jsx("li",{children:"vegane seife (Zu allgemein â kann teuer werden)"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Mein Tipp:"})," Starte mit 10-20 Keywords, die du in 3-5 Anzeigengruppen aufteilst. Qualität geht vor Quantität!"]}),e.jsx("div",{className:"my-12",children:e.jsx(ie,{})}),e.jsx("h2",{id:"was-ist-neu-2026",children:"Was ist neu in Google Ads 2026?"}),e.jsx("p",{children:"Bevor wir in die praktische Kampagnenerstellung einsteigen, lass uns kurz die wichtigsten Neuerungen in Google Ads 2026 anschauen. Diese Features solltest du kennen, auch wenn wir in diesem Tutorial zunächst eine klassische Suchkampagne erstellen."}),e.jsx("h3",{children:"AI Max für Suchkampagnen"}),e.jsxs("p",{children:["Seit Mai 2026 gibt es ",e.jsx("strong",{children:"AI Max für Suchkampagnen"})," â Googles gröÃte Innovation seit der Einführung von Smart Bidding. AI Max nutzt generative KI, um:"]}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Automatisch Anzeigentexte"})," zu generieren und zu optimieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zielgruppen präziser"})," zu identifizieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gebote dynamischer"})," anzupassen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Wahrscheinlichkeiten"})," besser vorherzusagen"]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Wann solltest du AI Max nutzen?"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Du hast bereits mindestens 50 Conversions pro Monat"}),e.jsx("li",{children:"Du bist bereit, Google mehr Kontrolle zu geben"}),e.jsx("li",{children:"Du möchtest maximale Automatisierung"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Wann bleibst du bei klassischen Suchkampagnen?"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Du startest gerade erst (weniger als 15 Conversions/Monat)"}),e.jsx("li",{children:"Du möchtest maximale Kontrolle über Keywords und Anzeigentexte"}),e.jsx("li",{children:"Du testest neue Produkte oder Märkte"})]}),e.jsxs("div",{className:"bg-green-50 dark:bg-green-950/20 border-l-4 border-green-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-green-900 dark:text-green-200 mb-2",children:"â
Für dieses Tutorial:"}),e.jsx("p",{className:"mb-0 text-green-800 dark:text-green-300",children:"Wir bleiben bei der klassischen Suchkampagne â sie ist perfekt zum Lernen und gibt dir die Kontrolle, die du als Anfänger brauchst. Wenn deine Kampagne später profitabel läuft, kannst du jederzeit auf AI Max umsteigen."})]}),e.jsx("h3",{children:"Smart Bidding ist erwachsen geworden"}),e.jsx("p",{children:"Die Smart Bidding Algorithmen sind 2026 deutlich ausgereifter:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Schnellere Lernphase"})," â Google braucht weniger Conversions für gute Performance"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Bessere Micro-Budget Performance"})," â auch 5-20â¬/Tag funktionieren jetzt"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Präzisere Vorhersagen"})," â dank mehr Trainingsdaten"]})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Pro-Tipp 2026:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:'Starte mit "Conversions maximieren" statt manueller CPC. Die Lernphase ist schneller und die Ergebnisse besser als noch vor 2 Jahren.'})]}),e.jsx("h3",{children:"Enhanced Conversions ist jetzt Standard"}),e.jsx("p",{children:"Was 2022 noch optional war, ist 2026 Best Practice:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Enhanced Conversions"})," verbessert die Tracking-Genauigkeit um durchschnittlich 10%"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Enhanced Conversions for Leads"})," ist für Leadgen-Kampagnen unverzichtbar"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Data Manager"})," macht die Integration mit CRMs (Hubspot, Salesforce) einfacher"]})]}),e.jsx("p",{children:'Wir gehen im Abschnitt "Conversion-Ziele" noch detailliert darauf ein.'}),e.jsx("h3",{children:"Weitgehend passende Keywords: Der groÃe Wandel"}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 border-l-4 border-amber-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-amber-900 dark:text-amber-200 mb-2",children:"â ï¸ WICHTIG: 2026 hat sich die Empfehlung komplett geändert!"}),e.jsxs("p",{className:"text-amber-800 dark:text-amber-300",children:[e.jsx("strong",{children:"Früher (bis 2023):"})," Weitgehend passende Keywords waren oft zu ungenau â deaktivieren!",e.
469jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Heute (2026):"})," Dank AI-Verbesserungen funktionieren weitgehend passende Keywords deutlich besser und können dir helfen, profitable Keywords zu entdecken, die du manuell nie gefunden hättest."]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Die neue Regel für 2026:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
Nutze weitgehend passende Keywords mit Smart Bidding"}),e.jsx("li",{children:"â
Ãberwache den Suchbegriffsbericht regelmäÃig"}),e.jsx("li",{children:"â
Füge negative Keywords hinzu für komplett irrelevante Suchanfragen"})]}),e.jsx("h2",{id:"kampagne-erstellen",children:"Google Ads Kampagne erstellen"}),e.jsx("p",{children:"Jetzt geht's los! Ich zeige dir jeden einzelnen Schritt, den du brauchst, um deine erste profitable Google Ads Suchkampagne zu erstellen."}),e.jsx("h3",{id:"neue-kampagne-starten",children:"4.1 Neue Kampagne starten"}),e.jsxs("p",{children:["Logge dich in dein Google Ads Konto ein und klicke auf das ",e.jsx("strong",{children:"Plus-Symbol (+)"})," in der linken Navigation. Wähle dann ",e.jsx("strong",{children:'"Neue Kampagne"'}),"."]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:r_,alt:"Neue Google Ads Kampagne erstellen über Plus-Symbol",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:'Klicke auf das Plus-Symbol und wähle "Neue Kampagne"'})]}),e.jsx("h3",{id:"kampagne-ohne-zielvorhaben",children:"4.2 Kampagne ohne Zielvorhaben erstellen"}),e.jsx("p",{children:"Google wird dich jetzt fragen, welches Ziel du verfolgen möchtest. Hier ist die wichtigste Lektion dieses Tutorials:"}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-950/20 border-l-4 border-red-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-red-900 dark:text-red-200 mb-2",children:"ð¨ Kritisch wichtig:"}),e.jsxs("p",{className:"mb-0 text-red-800 dark:text-red-300",children:["Wähle ",e.jsx("strong",{children:'"Kampagne ohne Zielvorhaben erstellen"'}),' aus! Die vorgefertigten Ziele von Google klingen verlockend, schränken dich aber in den Einstellungsmöglichkeiten ein. Mit "ohne Zielvorhaben" hast du maximale Kontrolle.']})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:s_,alt:"Kampagne ohne Zielvorhaben erstellen in Google Ads",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:'Wähle "Kampagne ohne Zielvorhaben erstellen" für maximale Kontrolle'})]}),e.jsx("h3",{id:"kampagnentyp-suche",children:'4.3 Kampagnentyp "Suche" auswählen'}),e.jsx("p",{children:"Jetzt musst du den Kampagnentyp wählen. Google bietet verschiedene Typen an:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Suche:"})," Deine Anzeigen erscheinen in den Google Suchergebnissen (das willst du!)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Display:"})," Banner-Anzeigen auf Websites im Google Display-Netzwerk"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Shopping:"})," Produkt-Anzeigen mit Bild und Preis (für E-Commerce, aber komplexer)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Video:"})," Anzeigen auf YouTube"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Performance Max:"})," Google steuert automatisch alle Kanäle (für Fortgeschrittene)"]})]}),e.jsxs("p",{children:["Für dieses Tutorial wählen wir ",e.jsx("strong",{children:'"Suche"'}),"."]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:i_,alt:"Kampagnentyp Suche auswählen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:'Wähle "Suche" als Kampagnentyp'})]}),e.jsx("h3",{id:"conversion-ziele",children:"4.4 Conversion-Ziele auswählen"}),e.jsx("p",{children:"Jetzt kannst du auswählen, welche Conversion-Aktionen für diese Kampagne wichtig sind. Falls du das Conversion-Tracking bereits eingerichtet hast (siehe Vorbereitung), siehst du hier deine Conversion-Aktionen."}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:a_,alt:"
469Vorrangiges Conversion-Zielvorhaben auswählen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Wähle deine wichtigste Conversion-Aktion aus"})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:l_,alt:"Kampagnenziele auswählen in Google Ads",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Du kannst mehrere Conversion-Ziele auswählen"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"E-Commerce:"}),' Wähle "Kauf" oder "Transaktion"',e.jsx("br",{}),e.jsx("strong",{children:"Leadgen:"}),' Wähle "Lead" oder "Kontaktformular"']}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Enhanced Conversions aktivieren:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:'Wenn du Enhanced Conversions noch nicht aktiviert hast, siehst du hier einen Hinweis. Klicke auf "Enhanced Conversions einrichten" und folge den Anweisungen. Das dauert nur 5 Minuten und verbessert deine Daten erheblich!'})]}),e.jsx("h3",{id:"kampagnenname",children:"4.5 Kampagnenname & Erweiterte Conversions"}),e.jsx("p",{children:"Gib deiner Kampagne einen aussagekräftigen Namen. Ich empfehle folgende Namenskonvention:"}),e.jsx("div",{className:"bg-gray-100 dark:bg-gray-800 p-4 rounded-lg my-6 font-mono text-sm",children:"AH | [Produktkategorie] | [Match Type] | [Gebotsstrategie]"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Beispiel:"})," ",e.jsx("code",{children:"AH | Vegane Seife | Exact | CMax"})]}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"AH"})," = AdsHero (oder dein Firmenname)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Vegane Seife"})," = Produktkategorie"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Exact"})," = Match Type (Exact, Phrase, Broad)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"CMax"})," = Conversions maximieren (Gebotsstrategie)"]})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:o_,alt:"Kampagnenname und erweiterte Conversions festlegen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Gib einen strukturierten Kampagnennamen ein und aktiviere erweiterte Conversions"})]}),e.jsx("p",{children:"Warum ist das wichtig? Nach 6 Monaten hast du vielleicht 20+ Kampagnen. Mit dieser Namenskonvention behältst du den Ãberblick!"}),e.jsx("h3",{id:"gebotsstrategie",children:"4.6 Gebotsstrategie & Kundenakquisition"}),e.jsx("p",{children:"Jetzt kommt eine der wichtigsten Entscheidungen: Die Gebotsstrategie."}),e.jsxs("p",{children:[e.jsx("strong",{children:"Meine Empfehlung für 2026:"})," Starte mit ",e.jsx("strong",{children:'"Conversions maximieren"'})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:d_,alt:"Gebotsstrategie Conversions maximieren auswählen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:'Wähle "Conversions maximieren" als Gebotsstrategie'})]}),e.jsx("p",{children:e.jsx("strong",{children:'Warum "Conversions maximieren" statt Ziel-CPA?'})}),e.jsxs("ul",{children:[e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Schnellere Lernphase:"})," Google hat mehr Flexibilität beim Testen"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Keine Baseline nötig:"})," Du brauchst keine historischen Daten"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Besser für neue Kampagnen:"})," Google findet automatisch die optimalen CPCs"]})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wann solltest du Ziel-CPA nutzen?"})," Erst nachdem du mindestens 15-30 Conversions gesammelt hast und weiÃt, welcher CPA für dich profitabel ist."]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Budget-Tipp für Anfänger:"}),e.jsxs("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:["Dein Tagesbudget sollte mindestens das ",e.jsx("strong",{children:"2-3-fache deines Ziel-CPAs"})," sein. Beispiel: Ziel-CPA 10⬠â Budget mindestens 20-30â¬/Tag. Sonst kann Smart Bidding nicht richtig lernen."]})]}),e.jsx("h3",{id:"partner-netzwerke",children:"4.7 Partner-Netzwerke deaktivieren (WICHTIG!)"}),e.jsxs("div",{className:"bg-red-50 dark:bg-red-950/20 border-l-4 border-red-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-red-900 dark:text-red-200 mb-2",children:"ð¨ Kritisch: IMMER deaktivieren!"}),e.jsxs("p",{className:"mb-0 text-red-800 dark:text-red-300",children:["Deaktiviere ",e.jsx("strong",{children:"sowohl"}),' "Suchnetzwerk-Partner einbeziehen" ',e.jsx("strong",{children:"als auch"}),' "Display-Netzwerk einbeziehen"! Diese Einstellung verschwendet in 95% der Fälle nur Budget.']})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:c_,alt:"Partner-Werbenetzwerke deaktivieren",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Deaktiviere beide Partner-Netzwerke für bessere Kontrolle"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Warum?"})," Hier zwei Beispiele, wo deine Anzeigen sonst erscheinen können:"]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:u_,alt:"Suchnetzwerk-Partner Be
469ispiel eBay Kleinanzeigen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Deine Anzeigen auf eBay Kleinanzeigen â meist schlechte Qualität"})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:h_,alt:"Display-Netzwerk Partner Beispiel",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Im Display-Netzwerk erscheint deine Text-Anzeige als Banner â sieht unprofessionell aus"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Das Problem:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â Oft fragwürdige Websites (z.B. eBay Kleinanzeigen)"}),e.jsx("li",{children:"â Meist schlechte Conversion-Rates"}),e.jsx("li",{children:"â Wenig Kontrolle über Placements"}),e.jsx("li",{children:"â Budget-Verschwendung"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Ausnahme:"})," Du testest gezielt die Partner-Performance in einer separaten Kampagne. Aber als Anfänger: Finger weg!"]}),e.jsx("h3",{id:"standorte",children:"4.8 Standorte und Standortoptionen"}),e.jsx("p",{children:"Wähle die geografischen Regionen aus, in denen deine Anzeigen erscheinen sollen."}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:m_,alt:"Standorte auswählen in Google Ads",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Wähle deine Zielregionen und die Präsenz-Option aus"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wichtige Einstellung:"}),' Klicke auf "Standortoptionen" und wähle ',e.jsx("strong",{children:'"Präsenz"'}),' aus (nicht "Präsenz oder Interesse").']}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 border-l-4 border-amber-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-amber-900 dark:text-amber-200 mb-2",children:'â ï¸ Warum "Präsenz" wählen?'}),e.jsx("p",{className:"mb-0 text-amber-800 dark:text-amber-300",children:'Mit "Präsenz oder Interesse" würden deine Anzeigen auch Leuten gezeigt, die sich für deine Region interessieren, aber woanders sind. Beispiel: Jemand in Hamburg sucht nach "Hotel München" â mit "Interesse" könnten deine München-Anzeigen trotzdem erscheinen. Meist nicht sinnvoll!'})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Pro-Tipp für kleine Budgets:"})," Starte nur in 1-2 profitablen Städten/Regionen statt ganz Deutschland. So kannst du schneller Daten sammeln und optimieren."]}),e.jsx("h3",{id:"sprache",children:"4.9 Sprache"}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:g_,alt:"Sprache auswählen in Google Ads",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:'Wähle "Alle Sprachen" für maximale Reichweite'})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Ãberraschender Tipp:"}),e.jsxs("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:["Wähle ",e.jsx("strong",{children:'"Alle Sprachen"'}),' statt nur "Deutsch"! Warum? Google erkennt die Sprachpräferenz automatisch anhand der Suchanfrage. Wenn jemand "vegane seife" (deutsch) sucht, bekommt er deine deutsche Anzeige â egal welche Browser-Sprache eingestellt ist. Mit "nur Deutsch" könntest du Kunden verpassen, die deutsch suchen, aber Englisch als Browser-Sprache haben.']})]}),e.jsx("h3",{id:"zielgruppensegmente",children:"4.10 Beobachtung von Zielgruppensegmenten"}),e.jsxs("p",{children:["Jetzt wird's interessant! Hier kannst du Zielgruppensegmente zur ",e.jsx("strong",{children:"Beobachtung"})," hinzufügen (nicht Ausrichtung)."]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:p_,alt:"Zielgruppensegmente zur Beobachtung hinzufügen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Füge Zielgruppen zur Beobachtung hinzu â nicht zur Ausrichtung!"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Unterschied Beobachtung vs. Ausrichtung:"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Beobachtung:"})," Deine Anzeigen werden allen gezeigt, die nach deinen Keywords suchen. Du siehst aber im Reporting, welche Zielgruppen besser performen. â
Das willst du!"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ausrichtung:"})," Deine Anzeigen werden NUR Leuten in diesen Zielgruppen gezeigt. â Zu einschränkend für Suchkampagnen!"]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Welche Zielgruppen hinzufügen?"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Kaufbereite Segmente:"}),' z.B. "Käufer von Seifen und Körperpflegeprodukten"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Interessen:"}),' z.B. "Veganer/Vegetarier"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Deine eigenen Listen:"})," Website-Besucher (Remarketing)"]})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ 2026 Pro-Tipp: Audience-First Strategie"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:'Nac
469h 2-4 Wochen schaust du im Zielgruppen-Bericht, welche Segmente die besten Conversion-Rates haben. Für diese Segmente kannst du dann Gebotsanpassungen vornehmen (z.B. +20% für "Kaufbereite Segmente"). So holst du mehr aus deinem Budget!'})]}),e.jsx("h3",{id:"weitgehend-passende-keywords",children:"4.11 Weitgehend passende Keywords"}),e.jsx("p",{children:"Jetzt fragt Google, ob du weitgehend passende Keywords nutzen möchtest. Hier hat sich 2026 einiges geändert!"}),e.jsxs("div",{className:"bg-green-50 dark:bg-green-950/20 border-l-4 border-green-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-green-900 dark:text-green-200 mb-2",children:"â
2026 Empfehlung: NICHT deaktivieren!"}),e.jsxs("p",{className:"text-green-800 dark:text-green-300",children:[e.jsx("strong",{children:"Früher (bis 2023):"}),' "Weitgehend passende Keywords deaktivieren!" war die Standard-Empfehlung.',e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Heute (2026):"})," Dank massiver AI-Verbesserungen bei Google's Algorithmen funktionieren weitgehend passende Keywords deutlich besser. Sie helfen dir, profitable Keywords zu finden, die du manuell nie entdeckt hättest."]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Wie nutzt du weitgehend passende Keywords richtig?"})}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Mit Smart Bidding kombinieren:"}),' "Conversions maximieren" oder "Ziel-CPA"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Suchbegriffsbericht checken:"})," Mindestens wöchentlich schauen, für welche Begriffe deine Anzeigen erscheinen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Negative Keywords hinzufügen:"})," Irrelevante Suchbegriffe ausschlieÃen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Daten beobachten:"})," Wenn die CPAs gut sind, weiterlaufen lassen!"]})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wichtig:"}),' Du kannst trotzdem auch genau passende [keywords] und "passende phrasen" nutzen. Die verschiedenen Match Types können gut zusammenarbeiten!']}),e.jsx("h3",{id:"keywords-assets",children:"4.12 Keywords und Assets erstellen"}),e.jsx("p",{children:'Jetzt fügst du deine Keywords hinzu. Hier ist ein Beispiel für eine Anzeigengruppe "Vegane Seife":'}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:f_,alt:"Keywords und Assets in Google Ads erstellen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Füge deine Keywords mit den richtigen Match Types hinzu"})]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:x_,alt:"Anzeigengruppe mit Keywords erstellen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Eine gut strukturierte Anzeigengruppe mit thematisch verwandten Keywords"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Keyword Match Types erklärt:"})}),e.jsx("div",{className:"bg-gray-100 dark:bg-gray-800 p-6 rounded-lg my-6",children:e.jsxs("ul",{className:"space-y-3 mb-0",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Weitgehend passend:"})," ",e.jsx("code",{children:"vegane seife"}),e.jsx("br",{}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Zeigt auch für: bio seife, natürliche seife, seife ohne tierversuche"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Passende Wortgruppe:"})," ",e.jsx("code",{children:'"vegane seife"'}),e.jsx("br",{}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Zeigt für: vegane seife kaufen, beste vegane seife, wo vegane seife kaufen"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Genau passend:"})," ",e.jsx("code",{children:"[vegane seife]"}),e.jsx("br",{}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Zeigt nur für: vegane seife (und sehr nah verwandte Varianten)"})]})]})}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Struktur-Tipp für Anfänger:"}),e.jsxs("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:["Erstelle ",e.jsx("strong",{children:"Single Keyword Ad Groups (SKAGs)"})," oder nutze maximal 3-5 sehr ähnliche Keywords pro Anzeigengruppe. So kannst du für jede Anzeigengruppe hochrelevante Anzeigentexte schreiben und hast bessere Kontrolle."]})]}),e.jsx("h3",{id:"anzeige-erstellen",children:"4.13 Anzeige erstellen & Assets"}
469),e.jsxs("p",{children:["Jetzt erstellst du deine ",e.jsx("strong",{children:"Responsive Suchanzeige"}),". Das ist der spannende Teil â hier überzeugst du die User, auf deine Anzeige zu klicken!"]}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:b_,alt:"Responsive Suchanzeige in Google Ads erstellen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Erstelle eine responsive Suchanzeige mit starken Headlines und Descriptions"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Aufbau einer Responsive Suchanzeige:"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"15 Headlines:"})," Je 30 Zeichen (min. 3, empfohlen: 10-15)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"4 Descriptions:"})," Je 90 Zeichen (min. 2, empfohlen: 4)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Assets:"})," Sitelinks, Callouts, Strukturierte Snippets"]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Beispiel Headlines (Vegane Seife):"})}),e.jsxs("ol",{children:[e.jsx("li",{children:"Vegane Seife | 100% Natürlich"}),e.jsx("li",{children:"Bio Seife ohne Palmöl â"}),e.jsx("li",{children:"Handgemacht in Deutschland"}),e.jsx("li",{children:"Gratis Versand ab 30â¬"}),e.jsx("li",{children:"4.8â
von 500+ Kunden"}),e.jsx("li",{children:"30 Tage Geld-zurück-Garantie"}),e.jsx("li",{children:"Für sensible Haut geeignet"}),e.jsx("li",{children:"Ohne Tierversuche | Vegan"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Beispiel Descriptions:"})}),e.jsxs("ol",{children:[e.jsx("li",{children:"Entdecke unsere handgemachte vegane Seife aus 100% natürlichen Zutaten. Ohne Palmöl, Parabene & Tierversuche. Jetzt bestellen & Haut verwöhnen!"}),e.jsx("li",{children:"Nachhaltig, vegan, hautfreundlich: Unsere Bio-Seifen werden in Deutschland handgefertigt. Perfekt für sensible Haut. Gratis Versand ab 30â¬."})]}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 border-l-4 border-amber-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-amber-900 dark:text-amber-200 mb-2",children:"â ï¸ Häufiger Fehler: Nur 1 Anzeige!"}),e.jsxs("p",{className:"mb-0 text-amber-800 dark:text-amber-300",children:["Erstelle ",e.jsx("strong",{children:"mindestens 2-3 Anzeigen"})," pro Anzeigengruppe! Google testet dann automatisch, welche besser performed. Ohne A/B-Testing lässt du Geld auf dem Tisch liegen."]})]}),e.jsx("p",{children:e.jsx("strong",{children:'Anzeigenstärke "Exzellent" erreichen:'})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
Min. 10 verschiedene Headlines"}),e.jsx("li",{children:"â
Min. 3 Descriptions"}),e.jsx("li",{children:"â
Alle Asset-Typen hinzufügen (Sitelinks, Callouts, etc.)"}),e.jsx("li",{children:"â
Keyword in min. 2 Headlines verwenden"}),e.jsx("li",{children:"â
Unique Content (nicht wiederholen)"})]}),e.jsx("div",{className:"my-12",children:e.jsx(ie,{})}),e.jsx("h3",{id:"dynamische-keyword-insertion",children:"4.14 Dynamische Keyword-Insertion"}),e.jsxs("p",{children:["Ein mächtiges Feature für fortgeschrittene User: ",e.jsx("strong",{children:"Dynamische Keyword-Insertion (DKI)"}),"."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Was ist das?"})," Google fügt automatisch das Keyword, nach dem der User gesucht hat, in deine Anzeige ein."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syntax:"})," ",e.jsx("code",{children:"KeyWord:Standardtext"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Beispiel:"})}),e.jsxs("div",{className:"bg-gray-100 dark:bg-gray-800 p-4 rounded-lg my-6",children:[e.jsxs("p",{className:"mb-2",children:[e.jsx("strong",{children:"Headline:"})," ",e.jsxs("code",{children:["KeyWord:Vegane Seife"," | 100% Bio"]})]}),e.jsx("p",{className:"mb-2 text-sm text-muted-foreground",children:'User sucht nach: "vegane handseife"'}),e.jsxs("p",{className:"mb-0",children:[e.jsx("strong",{children:"Angezeigte Headline:"})," Vegane Handseife | 100% Bio"]})]}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 border-l-4 border-amber-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-amber-900 dark:text-amber-200 mb-2",children:"â ï¸ Vorsicht bei DKI:"}),e.jsx("p",{className:"mb-0 text-amber-800 dark:text-amber-300",children:'Nutze DKI nur, wenn deine Keywords sehr ähnlich sind! Bei weitgehend passenden Keywords kann es zu komischen Anzeigen führen (z.B. "Günstige Seife | Premium Qualität" â widerspricht sich).'})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Mein Tipp für Anfänger:"})," Verzichte erstmal auf DKI. Schreibe lieber manuelle, überzeugende Headlines. Du kannst DKI später testen, wenn du mehr Erfahrung hast."]}),e.jsx("h3",{id:"budget",children:"4.15 Budget festlegen"}),e.jsx("p",{children:"Fast geschafft! Jetzt legst du dein Tagesbudget fest."}),e.jsx("p",{children:e.jsx("strong",{children:"Wichtige Formel:"})}
469),e.jsxs("div",{className:"bg-blue-100 dark:bg-blue-900/30 p-6 rounded-lg my-6 text-center",children:[e.jsx("p",{className:"text-2xl font-bold mb-2",children:"Tagesbudget = Ziel-CPA à 2-3"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-0",children:"Beispiel: Ziel-CPA 10⬠â Budget mindestens 20-30â¬/Tag"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Warum?"})," Smart Bidding braucht Spielraum zum Lernen. Wenn dein Budget zu knapp ist, kann Google nicht genug Daten sammeln und die Lernphase dauert ewig."]}),e.jsx("p",{children:e.jsx("strong",{children:"Micro-Budget Hacks (5-20â¬/Tag):"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
Fokussiere dich auf 1-2 Anzeigengruppen statt 10"}),e.jsx("li",{children:"â
Nutze Geo-Targeting (nur die profitabelste Stadt)"}),e.jsx("li",{children:"â
Nutze Zeitplanung (nur die profitabelste Tageszeit)"}),e.jsx("li",{children:"â
Starte mit genau passenden [keywords] für maximale Kontrolle"})]}),e.jsxs("div",{className:"bg-green-50 dark:bg-green-950/20 border-l-4 border-green-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-green-900 dark:text-green-200 mb-2",children:"â
Realistisches Beispiel:"}),e.jsx("p",{className:"mb-0 text-green-800 dark:text-green-300",children:"Mit 10â¬/Tag und guter Optimierung sind 50-100 Conversions pro Monat absolut machbar â vorausgesetzt, deine Keywords sind nicht zu teuer und deine Conversion Rate ist gut (mind. 2-3%)."})]}),e.jsx("h3",{id:"kampagne-veroeffentlichen",children:"4.16 Kampagne überprüfen und veröffentlichen"}),e.jsx("p",{children:"Letzte Schritte! Google zeigt dir jetzt eine Zusammenfassung deiner Kampagne. Prüfe alle Einstellungen:"}),e.jsxs("div",{className:"my-8",children:[e.jsx("img",{src:j_,alt:"Google Ads Kampagne überprüfen und veröffentlichen",className:"w-full max-w-3xl mx-auto rounded-lg shadow-md"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center mt-2 italic",children:"Ãberprüfe alle Einstellungen ein letztes Mal, bevor du die Kampagne veröffentlichst"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Checkliste vor dem Veröffentlichen:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
Conversion-Tracking eingerichtet und getestet?"}),e.jsx("li",{children:"â
Enhanced Conversions aktiviert?"}),e.jsx("li",{children:"â
Partner-Netzwerke deaktiviert?"}),e.jsx("li",{children:'â
Standort-Option auf "Präsenz" gestellt?'}),e.jsx("li",{children:"â
Mindestens 2-3 Anzeigen pro Anzeigengruppe?"}),e.jsx("li",{children:"â
Budget ausreichend für die Gebotsstrategie?"}),e.jsx("li",{children:"â
Alle Anzeigen-Assets hinzugefügt?"}),e.jsx("li",{children:"â
Mobile Vorschau gecheckt?"})]}),e.jsxs("p",{children:["Wenn alles passt: Klicke auf ",e.jsx("strong",{children:'"Kampagne veröffentlichen"'}),"! ð"]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Was passiert jetzt?"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:'Google prüft deine Anzeigen (dauert normalerweise 1-24 Stunden). Währenddessen siehst du den Status "In Prüfung". Sobald genehmigt, startet deine Kampagne und die Lernphase beginnt (ca. 7-14 Tage).'})]}),e.jsx("h2",{id:"best-practices",children:"2026 Best Practices & Pro-Tipps"}),e.jsx("p",{children:"Du hast jetzt gelernt, wie man eine Google Ads Kampagne erstellt. Lass uns noch die wichtigsten Best Practices für 2026 durchgehen â diese Tipps stammen aus über 8 Jahren Agenturerfahrung und verwalten von über 5 Millionen ⬠Adspend."}),e.jsx("h3",{children:"1. Audience-First statt Keyword-First"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Der alte Ansatz:"})," Keyword-Liste erstellen â Kampagne bauen â hoffen"]}),e.jsx("p",{children:e.jsx("strong",{children:"Der 2026-Ansatz:"})}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Customer Match Listen aufbauen"})," (E-Mail-Adressen deiner Bestandskunden hochladen)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Similar Audiences erstellen"})," (Google findet ähnliche Nutzer)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zielgruppensegmente zur Beobachtung"})," hinzufügen (siehst im Reporting welche Segmente besser performen)"]}),e.jsx("li",{children:e.jsx("strong",{children:"Keywords als Trigger, Zielgruppen als Filter"})})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Pro-Tipp:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:"Nutze die Customer Match Liste in der Gebotsanpassung. Bestandskunden können z.B. -50% Gebot bekommen, während Similar Audiences +20% bekommen."})]}),e.jsx("h3",{children:"2. Negative Keywords: Deine heimlichen Helden"}),e.jsxs("p",{children:["Negative Keywords sparen dir Geld. ",e.jsx("strong",{children:"Viel Geld."})]}),e.jsx("p",{children:e.jsx("strong",{children:"Pflicht-Negative Keywords für E-Commerce:"})}),e.jsxs("div",{className:"bg-gray-100 dark:bg-gray-800 p-4 rounded-lg my-6 font-mono text-sm",children:["gratis, kostenlos, free, gebraucht, defekt, reparatur,",e.jsx("br",{}),"anleitung, diy, selber machen, ebay, amazon, alternative,",e.jsx("br",{}),"test, vergleich, erfahrung"]}),e.jsx("p",{children:e.jsx("strong",{children:"B2B / Leadgen Negative Keywords:"})}),e.jsxs("div",{className:"bg-gray-100 dark:bg-gray-800 p-4 rounded-lg my-6 font-mono text-sm",children:["job, karriere, stellenangebot, ausbildung, gehalt,",e.jsx("br",{}),"wikipedia, definition, was ist, gratis, kostenlos"]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Pro-Tipp:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:"Nutze den Listen-Manager für negative Keywords. Erstelle Listen nach Themen und wende sie auf mehrere Kampagnen gleichzeitig an. Das spart enorm Zeit!"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Dein wöchentlicher Rhythmus:"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Woche
4691:"})," Täglich in Suchbegriffsbericht schauen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Woche 2-4:"})," Alle 2-3 Tage schauen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ab Woche 5:"})," Wöchentlich schauen"]})]}),e.jsx("h3",{children:"3. Performance Max: Wann solltest du wechseln?"}),e.jsxs("p",{children:["Performance Max ist verlockend, aber nicht immer die beste Wahl. Für mehr Details, lies unseren Guide zu"," ",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen Kampagnen"}),"."]}),e.jsx("p",{children:e.jsx("strong",{children:"â
PMax ist gut, wenn:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Du hast mind. 50 Conversions/Monat in Suchkampagnen"}),e.jsx("li",{children:"Du hast gutes Bildmaterial (mind. 10-15 Assets)"}),e.jsx("li",{children:"Du bist bereit, Kontrolle abzugeben"}),e.jsx("li",{children:"Du willst alle Google-Netzwerke nutzen"})]}),e.jsx("p",{children:e.jsx("strong",{children:"â PMax vermeiden, wenn:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Du startest gerade erst (keine Datenbaseline)"}),e.jsx("li",{children:"Du bist in Leadgen tätig (Spam-Leads sind ein Problem)"}),e.jsx("li",{children:"Du brauchst genaue Kontrolle über Placement"}),e.jsx("li",{children:"Du hast ein sehr spezielles Nischenprodukt"})]}),e.jsx("h3",{children:"4. Conversion-Tracking 2.0: Server-Side ist die Zukunft"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Browser-Tracking wird immer unzuverlässiger (Safari ITP, Firefox ETP, Cookie-Banner)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Die Lösung:"})," Server-Side Tracking"]}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Was:"})," Conversion-Daten werden über deinen Server an Google geschickt, nicht vom Browser"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Vorteil:"})," Bis zu 30% mehr erfasste Conversions"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kosten:"})," Setup-Aufwand ist höher, aber es lohnt sich"]})]}),e.jsxs("p",{children:["Für Shopify-Nutzer empfehlen wir ProfitMetrics (50% Rabatt für AdsHero-Kunden) â mehr dazu in unserem"," ",e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:"Shopify Conversion Tracking Guide"}),"."]}),e.jsx("h3",{children:"5. A/B-Testing: Systematisch besser werden"}),e.jsx("p",{children:e.jsx("strong",{children:"Was testen?"})}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Anzeigentexte:"})," Mind. 3 Anzeigen pro Anzeigengruppe"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Landing Pages:"})," Split-Test mit Google Optimize"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gebotsstrategien:"})," Ziel-CPA vs. Conversions maximieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Audiences:"})," Mit vs. ohne Zielgruppensegmente"]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Wie testen?"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Nutze Kampagnen-Experimente (im Google Ads Interface)"}),e.jsx("li",{children:"Lasse Tests mind. 2-4 Wochen laufen"}),e.jsx("li",{children:"Brauche mind. 100 Conversions für statistisch signifikante Ergebnisse"}),e.jsx("li",{children:"Teste nur EINE Variable zur Zeit"})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Pro-Tipp:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:"Dokumentiere alle Tests in einem Google Sheet. Was du nicht misst, kannst du nicht verbessern."})]}),e.jsx("h2",{id:"haeufige-fehler",children:"Häufige Fehler vermeiden"}),e.jsx("p",{children:"Selbst erfahrene Marketer machen diese Fehler. Lerne aus ihren Fehlern:"}),e.jsx("h3",{children:"â Fehler #1: Zu früh mit Smart Bidding starten"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"}),' Du startest eine neue Kampagne und stellst sofort auf "Ziel-CPA" ein.']}),e.jsxs("p",{children:[e.jsx("strong",{children:"Warum schlecht:"})," Smart Bidding braucht Daten. Ohne Conversion-Baseline weià Google nicht, wer deine Zielgruppe ist."]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lösung:"})}),e.jsxs("ol",{children:[e.jsx("li",{children:'Starte mit "Conversions maximieren" (ohne Ziel-CPA)'}),e.jsx("li",{children:"Warte auf mindestens 15-30 Conversions"}),e.jsx("li",{children:"DANN wechsle zu Ziel-CPA oder Ziel-ROAS"})]}),e.jsx("h3",{children:"â Fehler #2: Partner-Netzwerke aktiviert lassen"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"}),' Du lässt "Suchnetzwerk-Partner einbeziehen" aktiviert.']}),e.jsx("p",{children:e.jsx("strong",{children:"Warum schlecht:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Deine Anzeigen erscheinen auf fragwürdigen Websites"}),e.jsx("li",{children:"Beispiel: eBay Kleinanzeigen (siehe Screenshot oben)"}),e.jsx("li",{children:"Oft schlechte Conversion-Rates"}),e.jsx("li",{children:"Verschwendet Budget"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Die Lösung:"}),' â
IMMER "Suchnetzwerk-Partner einbeziehen" deaktivieren!']}),e.jsx("h3",{children:"â Fehler #3: Nur eine Anzeige pro Anzeigengruppe"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du erstellst nur eine einzige Anzeige und lässt sie laufen."]}),e.jsx("p",{children:e.jsx("strong",{children:"Warum schlecht:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Keine A/B-Tests = kein Lernen"}),e.jsx("li",{children:"Google kann nicht optimieren"}),e.jsx("li",{children:"Du lässt Geld auf dem Tisch liegen"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lösung:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
MINIMUM 2 Anzeigen pro Anzeigengruppe"}),e.jsx("li",{children:"â
OPTIMAL 3-4 Anzeigen pro Anzeigengruppe"}),e.jsx("li",{children:'â
Stelle "Anzeigenrotation" auf "Optimieren" (Standard)'})]}),e.jsx("h3",{children:"â Fehler #4: Budget zu niedrig für Gebotsstrategie"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du hast 5⬠Tagesbudget, aber deine durchschnittlichen CPCs sind 2â¬."]}),e.jsx("p",{children:e.jsx("strong",{children:"Warum schlecht:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Google braucht mindestens 2-3x deinen Ziel-CPA als Tagesbudget"}),e.jsx("li",{children:"Sonst ist die Lernphase extrem langsam oder schlägt fehl"}),e.jsx("li",{children:"Du verschwendest Zeit"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lösung:"})}
469),e.jsxs("div",{className:"bg-blue-100 dark:bg-blue-900/30 p-6 rounded-lg my-6",children:[e.jsx("p",{className:"text-lg font-bold mb-2",children:"Formel: Tagesbudget = Ziel-CPA à 2-3"}),e.jsx("p",{className:"text-sm mb-0",children:"Beispiel: Ziel-CPA 10⬠â Mindest-Tagesbudget 20-30â¬"})]}),e.jsx("h3",{children:"â Fehler #5: Mobile Anzeigenvorschau ignorieren"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du schreibst Anzeigen am Desktop und testest sie nicht auf Mobile."]}),e.jsx("p",{children:e.jsx("strong",{children:"Warum schlecht:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"60-70% der Suchanfragen kommen von Mobile"}),e.jsx("li",{children:"Deine Headlines werden auf Mobile abgeschnitten"}),e.jsx("li",{children:"CTR bricht ein"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lösung:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"â
Nutze die Mobile-Vorschau beim Erstellen"}),e.jsx("li",{children:"â
Teste Headlines auf Länge (max. 30 Zeichen ideal)"}),e.jsx("li",{children:"â
Stelle sicher, dass die Kernbotschaft in den ersten 2 Headlines steht"})]}),e.jsxs("div",{className:"bg-blue-50 dark:bg-blue-950/20 border-l-4 border-blue-500 p-6 my-6 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold text-blue-900 dark:text-blue-200 mb-2",children:"ð¡ Pro-Tipp:"}),e.jsx("p",{className:"mb-0 text-blue-800 dark:text-blue-300",children:"Schreibe zuerst für Mobile, dann für Desktop â nicht andersherum."})]}),e.jsx("h3",{children:'â Fehler #6: Kampagne "Set & Forget"'}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du erstellst die Kampagne, lässt sie laufen und schaust 4 Wochen nicht rein."]}),e.jsx("p",{children:e.jsx("strong",{children:"Warum schlecht:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Google Ads braucht Optimierung"}),e.jsx("li",{children:"Verschwendetes Budget summiert sich"}),e.jsx("li",{children:"Konkurrenz überholt dich"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lösung â Der Optimierungs-Rhythmus:"})}),e.jsx("p",{children:e.jsx("strong",{children:"Woche 1 (täglich checken):"})}),e.jsxs("ul",{children:[e.jsx("li",{children:'Läuft die Kampagne? (Status "Aktiv")'}),e.jsx("li",{children:"Gibt es Impressionen?"}),e.jsx("li",{children:"Sind die CPCs im erwarteten Rahmen?"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Woche 2-4 (alle 2-3 Tage):"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Suchbegriffsbericht checken"}),e.jsx("li",{children:"Anzeigen-Performance checken (welche performed besser?)"}),e.jsx("li",{children:"Erste Conversion-Daten auswerten"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Ab Woche 5 (wöchentlich):"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Performance vs. Ziele vergleichen"}),e.jsx("li",{children:"A/B-Tests auswerten"}),e.jsx("li",{children:"Neue Tests starten"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Monatlich:"})}),e.jsxs("ul",{children:[e.jsx("li",{children:"Gesamt-Account Review"}),e.jsx("li",{children:"Budget-Allokation zwischen Kampagnen"}),e.jsx("li",{children:"Neue Kampagnen planen"})]}),e.jsx("div",{className:"my-12",children:e.jsx(ie,{})}),e.jsx("h2",{id:"fazit",children:"Fazit & Nächste Schritte"}),e.jsx("p",{children:"Glückwunsch! ð Du hast jetzt gelernt, wie man eine Google Ads Suchkampagne von A bis Z erstellt â nach dem aktuellen Stand von 2026."}),e.jsx("h3",{children:"Was du heute gelernt hast:"}),e.jsxs("ul",{children:[e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Kampagnen-Setup:"})," Von der ersten Einstellung bis zur Veröffentlichung"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"2026 Updates:"})," AI Max, Smart Bidding, Enhanced Conversions, weitgehend passende Keywords"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Best Practices:"})," Audience-First, Budget-Hacks, Conversion-Tracking 2.0, A/B-Testing"]}),e.jsxs("li",{children:["â
",e.jsx("strong",{children:"Fehler vermeiden:"})," Die 6 häufigsten Anfängerfehler und wie du sie umgehst"]})]}),e.jsx("h3",{children:"Deine nächsten Schritte:"}
469),e.jsx("p",{children:e.jsx("strong",{children:"Woche 1: Live gehen"})}),e.jsxs("ol",{children:[e.jsx("li",{children:"Erstelle deine erste Kampagne (folge diesem Tutorial 1:1)"}),e.jsx("li",{children:"Setze ein konservatives Budget (lieber klein starten)"}),e.jsx("li",{children:"Prüfe täglich: Läuft die Kampagne? Gibt es Impressionen?"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Woche 2-4: Optimieren"})}),e.jsxs("ol",{children:[e.jsx("li",{children:"Suchbegriffsbericht täglich checken"}),e.jsx("li",{children:"Negative Keywords hinzufügen"}),e.jsx("li",{children:"Anzeigen-Performance beobachten"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Monat 2: Skalieren"})}),e.jsxs("ol",{children:[e.jsx("li",{children:"Was funktioniert? â Mehr Budget"}),e.jsx("li",{children:"Was funktioniert nicht? â Pausieren"}),e.jsx("li",{children:"Neue Tests starten (neue Keywords, neue Anzeigen, neue Zielgruppen)"})]}),e.jsx("h3",{children:"Brauchst du Hilfe?"}),e.jsx("p",{children:"Du hast jetzt das Wissen â aber Google Ads kann überwältigend sein. Das ist normal!"}),e.jsx("p",{children:e.jsx("strong",{children:"Kostenlose Ressourcen:"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:["ðº ",e.jsx("a",{href:"https://youtube.com/@adshero",target:"_blank",rel:"noopener noreferrer",children:"AdsHero YouTube Kanal"})," â 200+ kostenlose Videos"]}),e.jsxs("li",{children:["ð ",e.jsx(E,{to:"/blog",children:"AdsHero Blog"})," â Detaillierte Guides zu allen Themen"]})]}),e.jsx("p",{children:e.jsx("strong",{children:"Brauchst du 1:1 Unterstützung?"})}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx(E,{to:"/profit-analyse",children:"Gratis E-Com Google Ads Check"})," â Wir analysieren deinen Account kostenlos"]}),e.jsxs("li",{children:[e.jsx("a",{href:"https://adshero.de#case-studies",target:"_blank",rel:"noopener noreferrer",children:"Case Studies"})," â Wie wir anderen E-Commerce Shops geholfen haben"]})]}),e.jsx("h3",{children:"Ein letzter Tipp:"}),e.jsx("p",{children:"Google Ads ist kein Sprint, sondern ein Marathon. Die ersten 2-3 Monate sind Lernphase â für dich UND für Google."}),e.jsx("p",{children:e.jsx("strong",{children:"Sei geduldig. Optimiere systematisch. Die Ergebnisse kommen."})}),e.jsx("p",{children:"Viel Erfolg! ð"}),e.jsxs("div",{className:"bg-primary/5 border-l-4 border-primary p-6 my-8 rounded-r-lg",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Hast du Fragen zu diesem Tutorial?"}),e.jsxs("p",{className:"mb-0",children:["Schreib uns auf"," ",e.jsx("a",{href:"https://instagram.com/adshero.de",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Instagram"})," ","oder per"," ",e.jsx("a",{onClick:()=>se("email_click",{location:"GoogleAdsTutorial"}),href:"mailto:[email protected]",className:"text-primary hover:underline",children:"E-Mail"})," ","â wir helfen gerne!"]})]})]})})]})},y_="/assets/featured-CesdZ_oh.webp",w_="/assets/anzeigeneffektivitaet-DyaPns6P.png",k_="/assets/asset-auswertung-BMbyKcdc.png",N_="/assets/asset-gruppe-pfad-BuQ4xSt6.png",_x="/assets/asset-gruppe-bilder-D2uWt5ck.png",S_="/assets/asset-gruppe-cta-B9AoTj4C.png",A_="/assets/asset-gruppe-finale-url-pEQLx-T0.png",C_="/assets/asset-gruppe-sitelinks-osAoHWKe.png",P_="/assets/asset-gruppe-logos-BPXVHKOt.png",E_="/assets/asset-gruppe-textzeilen-DLESFLX4.png",T_="/assets/asset-gruppe-ueberschriften-BBNkTU_I.png",z_="/assets/asset-gruppe-unternehmensname-C5TFOvg_.png",Mx="/assets/asset-gruppe-videos-dwJwvz98.png",D_="/assets/asset-gruppe-weitere-typen-ChkmF0QM.png",Ox="/assets/asset-gruppe-name-url-DixQz180.png",__="/assets/asset-gruppen-details-CcrD1-_0.png",M_="/assets/assets-google-ai-B2M_uYjG.png",O_="/assets/conversion-aktionen-DtfcjDY9.png",R_="/assets/conversion-zielvorhaben-leads-D69zLSWj.webp",G_="/assets/conversion-zielvorhaben-kaeufe-cQuGvhcs.webp",Rx="/assets/ecommerce-kampagne-ueberpruefen-2klCvp12.webp",I_="/assets/eintragsgruppen-aufrufen-BZfvg-GV.png",Gx="/assets/eintragsgruppen-auswaehlen-BoblsG5b.webp",Ix="/assets/erweiterung-finale-url-BenfCEsa.png",Bx="/assets/fertige-asset-gruppen-BeTYQIn6.png",Kx="/assets/gebotsstrategie-conversion-wert-CRTHiTXq.webp",B_="/assets/google-anzeigen-vorschau-BTXxizOP.png",Fx="/assets/merchant-center-konto-UsQk3Hdv.png",K_="/assets/google-netzwerke-poiyAhIW.webp",F_="/assets/interessen-demografische
469-merkmale-Dybr2BAw.png",L_="/assets/kundenakquisition-optimieren-D9DUGix7.webp",W_="/assets/kampagnenziel-leads-D7mTu90l.webp",V_="/assets/leadgenerierung-kundenakquisition-7DjSAWW-.png",U_="/assets/leistungsstaerkste-kombinationen-YV4NaIt8.png",$_="/assets/neue-asset-gruppe-Brvqre1j.webp",H_="/assets/neues-zielgruppensignal-Bz6sbGLA.png",Z_="/assets/budget-vergeben-BkCWFi0f.png",q_="/assets/kampagnenname-vergeben-3gudvWAI.png",Y_="/assets/leadgen-gebotsstrategie-RnLxGFCV.png",J_="/assets/sprache-standorte-EyXVJaV0.webp",Q_="/assets/kampagne-ueberpruefen-BB_2pvGy.png",X_="/assets/markenausschluesse-ML703eMB.png",eM="/assets/automatisch-erstellte-assets-kT_fUwFy.png",tM="/assets/statistiken-DziIF6lS.png",nM="/assets/neue-kampagne-CkyomEmS.png",rM="/assets/kampagnentyp-pmax-Bp5Z-3Jq.png",sM="/assets/kampagne-url-name-BwXhUeKC.png",iM="/assets/ziel-umsaetze-D1zjGg4G.webp",aM="/assets/suchthemen-CkpeE2sr.png",Lx="/assets/sprachen-festlegen-CRQYmllS.webp",lM="/assets/standorte-festlegen-DeN7jsUm.webp",Wx="/assets/standorte-pmax-Dvymocwh.webp",oM="/assets/statistiken-suchbegriffe-FyWPzona.png",dM="/assets/eintragsgruppen-ebenen-BCsS44Ts.png",cM="/assets/urls-ausschliessen-dUa4ZCPp.webp",uM="/assets/zielgruppensegmente-B0luNcoc.png",hM="/assets/zielgruppensignal-bestandteile-D3yQ1ips.png",mM="/assets/zielgruppensignal-erstellen-CeOr83NX.png",gM="/assets/zielgruppensignal-weitere-54-9CrmV.png",Vx=t=>{const n={Januar:"01",Februar:"02",März:"03",April:"04",Mai:"05",Juni:"06",Juli:"07",August:"08",September:"09",Oktober:"10",November:"11",Dezember:"12"},r=t.split(" ");if(r.length===3){const s=r[0].replace(".","").padStart(2,"0"),i=n[r[1]]||"01";return`${r[2]}
469-${i}-${s}`}return t},pM=()=>{const t=ss("performance-max-kampagnen");if(!t)return null;const n=Vx(t.date),r=t.modifiedDate?Vx(t.modifiedDate):n,s={featured:y_,anzeigeneffektivitaet:w_,assetAuswertung:k_,assetGruppePfad:N_,assetGruppeBilder:_x,assetGruppeCta:S_,assetGruppeFinaleUrl:A_,assetGruppeSitelinks:C_,assetGruppeLogos:P_,assetGruppeTextzeilen:E_,assetGruppeUeberschriften:T_,assetGruppeUnternehmensname:z_,assetGruppeVideos:Mx,assetGruppeWeitereTypen:D_,assetGruppeNameUrl:Ox,assetGruppenDetails:__,assetsGoogleAi:M_,conversionAktionen:O_,conversionZielvorhabenLeads:R_,conversionZielvorhabenKaeufe:G_,ecommerceKampagneUeberpruefen:Rx,eintragsgruppenAufrufen:I_,eintragsgruppenAuswaehlen:Gx,erweiterungFinaleUrl:Ix,fertigeAssetGruppen:Bx,gebotsstrategieConversionWert:Kx,googleAnzeigenVorschau:B_,merchantCenterKonto:Fx,googleNetzwerk:K_,interessenDemografische:F_,kundenakquisitionOptimieren:L_,kampagnenzielLeads:W_,leadgenKundenakquisition:V_,leistungsstaerksteKombinationen:U_,neueAssetGruppe:$_,zielgruppensignal:H_,budget:Z_,kampagnennameVergeben:q_,leadgenGebotsstrategie:Y_,spracheStandorte:J_,kampagneUeberpruefen:Q_,markenausschluesse:X_,automatischErstellteAssets:eM,statistiken:tM,neueKampagne:nM,kampagnentypPmax:rM,kampagneUrlName:sM,zielUmsaetze:iM,suchthemen:aM,sprachenFestlegen:Lx,standorteFestlegen:lM,standortePmax:Wx,statistikenSuchbegriffe:oM,eintragsgruppenEbenen:dM,urlsAusschliessen:cM,zielgruppensegmente:uM,zielgruppensignalBestandteile:hM,zielgruppensignalErstellen:mM,zielgruppensignalWeitere:gM,assetGruppe:Bx,finaleUrl:Ix,assetGruppeErstellen:Ox,bilder:_x,videos:Mx,ecommerce:Rx,merchantCenter:Fx,gebotsstrategie:Kx,eintragsgruppen:Gx,standorte:Wx,sprache:Lx,dreiSaeulen:"https://adshero.de/wp-content/uploads/2022/12/3-Saeulen-Performance-Max.png"},i={"@context":"https://schema.org","@type":"Article",headline:t.title,description:t.description,image:s.featured,author:{"@type":"Person",name:"Gordon Kuckluck",url:"https://adshero.de"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:n,dateModified:r,mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/performance-max-kampagnen"}},a={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Performance Max Kampagnen",item:"https://adshero.de/performance-max-kampagnen"}]},l={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was sind Performance Max Kampagnen?",acceptedAnswer:{"@type":"Answer",text:"Performance Max Kampagnen sind ein vollautomatisierter Kampagnentyp in Google Ads, der alle Google-Netzwerke (Suche, Shopping, Display, YouTube, Gmail, Maps, Discovery) in einer einzigen Kampagne vereint. Google nutzt KI und Machine Learning, um deine Anzeigen dort auszuspielen, wo sie die beste Performance erzielen."}},{"@type":"Question",name:"Wie lange dauert die Lernphase bei Performance Max?",acceptedAnswer:{"@type":"Answer",text:"Die Lernphase bei Performance Max Kampagnen dauert in der Regel 45-90 Tage. In dieser Zeit sammelt Google Daten und optimiert die Kampagne kontinuierlich. Du solltest in dieser Phase keine groÃen Ãnderungen vornehmen und Geduld mitbringen."}},{"@type":"Question",name:"Wie viel Budget brauche ich für Performance Max?",acceptedAnswer:{"@type":"Answer",text:"Das empfohlene Tagesbudget sollte das 10-15-fache deines Ziel-CPA betragen. Bei einem Ziel-CPA von 20⬠sind das 200-300⬠pro Tag, also 6.000-9.000⬠pro Monat. Bei geringerem Budget fehlen Google die nötigen Daten zur Optimierung."}},{"@type":"Question",name:"Sollte ich meine Brand bei P-Max ausschlieÃen?",acceptedAnswer:{"@type":"Answer",text:"Das AusschlieÃen deiner eigenen Marke bei P-Max kann sinnvoll sein, wenn du den Fokus auf die Neukundengewinnung legen möchtest. So verhinderst du, dass Budget für Personen ausgegeben wird, die dich bereits kennen und n
469ach deiner Marke suchen. Diese könntest du mit einer separaten Brand-Kampagne effizienter erreichen."}},{"@type":"Question",name:"Performance Max oder Standard Shopping â was ist besser?",acceptedAnswer:{"@type":"Answer",text:"Es kommt auf deine Situation an: Standard Shopping bietet mehr Kontrolle und Transparenz, ist aber aufwändiger zu verwalten. Performance Max ist automatisierter und kann alle Google-Netzwerke nutzen. Für die meisten E-Commerce-Shops empfehlen wir eine Kombination: P-Max als Hauptkampagne und Standard Shopping für spezifische Produktgruppen oder Tests."}},{"@type":"Question",name:"Wie viele Asset-Gruppen sollte ich erstellen?",acceptedAnswer:{"@type":"Answer",text:"Die Anzahl der Asset-Gruppen hängt von deinem Angebot und deinen Zielgruppen ab. Grundregel: Erstelle eine Asset-Gruppe pro Zielgruppe oder Produktkategorie, die eine unterschiedliche Ansprache benötigt. Bei kleinem Budget reichen 1-3 Asset-Gruppen, bei gröÃerem Budget können es mehr sein. Maximal sind 100 Asset-Gruppen pro Kampagne möglich."}},{"@type":"Question",name:"Kann Performance Max meine Search-Kampagnen kannibalisieren?",acceptedAnswer:{"@type":"Answer",text:"Ja, das ist möglich. Performance Max kann auch im Suchnetzwerk ausgespielt werden und dabei mit deinen bestehenden Search-Kampagnen konkurrieren. Google priorisiert dabei P-Max, wenn der Ad Rank höher ist. Um Kannibalisierung zu vermeiden, solltest du Brand-Keywords bei P-Max ausschlieÃen und deine Search-Kampagnen auf spezifische, strategisch wichtige Keywords fokussieren."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:t.title}),e.jsx("meta",{name:"description",content:t.description}),e.jsx("meta",{name:"keywords",content:"Performance Max, P-Max, Google Ads, Performance Max Kampagnen, Asset-Gruppen, Zielgruppensignale, E-Commerce, Leadgenerierung, Google Shopping, KI, Machine Learning, Gebotsstrategie, Conversion, ROAS, CPA"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/performance-max-kampagnen"}),e.jsx("meta",{property:"og:title",content:t.title}),e.jsx("meta",{property:"og:description",content:t.description}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/performance-max-kampagnen"}),e.jsx("meta",{property:"og:image",content:s.featured}),e.jsx("meta",{property:"og:locale",content:"de_DE"}),e.jsx("meta",{property:"article:published_time",content:n}),e.jsx("meta",{property:"article:modified_time",content:r}),e.jsx("meta",{property:"article:author",content:"Gordon Kuckluck"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:t.title}),e.jsx("meta",{name:"twitter:description",content:t.description}),e.jsx("meta",{name:"twitter:image",content:s.featured}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]}),e.jsxs(nt,{title:t.title,date:t.date,modifiedDate:t.modifiedDate,readingTime:t.readingTime,author:{name:"Gordon Kuckluck",role:"Founder & Google Ads Experte",image:"/src/assets/gordon-kuckluck.webp",bio:"Gordon ist Gründer von AdsHero und Google Ads Experte mit über 7 Jahren Erfahrung im Performance Marketing."},children:[e.jsx("figure",{className:"mb-8"}),e.jsx("p",{className:"lead text-xl text-muted-foreground mb-6",children:"Performance Max Kampagnen sind der neue Standard bei Google Ads. Dieser ultimative Leitfaden zeigt dir Schritt für Schritt, wie du P-Max Kampagnen erstellst, optimierst und die häufigsten Fehler vermeidest â sowohl für E-Commerce als auch für Leadgenerierung."}),e.jsx("p",{className:"mb-6",children:"Es ist vermutlich keine Ãberraschung, dass Google seinen Werbedienst immer mehr in Richtung KI und Automatisierung entwickelt. Performance Max Kampagnen sind die (vorläufige) Spitze dieser Entwicklung â und 2026 ausgereifter denn je."}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Hinweis:"}
469)," Wir versuchen diesen Artikel stets aktuell zu halten. Die Google Ads Oberfläche ändert sich ständig â sollten manche Punkte in anderer Reihenfolge auftauchen oder Bezeichnungen sich geändert haben, lass dich davon nicht irritieren."]}),e.jsx("h2",{id:"was-sind-performance-max-kampagnen",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Was sind Performance Max Kampagnen?"}),e.jsx("p",{className:"mb-6",children:'Um zu verstehen, was Performance Max Kampagnen sind, müssen wir zunächst verstehen, wie riesig das Google-Ãkosystem ist. Zu den âAusläufern" von Google gehören:'}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Die Google Suche (Suchnetzwerk)"}),e.jsx("li",{children:"Google Shopping (Shopping-Netzwerk)"}),e.jsx("li",{children:"Das Google Display-Netzwerk"}),e.jsx("li",{children:"YouTube und YouTube Shorts (Videonetzwerk)"}),e.jsx("li",{children:"Gmail"}),e.jsx("li",{children:"Apps (Google Playstore)"}),e.jsx("li",{children:"Google Maps"}),e.jsx("li",{children:"Google Discover"})]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.googleNetzwerk,alt:"Die verschiedenen Google Netzwerke",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Die verschiedenen Google Netzwerke, die P-Max vereint"})]}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Performance Max vereint alle diese Netzwerke in einem Kampagnentyp."})," Wenn du eine P-Max Kampagne erstellst, fütterst du sie mit allen digitalen Materialien (Assets), die zum Erstellen verschiedener Anzeigentypen erforderlich sind: Texte, Logos, Bilder und Videos."]}),e.jsx("p",{className:"mb-6",children:"Google erstellt dann automatisch Anzeigen daraus und spielt sie über das gesamte Google-Ãkosystem aus â immer dort, wo die KI eine Conversion für wahrscheinlich hält."}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Kurz zusammengefasst:"}),e.jsx("p",{children:"Du gibst Google ein Ziel, Assets und ein Zielgruppensignal. Google erstellt daraus automatisch Anzeigen und spielt sie im gesamten Google-Kosmos aus, um dein Ziel zu erreichen â ohne dein aktives Zutun."})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"NEU 202
4696: Mehr Kontrolle und Transparenz"}),e.jsx("p",{className:"mb-6",children:"Google hat auf das Feedback der Werbetreibenden reagiert und P-Max mit wichtigen Features ausgestattet:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Channel-Level Reporting:"})," Endlich siehst du, welche Netzwerke (Search, YouTube, Display, etc.) wie performen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Negative Keywords:"})," Du kannst jetzt Keywords auf Kampagnenebene ausschlieÃen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Brand Exclusions:"})," Einfaches AusschlieÃen deiner eigenen Marke und Wettbewerber"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Search Term Insights:"})," Bessere Einblicke in die Suchbegriffe, die Conversions auslösen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Placement Reports:"})," Sieh, auf welchen Websites und YouTube-Kanälen deine Anzeigen erscheinen"]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"die-3-saeulen",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Die 3 Säulen von Performance Max Kampagnen"}),e.jsx("p",{className:"mb-6",children:"Performance Max Kampagnen basieren auf drei grundlegenden Säulen, die du verstehen musst:"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.dreiSaeulen,alt:"Die 3 Säulen von Performance Max: Ziele, Assets, Zielgruppensignale",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Die 3 Säulen: Ziele, Assets und Zielgruppensignale"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"1. Ziele (Conversion-Aktionen)"}),e.jsx("p",{className:"mb-6",children:"Zum ersten Mal funktionieren Google Ads wirklich zielorientiert. Du legst deine Conversion-Aktionen an und Google findet eigenständig die Zielgruppen, die dein Ziel erreichen."}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.conversionAktionen,alt:"Primäre und sekundäre Conversion Aktionen in Google Ads",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Primäre Ziele werden zur Optimierung genutzt, sekundäre nur zur Beobachtung"})]}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Wichtig:"})," Je mehr Daten zu deiner Conversion-Aktion bereits vorliegen, desto schneller und besser kann die KI optimieren."]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"2. Assets (Werbemittel)"}),e.jsx("p",{className:"mb-6",children:"Bei P-Max erstellst du keine fertigen Anzeigen, sondern stellst Google eine Sammlung von Assets zur Verfügung:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Bilder:"})," Querformat (1.91:1), Quadrat (1:1), Hochformat (4:5)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Logos:"})," Quadrat und Querformat"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Videos:"})," Mindestens 10 Sekunden (empfohlen: eigene Videos)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Anzeigentitel:"})," Max. 30 Zeichen (mindestens 3, maximal 15)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Lange Anzeigentitel:"})," Max. 90 Zeichen (mindestens 1, maximal 5)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Beschreibungen:"})," Max. 90 Zeichen (mindestens 2, maximal 5)"]})]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.assetGruppe,alt:"Fertige Asset-Gruppen in Performance Max",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"So sehen fertige Asset-Gruppen in P-Max aus"})]}),e.jsx("p",{className:"mb-6",children:"Google mischt diese Assets automatisch und erstellt daraus die verschiedenen Anzeigenformate für die jeweiligen Netzwerke. Die KI kann sogar in Echtzeit individuelle Anzeigen für einzelne Nutzer erstellen!"}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Erweiterung der finalen URL"}),e.jsx("p",{className:"mb-6",children:'StandardmäÃig ist die âErweiterung der finalen URL" aktiviert. Das bedeutet: Google darf selbst entscheiden, auf welche Seite deiner Website Nutzer geleitet werden â nicht nur auf die von dir angegebene finale URL.'}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.finaleUrl,alt:"Erweiterung der finalen URL in P-Max",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Die Einstellung zur Erweiterung der finalen URL"})]}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-yellow-500 p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Unsere Empfehlung:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"E-Commerce:"})," Aktiviert lassen â Google kann Nutzer zur passenden Produktseite leiten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Leadgenerierung:"})," Deaktivieren! Du willst, dass alle auf deine Optin-Seite kommen"]})]}),e.jsx("p",{className:"mt-2 text-sm",children:"Tipp: SchlieÃe auf jeden Fall Seiten wie Impressum und Datenschutz aus."})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"3. Zielgruppensignale"}),e.jsxs("p",{className:"mb-6",children:["Zielgruppensignale sind ",e.jsx("strong",{children:"keine harten Targeting-Vorgaben"}),' â sie sind nur âfreundliche Hinweise" an Google, wo es mit der Suche nac
469h Conversions beginnen soll.']}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.zielgruppensignal,alt:"Zielgruppensignal erstellen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Ein neues Zielgruppensignal erstellen"})]}),e.jsx("p",{className:"mb-6",children:"Die Bestandteile eines Zielgruppensignals sind:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Suchthemen:"})," Bis zu 25 Themen, die deine Zielgruppe googelt (auch Wettbewerber-Namen!)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Selbst erhobene Daten:"})," Kundenlisten, E-Mail-Listen, Remarketing-Listen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Interessen & demografische Merkmale:"})," Kaufbereite Zielgruppen, Lebensereignisse, Hobbys"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Demografische Angaben:"})," Geschlecht, Alter, etc."]})]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.suchthemen,alt:"Suchthemen im Zielgruppensignal",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Suchthemen im Zielgruppensignal hinzufügen"})]}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-green-500 p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:'Der âSpürhund Google" â ein Praxis-Beispiel:'}),e.jsx("p",{className:"mb-2",children:"Stell dir vor, du verkaufst Trockennahrung für Prepper (Notfallvorsorge). Du erstellst ein Zielgruppensignal mit typischen Prepper-Themen."}),e.jsx("p",{className:"mb-2",children:'Nach einiger Zeit meldet Google: âHey, ich habe festgestellt, dass auch Segler stark auf deine Anzeigen reagieren!"'}),e.jsx("p",{children:"Warum? Segler brauchen ebenfalls haltbare Nahrung für lange Törns. Diese Zielgruppe hättest du nie auf dem Radar gehabt â aber Google hat sie gefunden."})]}),e.jsx("h2",{id:"voraussetzungen",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Voraussetzungen für erfolgreiche P-Max Kampagnen"}),e.jsx("p",{className:"mb-6",children:"Performance Max Kampagnen funktionieren nur unter bestimmten Voraussetzungen. Hier ist, was du brauchst:"}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Für alle Unternehmen:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Angemessenes Budget:"})," Mindestens 10-15x dein Ziel-CPA pro Tag"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zeiterwartung:"})," 45-90 Tage für aussagekräftige Ergebnisse"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Hochwertige Website:"})," Gute Inhalte, SEO, mobile Optimierung"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Klares USP:"})," Was macht dich einzigartig?"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kunden-Avatare:"})," Je besser du deine Zielgruppe kennst, desto schneller lernst Google"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Fertige Assets:"})," Logos, Bilder, idealerweise Videos"]})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Budget-Empfehlung im Detail"}),e.jsxs("p",{className:"mb-6",children:["Das empfohlene Tagesbudget sollte das ",e.jsx("strong",{children:"10-15-fache deines Ziel-CPA"})," betragen:"]}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"min-w-full border-collapse border border-border",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Ziel-CPA"}),e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Tagesbudget"}),e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Monatsbudget"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border px-4 py-2",children:"20 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"200-300 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"6.000-9.000 â¬"})]}),e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("td",{className:"border border-border px-4 py-2",children:"50 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"500-750 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"15.000-22.500 â¬"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border px-4 py-2",children:"100 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"1.000-1.500 â¬"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"30.000-45.
469000 â¬"})]})]})]})}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Warum so viel?"})," Nur mit genügend Daten kann Google optimieren. Ohne Daten bleibt die KI blind."]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"NEU 2026: Consent Mode V2"}),e.jsx("p",{className:"mb-6",children:"Seit März 2024 ist der Consent Mode V2 für alle Google Ads Nutzer in der EU Pflicht. Das bedeutet:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Du brauchst einen korrekten Cookie-Consent-Banner"}),e.jsx("li",{children:"Der Consent Mode muss korrekt implementiert sein"}),e.jsx("li",{children:"Ohne Consent Mode werden deine Remarketing-Listen nicht mehr befüllt"}),e.jsx("li",{children:"Enhanced Conversions sind wichtiger denn je für akkurate Daten"})]}),e.jsx(ie,{}),e.jsx("h2",{id:"pmax-leadgenerierung",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Performance Max für Leadgenerierung â Schritt für Schritt"}),e.jsx("p",{className:"mb-6",children:"Wenn du Leads generieren möchtest (Anfragen, Newsletter-Anmeldungen, Downloads), ist diese Anleitung für dich."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 1: Neue Kampagne erstellen"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.neueKampagne,alt:"Neue Performance Max Kampagne erstellen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:'Klicke auf â+ Neue Kampagne"'})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:'Schritt 2: Ziel âLeads" auswählen'}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.kampagnenzielLeads,alt:"Kampagnenziel Leads auswählen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:'Wähle âLeads" als Kampagnenziel'})]}),e.jsx("p",{className:"mb-6",children:"Wähle dann die entsprechende Conversion-Aktion aus, auf die du optimieren möchtest (z.B. Formular-Absendung, Anruf, etc.)."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 3: Kampagnentyp Performance Max wählen"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.kampagnentypPmax,alt:"Kampagnentyp Performance Max auswählen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:'Wähle âPerformance Max" als Kampagnentyp'})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 4: Gebotsstrategie festlegen"}),e.jsxs("p",{className:"mb-6",children:["Für Leadgenerierung wähle ",e.jsx("strong",{children:'âConversions maximieren"'}),":"]}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ohne Ziel-CPA:"})," Wenn du noch wenig Daten hast (<50-100 Conversions)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Mit Ziel-CPA:"})," Wenn du bereits ausreichend Conversion-Daten hast"]})]}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-yellow-500 p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Wichtig:"}),e.jsx("p",{children:"Setze zu Beginn keinen Ziel-CPA, wenn noch wenig Daten vorliegen! Das würde das maschinelle Lernen bremsen. Erst ab 50-100 Conversions macht ein Ziel-CPA Sinn."})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 5: Kampagneneinstellungen"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.standorte,alt:"Standorte festlegen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Wähle die Zielstandorte für deine Kampagne"})]}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Standorte:"})," Wähle die Regionen, in denen du werben möchtest"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Sprache:"}),' Wähle âDeutsch" (nicht âAlle Sprachen"!)']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Automatisch erstellte Text-Assets:"})," Eher deaktivieren (noch nicht ausgereift auf Deutsch)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Finale URL Erweiterung:"})," ",e.jsx("strong",{children:"DEAKTIVIEREN!"})," (Bei Leadgen kritisch)"]}
469)]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 6: Asset-Gruppe erstellen"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.assetGruppeErstellen,alt:"Asset-Gruppe erstellen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Gib deiner Asset-Gruppe einen Namen und füge deine finale URL ein"})]}),e.jsx("p",{className:"mb-6",children:"Füge nun alle deine Assets hinzu:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Anzeigentitel (30 Zeichen):"})," Mindestens 3, optimal 5-10"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Lange Anzeigentitel (90 Zeichen):"})," Mindestens 1, optimal 3-5"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Beschreibungen:"})," Mindestens 2, eine mit 60 Zeichen, weitere mit 90 Zeichen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Bilder:"})," Mindestens 3, verschiedene Formate (1.91:1, 1:1, 4:5)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Logos:"})," Quadratisch und Querformat"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Videos:"}),' Optional, aber empfohlen (sonst erstellt Google automatisch âSlideshows")']})]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.bilder,alt:"Bilder zur Asset-Gruppe hinzufügen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Füge Bilder in verschiedenen Formaten hinzu"})]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.videos,alt:"Videos zur Asset-Gruppe hinzufügen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Verlinke deine YouTube-Videos oder lade eigene hoch"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 7: Zielgruppensignal hinzufügen"}),e.jsx("p",{className:"mb-6",children:"Erstelle ein detailliertes Zielgruppensignal mit:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Suchthemen, die deine Zielgruppe googelt"}),e.jsx("li",{children:"Selbst erhobene Daten (Kundenlisten, wenn vorhanden)"}),e.jsx("li",{children:"Relevante Interessen und demografische Merkmale"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 8: Budget festlegen"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.budget,alt:"Budget für P-Max Kampagne festlegen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Lege dein Tagesbudget fest (mindestens 10-15x Ziel-CPA)"})]}),e.jsx("p",{className:"mb-6",children:"Ignoriere Googles Vorschläge für höhere Budgets zu Beginn â sie sind oft übertrieben. Starte mit dem von uns empfohlenen Budget und beobachte die Entwicklung."}),e.jsx("h2",{id:"pmax-ecommerce",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Performance Max für E-Commerce â Schritt für Schritt"}),e.jsx("p",{className:"mb-6",children:"Performance Max Kampagnen haben Smart Shopping Kampagnen ersetzt und sind heute der Standard für E-Commerce bei Google Ads."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Voraussetzungen für E-Commerce"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Google Merchant Center:"})," Muss mit Google Ads verknüpft sein"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Produktfeed:"})," Aktuell und optimiert (Produktnamen, Beschreibungen, Bilder, Preise, GTINs)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ausreichender AOV:"})," Mindestens 50-60⬠durchschnittlicher Bestellwert empfohlen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion Tracking:"})," Kauf-Conversions mit dynamischem Wert"]})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 1-3: Kampagne erstellen"}),e.jsx("p",{className:"mb-6",children:'Erstelle eine neue Kampagne und wähle âUmsätze" als Ziel. Wähle dann âPerformance Max" als Kampagnentyp.'}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.ecommerce,alt:"Performance Max für E-Commerce",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Kampagnentyp für E-Commerce auswählen"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 4: Merchant Center verbinden"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.merchantCenter,alt:"Google Merchant Center auswählen",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Wähle dein verknüpftes Merchant Center Konto aus"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Schritt 5: Gebotsstrategie für E-Commerce"}),e.jsxs("p",{className:"mb-6",children:["Für E-Commerce wähle ",e.jsx("strong",{children:'âConversion-Wert maximieren"'}),":"]}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.gebotsstrategie,alt:"Gebotsstrategie Conversion-Wert maximieren",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Conversion-Wert maximieren als Gebotsstrategie"})]}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ohne Ziel-ROAS:"}
vendor: 3,919 bytes, line 469
469)," Bei wenig Conversion-Daten (<50-100 Käufe)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Mit Ziel-ROAS:"})," Wenn du bereits ausreichend Daten hast (basierend auf bisherigen Werten)"]})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Kundenakquisition optimieren"}),e.jsx("p",{className:"mb-6",children:"Eine wichtige Einstellung für E-Commerce: Du kannst festlegen, ob du verstärkt Neukunden gewinnen möchtest."}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Höheres Gebot für Neukunden:"})," Empfohlen â legt mehr Gewicht auf Neukundengewinnung"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Nur für Neukunden:"})," SchlieÃt Bestandskunden komplett aus (nur mit Kundenliste möglich)"]})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Eintragsgruppen (Listing Groups)"}),e.jsxs("figure",{className:"my-8",children:[e.jsx("img",{src:s.eintragsgruppen,alt:"Eintragsgruppen in P-Max",className:"w-full rounded-lg border",loading:"lazy"}),e.jsx("figcaption",{className:"text-sm text-muted-foreground mt-2 text-center",children:"Ãber Eintragsgruppen wählst du die zu bewerbenden Produkte aus"})]}),e.jsx("p",{className:"mb-6",children:"Mit Eintragsgruppen bestimmst du, welche Produkte aus deinem Feed in der Kampagne beworben werden. Du kannst:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:'Alle Produkte bewerben (âCatch-All"-Kampagne)'}),e.jsx("li",{children:"Nach Kategorie, Marke oder Custom Labels segmentieren"}),e.jsx("li",{children:"Bestimmte Produkte ausschlieÃen (z.B. Zubehör mit niedrigem AOV)"})]}),e.jsx(ie,{}),e.jsx("h2",{id:"asset-gruppen-strategie",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Asset-Gruppen Strategie"}),e.jsx("p",{className:"mb-6",children:"Eine häufige Frage: Wie viele Asset-Gruppen solltest du erstellen?"}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Eine vs. mehrere Asset-Gruppen"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"min-w-full border-collapse border border-border",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Ansatz"}),e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Vorteile"}),e.jsx("th",{className:"border border-border px-4 py-2 text-left",children:"Nachteile"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border border-border px-4 py-2 font-semibold",children:"Eine Asset-Gruppe"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"Einfacher, schnellere Datensammlung, weniger Verwaltung"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"Keine differenzierte Ansprache, weniger Kontrolle"})]}),e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("td",{className:"border border-border px-4 py-2 font-semibold",children:"Mehrere Asset-Gruppen"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"Zielgruppenspezifische Ansprache, bessere Auswertung"}),e.jsx("td",{className:"border border-border px-4 py-2",children:"Mehr Aufwand, Daten verteilen sich"})]})]})]})}),e.jsxs("p",{className:"mb-6",children:[e.jsx("strong",{children:"Unsere Empfehlung:"})," Starte mit 1-3 Asset-Gruppen und erweitere bei Bedarf. Erstelle separate Asset-Gruppen, wenn:"]}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Du verschiedene Zielgruppen mit unterschiedlicher Ansprache ansprechen willst"}),e.jsx("li",{children:"Du verschiedene Produktkategorien hast (z.B. Damen vs. Herren)"}),e.jsx("li",{children:"Du genug Budget hast, um die Daten auf mehrere Gruppen zu verteilen"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"NEU 202
4696: Automatisch erstellte Assets auf Deutsch"}),e.jsx("p",{className:"mb-6",children:"Google bietet jetzt die automatische Asset-Erstellung auch auf Deutsch an! Die KI generiert Texte basierend auf deiner Website. Unsere Erfahrung: Die Qualität ist mittlerweile brauchbar, aber überprüfe die Vorschläge sorgfältig."}),e.jsx("h2",{id:"auswertung-optimierung",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"P-Max Kampagnen auswerten und optimieren"}),e.jsx("p",{className:"mb-6",children:"Die Auswertung war lange ein Schwachpunkt von P-Max. 2026 hat Google hier deutlich nachgebessert."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"NEU 2026: Channel Performance"}),e.jsx("p",{className:"mb-6",children:"Endlich kannst du sehen, wie deine Kampagne in den einzelnen Netzwerken performt:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Search (inkl. Shopping)"}),e.jsx("li",{children:"YouTube"}),e.jsx("li",{children:"Display"}),e.jsx("li",{children:"Discover"}),e.jsx("li",{children:"Gmail"}),e.jsx("li",{children:"Maps"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Search Term Insights"}),e.jsx("p",{className:"mb-6",children:"Die Search Term Insights zeigen dir, welche Suchbegriffe Conversions auslösen. Nutze diese Daten, um:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:"Negative Keywords hinzuzufügen (z.B. irrelevante Suchanfragen)"}),e.jsx("li",{children:"Ideen für neue Asset-Texte zu bekommen"}),e.jsx("li",{children:"Deine Zielgruppensignale zu verfeinern"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Placement Reports"}),e.jsx("p",{className:"mb-6",children:"Sieh dir an, auf welchen Websites und YouTube-Kanälen deine Anzeigen erscheinen. Du kannst Placements ausschlieÃen, die nicht zu deiner Marke passen."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Asset-Performance analysieren"}),e.jsx("p",{className:"mb-6",children:"Google bewertet die Performance deiner einzelnen Assets:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Niedrig:"})," Asset performt unterdurchschnittlich â ersetzen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gut:"})," Asset performt solide â behalten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Am besten:"})," Asset performt überdurchschnittlich â mehr davon!"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ausstehend:"})," Noch nicht genug Daten"]})]}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"Optimierungs-Rhythmus:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Erste 45-90 Tage:"})," Geduld haben, keine groÃen Ãnderungen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Danach wöchentlich:"})," Asset-Performance prüfen, Low-Performer ersetzen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Monatlich:"})," Zielgruppensignale basierend auf Insights anpassen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Quartalsweise:"})," Gesamtstrategie überprüfen, neue Asset-Gruppen testen"]})]})]}),e.jsx("h2",{id:"haeufige-fehler",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Häufige Fehler bei Performance Max vermeiden"}),e.jsx("p",{className:"mb-6",children:"Diese Fehler sehen wir immer wieder â vermeide sie unbedingt:"}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 1: Zu wenig Budget"}),e.jsx("p",{className:"mb-6",children:"Mit einem Tagesbudget von 20⬠bei einem Ziel-CPA von 50⬠wird P-Max nie genug Daten sammeln können. Investiere mindestens das 10-15-fache deines Ziel-CPA."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 2: Zu früh optimieren"}),e.jsx("p",{className:"mb-6",children:"Die Lernphase dauert 45-90 Tage. Wer nach einer Woche schon Budgets kürzt oder Assets tauscht, sabotiert die KI."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 3: Schlechte Assets"}),e.jsx("p",{className:"mb-6",children:"Unscharfe Bilder, generische Stock-Fotos, langweilige Texte = schlechte Anzeigen. Investiere Zeit in hochwertige, einzigartige Assets."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 4: Keine First-Party-Daten"}),e.jsx("p",{className:"mb-6",children:"Ohne Kundenlisten und Remarketing-Daten fehlt Google eine wichtige Basis. Lade deine Kundendaten hoch (DSGVO-konform!)."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 5: Brand Traffic nicht ausschlieÃen"}),e.jsx("p",{className:"mb-6",children:"Ohne Brand Exclusions kann P-Max einen groÃen Teil des Budgets für Markensuchen ausgeben â Conversions, die du auch ohne Werbung bekommen hättest."}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"â Fehler 6: Search-Kannibalisierung ignorieren"}),e.jsx("p",{className:"mb-6",children:'P-Max kann deine Search-Kampagnen âauffressen". Ãberwache die Entwicklung deiner Search-Kampagnen und passe bei Bedarf die Strategie an.'}),e.jsx("h2",{id:"faq",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"FAQ â Häufig gestellte Fragen zu Performance Max"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Was sind Performance Max Kampagnen?"}),e.jsx("p",{className:"text-muted-foreground",children:"Performance Max Kampagnen sind ein vollautomatisierter Kampagnentyp in Google Ads, der alle Google-Netzwerke (Suche, Shopping, Display, YouTube, Gmail, Maps, Discovery) in einer einzigen Kampagne vereint. Google nutzt KI und Machine Learning, um deine Anzeigen dort auszuspielen, wo sie die beste Performance erzielen."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Wie lange dauert die Lernphase bei Performance Max?"}),e.jsx("p",{className:"text-muted-foreground",children:"Die Lernphase dauert in der Regel 45-90 Tage. In dieser Zeit sammelt Google Daten und optimiert die Kampagne kontinuierlich. Du solltest in dieser Phase keine groÃen Ãnderungen vornehmen und Geduld mitbringen."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Wie viel Budget brauche ich für Performance Max?"}),e.jsx("p",{className:"text-muted-foreground",children:"Das empfohlene Tagesbudget sollte das 10-15-fache deines Ziel-CPA betragen. Bei einem Ziel-CPA von 20⬠sind das 200-300⬠pro Tag, also 6.000-9.000⬠pro Monat. Bei geringerem Budget fehlen Google die nötigen Daten zur Optimierung."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Sollte ich meine Brand bei P-Max ausschlieÃen?"}),e.jsx("p",{className:"text-muted-foreground",children:"Ja, in den meisten Fällen. Ohne Brand Exclusions kann P-Max viel Budget für Markensuchen ausgeben â Conversions, die du möglicherweise auch ohne Werbung bekommen hättest. Erstelle stattdessen eine separate Brand-Kampagne mit niedrigeren Geboten."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Performance Max oder Standard Shopping â was ist besser?"}),e.jsx("p",{className:"text-muted-foreground",children:"Es kommt auf deine Situation an: Standard Shopping bietet mehr Kontrolle und Transparenz, P-Max ist automatisierter. Für die meisten E-Commerce-Shops empfehlen wir eine Kombination: P-Max als Hauptkampagne und Standard Shopping für spezifische Produktgruppen oder Tests."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Wie viele Asset-Gruppen sollte ich erstellen?"}),e.jsx("p",{className:"text-muted-foreground",children:"Starte mit 1-3 Asset-Gruppen und erweitere bei Bedarf. Erstelle separate Asset-Gruppen, wenn du verschiedene Zielgruppen mit unterschiedlicher Ansprache ansprechen willst oder verschiedene Produktk
469ategorien hast. Maximal sind 100 Asset-Gruppen pro Kampagne möglich."})]}),e.jsxs("div",{className:"pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Kann Performance Max meine Search-Kampagnen kannibalisieren?"}),e.jsx("p",{className:"text-muted-foreground",children:"Ja, das ist möglich. P-Max wird auch im Suchnetzwerk ausgespielt und kann mit deinen Search-Kampagnen konkurrieren. Um Kannibalisierung zu vermeiden: Brand-Keywords bei P-Max ausschlieÃen, Search-Kampagnen auf strategisch wichtige Keywords fokussieren, und die Entwicklung beider Kampagnentypen monitoren."})]})]}),e.jsx("h2",{id:"zusammenfassung",className:"text-2xl md:text-3xl font-bold mt-12 mb-6",children:"Zusammenfassung und Fazit"}),e.jsx("p",{className:"mb-6",children:"Performance Max Kampagnen sind 2026 der wichtigste Kampagnentyp für die meisten Google Ads Werbetreibenden â besonders im E-Commerce. Mit den neuen Features wie Channel-Level Reporting, Negative Keywords und verbesserten Insights hat Google viele der ursprünglichen Kritikpunkte adressiert."}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-4",children:"Die wichtigsten Takeaways:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"P-Max vereint alle Google-Netzwerke in einer zielbasierten Kampagne"}),e.jsx("li",{children:"Du brauchst ausreichend Budget (10-15x Ziel-CPA) und Geduld (45-90 Tage)"}),e.jsx("li",{children:"Die 3 Säulen sind: Ziele, Assets und Zielgruppensignale"}),e.jsx("li",{children:"Für Leadgenerierung: Finale URL Erweiterung deaktivieren!"}),e.jsx("li",{children:"Für E-Commerce: Merchant Center verbinden, Eintragsgruppen nutzen"}),e.jsx("li",{children:"Brand-Keywords ausschlieÃen, um Budget effizient zu nutzen"}),e.jsx("li",{children:"Die neuen 2026-Features (Channel Reports, Search Insights) unbedingt nutzen"})]})]}),e.jsx("p",{className:"mb-6",children:'Performance Max ist kein âSet and Forget"-Kampagnentyp. Du brauchst hochwertige Assets, ein durchdachtes Zielgruppensignal und regelmäÃige Optimierung. Aber richtig eingesetzt, kann P-Max skalierbare Ergebnisse liefern, die mit klassischen Kampagnentypen schwer zu erreichen sind.'}),e.jsx("h3",{className:"text-xl font-semibold mt-8 mb-4",children:"Weiterführende Artikel"}),e.jsx("p",{className:"mb-6",children:"Wenn du tiefer in einzelne Themen eintauchen möchtest, empfehlen wir diese Artikel:"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:e.jsx(E,{to:"/feed-only-performance-max",className:"text-primary hover:underline",children:"Feed-Only Performance Max 2026 â PMax nur mit Produkt-Feed"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-tutorial",className:"text-primary hover:underline",children:"Google Ads Tutorial 2026 â Komplette Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Google Ads Demand Gen â Komplette Anleitung + 5 Profi-Strukturen"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:"Google Ads Conversion Tracking Shopify â 5 Methoden im Vergleich"})}),e.jsx("li",{children:e.jsx(E,{to:"/youtube-ads-kosten",className:"text-primary hover:underline",children:"YouTube Ads Kosten 2026 â Was kostet YouTube Werbung?"})})]}),e.jsx(ie,{})]})]})},fM=()=>{const t=ct.gordon,n="2023-03-15",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was sind Enhanced Conversions in Google Ads?",acceptedAnswer:{"@type":"Answer",text:"Enhanced Conversions sind eine Funktion in Google Ads, die First-Party-Daten (wie E-Mail-Adressen) hasht und an Google sendet. Dadurch können mehr Conversions korrekt zugeordnet werden, auch wenn Cookies blockiert werden."}},{"@type":"Question",name:"Brauche ich Enhanced Conversions wenn ich Server-Side Tracking nutze?",acceptedAnswer:{"@type":"Answer",text:"Ja! Enhanced Conversions und Server-Side Tracking ergänzen sich. Server-Side Tracking verbessert die Datenqualität, Enhanced Conversions verbessern die Attribution. Die Kombination liefert die besten Ergebnisse."}},{"@type":"Question",name:"Sind Enhanced Conversions DSGVO-konform?",acceptedA
469nswer:{"@type":"Answer",text:"Ja, wenn korrekt implementiert. Die Daten werden vor dem Senden gehasht (SHA-256) und du benötigst die Einwilligung des Nutzers über Consent Mode V2. Ohne Consent werden keine Enhanced Conversions gesendet."}},{"@type":"Question",name:"Was ist der Unterschied zwischen Enhanced Conversions for Web und for Leads?",acceptedAnswer:{"@type":"Answer",text:"Enhanced Conversions for Web trackt Online-Conversions (Käufe, Formular-Einreichungen). Enhanced Conversions for Leads verbindet Online-Klicks mit Offline-Conversions (z.B. wenn ein Lead später zum Kunden wird)."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung | AdsHero"}),e.jsx("meta",{name:"description",content:"Enhanced Conversions in Google Ads über GTM einrichten: Schritt-für-Schritt Anleitung inkl. Enhanced Conversions for Leads, Diagnose und Consent Mode V2."}),e.jsx("meta",{name:"keywords",content:"enhanced conversions, google ads enhanced conversions, enhanced conversions einrichten, gtm enhanced conversions, enhanced conversions for leads"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-enhanced-conversions-einrichten"}),e.jsx("meta",{property:"og:title",content:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung"}),e.jsx("meta",{property:"og:description",content:"Enhanced Conversions in Google Ads einrichten mit GTM. Schritt-für-Schritt Anleitung für besseres Conversion Tracking."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-enhanced-conversions-einrichten"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung"}),e.jsx("meta",{name:"twitter:description",content:"Enhanced Conversions in Google Ads einrichten mit GTM. Schritt-für-Schritt Anleitung."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung",date:"15. März 2023",modifiedDate:"26. März 2026",readingTime:15,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"Enhanced Conversions sind 2026 nicht mehr optional â sie sind essentiell für präzises Conversion Tracking. In dieser Anleitung zeige ich dir Schritt für Schritt, wie du Enhanced Conversions mit dem Google Tag Manager einrichtest."}),e.jsx("h2",{id:"was-sind-enhanced-conversions",children:"Was sind Enhanced Conversions?"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Enhanced Conversions"})," (erweiterte Conversions) sind eine Tracking-Technologie von Google, die First-Party-Kundendaten nutzt, um Conversions präziser zu messen."]}),e.jsx("p",{children:"Das Problem: Durch Cookie-Einschränkungen, ITP (Intelligent Tracking Prevention) und Consent-Anforderungen gehen immer mehr Conversion-Daten verloren. Google kann nicht mehr nachvollziehen, welcher Klick zu welchem Kauf geführt hat."}),e.jsxs("p",{children:[e.jsx("strong",{children:"Die Lösung:"})," Enhanced Conversions senden gehashte Kundendaten (E-Mail, Telefon, Adresse) an Google. Diese werden mit eingeloggten Google-Nutzern abgeglichen, um die Conversion korrekt zuzuordnen."]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"Wie funktioniert das technisch?"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2",children:[e.jsx("li",{children:"Nutzer klickt auf deine Google Ads Anzeige"}),e.jsx("li",{children:"Nutzer kauft und gibt E-Mail-Adresse ein"}),e.jsx("li",{children:"E-Mail wird mit SHA-256 gehasht (nicht lesbar)"}),e.jsx("li",{children:"Hash wird an Google gesendet"}),e.jsx("li",{children:"Google gleicht mit eingeloggten Nutzern ab"}),e.jsx("li",{children:"Conversion wird korrekt dem Klick zugeordnet"})]})]}),e.jsx("h2",{id:"enhanced-conversions-web-vs-leads",children:"Enhanced Conversions for Web vs. for Leads"}),e.jsx("p",{children:"Google bietet zwei Varianten:"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 my-8",children:[e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Enhanced Conversions for Web"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Für Online-Conversions wie Käufe oder Formular-Einreichungen."}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"E-Commerce Shops"}),e.jsx("li",{children:"Online-Buchungen"}),e.jsx("li",{children:"Sofortige Conversions"})]})]}),e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"Enhanced Conversions for Leads"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Verbindet Online-Klicks mit Offline-Conversions."}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Lead-Generierung"}),e.jsx("li",{children:"Telefonische Abschlüsse"}),e.jsx("li",{children:"Lange Sales-Zyklen"})]})]})]}),e.jsx("h2",{id:"voraussetzungen",children:"Voraussetzungen für Enhanced Conversions"}),e.jsx("p",{children:"Bevor du startest, stelle sicher:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads Conversion Tracking"})," ist bereits eingerichtet"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Tag Manager"})," ist auf deiner Website implementiert"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Mode V2"})," ist aktiv (Pflicht seit März 2024)"]}),e.jsxs("li",{children:["Du hast Zugriff auf die ",e.jsx("strong",{children:"Danke-Se
469ite"})," oder den Checkout"]}),e.jsx("li",{children:"Kundendaten (E-Mail) sind im Data Layer oder DOM verfügbar"})]}),e.jsxs("div",{className:"bg-yellow-500/10 border border-yellow-500/30 p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"â ï¸ Wichtig: Consent Mode V2"}),e.jsx("p",{children:"Seit März 2024 ist Consent Mode V2 Pflicht für Enhanced Conversions. Ohne gültigen Consent werden keine erweiterten Conversion-Daten gesendet. Stelle sicher, dass dein Consent Banner korrekt mit GTM integriert ist."})]}),e.jsx(ie,{}),e.jsx("h2",{id:"schritt-fuer-schritt-anleitung",children:"Enhanced Conversions einrichten â Schritt für Schritt"}),e.jsx("h3",{children:"Schritt 1: Enhanced Conversions in Google Ads aktivieren"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:["Ãffne Google Ads â ",e.jsx("strong",{children:"Zielvorhaben"})," â ",e.jsx("strong",{children:"Conversions"})," â ",e.jsx("strong",{children:"Einstellungen"})]}),e.jsx("li",{children:'Scrolle zu "Erweiterte Conversions"'}),e.jsx("li",{children:'Aktiviere den Schalter bei "Erweiterte Conversions für Webseite aktivieren"'}),e.jsx("li",{children:'Wähle "Google Tag Manager" als Implementierungsmethode'}),e.jsx("li",{children:"Akzeptiere die Nutzungsbedingungen"}),e.jsx("li",{children:"Speichern"})]}),e.jsx("h3",{children:"Schritt 2: Daten im Data Layer bereitstellen"}),e.jsx("p",{children:"Für Enhanced Conversions musst du die Kundendaten im Data Layer pushen. Hier ein Beispiel für die Danke-Seite:"}),e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto my-6 text-sm",children:`<script> 470window.dataLayer = window.dataLayer || []; 471window.dataLayer.push({ 472 'event': 'purchase', 473 'user_data': { 474 'email': '[email protected]', // Pflicht 475 'phone_number': '+491234567890', // Optional 476 'address': { 477 'first_name': 'Max', // Optional 478 'last_name': 'Mustermann', // Optional 479 'street': 'MusterstraÃe 1', // Optional 480 'city': 'Berlin', // Optional 481 'postal_code': '10115', // Optional 482 'country': 'DE' // Optional 483 } 484 }, 485 'transaction_id': 'ORDER-12345', 486 'value': 99.00, 487 'currency': 'EUR' 488}); 489<\/script>`}),e.jsxs("p",{children:[e.jsx("strong",{children:"Wichtig:"})," Mindestens die E-Mail-Adresse ist erforderlich. Je mehr Daten du sendest, desto besser die Match-Rate."]}),e.jsx("h3",{children:"Schritt 3: Variablen im GTM erstellen"}),e.jsx("p",{children:"Erstelle Data Layer Variablen für die Nutzerdaten:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Ãffne GTM â Variablen â Benutzerdefinierte Variablen â
489 Neu"}),e.jsx("li",{children:'Typ: "Data Layer-Variable"'}),e.jsxs("li",{children:["Name der Data Layer-Variable: ",e.jsx("code",{children:"user_data.email"})]}),e.jsx("li",{children:'Speichern als "DLV - User Email"'}),e.jsx("li",{children:"Wiederhole für phone_number, first_name, etc."})]}),e.jsx("h3",{children:"Schritt 4: Conversion Tag konfigurieren"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:["Ãffne dein bestehendes ",e.jsx("strong",{children:"Google Ads Conversion Tracking Tag"})]}),e.jsx("li",{children:'Scrolle zu "Benutzerdefinierte Daten einbeziehen"'}),e.jsx("li",{children:"Aktiviere die Option"}),e.jsx("li",{children:'Wähle "Neuer Variablentyp" â "Vom Nutzer bereitgestellte Daten"'}),e.jsxs("li",{children:["Konfiguriere die Variable:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:'E-Mail: Wähle deine "DLV - User Email" Variable'}),e.jsx("li",{children:"Telefon: Wähle deine Telefon-Variable (falls vorhanden)"}),e.jsx("li",{children:"Adresse: Konfiguriere die Adress-Felder (optional)"})]})]}),e.jsx("li",{children:"Speichern"})]}),e.jsx("h3",{children:"Schritt 5: Testen mit Tag Assistant"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Aktiviere den GTM Vorschau-Modus"}),e.jsx("li",{children:"Führe eine Test-Conversion durch"}),e.jsx("li",{children:"Prüfe im Tag Assistant, ob das Tag feuert"}),e.jsx("li",{children:'Unter "user_data" sollten die gehashten Werte erscheinen'}),e.jsx("li",{children:"Ãffne Google Ads â Conversions â Diagnose"}),e.jsx("li",{children:'Nach 24-48h sollten "Enhanced Conversion" Daten erscheinen'})]}),e.jsx("h2",{id:"enhanced-conversions-for-leads",children:"Enhanced Conversions for Leads einrichten"}),e.jsxs("p",{children:["Für Lead-Generierung (B2B, Dienstleister, etc.) gibt es ",e.jsx("strong",{children:"Enhanced Conversions for Leads"}),". Diese verbinden Online-Leads mit späteren Offline-Conversions."]}),e.jsx("h3",{children:"Wann brauchst du Enhanced Conversions for Leads?"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Wenn zwischen Lead und Kauf Tage/Wochen liegen"}),e.jsx("li",{children:"Wenn der Abschluss telefonisch oder persönlich erfolgt"}),e.jsx("li",{children:"Wenn du Leads in einem CRM verfolgst"})]}),e.jsx("h3",{children:"Setup (vereinfacht):"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:'Aktiviere "Enhanced Conversions for Leads" in Google Ads'}),e.jsx("li",{children:"Sende die E-Mail beim Lead-Formular ab (wie oben)"}),e.jsx("li",{children:"Importiere Offline-Conversions aus deinem CRM"}),e.jsx("li",{children:"Google matcht die gehashten E-Mails"})]}),e.jsx("p",{children:"Eine vollständige Anleitung für Enhanced Conversions for Leads würde den Rahmen sprengen â der wichtigste Punkt ist, dass du die E-Mail-Adresse bereits beim Lead-Formular sendest."}),e.jsx("h2",{id:"diagnose-fehlerbehebung",children:"Diagnose & Fehlerbehebung"}),e.jsx("p",{children:"Nach der Einrichtung kannst du den Status prüfen:"}),e.jsx("h3",{children:"Google Ads Diagnose-Tool"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Google Ads â Zielvorhaben â Conversions"}),e.jsx("li",{children:"Klicke auf deine Conversion-Aktion"}),e.jsx("li",{children:'Tab "Diagnose"'}),e.jsx("li",{children:'Unter "Erweiterte Conversions" siehst du den Status'})]}),e.jsx("h3",{children:"Häufige Probleme:"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:'â "Keine Daten"'}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Warte 24-48 Stunden. Enhanced Conversions brauchen Zeit zum Verarbeiten."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:'â "Tag nicht korrekt konfiguriert"'}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Prüfe im GTM Vorschau-Modus, ob die user_data-Variable korrekt befüllt ist."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Niedrige Match-Rate"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sende mehr Datenfelder (Telefon, Adresse). Je mehr Daten, desto besser die Match-Rate."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Consent-Fehler"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'Enhanced Conversions werden nur bei "granted" Consent gesendet. Prüfe deine Consent Mode Integration.'})]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"best-practices",children:"Best Practices für Enhanced Conversions 2026"}),e.jsxs("ul",{className:"list-disc list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Komb
489iniere mit Server-Side Tracking:"})," Enhanced Conversions +",e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:" Server-Side Tracking"})," liefert die beste Datenqualität"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Sende alle verfügbaren Daten:"})," E-Mail ist Pflicht, aber Telefon + Adresse erhöhen die Match-Rate"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Teste regelmäÃig:"})," Prüfe die Diagnose monatlich auf Fehler"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Normalisiere Daten:"})," E-Mails in Kleinbuchstaben, Telefon im internationalen Format (+49...)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent beachten:"})," Ohne Consent Mode V2 keine Enhanced Conversions in der EU"]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen zu Enhanced Conversions"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was sind Enhanced Conversions in Google Ads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Enhanced Conversions sind eine Funktion in Google Ads, die First-Party-Daten (wie E-Mail-Adressen) hasht und an Google sendet. Dadurch können mehr Conversions korrekt zugeordnet werden, auch wenn Cookies blockiert werden."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Brauche ich Enhanced Conversions wenn ich Server-Side Tracking nutze?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ja! Enhanced Conversions und Server-Side Tracking ergänzen sich. Server-Side Tracking verbessert die Datenqualität, Enhanced Conversions verbessern die Attribution. Die Kombination liefert die besten Ergebnisse."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Sind Enhanced Conversions DSGVO-konform?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ja, wenn korrekt implementiert. Die Daten werden vor dem Senden gehasht (SHA-256) und du benötigst die Einwilligung des Nutzers über Consent Mode V2. Ohne Consent werden keine Enhanced Conversions gesendet."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was ist der Unterschied zwischen Enhanced Conversions for Web und for Leads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Enhanced Conversions for Web trackt Online-Conversions (Käufe, Formular-Einreichungen). Enhanced Conversions for Leads verbindet Online-Klicks mit Offline-Conversions (z.B. wenn ein Lead später zum Kunden wird)."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit: Enhanced Conversions sind Pflicht"}),e.jsx("p",{children:"2026 kommst du an Enhanced Conversions nicht vorbei. Sie sind der einfachste Weg, die Lücken im Conversion Tracking zu schlieÃen, die durch Cookie-Einschränkungen entstehen."}),e.jsxs("p",{children:["In Kombination mit ",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"korrektem GTM-Setup"})," und Consent Mode V2 hast du eine solide Tracking-Grundlage für alle ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max"})," und",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:" Demand Gen Kampagnen"}),"."]})]})]})},xM=()=>{const t=ct.gordon,n="2023-01-10",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Warum sollte ich Google Ads mit GTM verknüpfen?",acceptedAnswer:{"@type":"Answer",text:"GTM gibt dir volle Kontrolle über dein Tracking. Du kannst Conversion-Tags, Remarketing, Enhanced Conversions und Consent Mode an einem Ort verwalten â ohne Code-Ãnderungen an deiner Website."}},{"@type":"Question",name:"Brauche ich Consent Mode mit Google Tag Manager?",acceptedAnswer:{"@type":"Answer",text:"Ja, seit März 2024 ist Consent Mode V2 Pflicht für Google Ads in der EU. Ohne Consent Mode werden deine Conversion-Daten nicht korrekt erfasst und du verlierst Remarketing-Zielgruppen."}},{"@type":"Question",name:"Was ist der Unterschied zwischen Google Ads Tag und Conversion Linker?",acceptedA
489nswer:{"@type":"Answer",text:"Der Conversion Linker speichert Click-Informationen (GCLID) in einem First-Party-Cookie. Das Google Ads Tag sendet die eigentlichen Conversion-Daten. Beide sind erforderlich für korrektes Tracking."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads mit Google Tag Manager verknüpfen 2026 â Komplette Anleitung | AdsHero"}),e.jsx("meta",{name:"description",content:"Google Ads mit GTM verbinden: Conversion Tracking, Remarketing Tags und Consent Mode V2.1 einrichten. Komplette Schritt-für-Schritt Anleitung."}),e.jsx("meta",{name:"keywords",content:"google ads google tag manager, gtm google ads, conversion tracking gtm, google ads tag manager einrichten, consent mode gtm"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-google-tag-manager"}),e.jsx("meta",{property:"og:title",content:"Google Ads mit Google Tag Manager verknüpfen 2026 â Komplette Anleitung"}),e.jsx("meta",{property:"og:description",content:"Google Ads mit GTM verbinden. Conversion Tracking, Remarketing und Consent Mode einrichten."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-google-tag-manager"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Google Ads mit Google Tag Manager verknüpfen 2026"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Google Ads mit Google Tag Manager verknüpfen 2026 â Komplette Anleitung",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"Google Ads mit Google Tag Manager verknüpfen 2026 â Komplette Anleitung",date:"10. Januar 2023",modifiedDate:"26. März 2026",readingTime:18,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"Der Google Tag Manager ist das Fundament für professionelles Google Ads Tracking. In dieser Anleitung zeige ich dir, wie du GTM mit Google Ads verbindest â inklusive Consent Mode V2.1, Conversion Tracking und Remarketing."}),e.jsx("h2",{id:"warum-gtm-fuer-google-ads",children:"Warum GTM für Google Ads nutzen?"}),e.jsx("p",{children:"Du könntest Google Ads Tags auch direkt in deine Website einbauen â aber das wäre 2026 ein Fehler. Hier sind die Gründe, warum der Google Tag Manager die bessere Wahl ist:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Zentrale Verwaltung:"})," Alle Tags an einem Ort"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Keine Code-Ãnderungen:"})," Neue Tags ohne Entwickler hinzufügen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Mode Integration:"})," DSGVO-konformes Tracking einfach umsetzen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Enhanced Conversions:"})," First-Party-Daten korrekt senden"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Debugging:"})," Vorschau-Modus zum Testen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Versionierung:"})," Ãnderungen nachvollziehbar"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"Was du nach dieser Anleitung hast:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1",children:[e.jsx("li",{children:"â GTM korrekt auf deiner Website installiert"}),e.jsx("li",{children:"â Google Ads Conversion Tracking aktiv"}),e.jsx("li",{children:"â Remarketing-Tag für Zielgruppen"}),e.jsx("li",{children:"â Consent Mode V2 integriert"}),e.jsx("li",{children:"â Enhanced Conversions vorbereitet"})]})]}),e.jsx("h2",{id:"gtm-installieren",children:"Schritt 1: Google Tag Manager installieren"}),e.jsx("p",{children:"Falls noch nicht geschehen, installiere GTM auf deiner Website:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:["Erstelle ein Konto auf ",e.jsx("a",{href:"https://tagmanager.google.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"tagmanager.google.com"})]}),e.jsx("li",{children:"Erstelle einen Container (Typ: Web)"}),e.jsx("li",{children:"Kopiere den GTM-Code"}),e.jsxs("li",{children:["Füge den ersten Code-Block in den ",e.jsx("code",{children:"<head>"})," deiner Website ein"]}),e.jsxs("li",{children:["Füge den zweiten Code-Block direkt nach ",e.jsx("code",{children:"<body>"})," ein"]})]}),e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto my-6 text-sm",children:`<!-- Google Tag Manager --> 490<script>
vendor: 327 bytes, lines 490-494
490(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 491new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 492j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 493'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 494})(window,document,'script','dataLayer','
494GTM-XXXXXXX
vendor: 3 bytes, line 494
494');
494<\/script> 495<!-- End Google Tag Manager -->`}),e.jsxs("p",{children:[e.jsx("strong",{children:"Tipp für WordPress:"}),' Nutze ein Plugin wie "GTM4WP" für die einfache Installation.']}),e.jsx("h2",{id:"consent-mode-einrichten",children:"Schritt 2: Consent Mode V2.1 einrichten"}),e.jsxs("div",{className:"bg-yellow-500/10 border border-yellow-500/30 p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"â ï¸ Wichtig: Consent Mode ist Pflicht"}),e.jsx("p",{children:"Seit März 2024 ist Consent Mode V2 für Google Ads in der EU verpflichtend. Ohne Consent Mode verlierst du Conversion-Daten und Remarketing-Zielgruppen."})]}),e.jsx("h3",{children:"Was ist Consent Mode?"}),e.jsx("p",{children:"Consent Mode teilt Google mit, ob ein Nutzer Tracking-Cookies akzeptiert hat. Bei abgelehntem Consent sendet Google nur anonymisierte, modellierte Daten."}),e.jsx("h3",{children:"Consent Mode mit GTM integrieren:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Management Platform (CMP) wählen:"})," Cookiebot, Usercentrics, Borlabs Cookie (WordPress) oder ähnliche"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"CMP-Template in GTM laden:"})," Die meisten CMPs haben offizielle GTM-Templates"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Mode Defaults setzen:"})," Vor allen anderen Tags"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent-Updates konfigurieren:"})," Wenn Nutzer Einwilligung erteilt/widerruft"]})]}),e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto my-6 text-sm",children:`// Consent Mode Defaults (vor GTM-Container) 496window.dataLayer = window.dataLayer || []; 497function gtag(){dataLayer.push(arguments);} 498 499gtag('consent', 'default', { 500 'ad_storage': 'denied', 501 'ad_user_data': 'denied', 502 'ad_personalization': 'denied', 503 'analytics_storage': 'denied', 504 'wait_for_update': 500 505}); 506 507gtag('set', 'ads_data_redaction', true); 508gtag('set', 'url_passthrough', true);`}),e.jsx(ie,{}),e.jsx("h2",{id:"conversion-linker",children:"Schritt 3: Conversion Linker einrichten"}),e.jsxs("p",{children:["Der ",e.jsx("strong",{children:"Conversion Linker"})," ist essentiell für korrektes Conversion Tracking. Er speichert die Click-ID (GCLID) in einem First-Party-Cookie."]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsx("li",{children:"GTM öffnen â Tags â Neu"}),e.jsxs("li",{children:["Tag-Typ: ",e.jsx("strong",{children:"Conversion Linker"})]}),e.jsxs("li",{children:["Trigger: ",e.jsx("strong",{children:"All Pages"})," (oder Consent-basiert)"]}),e.jsx("li",{children:"Speichern"})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"Warum ist der Conversion Linker wichtig?"}),e.jsx("p",{children:"Ohne Conversion Linker kann Google den Klick nicht mit der späteren Conversion verbinden. Das führt zu fehlenden Conversions â besonders bei längeren Customer Journeys."})]}),e.jsx("h2",{id:"conversion-tracking-einrichten",children:"Schritt 4: Google Ads Conversion Tracking einrichten"}),e.jsx("h3",{children:"4.1 Conversion-Aktion in Google Ads erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Google Ads â Zielvorhaben â Conversions â Neue Conversion-Aktion"}),e.jsx("li",{children:'Wähle "Website"'}),e.jsx("li",{children:'Wähle Kategorie (z.B. "Kauf" oder "Lead")'}),e.jsx("li",{children:"Konfiguriere Conversion-Wert (statisch oder dynamisch)"}),e.jsx("li",{children:'Attributionsmodell: "Datengetrieben" empfohlen'}),e.jsx("li",{children:'Wähle "Google Tag Manager" als Methode'}),e.jsxs("li",{children:["Notiere ",e.jsx("strong",{children:"Conversion-ID"})," und ",e.jsx("strong",{children:"Conversion-Label"})]})]}),e.jsx("h3",{children:"4.2 Conversion Tag im GTM erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsx("li",{children:"GTM â Tags â Neu"}),e.jsxs("li",{children:["Tag-Typ: ",e.jsx("strong",{children:"Google Ads-Conversion-Tracking"})]}),e.jsx("li",{children:"Conversion-ID eingeben (z.B. AW-123456789)"}),e.jsx("li",{children:"Conversion-Label eingeben"}),e.jsxs("li",{children:[e.jsx("strong",{children:"Trigger konfigurieren:"}),e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Für Käufe: Danke-Se
508ite URL oder dataLayer Event"}),e.jsx("li",{children:"Für Leads: Formular-Submit Event"})]})]}),e.jsx("li",{children:"Speichern"})]}),e.jsx("h3",{children:"4.3 Dynamische Conversion-Werte (E-Commerce)"}),e.jsx("p",{children:"Für variable Werte (Warenkorbwert) brauchst du Data Layer Variablen:"}),e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto my-6 text-sm",children:`// Data Layer auf Danke-Seite 509dataLayer.push({ 510 'event': 'purchase', 511 'transaction_id': 'ORDER-12345', 512 'value': 99.00, 513 'currency': 'EUR' 514});`}),e.jsxs("p",{children:["Erstelle dann GTM-Variablen für ",e.jsx("code",{children:"value"})," und ",e.jsx("code",{children:"currency"})," und verknüpfe sie im Tag."]}),e.jsx("h2",{id:"remarketing-tag",children:"Schritt 5: Google Ads Remarketing Tag einrichten"}),e.jsxs("p",{children:["Das Remarketing Tag sammelt Zielgruppen für deine Kampagnen. 2026 ist dies besonders wichtig für ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max"})," und",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:" Demand Gen"}),"."]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsx("li",{children:"GTM â Tags â Neu"}),e.jsxs("li",{children:["Tag-Typ: ",e.jsx("strong",{children:"Google Ads Remarketing"})]}),e.jsx("li",{children:"Conversion-ID eingeben (dieselbe wie oben)"}),e.jsxs("li",{children:["Trigger: ",e.jsx("strong",{children:"All Pages"})," (Consent-abhängig)"]}),e.jsx("li",{children:"Speichern"})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"ð¡ Tipp: Google Tag nutzen"}),e.jsxs("p",{children:["Alternativ zum separaten Remarketing Tag kannst du das ",e.jsx("strong",{children:"Google Tag"})," verwenden. Es kombiniert Conversion Linker, Remarketing und Enhanced Conversions in einem Tag."]})]}),e.jsx("h2",{id:"enhanced-conversions-vorbereiten",children:"Schritt 6: Enhanced Conversions vorbereiten"}),e.jsxs("p",{children:[e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"})," verbessern deine Conversion-Attribution erheblich. Die Einrichtung mit GTM:"]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"In Google Ads Enhanced Conversions aktivieren"}),e.jsx("li",{children:"Nutzerdaten (E-Mail) im Data Layer bereitstellen"}),e.jsx("li",{children:'Im Conversion Tag "Vom Nutzer bereitgestellte Daten" aktivieren'}),e.jsx("li",{children:"Variables für E-Mail, Telefon, Adresse konfigurieren"})]}),e.jsxs("p",{children:["Die vollständige Anleitung findest du in unserem Artikel",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:" Enhanced Conversions einrichten"}),"."]}),e.jsx("h2",{id:"testen-veroeffentlichen",children:"Schritt 7: Testen und Veröffentlichen"}),e.jsx("h3",{children:"7.1 GTM Vorschau-Modus"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:'Klicke "Vorschau" in GTM'}),e.jsx("li",{children:"Gib deine Website-URL ein"}),e.jsx("li",{children:"Der Tag Assistant öffnet sich in einem neuen Tab"}),e.jsxs("li",{children:["Navigiere auf deiner Website und prüfe:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Welche Tags feuern auf welchen Seiten?"}),e.jsx("li",{children:"Sind die Variablen korrekt befüllt?"}),e.jsx("li",{children:"Funktioniert der Consent-Flow?"})]})]})]}),e.jsx("h3",{children:"7.2 Test-Conversion durchführen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Führe einen Test-Kauf oder eine Test-Anfrage durch"}),e.jsx("li",{children:"Prüfe im Tag Assistant, ob das Conversion Tag gefeuert hat"}),e.jsx("li",{children:"Warte 24-48 Stunden"}),e.jsx("li",{children:"Prüfe in Google Ads â Conversions, ob die Conversion erscheint"})]}),e.jsx("h3",{children:"7.3 Container veröffentlichen"}),e.jsx("p",{children:"Wenn alles funktioniert:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:'Klicke "Senden" in GTM'}),e.jsx("li",{children:'Gib einen Versionsnamen ein (z.B. "Google Ads Setup")'}),e.jsx("li",{children:'Klicke "Veröffentlichen"'})]}),e.jsx(ie,{}),e.jsx("h2",{id:"haeufige-fehler",children:"Häufige Fehler und Lösungen"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Conversions werden nicht gezählt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Prüfe: Conversion Linker vorhanden? Consent erteilt? Tag feuert auf richtiger Seite?"})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:'â "Keine Daten" in Google Ads'}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Warte 24-48 Stunden. Prüfe Consent Mode. Stelle sicher, dass echte Conversions stattfinden."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Remarketing-Zielgruppen leer"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'Consent Mode prüfen â bei "denied" werden keine Zielgruppen gesammelt.'})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â GTM-Container lädt nicht"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Code korrekt eingebunden? Container-ID stimmt? Ad-Blocker aktiv?"})]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Warum sollte ich Google Ads mit GTM verknüpfen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"GTM gibt dir volle Kontrolle über dein Tracking. Du k
514annst Conversion-Tags, Remarketing, Enhanced Conversions und Consent Mode an einem Ort verwalten â ohne Code-Ãnderungen an deiner Website."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Brauche ich Consent Mode mit Google Tag Manager?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ja, seit März 2024 ist Consent Mode V2 Pflicht für Google Ads in der EU. Ohne Consent Mode werden deine Conversion-Daten nicht korrekt erfasst und du verlierst Remarketing-Zielgruppen."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was ist der Unterschied zwischen Google Ads Tag und Conversion Linker?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Der Conversion Linker speichert Click-Informationen (GCLID) in einem First-Party-Cookie. Das Google Ads Tag sendet die eigentlichen Conversion-Daten. Beide sind erforderlich für korrektes Tracking."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"GTM + Google Ads ist 2026 die Standard-Kombination für professionelles Tracking. Mit dieser Anleitung hast du:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"GTM korrekt installiert"}),e.jsx("li",{children:"Consent Mode V2 integriert"}),e.jsx("li",{children:"Conversion Tracking aktiv"}),e.jsx("li",{children:"Remarketing-Zielgruppen sammelnd"}),e.jsx("li",{children:"Enhanced Conversions vorbereitet"})]}),e.jsxs("p",{children:["Als nächstes empfehle ich dir, ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions vollständig einzurichten"})," und dein ",e.jsx(E,{to:"/google-ads-tutorial",className:"text-primary hover:underline",children:"erstes Google Ads Tutorial"})," durchzuarbeiten."]})]})]})},bM=()=>{const t=ct.gordon,n="2023-05-05",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was ist eine Portfolio-Gebotsstrategie in Google Ads?",acceptedAnswer:{"@type":"Answer",text:"Eine Portfolio-Gebotsstrategie ist eine automatisierte Gebotsstrategie, die über mehrere Kampagnen hinweg angewendet wird. Anstatt jede Kampagne einzeln zu optimieren, teilen sich mehrere Kampagnen dieselben Ziele und Budgets."}},{"@type":"Question",name:"Wann sollte ich eine Portfolio-Gebotsstrategie nutzen?",acceptedAnswer:{"@type":"Answer",text:"Portfolio-Strategien sind sinnvoll bei: ähnlichen Kampagnenzielen, wenig Conversion-Daten pro Kampagne, gleichem Ziel-CPA oder ROAS, und wenn du die Lernphase verkürzen möchtest."}},{"@type":"Question",name:"Funktionieren Portfolio-Gebotsstrategien mit Performance Max?",acceptedAnswer:{"@type":"Answer",text:"Nein, Performance Max Kampagnen können nicht in Portfolio-Gebotsstrategien eingebunden werden. P-Max verwaltet die Gebote automatisch und separat."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Portfolio-Gebotsstrategie 2026 â Wann sie sinnvoll ist | AdsHero"}),e.jsx("meta",{name:"description",content:"Portfolio-Gebotsstrategien in Google Ads: Wann lohnt sich der Einsatz wirklich? Vor- und Nachteile, Setup-Anleitung und AI Max Synergien im Ãberblick."}),e.jsx("meta",{name:"keywords",content:"portfolio gebotsstrategie, google ads portfolio strategie, shared bidding strategy, gebotsstrategie mehrere kampagnen"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-portfolio-gebotsstrategie"}),e.jsx("meta",{property:"og:title",content:"Portfolio-Gebotsstrategie 2026 â Wann sie sinnvoll ist"}),e.jsx("meta",{property:"og:description",content:"Portfolio-Gebotsstrategien richtig einsetzen. Vor- und Nachteile, Setup und Best Practices."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-portfolio-gebotsstrategie"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Portfolio-Gebotsstrategie 2026 â Wann sie sinnvoll ist (und wann nicht)",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"Portfolio-Gebotsstrategie 2026 â Wann sie sinnvoll ist (und wann nicht)",date:"5. Mai 2023",modifiedDate:"26. März 2026",readingTime:12,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"Portfolio-Gebotsstrategien versprechen bessere Ergebnisse durch kampagnenübergreifende Optimierung. Aber wann sind sie wirklich sinnvoll â und wann nicht? Diese Anleitung klärt auf."}),e.jsx("h2",{id:"was-ist-portfolio-gebotsstrategie",children:"Was ist eine Portfolio-Gebotsstrategie?"}),e.jsxs("p",{className:"mb-4",children:["Eine ",e.jsx("strong",{children:"Portfolio-Gebotsstrategie"})," ist eine automatisierte Gebotsstrategie, die über mehrere Kampagnen hinweg angewendet wird."]}),e.jsx("p",{className:"mb-4",children:'Statt jede Kampagne einzeln mit "Conversions maximieren" oder "Ziel-CPA" zu optimieren, teilen sich mehrere Kampagnen dieselben Ziele und Gebotsentscheidungen.'}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"Einfach erklärt:"}),e.jsx("p",{children:"Stell dir vor, du hast 5 Kampagnen mit je 10 Conversions/Monat. Einzeln sind das zu wenig Daten für gute Optimierung."}),e.jsx("p",{className:"mt-2",children:"Mit einer Portfolio-Strategie hast du plötzlich 50 Conversions, von denen der Algorithmus lernen kann."})]}),e.jsx("h2",{id:"vorteile",children:"Vorteile von Portfolio-Gebotsstrategien"}),e.jsxs("ul",{className:"list-disc list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Mehr Daten für den Algorithmus:"})," Kleine Kampagnen profitieren von den Learnings gröÃerer Kampagnen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kürzere Lernphase:"})," Mit mehr Conversion-Daten verlässt der Algorithmus die Lernphase schneller"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget-Effizienz:"})," Optional mit geteiltem Budget â Geld flieÃt automatisch zu den erfolgreichsten Kampagnen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Einheitliches Ziel:"})," Alle Kampagnen arbeiten auf denselben CPA oder ROAS hin"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Weniger Verwaltungsaufwand:"})," Eine Strategie statt viele einzelne anpassen"]})]}),e.jsx("h2",{id:"nachteile",children:"Nachteile und Risiken"}),e.jsxs("ul",{className:"list-disc list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Weniger Kontrolle:"}
514)," Du kannst nicht mehr pro Kampagne unterschiedliche Ziele setzen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget-Kannibalisierung:"}),' Starke Kampagnen können schwächeren das Budget "wegnehmen"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Unterschiedliche Produkte:"})," Wenn Kampagnen sehr unterschiedliche Margen haben, passt ein gemeinsamer Ziel-ROAS nicht"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Fehlerfortpflanzung:"})," Wenn eine Kampagne problematische Daten hat, beeinflusst das alle anderen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Keine P-Max Unterstützung:"})," ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max"})," kann nicht in Portfolios eingebunden werden"]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"wann-sinnvoll",children:"Wann ist eine Portfolio-Strategie sinnvoll?"}),e.jsx("p",{children:"Portfolio-Gebotsstrategien funktionieren gut, wenn:"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-4 my-6",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/30 p-4 rounded-lg",children:[e.jsx("h3",{className:"font-semibold text-green-600 mb-2",children:"â
Ideal für:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Mehrere Kampagnen mit gleichem Ziel"}),e.jsx("li",{children:"Wenig Conversions pro Kampagne (<30/Monat)"}),e.jsx("li",{children:"Ãhnliche Produkte/Dienstleistungen"}),e.jsx("li",{children:"Gleiche Marge und gleiches Ziel"}),e.jsx("li",{children:"Brand + Generic Kampagnen kombinieren"})]})]}),e.jsxs("div",{className:"bg-red-500/10 border border-red-500/30 p-4 rounded-lg",children:[e.jsx("h3",{className:"font-semibold text-red-600 mb-2",children:"â Nicht geeignet für:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Kampagnen mit unterschiedlichen Margen"}),e.jsx("li",{children:"Performance Max Kampagnen"}),e.jsx("li",{children:"Kampagnen mit sehr unterschiedlichem CPA"}),e.jsx("li",{children:"Testkampagnen mit experimentellen Settings"}),e.jsx("li",{children:"Regionale Kampagnen mit verschiedenen Zielen"})]})]})]}),e.jsx("h2",{id:"setup-anleitung",children:"Portfolio-Gebotsstrategie einrichten"}),e.jsx("h3",{children:"Schritt 1: Strategie erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Google Ads öffnen â Tools & Einstellungen"}),e.jsx("li",{children:'Unter "Gemeinsam genutzte Bibliothek" â Gebotsstrategien'}),e.jsx("li",{children:"Klicke auf das + Symbol"}),e.jsxs("li",{children:["Wähle den Strategietyp:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ziel-CPA:"})," Wenn du feste Kosten pro Conversion brauchst"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ziel-ROAS:"})," Für E-Commerce mit variablen Warenkörben"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversions maximieren:"})," Für maximale Menge bei flexiblem CPA"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Wert maximieren:"})," Für maximalen Umsatz"]})]})]}),e.jsx("li",{children:"Gib der Strategie einen aussagekräftigen Namen"}),e.jsx("li",{children:"Speichern"})]}),e.jsx("h3",{children:"Schritt 2: Kampagnen zuweisen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Ãffne eine Kampagne â Einstellungen"}),e.jsx("li",{children:'Bei "Gebote" â "Gebotsstrategie ändern"'}),e.jsx("li",{children:'Wähle "Portfolio-Gebotsstrategie"'}),e.jsx("li",{children:"Wähle deine erstellte Strategie"}),e.jsx("li",{children:"Wiederhole für alle gewünschten Kampagnen"})]}),e.jsx("h3",{children:"Schritt 3: Optional â Geteiltes Budget"}),e.jsxs("p",{children:["Du kannst zusätzlich ein ",e.jsx("strong",{children:"geteiltes Budget"})," erstellen, damit das Geld automatisch zu den erfolgreichsten Kampagnen flieÃt:"]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Tools & Einstellungen â Gemeinsam genutzte Bibliothek â Gemeinsame Budgets"}),e.jsx("li",{children:"Neues Budget erstellen"}),e.jsx("li",{children:"Kampagnen zuweisen"})]}),e.jsxs("div",{className:"bg-yellow-500/10 border border-yellow-500/30 p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"â ï¸ Vorsicht bei geteilten Budgets"}),e.jsx("p",{children:"Geteilte Budgets können dazu führen, dass schwache Kampagnen fast kein Budget mehr bekommen. Das kann gewollt sein â oder ein Problem, wenn du alle Kampagnen testen möchtest."})]}),e.jsx("h2",{id:"ai-max-synergien",children:"Portfolio-Strategien in der AI-Ãra"}),e.jsx("p",{children:"Mit den 2026er Updates von Google Ads (AI Ma
514x, verbesserte Smart Bidding Signale) sind Portfolio-Strategien weniger notwendig als früher."}),e.jsx("h3",{children:"Was hat sich geändert?"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Bessere Modellierung:"})," Googles Algorithmen sind präziser geworden â sie brauchen weniger Daten pro Kampagne"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Cross-Campaign Learning:"})," Auch ohne Portfolio lernen Kampagnen im selben Konto voneinander"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Performance Max:"})," P-Max übernimmt ohnehin die Optimierung â Portfolio nicht möglich und nicht nötig"]})]}),e.jsx("h3",{children:"Wann Portfolios 2026 noch Sinn machen:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Neue Konten mit wenig historischen Daten"}),e.jsx("li",{children:"Nischen mit sehr wenig Traffic"}),e.jsx("li",{children:"Wenn du ein übergreifendes Ziel (CPA/ROAS) erzwingen willst"}),e.jsx("li",{children:"Legacy Search-Kampagnen ohne P-Max Alternative"})]}),e.jsx("h2",{id:"best-practices",children:"Best Practices 2026"}),e.jsxs("ul",{className:"list-disc list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Homogene Kampagnen gruppieren:"})," Nur Kampagnen mit ähnlichem Conversion-Verhalten und Margen kombinieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Mindestens 30 Conversions/Monat:"})," Das Portfolio sollte zusammen genug Daten liefern"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"RegelmäÃig prüfen:"})," Schau monatlich, ob eine Kampagne das Budget monopolisiert"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Keine P-Max mischen:"})," Performance Max hat eigene Optimierung"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Realistische Ziele:"})," Der Ziel-CPA sollte erreichbar sein â zu aggressive Ziele führen zu Unterlieferung"]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was ist eine Portfolio-Gebotsstrategie in Google Ads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Eine Portfolio-Gebotsstrategie ist eine automatisierte Gebotsstrategie, die über mehrere Kampagnen hinweg angewendet wird. Anstatt jede Kampagne einzeln zu optimieren, teilen sich mehrere Kampagnen dieselben Ziele und Budgets."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wann sollte ich eine Portfolio-Gebotsstrategie nutzen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Portfolio-Strategien sind sinnvoll bei: ähnlichen Kampagnenzielen, wenig Conversion-Daten pro Kampagne, gleichem Ziel-CPA oder ROAS, und wenn du die Lernphase verkürzen möchtest."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Funktionieren Portfolio-Gebotsstrategien mit Performance Max?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Nein, Performance Max Kampagnen können nicht in Portfolio-Gebotsstrategien eingebunden werden. P-Max verwaltet die Gebote automatisch und separat."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"Portfolio-Gebotsstrategien sind ein nützliches Werkzeug â aber kein Allheilmittel. 2026 sind sie vor allem für Konten mit wenig Daten oder spezielle Use Cases sinnvoll."}),e.jsx("p",{children:"Für die meisten Advertiser empfehle ich stattdessen:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max"})," für E-Commerce und Lead-Gen"]}),e.jsx("li",{children:"Standard Smart Bidding auf Kampagnenebene"}),e.jsx("li",{children:"Portfolios nur, wenn wirklich zu wenig Daten vorhanden sind"})]}),e.jsxs("p",{children:["Wenn du Hilfe bei der richtigen Kampagnenstruktur brauchst,",e.jsx(E,{to:"/profit-analyse",className:"text-primary hover:underline",children:" buche unsere kostenlose Profit-Analyse"}),"."]})]})]})},jM=()=>{const t=ct.gordon,n="2022-08-20",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Wie schalte ich YouTube Werbung in 2026?",acceptedA
514nswer:{"@type":"Answer",text:"YouTube Werbung läuft 2026 über den Kampagnentyp Demand Gen in Google Ads. Du erstellst eine Demand Gen Kampagne, wählst YouTube als Platzierung und lädst deine Video-Creatives hoch."}},{"@type":"Question",name:"Was kostet YouTube Werbung?",acceptedAnswer:{"@type":"Answer",text:"YouTube Ads kosten durchschnittlich 0,01-0,05⬠pro View (CPV) oder 3-15⬠pro 1000 Impressionen (CPM). Die genauen Kosten hängen von Zielgruppe, Format und Wettbewerb ab."}},{"@type":"Question",name:"Welches Videoformat brauche ich für YouTube Ads?",acceptedAnswer:{"@type":"Answer",text:"Für Demand Gen brauchst du idealerweise Videos in drei Formaten: Horizontal (16:9), Quadrat (1:1) und Vertikal (9:16 für Shorts). Mindestlänge je nach Format: 6 Sekunden für Bumper, 15+ Sekunden für überspringbare Ads."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"YouTube Werbung schalten 2026: Demand Gen Anleitung in 5 Schritten | AdsHero"}),e.jsx("meta",{name:"description",content:"YouTube Werbung schalten mit Demand Gen in 5 Schritten: Alle Formate erklärt, Kosten-Ãberblick, Targeting-Optionen und Creative Best Practices für 2026."}),e.jsx("meta",{name:"keywords",content:"youtube werbung schalten, youtube ads schalten, youtube werbung kosten, youtube werbung erstellen, demand gen youtube"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/youtube-werbung-schalten"}),e.jsx("meta",{property:"og:title",content:"YouTube Werbung schalten 2026: Demand Gen Anleitung in 5 Schritten"}),e.jsx("meta",{property:"og:description",content:"YouTube Werbung schalten mit Google Ads Demand Gen. Alle Formate, Kosten und Best Practices."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/youtube-werbung-schalten"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"YouTube Werbung schalten 2026: Demand Gen Anleitung in 5 Schritten",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"YouTube Werbung schalten 2026: Demand Gen Anleitung in 5 Schritten",date:"20. August 2022",modifiedDate:"26. März 2026",readingTime:20,author:t,children:[e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["YouTube Werbung funktioniert 2026 anders als noch vor ein paar Jahren. Der Kampagnentyp ",e.jsx("strong",{children:"Demand Gen"})," hat die klassischen Video-Kampagnen abgelöst. In dieser Anleitung zeige ich dir Schritt für Schritt, wie du YouTube Werbung schaltest."]}),e.jsxs("div",{className:"bg-yellow-500/10 border border-yellow-500/30 p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"â ï¸ Wichtig: GroÃe Ãnderung 2024"}),e.jsxs("p",{children:["Google hat klassische Video-Kampagnen durch ",e.jsx("strong",{children:"Demand Gen"}),' ersetzt. Wenn du YouTube Ads schalten willst, nutzt du ab sofort Demand Gen â nicht mehr "Video-Kampagnen" oder "TrueView".']})]}),e.jsx("h2",{id:"was-hat-sich-geaendert",children:"Was hat sich bei YouTube Werbung geändert?"}),e.jsx("p",{children:"Früher hattest du separate Kampagnentypen für YouTube Ads: TrueView In-Stream, Discovery Ads, Bumper Ads. Das war unübersichtlich und ineffizient."}),e.jsxs("p",{children:[e.jsx("strong",{children:"2026 gilt:"})," YouTube Werbung läuft über ",e.jsx("strong",{children:"Demand Gen"}),". Ein Kampagnentyp, alle YouTube-Platzierungen, plus zusätzlich Gmail und Discover."]}),e.jsx("h3",{children:"Vorteile von Demand Gen für YouTube:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Alle YouTube-Formate:"})," In-Stream, In-Feed, Shorts â alles in einer Kampagne"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Bessere Optimierung:"})," Googles AI verteilt Budget auf die besten Platzierungen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Lookalike Audiences:"})," Ãhnliche Zielgruppen basierend auf deinen Kunden"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Cross-Channel:"})," Optional auch Gmail und Discover erreichen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Einfachere Struktur:"})," Weniger Kampagnen zu verwalten"]})]}),e.jsxs("p",{children:["Für die komplette Demand Gen Ãbersicht lies unseren",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:" Demand Gen Leitfaden"}),"."]}),e.jsx("h2",{id:"voraussetzungen",children:"Voraussetzungen für YouTube Werbung"}),e.jsx("p",{children:"Bevor du startest, brauchst du:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads Konto"})," â Falls noch nicht vorhanden,",e.jsx(E,{to:"/google-ads-tutorial",className:"text-primary hover:underline",children:" folge unserem Tutorial"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"YouTube-Kanal"})," â Deine Videos müssen auf YouTube hochgeladen sein"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion Tracking"})," â",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"Ãber GTM eingerichtet"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Mode V2"})," â Pflicht für EU-Targeting"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Video-Material"})," â Idealerweise in verschiedenen Formaten"]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"youtube-ad-formate",children:"YouTube Ad-Formate im Ãberblick"}),e.jsx("p",{children:"Mit Demand Gen kannst du auf verschiedene YouTube-Platzierungen ausspielen:"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"ðº In-Stream Ads (überspringbar)"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Erscheinen vor, während oder nach Videos. Nach 5 Sekunden überspringbar."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Format: Horizontal (16:9)"}),e.jsx("li",{children:"Länge: 15 Sekunden bis 3 Minuten empfohlen"}),e.jsx("li",{children:"Abrechnung: CPV (Cost per View) oder CPM"}),e.jsx("li",{children:"Best für: Markenbekanntheit, Storytelling"})]})]}),e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"ð¬ In-Feed Ads"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Erscheinen in YouTube-Suchergebnissen und auf der Startseite."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Format: Thumbnail + Titel + Beschreibung"}),e.jsx("li",{children:"Abrechnung: CPC (Click to Watch)"}
514),e.jsx("li",{children:"Best für: Interesse wecken, Kanal-Abos"})]})]}),e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"ð± Shorts Ads"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Vertikale Videos im Shorts-Feed. Das am schnellsten wachsende Format."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Format: Vertikal (9:16)"}),e.jsx("li",{children:"Länge: 6-60 Sekunden"}),e.jsx("li",{children:"Abrechnung: CPM"}),e.jsx("li",{children:"Best für: Junge Zielgruppen, schnelle Aufmerksamkeit"})]}),e.jsxs("p",{className:"mt-3 text-sm",children:["Mehr dazu: ",e.jsx(E,{to:"/youtube-shorts-ads-ultimativer-leitfaden",className:"text-primary hover:underline",children:"YouTube Shorts Ads Leitfaden"})]})]}),e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"â¡ Bumper Ads"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Nicht überspringbare 6-Sekunden-Spots vor Videos."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Format: Horizontal (16:9)"}),e.jsx("li",{children:"Länge: Exakt 6 Sekunden"}),e.jsx("li",{children:"Abrechnung: CPM"}),e.jsx("li",{children:"Best für: Reichweite, Retargeting"})]})]})]}),e.jsx("h2",{id:"schritt-fuer-schritt",children:"YouTube Werbung schalten â Schritt für Schritt"}),e.jsx("h3",{children:"Schritt 1: Demand Gen Kampagne erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Google Ads öffnen â ",e.jsx("strong",{children:"Kampagnen"})," â ",e.jsx("strong",{children:"Neue Kampagne"})]}),e.jsx("li",{children:'Wähle dein Ziel: "Umsätze", "Leads" oder "Zugriffe auf Website"'}),e.jsxs("li",{children:["Kampagnentyp: ",e.jsx("strong",{children:"Demand Gen"})]}),e.jsx("li",{children:"Weiter zur Kampagneneinrichtung"})]}),e.jsx("h3",{children:"Schritt 2: Kampagneneinstellungen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Kampagnenname:"}),' Aussagekräftig, z.B. "YouTube_DemandGen_Produkt_2026"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Standorte:"})," Wähle deine Zielländer/Regionen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Sprachen:"})," Deutsch (und ggf. weitere)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gebotsstrategie:"}),e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Conversions maximieren (für mehr Leads/Verkäufe)"}),e.jsx("li",{children:"Conversion-Wert maximieren (für höheren Umsatz)"}),e.jsx("li",{children:"Klicks maximieren (nur für Traffic/Awareness)"})]})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Tagesbudget:"})," Mind. 30-50⬠für ausreichend Daten"]})]}),e.jsx("h3",{children:"Schritt 3: Zielgruppe definieren"}),e.jsx("p",{children:"Demand Gen bietet leistungsstarke Targeting-Optionen:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ãhnliche Segmente (Lookalikes):"})," Nutzer, die deinen bestehenden Kunden ähneln â sehr effektiv!"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kaufbereite Zielgruppen:"})," Nutzer mit aktivem Kaufinteresse"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Remarketing:"})," Website-Besucher, Warenkorbabbrecher"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"YouTube-Interaktionen:"})," Nutzer, die deine Videos gesehen haben"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Custom Segments:"})," Basierend auf Suchbegriffen oder URLs"]})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"ð¡ Tipp: Starte mit Lookalikes"}),e.jsx("p",{children:'Die besten Ergebnisse erzielst du oft mit "Ãhnlichen Segmenten" basierend auf deinen KÃ
514¤ufern oder qualifizierten Leads. Diese Funktion war früher Facebook-exklusiv â jetzt hat Google sie auch.'})]}),e.jsx("h3",{children:"Schritt 4: Video-Assets hochladen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Videos verknüpfen:"})," Wähle Videos aus deinem YouTube-Kanal oder lade neue hoch"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Formate:"})," Lade idealerweise alle drei Formate hoch:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Horizontal (16:9) â für In-Stream"}),e.jsx("li",{children:"Quadrat (1:1) â für Feed-Platzierungen"}),e.jsx("li",{children:"Vertikal (9:16) â für Shorts"})]})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Thumbnails:"})," Wähle ansprechende Vorschaubilder"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ãberschriften:"})," Bis zu 5 Varianten (max. 40 Zeichen)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Beschreibungen:"})," Bis zu 5 Varianten (max. 90 Zeichen)"]}
514),e.jsxs("li",{children:[e.jsx("strong",{children:"Call-to-Action:"})," Passenden CTA-Button wählen"]})]}),e.jsx("h3",{children:"Schritt 5: Kampagne starten"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Ãberprüfe alle Einstellungen"}),e.jsx("li",{children:"Aktiviere die Kampagne"}),e.jsx("li",{children:"Warte 2-4 Wochen für die Lernphase"}),e.jsx("li",{children:"Optimiere basierend auf den ersten Daten"})]}),e.jsx(ie,{}),e.jsx("h2",{id:"kosten",children:"YouTube Werbung Kosten 2026"}),e.jsx("p",{children:"Was kostet YouTube Werbung? Hier sind aktuelle Richtwerte:"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3",children:"Metrik"}),e.jsx("th",{className:"text-left p-3",children:"Richtwert"}),e.jsx("th",{className:"text-left p-3",children:"Abhängig von"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPV (Cost per View)"}),e.jsx("td",{className:"p-3",children:"0,01 â 0,05 â¬"}),e.jsx("td",{className:"p-3",children:"Zielgruppe, Branche"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPM (Cost per 1000)"}),e.jsx("td",{className:"p-3",children:"3 â 15 â¬"}),e.jsx("td",{className:"p-3",children:"Platzierung, Wettbewerb"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPC (Cost per Click)"}),e.jsx("td",{className:"p-3",children:"0,20 â 2,00 â¬"}),e.jsx("td",{className:"p-3",children:"Ziel, Qualität der Ads"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"Min. Tagesbudget"}),e.jsx("td",{className:"p-3",children:"30 â 50 â¬"}),e.jsx("td",{className:"p-3",children:"Für ausreichend Daten"})]})]})]})}),e.jsxs("p",{children:["Für eine detaillierte Kostenanalyse lies unseren Artikel",e.jsx(E,{to:"/youtube-ads-kosten",className:"text-primary hover:underline",children:" YouTube Ads Kosten 2026"}),"."]}),e.jsx("h2",{id:"creative-best-practices",children:"Creative Best Practices"}),e.jsx("h3",{children:"Die ersten 5 Sekunden entscheiden"}),e.jsx("p",{children:'Bei überspringbaren Ads hast du 5 Sekunden, bevor der Nutzer "Ãberspringen" klicken kann. Diese 5 Sekunden sind kritisch:'}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Hook sofort:"})," Starte mit einer provokanten Frage oder Statement"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kein langes Intro:"})," Keine Logo-Animation am Anfang"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Branding früh:"})," Logo/Marke in den ersten 5 Sekunden zeigen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Bewegung:"})," Statische Bilder funktionieren schlecht"]})]}),e.jsx("h3",{children:"Video-Struktur für YouTube Ads"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"0-5 Sek:"})," Hook + Branding"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"5-25 Sek:"})," Problem ansprechen + Lösung zeigen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"25-45 Sek:"})," Social Proof / Vorteile"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"45-60 Sek:"})," Starker Call-to-Action"]})]}),e.jsx("h3",{children:"Für Shorts (Vertikal)"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Schneller Schnitt, keine langen Einstellungen"}),e.jsx("li",{children:"Text-Overlays für Ton-aus-Viewer"}),e.jsx("li",{children:"Native Optik â nicht wie klassische Werbung"}),e.jsx("li",{children:"Trend-Sounds nutzen (wenn passend)"})]}),e.jsx("h2",{id:"haeufige-fehler",children:"5 häufige Fehler bei YouTube Werbung"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 1: Zu lange Videos"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Videos über 2 Minuten haben hohe Absprungraten. Halte es unter 60 Sekunden."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 2: Kein Conversion Tracking"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Ohne Tracking weiÃt du nicht, welche Videos verkaufen. Setup ist Pflicht!"})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 3: Nur ein Video-Format"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Shorts-Nutzer sehen deine horizontalen Ads nicht gut. Erstelle alle Formate."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 4: Zu breites Targeting"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'âAlle 18-65 Jährigen" ist zu unspezifisch. Nutze Kaufabsicht oder Lookalikes.'})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 5: Zu wenig Budget"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Mit 10â¬/Tag bekommst du keine aussagekräftigen Daten. Starte mit 30-50â¬."})]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie schalte ich YouTube Werbung in 2026?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"YouTube Werbung läuft 2026 über den Kampagnentyp Demand Gen in Google Ads. Du erstellst eine Demand Gen Kampagne, wählst YouTube als Platzierung und lädst deine Video-Creatives hoch."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was kostet YouTube Werbung?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"YouTube Ads kosten durchschnittlich 0,01-0,05⬠pro View (CPV) oder 3-15⬠pro 1000 Impressionen (CPM). Die genauen Kosten hängen von Zielgruppe, Format und Wettbewerb ab."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Welches Videoformat brauche ich für YouTube Ads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Für Demand Gen brauchst du idealerweise Videos in drei Formaten: Horizontal (16:9), Quadrat (1:1) und Vertikal (9:16 für Shorts). Mindestlänge je nac
514h Format: 6 Sekunden für Bumper, 15+ Sekunden für überspringbare Ads."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"YouTube Werbung 2026 läuft über Demand Gen â einfacher und effektiver als die alten Video-Kampagnen. Mit der richtigen Zielgruppe, starken Creatives und ausreichend Budget erreichst du Millionen potenzieller Kunden."}),e.jsx("p",{children:e.jsx("strong",{children:"Nächste Schritte:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen Kampagnen komplett verstehen"})}),e.jsx("li",{children:e.jsx(E,{to:"/youtube-shorts-ads-ultimativer-leitfaden",className:"text-primary hover:underline",children:"YouTube Shorts Ads optimieren"})}),e.jsx("li",{children:e.jsx(E,{to:"/youtube-ads-kosten",className:"text-primary hover:underline",children:"YouTube Ads Kosten im Detail"})})]})]})]})},vM=()=>{const t=ct.gordon,n="2023-06-12",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was sind YouTube Shorts Ads?",acceptedAnswer:{"@type":"Answer",text:"YouTube Shorts Ads sind vertikale Video-Anzeigen, die im Shorts-Feed zwischen organischen Shorts erscheinen. Sie werden über Demand Gen oder Performance Max Kampagnen ausgespielt."}},{"@type":"Question",name:"Wie lang sollten Shorts Ads sein?",acceptedAnswer:{"@type":"Answer",text:"Shorts Ads sollten 15-30 Sekunden lang sein. Technisch sind bis zu 60 Sekunden möglich, aber kürzere Videos performen meist besser. Der Hook muss in den ersten 2-3 Sekunden sitzen."}},{"@type":"Question",name:"Wie viel kosten YouTube Shorts Ads?",acceptedAnswer:{"@type":"Answer",text:"Shorts Ads kosten typischerweise 2-8⬠CPM (Cost per 1000 Impressions). Das ist günstiger als klassische In-Stream Ads. Die genauen Kosten variieren je nach Zielgruppe und Wettbewerb."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"YouTube Shorts Ads 2026 â Der ultimative Leitfaden | AdsHero"}),e.jsx("meta",{name:"description",content:"YouTube Shorts Ads von A bis Z: Demand Gen Integration, Creative Specs, Targeting-Strategien und aktuelle Kosten. Der komplette Leitfaden für 2026."}),e.jsx("meta",{name:"keywords",content:"youtube shorts ads, shorts werbung, youtube shorts anzeigen, vertical video ads, shorts ads kosten"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/youtube-shorts-ads-ultimativer-leitfaden"}),e.jsx("meta",{property:"og:title",content:"YouTube Shorts Ads 2026 â Der ultimative Leitfaden"}),e.jsx("meta",{property:"og:description",content:"YouTube Shorts Ads für Performance Marketing. Demand Gen, Creative Specs und Best Practices."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/youtube-shorts-ads-ultimativer-leitfaden"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"YouTube Shorts Ads 2026 â Der ultimative Leitfaden",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"YouTube Shorts Ads 2026 â Der ultimative Leitfaden",date:"12. Juni 2023",modifiedDate:"26. März 2026",readingTime:14,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"YouTube Shorts hat 70+ Milliarden tägliche Views. Mit Shorts Ads erreichst du diese massive Zielgruppe. Hier erfährst du alles über Shorts Ads: von den technischen Specs bis zu den besten Creatives."}),e.jsx("h2",{id:"was-sind-shorts-ads",children:"Was sind YouTube Shorts Ads?"}),e.jsxs("p",{children:[e.jsx("strong",{children:"YouTube Shorts Ads"})," sind vertikale Video-Anzeigen (9:16), die im Shorts-Feed zwischen organischen Shorts erscheinen."]}),e.jsx("p",{children:"Anders als klassische YouTube Ads, die vor Videos laufen, sind Shorts Ads in den Scroll-Feed integriert â ähnlich wie TikTok oder Instagram Reels Ads."}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"Shorts in Zahlen (2026):"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1",children:[e.jsx("li",{children:"70+ Milliarden tägliche Views"}),e.jsx("li",{children:"2+ Milliarden eingeloggte Nutzer/Monat"}),e.jsx("li",{children:"Schnellstes wachsendes Format bei YouTube"}),e.jsx("li",{children:"Durchschnittsalter der Viewer: 18-34 Jahre"})]})]}),e.jsx("h2",{id:"shorts-ads-schalten",children:"Wie schalte ich Shorts Ads?"}),e.jsx("p",{children:"Shorts Ads werden über zwei Kampagnentypen ausgespielt:"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 my-8",children:[e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"ð¯ Demand Gen"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Volle Kontrolle über Shorts-Platzierung und Creative-Optimierung."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Shorts spezifisch targetieren"}),e.jsx("li",{children:"A/B Testing von Creatives"}),e.jsx("li",{children:"Lookalike Audiences nutzen"})]}),e.jsx("p",{className:"mt-3 text-sm",children:e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"â Demand Gen Anleitung"})})]}),e.jsxs("div",{className:"border border-border p-6 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-lg mb-3",children:"â¡ Performance Max"}),e.jsx("p",{className:"text-muted-foreground mb-3",children:"Automatische Ausspielung auf Shorts (neben anderen Platzierungen)."}),e.jsxs("ul",{className:"list-disc list-inside text-sm space-y-1",children:[e.jsx("li",{children:"Weniger Kontrolle"}),e.jsx("li",{children:"Automatische Optimierung"}),e.jsx("li",{children:"Für E-Commerce ideal"})]}),e.jsx("p",{className:"mt-3 text-sm",children:e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"â P-Max Anleitung"})})]})]}),e.jsx("h3",{children:"Demand Gen für Shorts â Empfohlene Methode"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Erstelle eine ",e.jsx("strong",{children:"Demand Gen Kampagne"})]}),e.jsx("li",{children:"Lade ein vertikales Video (9:16) als Asset hoch"}),e.jsx("li",{children:"Google erkennt automatisch das Shorts-Format"}),e.jsx("li",{children:"Optional: SchlieÃe andere Platzierungen aus für reine Shorts-Kampagnen"})]}),e.jsx("h2",{id:"creative-specs",children:"Technische Spezifikationen"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3",children:"Element"}),e.jsx("th",{className:"text-left p-3",children:"Spezifikation"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Format"}),e.jsx("td",{className:"p-3",children:"Vertikal (9:16)"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Auflösung"}),e.jsx("td",{className:"p-3",children:"1080 x 1920 Pixel (empfohlen)"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Länge"}),e.jsx("td",{className:"p-3",children:"6-60 Sekunden (15-30 optimal)"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"DateigröÃe"}),e.jsx("td",{className:"p-3",children:"Max. 256 GB"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Dateityp"}),e.jsx("td",{className:"p-3",children:"MP4, MOV, AVI, WEBM"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Safe Zone"}),e.jsx("td",{className:"p-3",children:"Wichtige Elemente mittig platzieren (UI-Overlays beachten)"})]})]})]})}),e.jsx(ie,{}),e.jsx("h2",{id:"creative-best-practices",children:"Creative Best Practices für Shorts Ads"}),e.jsx("h3",{children:"1. Der Hook â Die ersten 2 Sekunden"}),e.jsx("p",{children:"Im Shorts-Feed scrollen Nutzer schnell. Du hast 2 Sekunden, um die Aufmerksamkeit zu fangen:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Bewegung:"})," Sofort Action im Bild"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gesicht:"})," Menschen performen besser als Produkte"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Text:"})," GroÃe, lesbare Text-Overlays"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Frage:"}),' "Wusstest du, dass...?" funktioniert gut']})]}),e.jsx("h3",{children:"2. Native Optik"}),e.jsx("p",{children:"Die besten Shorts Ads sehen aus wie organische Shorts, nicht wie Werbung:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Smartphone-Qualität statt Studio-Produktion"}),e.jsx("li",{children:"Trend-Sounds nutzen (wenn zur Marke passend)"}),e.jsx("li",{children:"Schneller Schnitt, keine langen Einstellungen"}),e.jsx("li",{children:"Authentische Creator-Vibes"})]}),e.jsx("h3",{children:"3. Text-Overlays sind Pflicht"}),e.jsx("p",{children:"Viele Nutzer schauen Shorts ohne Ton. Deshalb:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Alle wichtigen Infos als Text einblenden"}),e.jsx("li",{children:"GroÃe, kontrastreiche Schrift"}),e.jsx("li",{children:"Captions für gesprochenen Text"}),e.jsx("li",{children:"CTA als Text am Ende"})]}),e.jsx("h3",{children:"4. Klarer Call-to-Action"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"CTA am Ende des Videos (letzte 3 Sekunden)"}),e.jsx("li",{children:'Einfache Handlung: "Jetzt shoppen", "Link klicken"'}),e.jsx("li",{children:'Dringlichkeit: "Nur noch heute", "Letzte Chance"'})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"ð¡ Pro-Tipp: UGC für Shorts"}),e.jsx("p",{children:"User Generated Content (UGC) performt bei Shorts besonders gut. Arbeite mit Creators, die authentischen Content für deine Marke erstellen â das wirkt natürlicher als polierte Werbung."})]}),e.jsx("h2",{id:"targeting-strategien",children:"Targeting-Strategien für Shorts Ads"}),e.jsx("h3",{children:"1. Ãhnliche Segmente (Lookalikes)"}),e.jsx("p",{children:"Die effektivste Targeting-Option für Shorts. Erstelle Lookalikes basierend auf:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 my-4",children:[e.jsx("li",{children:"Käufern der letzten 90 Tage"}),e.jsx("li",{children:"Hochwertige Leads (qualifiziert)"}),e.jsx("li",{children:"Newsletter-Abonnenten"})]}),e.jsx("h3",{children:"2. Custom Segments"}),e.jsx("p",{children:"Erstelle Zielgruppen basierend auf:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 my-4",children:[e.jsx("li",{children:"Suchanfragen (was suchen deine Kunden?)"}),e.jsx("li",{children:"Besuchte URLs (Konkurrenz-Websites)"}),e.jsx("li",{children:"App-Nutzung (relevante Apps)"})]}),e.jsx("h3",{children:"3. Remarketing"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 my-4",children:[e.jsx("li",{children:"Website-Besucher (letzte 30 Tage)"}),e.jsx("li",{children:"Warenkorbabbrecher"}),e.jsx("li",{children:"YouTube-Kanal-Interaktionen"}),e.jsx("li",{children:"Vorherige Shorts-Viewer"})]}),e.jsx("h2",{id:"kosten",children:"Shorts Ads Kosten 2026"}),e.jsx("p",{children:"Shorts Ads sind oft günstiger als klassische YouTube In-Stream Ads, weil das Inventar noch wächst:"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3",children:"Metrik"}),e.jsx("th",{className:"text-left p-3",children:"Shorts Ads"}),e.jsx("th",{className:"text-left p-3",children:"In-Stream Ads"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPM"}),e.jsx("td",{className:"p-3",children:"2-8 â¬"}),e.jsx("td",{className:"p-3",children:"5-15 â¬"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPV"}),e.jsx("td",{className:"p-3",children:"0,01-0,03 â¬"}),e.jsx("td",{className:"p-3",children:"0,02-0,05 â¬"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"CPC"}),e.jsx("td",{className:"p-3",children:"0,15-0,80 â¬"}),e.jsx("td",{className:"p-3",children:"0,30-1,50 â¬"})]})]})]})}),e.jsxs("p",{children:["Mehr Details: ",e.jsx(E,{to:"/youtube-ads-kosten",className:"text-primary hover:underline",children:"YouTube Ads Kosten 2026"})]}),e.jsx("h2",{id:"performance-messen",children:"Performance messen und optimieren"}),e.jsx("h3",{children:"Wichtige KPIs für Shorts Ads"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"View Rate:"})," Wie viele sehen mindestens 3 Sekunden?"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Engagement Rate:"})," Likes, Kommentare, Shares"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"CTR:"})," Klickrate auf deinen CTA"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversions:"})," Käufe/Leads nach dem View"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"View-Through Conversions:"})," Spätere Conversions nach Ad-View"]})]}),e.jsx("h3",{children:"Optimierungs-Tipps"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Teste verschiedene Hooks (ersten 2 Sekunden A/B testen)"}),e.jsx("li",{children:"Rotiere Creatives alle 2-4 Wochen"}),e.jsx("li",{children:"Analysiere, bei welcher Sekunde Nutzer abspringen"}),e.jsx("li",{children:"Teste verschiedene CTAs"}),e.jsx("li",{children:"Vergleiche Performance nach Tageszeit"})]}),e.jsx(ie,{}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Was sind YouTube Shorts Ads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"YouTube Shorts Ads sind vertikale Video-Anzeigen, die im Shorts-Feed zwischen organischen Shorts erscheinen. Sie werden über Demand Gen oder Performance Max Kampagnen ausgespielt."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie lang sollten Shorts Ads sein?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Shorts Ads sollten 15-30 Sekunden lang sein. Technisch sind bis zu 60 Sekunden möglich, aber kürzere Videos performen meist besser. Der Hook muss in den ersten 2-3 Sekunden sitzen."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie viel kosten YouTube Shorts Ads?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Shorts Ads kosten typischerweise 2-8⬠CPM (Cost per 1000 Impressions). Das ist günstiger als klassische In-Stream Ads. Die genauen Kosten variieren je nach Zielgruppe und Wettbewerb."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Kann ich Shorts Ads nur über Performance Max schalten?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Nein, Demand Gen ist die bessere Option für dedizierte Shorts-Kampagnen. P-Max verteilt automatisch auf alle Platzierungen, Demand Gen gibt dir mehr Kontrolle über die Shorts-Ausspielung."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"YouTube Shorts Ads sind 2026 eine der besten Möglichkeiten, junge Zielgruppen kostengünstig zu erreichen. Mit dem richtigen Creative und cleverem Targeting erzielst du starke Ergebnisse."}),e.jsx("p",{chi
514ldren:e.jsx("strong",{children:"Key Takeaways:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Nutze Demand Gen für volle Kontrolle über Shorts"}),e.jsx("li",{children:"Hook in den ersten 2 Sekunden ist entscheidend"}),e.jsx("li",{children:"Native Optik schlägt polierte Werbung"}),e.jsx("li",{children:"Text-Overlays für Ton-aus-Viewer"}),e.jsx("li",{children:"Lookalike Targeting für beste Performance"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Weiterführend:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 my-4",children:[e.jsx("li",{children:e.jsx(E,{to:"/youtube-werbung-schalten",className:"text-primary hover:underline",children:"YouTube Werbung schalten â Komplette Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen Kampagnen erstellen"})}),e.jsx("li",{children:e.jsx(E,{to:"/youtube-ads-kosten",className:"text-primary hover:underline",children:"YouTube Ads Kosten im Detail"})})]})]})]})},yM=()=>{const t=ct.gordon,n="2023-11-01",r="2026-10-05",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Wann sollte ich mit Black Friday Kampagnen starten?",acceptedAnswer:{"@type":"Answer",text:"Starte 2-3 Wochen vor Black Friday mit Awareness-Kampagnen. Die intensiven Sale-Kampagnen aktivierst du 3-5 Tage vorher. Remarketing-Listen sollten vorher aufgebaut sein."}},{"@type":"Question",name:"Wie viel Budget sollte ich für Black Friday einplanen?",acceptedAnswer:{"@type":"Answer",text:"Plane das 2-3-fache deines normalen Tagesbudgets ein. Die CPCs steigen an Black Friday um 30-50%, aber auch die Conversion Rates. Ohne ausreichend Budget verpasst du den Traffic-Peak."}},{"@type":"Question",name:"Sollte ich meine Performance Max Kampagnen für Black Friday anpassen?",acceptedAnswer:{"@type":"Answer",text:"Ja: Sale-Assets in alle Asset-Gruppen, Budget erhöhen â und den Ziel-ROAS an die geschrumpfte Marge anpassen, also eher nach oben. Ein niedrigerer Ziel-ROAS bei gleichzeitig niedrigerer Marge ist der schnellste Weg zum Verlustgeschäft."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Black Friday 2026 â mehr Gewinn, nicht nur mehr Umsatz | AdsHero"}),e.jsx("meta",{name:"description",content:"Black Friday mit Google Ads planen: Zeitplan, Budget, Kampagnen-Struktur â und wie du trotz Rabatt profitabel bleibst. Mit Break-even-Rechnung, Promotion Mode und Checkliste."}),e.jsx("meta",{name:"keywords",content:"google ads black friday, black friday kampagne, cyber monday google ads, black friday strategie, google ads sale"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-black-friday"}),e.jsx("meta",{property:"og:title",content:"Google Ads Black Friday 2026 â mehr Gewinn, nicht nur mehr Umsatz"}),e.jsx("meta",{property:"og:description",content:"Black Friday mit Google Ads planen: Zeitplan, Budget, Kampagnen-Struktur â und wie du trotz Rabatt profitabel bleibst. Mit Break-even-Rechnung, Promotion Mode und Checkliste."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-black-friday"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Google Ads Black Friday 2026 â mehr Gewinn, nicht nur mehr Umsatz",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"Google Ads Black Friday 2026 â mehr Gewinn, nicht nur mehr Umsatz",date:"1. November 2023",modifiedDate:"5. Oktober 2026",readingTime:16,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"Black Friday und Cyber Monday sind die umsatzstärksten Tage im E-Commerce â und für viele Shops die verlustreichsten. Denn mit jedem Rabatt schrumpft die Marge, während die Klickpreise steigen. Hier ist dein Fahrplan für 2026, mit dem du nicht nur Umsatz, sondern Gewinn mitnimmst."}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"ð
Black Friday 2026: Wichtige Daten"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Black Friday:"})," 27. November 2026"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Cyber Monday:"})," 30. November 2026"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Black Week:"})," 23. â 30. November 2026"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Pre-Black-Friday:"})," ab 13. November 2026"]})]})]}),e.jsx("h2",{id:"break-even",children:"Vor dem Rabatt: Break-even-ROAS neu rechnen"}),e.jsx("p",{children:"Der häufigste Black-Friday-Fehler steht nicht im Google-Ads-Konto, sondern in der Preisliste: Der Rabatt verändert deinen Break-even-ROAS â und zwar nach oben, nicht nach unten."}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-6",children:[e.jsx("p",{className:"mb-3",children:"Produkt für 100 â¬, Einkauf und variable Kosten 60 ⬠â Marge 40 ⬠â Break-even-ROAS 100 / 40 = 2,5."}),e.jsx("p",{className:"mb-3",children:"Mit 20 % Black-Friday-Rabatt: Preis 80 â¬, Kosten unverändert 60 ⬠â Marge 20 ⬠â Break-even-ROAS 80 / 20 = 4,0."}),e.jsx("p",{className:"font-medium",children:"Du brauchst also einen deutlich höheren ROAS, nicht einen niedrigeren, um nicht draufzulegen."})]}),e.jsxs("p",{children:["Deshalb gilt: Erst Rabatt festlegen, dann Marge je Produkt neu rechnen, dann Ziel-ROAS anpassen. Wer mit POAS (Profit on Ad Spend) statt ROAS steuert, sieht das automatisch â die Gebote folgen dem tatsächlichen Gewinn je Bestellung. Mehr dazu: ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"Warum ROAS lügt"}),"."]}),e.jsx("h2",{id:"zeitplanung",children:"Die richtige Zeitplanung"}),e.jsx("p",{children:"Black Friday Erfolg beginnt Wochen vorher. Hier ist dein Timeline:"}),e.jsx("h3",{children:"4-6 Wochen vorher (Mitte Oktober)"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Remarketing-Listen aufbauen:"})," Jetzt Traffic sammeln für später"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion Tracking prüfen:"})," ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"})," einrichten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Feed optimieren:"})," Produktdaten aktualisieren (GMC)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Creatives vorbereiten:"})," Sale-Banner und Anzeigentexte erstellen"]})]}),e.jsx("h3",{children:"2-3 Wochen vorher (Anfang November)"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Awareness-Kampagnen starten:"})," ",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen"})," für Reichweite"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget-Limits erhöhen:"})," Kontolimits prüfen und anpassen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Sale-Creatives hochladen:"})," In alle Asset-Gruppen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Gebote testen:"})," Nicht erst am Black Friday experimentieren"]})]}),e.jsx("h3",{children:"1 Woche vorher"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Early-Bird Deals:"})," Optional frühe Angebote für Newsletter-Abonnenten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Remarketing intensivieren:"})," Warenkorbabbrecher aktivieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget verdoppeln:"})," Schrittweise hochfahren"]})]}),e.jsx("h3",{children:"Black Friday / Cyber Monday"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Budget 2-3x:"})," Volles Budget aktivieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Monitoring alle 2-4 Stunden:"})," Performance überwachen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Auf Lagerbestände achten:"})," Ausverkaufte Produkte pausieren"]})]}),e.jsx("h2",{id:"budget-strategie",children:"Budget-Strategie für Black Friday"}),e.jsx("p",{children:"An Black Friday steigen die CPCs um 30-50%, aber auch die Conversion Rates und Average Order Values. Das bedeutet:"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 my-8",children:[e.jsxs("div",{className:"bg-green-500/10 border border-green-500/30 p-6 rounded-lg",children:[e.jsx("h3",{className:"font-semibold text-green-600 mb-2",children:"â
So planst du richtig:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"2-3x Tagesbudget für Black Week"}),e.jsx("li",{children:"3-5x für Black Friday selbst"}),e.jsx("li",{children:"Budget schon ab Mittwoch erhöhen"}),e.jsx("li",{children:"Keine Limits an Spitzentagen"})]})]}),e.jsxs("div",{className:"bg-red-500/10 border border-red-500/30 p-6 rounded-lg",children:[e.jsx("h3",{className:"font-semibold text-red-600 mb-2",children:"â Das kostet dich Umsatz:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Normales Budget beibehalten"}),e.jsx("li",{children:"Budget erst am BF erhöhen"}),e.jsx("li",{children:"Tagesbudget-Limits erreichen"}),e.jsx("li",{children:"Kontoweite Limits ignorieren"})]})]})]}),e.jsx("h3",{children:"Budget-Beispielrechnung:"}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-6",children:[e.jsx("p",{className:"font-medium mb-3",children:"Normales Tagesbudget: 200â¬"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Pre-Black-Friday (13.â22.11.): 300 â¬/Tag = 3.000 â¬"}),e.jsx("li",{children:"Black Week (23.â26.11.): 500 â¬/Tag = 2.000 â¬"}),e.jsx("li",{children:"Black Friday (27.11.): 800 â¬"}),e.jsx("li",{children:"Wochenende (28.â29.11.): 600 â¬/Tag = 1.200 â¬"}),e.jsx("li",{children:"Cyber Monday (30.11.): 700 â¬"}),e.jsx("li",{children:e.jsx("strong",{children:"Gesamt: ~7.700 â¬"})})]})]}),e.jsx(ie,{}),e.jsx("h2",{id:"kampagnen-struktur",children:"Kampagnen-Struktur für Black Friday"}),e.jsx("h3",{children:"1. Performance Max optimieren"}),e.jsxs("p",{children:["Deine ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen"})," sollten:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Sale-Assets:"})," Alle Ãberschriften, Beschreibungen und Bilder mit Sale-Messaging aktualisieren"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Promotion Extensions:"})," Sale-Angebote in Asset-Gruppen hinzufügen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget erhöhen:"}
514)," Mindestens 2x des normalen Budgets"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ziel-ROAS senken:"})," Niedrigere Marge akzeptieren für mehr Volumen (wenn strategisch sinnvoll)"]})]}),e.jsx("h3",{children:"2. Brand Kampagnen absichern"}),e.jsx("p",{children:"Konkurrenz bietet verstärkt auf deine Brand-Keywords. Dein Schutz:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Budget für Brand-Kampagnen erhöhen"}),e.jsx("li",{children:"Höhere Gebote für Brand-Keywords"}),e.jsx("li",{children:"Sale-Messaging in Brand-Anzeigen"})]}),e.jsx("h3",{children:"3. Remarketing-Kampagnen"}),e.jsx("p",{children:"Die wichtigste Kampagne an Black Friday! Zielgruppen:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Warenkorbabbrecher (7-30 Tage):"})," Höchste Priorität"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Produktseiten-Besucher:"})," Mit dynamischem Remarketing"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Frühere Käufer:"})," Upselling und Cross-Selling"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Newsletter-Abonnenten:"})," Customer Match Listen"]})]}),e.jsx("h3",{children:"4. Demand Gen für Upper Funnel"}),e.jsxs("p",{children:["Nutze ",e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen"})," für:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Lookalike Audiences deiner besten Kunden"}),e.jsx("li",{children:"Video Ads mit Sale-Ankündigungen"}),e.jsx("li",{children:"YouTube, Gmail und Discover Reichweite"})]}),e.jsx("h2",{id:"creative-tipps",children:"Creative-Tipps für Black Friday"}),e.jsx("h3",{children:"Anzeigentexte"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rabatte klar kommunizieren:"}),' "Bis zu 50% Rabatt", "-30% auf alles"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Dringlichkeit:"}),' "Nur noch heute", "Solange Vorrat reicht"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Konkrete Ersparnis:"}),' "Spare 89⬠auf [Produkt]"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Exklusivität:"}),' "Black Friday Exklusiv", "Limited Edition"']})]}),e.jsx("h3",{children:"Bilder und Banner"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Auffällige Sale-Badges (rot, schwarz)"}),e.jsx("li",{children:"Prozente groà und prominent"}),e.jsx("li",{children:"Countdown-Elemente (falls technisch möglich)"}),e.jsx("li",{children:"Produktbilder mit Sale-Overlay"})]}),e.jsx("h3",{children:"GMC Promotion-Feeds"}),e.jsx("p",{children:"Nutze den Promotion-Feed im Google Merchant Center:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Sale-Preise korrekt einpflegen"}),e.jsx("li",{children:"Streichpreise anzeigen"}),e.jsx("li",{children:'Promotion-Texte ("20% Black Friday Rabatt")'}),e.jsx("li",{children:"Sale-Zeitraum definieren"})]}),e.jsx("p",{children:"Achtung, seit September 2026 sind in Google Ads 'Automatische Angebote' standardmäÃig aktiv: Google liest Rabatte von Landingpage, Merchant Center und Unternehmensprofil und hängt sie selbst an Search- und PMax-Anzeigen. Unsere Empfehlung: abschalten (Kampagnen â Assets â â® Mehr â Automatisch erstellte Assets auf Kontoebene â Einstellungen â 'Automatische Angebote' aus) und Black-Friday-Rabatte nur als manuelle Rabatt-Erweiterung mit Enddatum anlegen. Sonst landen abgelaufene Banner oder Gutscheincodes aus dem Footer in der falschen Anzeige."}),e.jsx("h2",{id:"gebots-strategien",children:"Gebotsstrategien anpassen"}),e.jsx("h3",{children:"Option 1: Ziel-ROAS an die neue Marge anpassen (empfohlen)"}),e.jsx("p",{children:"Rechne für deine Rabattprodukte den Break-even-ROAS neu (siehe oben) und setze den Ziel-ROAS mit Puffer darüber. Beispiel: Break-even 4,0 â Ziel-ROAS 450â500 %. Mehr Volumen holst du über das Budget, nicht über einen niedrigeren ROAS."}),e.jsx("h3",{children:"Option 2: Promotion Mode nutzen (Beta, für Ziel-ROAS-Kampagnen)"}
514),e.jsx("p",{children:"Google bietet seit 2026 in den Kampagneneinstellungen von Search und Performance Max den Promotion Mode: Zeitraum 3â14 Tage, Ziel-ROAS-Toleranz in Prozent, optional Zusatz-Tagesbudget â danach stellt die Kampagne automatisch auf Normal zurück. Praktisch, weil du nichts zurückdrehen musst. Aber: Die Toleranz ist ein bewusster Renditeverzicht â nur so weit runter, wie deine Rabattmarge es hergibt."}),e.jsx("h3",{children:"Option 3: Conversions maximieren â nur wenn Gewinn nebensächlich ist"}),e.jsx("p",{children:"Für maximales Volumen (wenn Marge nebensächlich):"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:'Temporär "Conversions maximieren" statt Ziel-CPA'}),e.jsx("li",{children:"Nur für Black Week, dann zurückwechseln"}),e.jsx("li",{children:"Vorsicht: Kann teuer werden. Für Shops mit dünnen Margen ungeeignet."})]}),e.jsx(ie,{}),e.jsx("h2",{id:"nach-black-friday",children:"Nach Black Friday: Richtig runterfahren"}),e.jsx("p",{children:"Die Woche nach Cyber Monday ist kritisch:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Budgets schrittweise senken:"})," Nicht abrupt auf Normal"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Sale-Creatives entfernen:"})," Keine falschen Versprechen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Weihnachts-Messaging:"}),' Ãbergang zu "Geschenke finden"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Learnings dokumentieren:"})," Was hat funktioniert?"]})]}),e.jsx("h3",{children:"Analyse nach Black Friday:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Welche Kampagnen hatten den besten ROAS?"}),e.jsx("li",{children:"Welche Produkte waren Bestseller?"}),e.jsx("li",{children:"Welche Creatives performten am besten?"}),e.jsx("li",{children:"Zu welchen Uhrzeiten gab es die meisten Conversions?"}),e.jsx("li",{children:"Wie war die Customer Acquisition Cost vs. Wiederkäufer?"})]}),e.jsx("h2",{id:"haeufige-fehler",children:"5 häufige Black Friday Fehler"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 1: Zu spät anfangen"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Remarketing-Listen brauchen Zeit. Awareness-Kampagnen müssen Wochen vorher laufen."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 2: Budget-Deckel erreichen"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Wenn um 14 Uhr das Budget aufgebraucht ist, verpasst du den Abend-Traffic."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 3: Keine Sale-Creatives"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'Standard-Anzeigen fallen neben "50% OFF"-Konkurrenten durch.'})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 4: Tracking nicht geprüft"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Conversion Tracking funktioniert nicht â Algorithmus optimiert blind."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Fehler 5: Keine Lagerprüfung"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Budget auf ausverkaufte Produkte verschwenden."})]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wann sollte ich mit Black Friday Kampagnen starten?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Starte 2-3 Wochen vor Black Friday mit Awareness-Kampagnen. Die intensiven Sale-Kampagnen aktivierst du 3-5 Tage vorher. Remarketing-Listen sollten vorher aufgebaut sein."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie viel Budget sollte ich für Black Friday einplanen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Plane das 2-3-fache deines normalen Tagesbudgets ein. Die CPCs steigen an Black Friday um 30-50%, aber auch die Conversion Rates. Ohne ausreichend Budget verpasst du den Traffic-Peak."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Sollte ich meine Performance Max Kampagnen für Black Friday anpassen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ja: Sale-Assets in alle Asset-Gruppen, Budget erhöhen â und den Ziel-ROAS an die geschrumpfte Marge anpassen, also eher nach oben. Ein niedrigerer Ziel-ROAS bei gleichzeitig niedrigerer Marge ist der schnellste Weg zum Verlustgeschäft."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"Black Friday lohnt sich nur, wenn nach Rabatt und Werbekosten noch Gewinn übrig bleibt. Mit neu gerechnetem Break-even, ausreichend Budget und starken Creatives holst du das Maximum aus dem Peak â ohne böses Erwachen im Dezember."}),e.jsx("p",{children:e.jsx("strong",{children:"Deine Checkliste:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"â
Break-even-ROAS je Rabattprodukt neu gerechnet"}),e.jsx("li",{children:"â
Remarketing-Listen aufgebaut (ab Oktober)"}),e.jsxs("li",{children:["â
Tracking geprüft (",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"}),")"]}),e.jsx("li",{children:"â
Sale-Creatives vorbereitet"}),e.jsx("li",{children:"â
Budget 2-3x erhöht"}),e.jsx("li",{children:"â
GMC Promotions eingerichtet"}),e.jsx("li",{children:"â
Lagerbestände geprüft"}),e.jsx("li",{children:"â
'Automatische Angebote' geprüft bzw. abgeschaltet"})]}),e.jsxs("p",{children:["Du willst wissen, ob deine Black-Friday-Planung profitabel ist? In der kostenlosen ",e.jsx(E,{to:"/profit-analyse",className:"text-primary hover:underline",children:"Profit-Analyse"})," rechnen wir es für dein Konto durch."]})]})]})},wM=()=>{const t=ct.gordon,n="2023-02-08",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Warum verbrennt mein Google Ads Konto Geld?",acceptedA
514nswer:{"@type":"Answer",text:"Die häufigsten Gründe: Kein korrektes Conversion Tracking, zu breites Targeting, falsche Kampagnentypen, keine negativen Keywords, und Optimierung auf ROAS statt POAS (Profit on Ad Spend)."}},{"@type":"Question",name:"Wie erkenne ich, ob mein Google Ads Setup falsch ist?",acceptedAnswer:{"@type":"Answer",text:"Warnsignale: Hohe Impressionen aber wenig Klicks, Klicks aber keine Conversions, Conversions aber kein echter Umsatz, oder sinkende Performance trotz steigendem Budget."}},{"@type":"Question",name:"Welche Google Ads Fehler kosten am meisten Geld?",acceptedAnswer:{"@type":"Answer",text:"Die teuersten Fehler: Fehlerhaftes Conversion Tracking, falscher Kampagnentyp (z.B. Search statt Performance Max für E-Commerce), Display-Netzwerk bei Search aktiviert, und keine Ausschlüsse definiert."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"10 Google Ads Fehler 2026, die dein Budget verbrennen | AdsHero"}),e.jsx("meta",{name:"description",content:"Die 10 teuersten Google Ads Fehler und wie du sie sofort behebst. Von falschem Conversion Tracking bis zur falschen Gebotsstrategie â mit schnellen Fixes."}),e.jsx("meta",{name:"keywords",content:"google ads fehler, google ads kein umsatz, google ads optimieren, google ads probleme, google ads geld verbrennen"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-fehler"}),e.jsx("meta",{property:"og:title",content:"10 Google Ads Fehler 2026, die dein Budget verbrennen"}),e.jsx("meta",{property:"og:description",content:"Die teuersten Google Ads Fehler und wie du sie vermeidest. Praktische Fixes für 2026."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-fehler"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"10 Google Ads Fehler 2026, die dein Budget verbrennen",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"10 Google Ads Fehler 2026, die dein Budget verbrennen",date:"8. Februar 2023",modifiedDate:"26. März 2026",readingTime:18,author:t,children:[e.jsx("p",{className:"lead text-xl text-muted-foreground mb-8",children:"Du investierst Geld in Google Ads, aber der Gewinn bleibt aus? Diese 10 Fehler sehen wir bei fast jedem Konto, das wir auditieren. Viele davon sind einfach zu fixen â wenn man sie kennt."}),e.jsx("h2",{id:"fehler-1",children:"Fehler #1: Falsches oder fehlendes Conversion Tracking"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Ohne korrektes Tracking optimiert Google blind. Du zahlst für Klicks, aber niemand weiÃ, welche davon zu Verkäufen führen."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Warum es teuer ist:"})," Smart Bidding braucht Conversion-Daten. Ohne diese Daten kann der Algorithmus nicht lernen, welche Nutzer kaufbereit sind."]}),e.jsxs("div",{className:"bg-red-500/10 border border-red-500/30 p-6 rounded-lg my-6",children:[e.jsx("h3",{className:"font-semibold text-red-600 mb-2",children:"â Typische Tracking-Fehler:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Conversion feuert auf falscher Seite"}),e.jsx("li",{children:"Mehrfach-Zählung derselben Conversion"}),e.jsx("li",{children:"Conversion-Wert ist statisch statt dynamisch"}),e.jsx("li",{children:"Consent Mode nicht implementiert â Daten fehlen"}),e.jsx("li",{children:"Enhanced Conversions nicht aktiviert"})]})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," ",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"GTM korrekt einrichten"}),",",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:" Enhanced Conversions aktivieren"}),", und regelmäÃig mit Test-Conversions prüfen."]}),e.jsx("h2",{id:"fehler-2",children:"Fehler #2: Optimierung auf ROAS statt POAS"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Ein ROAS von 500% klingt toll â aber wenn deine Marge 20% ist, verlierst du trotzdem Geld."]}),e.jsx("p",{children:e.jsx("strong",{children:"Beispiel:"})}),e.jsx("div",{className:"bg-muted p-6 rounded-lg my-6",children:e.jsxs("ul",{className:"list-disc list-inside space-y-2",children:[e.jsx("li",{children:"100⬠Ad Spend â 500⬠Umsatz = 500% ROAS â
"}),e.jsx("li",{children:"500⬠à 20% Marge = 100⬠Rohgewinn"}),e.jsxs("li",{children:["100⬠Rohgewinn - 100⬠Ad Spend = ",e.jsx("strong",{children:"0⬠Gewinn"})," â"]})]})}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Optimiere auf ",e.jsx("strong",{children:"POAS (Profit on Ad Spend)"}),". Tracke den Rohgewinn statt nur den Umsatz.",e.jsx(E,{to:"/profit-analyse",className:"text-primary hover:underline",children:"Unsere kostenlose Profit-Analyse"})," zeigt dir, wie das für dein Konto funktioniert."]}
514),e.jsx("h2",{id:"fehler-3",children:"Fehler #3: Falscher Kampagnentyp für dein Geschäftsmodell"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Jeder Kampagnentyp hat seinen Zweck. Der falsche Typ kostet dich Geld."]}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3",children:"Geschäftsmodell"}),e.jsx("th",{className:"text-left p-3",children:"Bester Kampagnentyp"}),e.jsx("th",{className:"text-left p-3",children:"Häufiger Fehler"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"E-Commerce"}),e.jsx("td",{className:"p-3",children:e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max"})}),e.jsx("td",{className:"p-3",children:"Nur Search ohne Shopping"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"Lead-Gen"}),e.jsx("td",{className:"p-3",children:"Search + P-Max"}),e.jsx("td",{className:"p-3",children:"Display als Haupt-Kampagne"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"Brand Awareness"}),e.jsx("td",{className:"p-3",children:e.jsx(E,{to:"/demand-gen-google-ads",className:"text-primary hover:underline",children:"Demand Gen"})}),e.jsx("td",{className:"p-3",children:"Search mit generischen Keywords"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3",children:"App Downloads"}),e.jsx("td",{className:"p-3",children:"App Campaigns"}),e.jsx("td",{className:"p-3",children:"Web-Kampagnen für App"})]})]})]})}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Wähle den Kampagnentyp nach deinem Ziel, nicht nach Gewohnheit."]}),e.jsx(ie,{}),e.jsx("h2",{id:"fehler-4",children:"Fehler #4: Display-Netzwerk bei Search aktiviert"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"}),' Bei der Kampagnenerstellung ist "Display-Netzwerk einbeziehen" standardmäÃig aktiviert. Das vermischt hochwertigen Search-Traffic mit billigem Display-Traffic.']}),e.jsxs("p",{children:[e.jsx("strong",{children:"Warum es schadet:"}),' Display-Klicks kosten weniger, konvertieren aber schlechter. Der Algorithmus verteilt Budget auf Display, weil es "günstig" aussieht â aber die Conversions bleiben aus.']}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Bei jeder Search-Kampagne: Display-Netzwerk und Suchnetzwerk-Partner",e.jsx("strong",{children:"deaktivieren"}),". Für Display nutze separate Kampagnen."]}),e.jsx("h2",{id:"fehler-5",children:"Fehler #5: Keine negativen Keywords"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Deine Anzeigen erscheinen für irrelevante Suchanfragen. Du zahlst für Klicks von Leuten, die niemals kaufen werden."]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-6",children:[e.jsx("h3",{className:"font-semibold mb-3",children:"Beispiel: Du verkaufst Premium-Kopfhörer"}),e.jsx("p",{className:"text-sm mb-2",children:"Ohne negative Keywords zahlst du für:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsx("li",{children:'"kopfhörer kostenlos"'}),e.jsx("li",{children:'"kopfhörer reparatur"'}),e.jsx("li",{children:'"kopfhörer test" (Nur Info, kein Kauf)'}),e.jsx("li",{children:'"billige kopfhörer unter 20â¬"'})]})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," RegelmäÃig (wöchentlich!) den Suchbegriffe-Bericht prüfen. Irrelevante Begriffe als negative Keywords hinzufügen. Erstelle eine gemeinsame Liste für alle Kampagnen."]}),e.jsx("h2",{id:"fehler-6",children:"Fehler #6: Zu aggressive Ziel-Vorgaben"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du setzt einen Ziel-CPA von 5â¬, aber die realistische Conversion kostet 15â¬. Was passiert? Der Algorithmus liefert fast keine Impressionen aus."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Symptom:"}),' "Eingeschränkt durch Gebotsstrategie" in der Kampagnenübersicht.']}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Starte ohne Ziel-CPA/-ROAS (Conversions maximieren), sammle Daten, dann setze ein Ziel 10-20% über dem aktuellen Durchschnitt. Langsam verschärfen."]}),e.jsx("h2",{id:"fehler-7",children:"Fehler #7: Zu wenig Conversions für Smart Bidding"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"}
514)," Smart Bidding braucht 30-50 Conversions pro Monat pro Kampagne, um gut zu funktionieren. Mit 5 Conversions/Monat optimiert der Algorithmus quasi blind."]}),e.jsx("p",{children:e.jsx("strong",{children:"Lösungen:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Micro-Conversions:"})," Tracke auch Warenkorbzugänge, nicht nur Käufe"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kampagnen zusammenlegen:"})," Weniger Kampagnen = mehr Daten pro Kampagne"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Portfolio-Gebotsstrategie:"})," ",e.jsx(E,{to:"/google-ads-portfolio-gebotsstrategie",className:"text-primary hover:underline",children:"Mehrere Kampagnen teilen Daten"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Manuelles CPC:"})," Bei sehr wenig Daten manchmal besser"]})]}),e.jsx("h2",{id:"fehler-8",children:"Fehler #8: Keine Audience Signals in Performance Max"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du startest P-Max ohne Zielgruppensignale und überlässt Google die komplette Zielgruppenfindung. Das dauert lange und kostet."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Lade immer Zielgruppensignale hoch:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Käufer-Listen (Customer Match)"}),e.jsx("li",{children:"Website-Besucher"}),e.jsx("li",{children:"Kaufbereite Zielgruppen (In-Market)"}),e.jsx("li",{children:"Custom Segments basierend auf Suchbegriffen"})]}),e.jsxs("p",{children:["Mehr dazu: ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max richtig einrichten"})]}),e.jsx("h2",{id:"fehler-9",children:"Fehler #9: Keine Markenausschlüsse bei P-Max"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Performance Max zeigt deine Anzeigen auch bei Brand-Suchanfragen an. Diese Conversions hättest du wahrscheinlich sowieso bekommen â jetzt zahlst du doppelt."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"}),' In P-Max unter "Kampagneneinstellungen" â "Markenausschlüsse" deine eigene Marke ausschlieÃen. Dann separate Brand-Kampagne mit niedrigerem CPC.']}),e.jsx(ie,{}),e.jsx("h2",{id:"fehler-10",children:"Fehler #10: Lernphase ständig unterbrechen"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Problem:"})," Du änderst alle paar Tage Gebote, Budgets oder Zielgruppen. Jede Ãnderung wirft den Algorithmus in die Lernphase zurück."]}),e.jsx("p",{children:e.jsx("strong",{children:"Die Lernphase:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Dauert typischerweise 2-4 Wochen"}),e.jsx("li",{children:"Performance ist instabil während dieser Zeit"}),e.jsx("li",{children:"GroÃe Ãnderungen starten sie neu"})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Fix:"})," Ãndere maximal 1x pro Woche. Keine Ãnderungen über 20% am Budget. Gib dem Algorithmus Zeit zu lernen."]}),e.jsx("h2",{id:"bonus-fehler",children:"Bonus: AI-Ãra Fehler 2026"}),e.jsx("p",{children:"Diese Fehler sind neu und werden oft übersehen:"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Consent Mode nicht implementiert"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Seit März 2024 Pflicht. Ohne Consent Mode: Daten fehlen, Remarketing bricht ein, Attribution leidet."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Enhanced Conversions ignoriert"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Bis zu 15% mehr gemessene Conversions durch First-Party-Daten. Ohne: Dein ROAS sieht schlechter aus als er ist."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â AI Max deaktiviert in Search"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Die neuen AI-Features in Search-Kampagnen können signifikant mehr Conversions bringen â wenn sie aktiviert sind."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Nur ein Asset-Format in P-Max/Demand Gen"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Ohne vertikale Videos keine Shorts-Platzierung. Ohne Bilder keine Display. Jedes fehlende Format = verpasste Re
514ichweite."})]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Warum verbrennt mein Google Ads Konto Geld?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Die häufigsten Gründe: Kein korrektes Conversion Tracking, zu breites Targeting, falsche Kampagnentypen, keine negativen Keywords, und Optimierung auf ROAS statt POAS (Profit on Ad Spend)."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie erkenne ich, ob mein Google Ads Setup falsch ist?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Warnsignale: Hohe Impressionen aber wenig Klicks, Klicks aber keine Conversions, Conversions aber kein echter Umsatz, oder sinkende Performance trotz steigendem Budget."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Welche Google Ads Fehler kosten am meisten Geld?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Die teuersten Fehler: Fehlerhaftes Conversion Tracking, falscher Kampagnentyp (z.B. Search statt Performance Max für E-Commerce), Display-Netzwerk bei Search aktiviert, und keine Ausschlüsse definiert."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit: Schneller Audit für dein Konto"}),e.jsx("p",{children:"Geh diese Checkliste durch und prüfe dein Konto:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"â Conversion Tracking funktioniert korrekt"}),e.jsx("li",{children:"â Enhanced Conversions aktiviert"}),e.jsx("li",{children:"â Consent Mode V2 implementiert"}),e.jsx("li",{children:"â Richtiger Kampagnentyp für Ziel"}),e.jsx("li",{children:"â Display/Partner-Netzwerk bei Search aus"}),e.jsx("li",{children:"â Negative Keywords gepflegt"}),e.jsx("li",{children:"â Realistische Ziel-Vorgaben"}),e.jsx("li",{children:"â Genug Conversions pro Kampagne"}),e.jsx("li",{children:"â Audience Signals in P-Max"}),e.jsx("li",{children:"â Markenausschlüsse gesetzt"})]}),e.jsxs("p",{children:["Wenn du professionelle Hilfe brauchst:",e.jsx(E,{to:"/profit-analyse",className:"text-primary hover:underline",children:" Buche unsere kostenlose Profit-Analyse"}),". Wir finden die Fehler in deinem Konto und zeigen dir, wie du sie behebst."]})]})]})},kM=()=>{const t=ct.gordon,n="2023-04-25",r="2026-03-26",s={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Wie richte ich Google Ads Conversion Tracking in WordPress ein?",acceptedAnswer:{"@type":"Answer",text:"Die beste Methode für WordPress ist Google Tag Manager (GTM). Installiere GTM via Plugin (z.B. GTM4WP), erstelle Conversion-Tags in GTM und konfiguriere Trigger für deine Danke-Seite oder Formular-Events."}},{"@type":"Question",name:"Brauche ich ein Plugin für Google Ads Tracking in WordPress?",acceptedAnswer:{"@type":"Answer",text:"Ja, du brauchst mindestens ein Plugin für GTM-Integration (z.B. GTM4WP) und ein Consent Management Plugin für DSGVO-Konformität. Für WooCommerce empfehlen wir zusätzlich ein E-Commerce Data Layer Plugin."}},{"@type":"Question",name:"Wie tracke ich Contact Form 7 Conversions?",acceptedAnswer:{"@type":"Answer",text:"Contact Form 7 sendet ein JavaScript-Event 'wpcf7mailsent' nach erfolgreicher Formular-Einreichung. Erstelle einen Custom Event Trigger in GTM für dieses Event und verknüpfe es mit deinem Conversion Tag."}}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Conversion Tracking WordPress 2026 â Die richtige Methode | AdsHero"}),e.jsx("meta",{name:"description",content:"Google Ads Conversion Tracking für WordPress richtig einrichten: GTM-Methode, Consent Mode V2, Contact Form 7, WooCommerce und Server-Side Tracking erklärt."}),e.jsx("meta",{name:"keywords",content:"google ads conversion tracking wordpress, wordpress conversion tracking, gtm wordpress, contact form 7 tracking, wo
514ocommerce conversion tracking"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-conversion-wordpress"}),e.jsx("meta",{property:"og:title",content:"Google Ads Conversion Tracking WordPress 2026 â Die richtige Methode"}),e.jsx("meta",{property:"og:description",content:"Google Ads Conversion Tracking in WordPress einrichten. GTM, Consent Mode und praktische Anleitungen."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-conversion-wordpress"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Google Ads Conversion Tracking WordPress 2026 â Die richtige Methode",datePublished:n,dateModified:r,author:{"@type":"Person",name:"Gordon Kuckluck"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}}})})]}),e.jsxs(nt,{title:"Google Ads Conversion Tracking WordPress 2026 â Die richtige Methode",date:"25. April 2023",modifiedDate:"26. März 2026",readingTime:20,author:t,children:[e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["Conversion Tracking in WordPress kann kompliziert sein â verschiedene Plugins, Formular-Systeme und Shop-Lösungen. Diese Anleitung zeigt dir die ",e.jsx("strong",{children:"empfohlene Methode"}),"mit Google Tag Manager für 2026."]}),e.jsxs("div",{className:"bg-yellow-500/10 border border-yellow-500/30 p-6 rounded-lg my-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-3",children:"â ï¸ Wichtig für 2026"}),e.jsxs("p",{children:["Ohne ",e.jsx("strong",{children:"Consent Mode V2"})," werden deine Conversion-Daten unvollständig sein. Diese Anleitung berücksichtigt die DSGVO-Anforderungen und die aktuellen Google-Standards."]})]}),e.jsx("h2",{id:"methoden-ueberblick",children:"Tracking-Methoden im Ãberblick"}),e.jsx("p",{children:"Es gibt mehrere Wege, Google Ads Tracking in WordPress zu implementieren:"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-3",children:"Methode"}),e.jsx("th",{className:"text-left p-3",children:"Vorteile"}),e.jsx("th",{className:"text-left p-3",children:"Nachteile"}),e.jsx("th",{className:"text-left p-3",children:"Empfehlung"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"GTM"}),e.jsx("td",{className:"p-3",children:"Flexibel, skalierbar, Standard"}),e.jsx("td",{className:"p-3",children:"Einrichtungsaufwand"}),e.jsx("td",{className:"p-3 text-green-600 font-bold",children:"â
Empfohlen"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Plugin (z.B. MonsterInsights)"}),e.jsx("td",{className:"p-3",children:"Einfach"}),e.jsx("td",{className:"p-3",children:"Weniger Kontrolle, Plugin-Abhängigkeit"}),e.jsx("td",{className:"p-3",children:"Nur für Einsteiger"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Manuell im Theme"}),e.jsx("td",{className:"p-3",children:"Schnell"}),e.jsx("td",{className:"p-3",children:"Geht bei Updates verloren"}),e.jsx("td",{className:"p-3 text-red-600",children:"â Nicht empfohlen"})]}),e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("td",{className:"p-3 font-medium",children:"Server-Side (sGTM)"}),e.jsx("td",{className:"p-3",children:"Beste Datenqualität"}),e.jsx("td",{className:"p-3",children:"Komplexes Setup, Kosten"}),e.jsx("td",{className:"p-3",children:"Für Profis"})]})]})]})}),e.jsxs("p",{children:[e.jsx("strong",{children:"Diese Anleitung fokussiert auf GTM"})," â die beste Balance zwischen Kontrolle, Datenqualität und Wartbarkeit."]}),e.jsx("h2",{id:"voraussetzungen",children:"Voraussetzungen"}),e.jsx("p",{children:"Bevor du startest, stelle sicher:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:e.jsx("strong",{children:"WordPress-Admin-
514Zugang"})}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads Konto"})," mit Admin-Rechten"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Tag Manager Konto"})," â ",e.jsx("a",{href:"https://tagmanager.google.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Hier erstellen"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Management Plugin"})," (z.B. Complianz, Borlabs Cookie, CookieYes)"]})]}),e.jsx("h2",{id:"schritt-1-gtm-installieren",children:"Schritt 1: Google Tag Manager in WordPress installieren"}),e.jsx("h3",{children:"Option A: Plugin (empfohlen)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Installiere das Plugin ",e.jsx("strong",{children:'"GTM4WP"'})," (kostenlos)"]}),e.jsx("li",{children:"Aktiviere das Plugin"}),e.jsx("li",{children:"Gehe zu Einstellungen â Google Tag Manager"}),e.jsx("li",{children:"Gib deine GTM Container-ID ein (z.B. GTM-XXXXXX)"}),e.jsx("li",{children:'Wähle "Custom" als Container-Code-Platzierung'}),e.jsx("li",{children:"Speichern"})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-6",children:[e.jsx("h3",{className:"font-semibold mb-3",children:"ð¡ Warum GTM4WP?"}),e.jsx("p",{children:"GTM4WP ist das populärste GTM-Plugin für WordPress. Es bietet zusätzlich:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1 text-sm",children:[e.jsx("li",{children:"WooCommerce Data Layer Integration"}),e.jsx("li",{children:"Scroll Tracking Events"}),e.jsx("li",{children:"Outbound Link Tracking"}),e.jsx("li",{children:"Form Submit Tracking"})]})]}),e.jsx("h3",{children:"Option B: Manuell im Theme (nur falls Plugin nicht möglich)"}),e.jsx("p",{children:"Füge den GTM-Code in dein Child-Theme ein:"}),e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto my-6 text-sm",children:`// In functions.php deines Child-Themes 515add_action('wp_head', 'add_gtm_head', 1); 516function add_gtm_head() { ?> 517 <!-- Google Tag Manager --> 518 <script>
vendor: 335 bytes, lines 518-522
518(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 519 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 520 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 521 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 522 })(window,document,'script','dataLayer','
522GTM-XXXXXX
vendor: 3 bytes, line 522
522');
522<\/script> 523 <!-- End Google Tag Manager --> 524<?php } 525 526add_action('wp_body_open', 'add_gtm_body'); 527function add_gtm_body() { ?> 528 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 528-529
528 529 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
529GTM-XXXXXX
vendor: 87 bytes, lines 529-531
529" 530 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 531
531<!-- End Google Tag Manager (noscript) --> 532<?php }`}),e.jsx(ie,{}),e.jsx("h2",{id:"schritt-2-consent-mode",children:"Schritt 2: Consent Mode V2 einrichten"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Pflicht seit März 2024:"})," Consent Mode V2 teilt Google mit, ob der Nutzer Tracking zugestimmt hat."]}),e.jsx("h3",{children:"Mit Borlabs Cookie (beliebt bei WordPress):"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Installiere Borlabs Cookie"}),e.jsx("li",{children:"Aktiviere unter Einstellungen â Borlabs â Consent Mode"}),e.jsx("li",{children:'"Google Consent Mode V2" aktivieren'}),e.jsx("li",{children:"Stelle sicher, dass Defaults gesetzt sind (ad_storage: denied, analytics_storage: denied)"}),e.jsx("li",{children:'Füge Google Tag Manager als "Service" hinzu'})]}),e.jsx("h3",{children:"Mit anderen CMP-Plugins:"}),e.jsx("p",{children:"Die meisten Consent-Plugins haben GTM-Templates. Suche im GTM Template Gallery nach deinem Plugin."}),e.jsx("h2",{id:"schritt-3-conversion-erstellen",children:"Schritt 3: Conversion-Aktion in Google Ads erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Google Ads â Zielvorhaben â Conversions â Neue Conversion-Aktion"}),e.jsx("li",{children:'Wähle "Website"'}),e.jsxs("li",{children:["Konfiguriere:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Name:"}),' z.B. "Lead Formular" oder "Kauf"']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kategorie:"})," Passendes Ziel (Lead, Kauf, etc.)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Wert:"})," Statisch oder dynamisch (bei Shops)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zählung:"}),' "Alle" für Käufe, "Eine" für Leads']})]})]}),e.jsxs("li",{children:["Wähle ",e.jsx("strong",{children:'"Google Tag Manager"'})," als Einrichtungsmethode"]}),e.jsxs("li",{children:["Notiere die ",e.jsx("strong",{children:"Conversion-ID"})," und das ",e.jsx("strong",{children:"Conversion-Label"})]})]}),e.jsx("h2",{id:"schritt-4-gtm-konfigurieren",children:"Schritt 4: GTM für WordPress konfigurieren"}),e.jsx("h3",{children:"4.1 Conversion Linker erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"GTM öffnen â Tags â Neu"}),e.jsxs("li",{children:["Tag-Typ: ",e.jsx("strong",{children:"Conversion Linker"})]}),e.jsxs("li",{children:["Trigger: ",e.jsx("strong",{children:"All Pages"})]}),e.jsx("li",{children:'Speichern als "Conversion Linker"'})]}),e.jsx("h3",{children:"4.2 Conversion Tag für Danke-Seite (Standard)"}),e.jsx("p",{children:"Falls dein Formular auf eine Danke-Seite weiterleitet (z.B. /danke oder /thank-you):"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Erstelle einen ",e.jsx("strong",{children:"Page View Trigger"}),":",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Triggertyp: Seitenaufruf"}),e.jsx("li",{children:'Bedingung: Page URL enthält "/danke"'})]})]}),e.jsxs("li",{children:["Erstelle das ",e.jsx("strong",{children:"Conversion Tag"}),":",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Tag-Typ: Google Ads-Conversion-Tracking"}),e.jsx("li",{children:"Conversion-ID: Deine ID (z.B. AW-123456789)"}),e.jsx("li",{children:"Conversion-Label: Dein Label"}),e.jsx("li",{children:"Trigger: Dein Danke-Seite Trigger"})]})]})]}),e.jsx("h3",{children:"4.3 Conversion Tag für Contact Form 7"}),e.jsx("p",{children:"Contact Form 7 sendet ein JavaScript-Event nach erfolgreicher Einreichung. So trackst du es:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Erstelle einen ",e.jsx("strong",{children:"Custom Event Trigger"}),":",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"Triggertyp: Benutzerdefiniertes Ereignis"}),e.jsxs("li",{children:["Ereignisname: ",e.jsx("code",{children:"wpcf7mailsent"})]})]})]}
532),e.jsx("li",{children:"Verknüpfe dein Conversion Tag mit diesem Trigger"})]}),e.jsxs("div",{className:"bg-muted p-6 rounded-lg my-6",children:[e.jsx("h3",{className:"font-semibold mb-3",children:"ð¡ Alternative: GTM4WP Form Tracking"}),e.jsx("p",{children:'Wenn du GTM4WP nutzt, aktiviere unter Einstellungen â Integration â "Contact Form 7". Das Plugin erstellt automatisch Data Layer Events.'})]}),e.jsx("h3",{children:"4.4 WooCommerce Conversion Tracking"}),e.jsx("p",{children:"Für WooCommerce-Shops mit GTM4WP:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"GTM4WP â Integration â WooCommerce aktivieren"}),e.jsx("li",{children:'Aktiviere "Track enhanced ecommerce"'}),e.jsxs("li",{children:["In GTM erstelle einen Trigger:",e.jsx("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:e.jsxs("li",{children:["Benutzerdefiniertes Ereignis: ",e.jsx("code",{children:"purchase"})]})})]}),e.jsxs("li",{children:["Erstelle Data Layer Variablen für:",e.jsxs("ul",{className:"list-disc list-inside ml-6 mt-2 space-y-1",children:[e.jsx("li",{children:"ecommerce.transaction_id"}),e.jsx("li",{children:"ecommerce.value"}),e.jsx("li",{children:"ecommerce.currency"})]})]}),e.jsx("li",{children:"Verknüpfe diese im Conversion Tag für dynamische Werte"})]}),e.jsxs("p",{children:["Für Shopify-Shops haben wir eine separate Anleitung:",e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:"Shopify Conversion Tracking"})]}),e.jsx("h2",{id:"schritt-5-enhanced-conversions",children:"Schritt 5: Enhanced Conversions aktivieren"}),e.jsxs("p",{children:[e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"})," verbessern die Conversion-Attribution erheblich. Für WordPress:"]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"In Google Ads Enhanced Conversions aktivieren"}),e.jsx("li",{children:'Im Conversion Tag "Vom Nutzer bereitgestellte Daten" aktivieren'}),e.jsx("li",{children:"Erstelle Data Layer Variablen für E-Mail/Telefon"}),e.jsx("li",{children:"Oder: Automatic Enhanced Conversions (Google findet Felder automatisch)"})]}),e.jsx("h2",{id:"schritt-6-testen",children:"Schritt 6: Testen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"GTM Vorschau aktivieren:"}),' Klicke "Vorschau" in GTM']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Test-Conversion durchführen:"})," Fülle ein Formular aus oder tätige einen Testkauf"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Im Tag Assistant prüfen:"})," Wurde das Conversion Tag gefeuert?"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Google Ads prüfen:"})," Nach 24-48h sollte die Test-Conversion erscheinen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"GTM veröffentlichen:"}),' Wenn alles funktioniert â "Senden" â "Veröffentlichen"']})]}),e.jsx(ie,{}),e.jsx("h2",{id:"haeufige-probleme",children:"Häufige Probleme und Lösungen"}),e.jsxs("div",{className:"space-y-4 my-6",children:[e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â Conversion wird nicht gezählt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Prüfe: Consent erteilt? Tag feuert laut Vorschau? Conversion Linker aktiv? Richtige Trigger-Bedingung?"})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â CF7 Event wird nicht erkannt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'CF7 Event heiÃt exakt "wpcf7mailsent" (ohne Leerzeichen). Achte auf korrekte Schreibweise.'})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â GTM lädt nicht"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Cache leeren. Caching-Plugin prüfen (GTM evtl. ausschlieÃen). Ad-Blocker deaktivieren."})]}),e.jsxs("div",{className:"bg-muted p-4 rounded-lg",children:[e.jsx("p",{className:"font-semibold",children:"â WooCommerce-Werte fehlen"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"GTM4WP WooCommerce-Integration aktivieren. Data Layer auf Danke-Se
532ite prüfen."})]})]}),e.jsx("h2",{id:"faq",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie richte ich Google Ads Conversion Tracking in WordPress ein?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Die beste Methode für WordPress ist Google Tag Manager (GTM). Installiere GTM via Plugin (z.B. GTM4WP), erstelle Conversion-Tags in GTM und konfiguriere Trigger für deine Danke-Seite oder Formular-Events."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Brauche ich ein Plugin für Google Ads Tracking in WordPress?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ja, du brauchst mindestens ein Plugin für GTM-Integration (z.B. GTM4WP) und ein Consent Management Plugin für DSGVO-Konformität. Für WooCommerce empfehlen wir zusätzlich ein E-Commerce Data Layer Plugin."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Wie tracke ich Contact Form 7 Conversions?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Contact Form 7 sendet ein JavaScript-Event 'wpcf7mailsent' nach erfolgreicher Formular-Einreichung. Erstelle einen Custom Event Trigger in GTM für dieses Event und verknüpfe es mit deinem Conversion Tag."})]})]}),e.jsx("h2",{id:"fazit",children:"Fazit"}),e.jsx("p",{children:"Google Ads Conversion Tracking in WordPress ist mit GTM robust und flexibel umsetzbar. Die wichtigsten Punkte:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"â
GTM via Plugin installieren (GTM4WP)"}),e.jsx("li",{children:"â
Consent Mode V2 einrichten (Pflicht!)"}),e.jsx("li",{children:"â
Conversion Linker nicht vergessen"}),e.jsx("li",{children:"â
Richtige Trigger für dein Formular-System"}),e.jsx("li",{children:"â
Enhanced Conversions aktivieren"}),e.jsx("li",{children:"â
Gründlich testen vor dem Launch"})]}),e.jsxs("p",{children:["Für die vollständige GTM-Einrichtung lies auch:",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"Google Ads mit GTM verknüpfen"})]})]})]})},NM="/assets/featured-DYy2IQYA.webp",SM=()=>{const t=ss("warum-roas-luegt"),n=ct.gordon,r="2026-01-21",s="2026-01-21",i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was ist der Unterschied zwischen ROAS und POAS?",acceptedAnswer:{"@type":"Answer",text:"ROAS (Return on Ad Spend) misst nur Umsatz im Verhältnis zu Werbeausgaben. POAS (Profit on Ad Spend) berücksichtigt die tatsächlichen Margen und zeigt den echten Gewinn. Bei unterschiedlichen Produktmargen kann ein hoher ROAS trotzdem Verlust bedeuten."}},{"@type":"Question",name:"Warum ist ROAS als alleinige Kennzahl gefährlich?",acceptedAnswer:{"@type":"Answer",text:"ROAS ignoriert Produktmargen, Retourenquoten, Versandkosten und Zahlungsausfälle. Ein Produkt mit 5% Marge und 400% ROAS bringt weniger Gewinn als ein Produkt mit 40% Marge und 200% ROAS."}},{"@type":"Question",name:"Ab welchem Werbebudget lohnt sich POAS-Tracking?",acceptedAnswer:{"@type":"Answer",text:"Ab ca. 3.000⬠monatlichem Google Ads Budget wird POAS-Tracking rentabel. Der Aufwand für die Implementierung amortisiert sich durch die bessere Budgetallokation schnell."}},{"@type":"Question",name:"Wie berechne ich POAS für meinen Shop?",acceptedAnswer:{"@type":"Answer",text:"POAS = (Umsatz - Wareneinsatz - variable Kosten) / Werbeausgaben. Dafür brauchst du Margen-Daten auf Produktebene, die an Google Ads übergeben werden. Tools wie ProfitMetrics automatisieren diesen Prozess."}},{"@type":"Question",name:"Kann ich POAS auch ohne externes Tool nutzen?",acceptedAnswer:{"@type":"Answer",text:"Theoretisch ja, durch Custom Labels im Merchant Center für Margen-Segmente. Aber die manuelle Pflege ist aufwendig und fehleranfällig. Bei 1.000+ SKUs wird ein automatisiertes Tool empfohlen."}}]},a={"@context":"https://schema.org","@type":"Article",headline:(t==null?void 0:t.title)||"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce",description:(t==null?void 0:t.description)||"Warum ROAS als Kennzahl gefährlich ist und wie POAS (Profit on Ad Spend) die wahre Rentabilität deiner Google Ads zeigt.",image:"https://adshero.de/assets/blog/warum-roas-luegt/og-image.jpg",author:{"@type":"Person",name:n.name,url:n.linkedin},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:r,dateModified:s,mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/warum-roas-luegt"}},l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Warum ROAS lügt",item:"https://adshero.de/warum-roas-luegt"}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce 2026 | AdsHero"}),e.jsx("meta",{name:"description",content:"ROAS als alleinige Kennzahl ist gefährlich für E-Commerce Shops. Lerne warum POAS (Profit on Ad Spend) die bessere Metrik ist und wie du echte Gewinne statt Vanity Metrics optimierst. Mit Break-Even Rechner."}),e.jsx("meta",{name:"keywords",content:"ROAS Bedeutung, ROAS berechnen, ROAS vs ROI, POAS, Profit on Ad Spend, Google Ads Gewinn, E-Commerce Profitabilität, Google Ads Optimierung, Marge berechnen, Break-Even ROAS"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/warum-roas-luegt"}),e.jsx("meta",{property:"og:title",content:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce 2026"}),e.jsx("meta",{property:"og:description",content:"Warum ROAS als Kennzahl gefährlich ist und wie POAS die wahre Rentabilität deiner Google Ads zeigt."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/warum-roas-luegt"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:image",content:"https://adshero.de/assets/blog/warum-roas-luegt/og-image.jpg"}),e.jsx("meta",{property:"article:published_time",content:r}),e.jsx("meta",{property:"article:modified_time",content:s}),e.jsx("meta",{property:"article:author",content:n.name}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce 2026"}),e.jsx("meta",{name:"twitter:description",content:"Warum ROAS als Kennzahl gefährlich ist und wie POAS die wahre Rentabilität deiner Google Ads zeigt."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]}),e.jsxs(nt,{title:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce",date:"21. Januar 2026",modifiedDate:"21. Januar 2026",readingTime:12,featuredImage:NM,author:n,children:[e.jsxs("div",{className:"bg-muted rounded-lg p-6 my-8 not-prose",children:[e.jsx("h3",{className:"font-semibold text-lg mb-4",children:"ð Das Wichtigste in Kürze"}),e.jsxs("ul",{className:"space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"ROAS ignoriert Produktmargen â ein 400% ROAS kann Verlust bedeuten"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"POAS (Profit on Ad Spend) zeigt den echten Gewinn pro Werbe-Euro"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Break-Even ROAS bei 15% Marge: 667% (nicht 100%!)"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Ab 3.000â¬/Monat Werbebudget lohnt sich POAS-Tracking"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Tools wie ProfitMetrics automatisieren die Margen-Ãbergabe an Google"})]})]})]}),e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["Du optimierst auf ROAS und fragst dich trotzdem, warum am Ende des Monats kein Geld übrig bleibt? Du bist nicht allein. ROAS ist die gröÃte Lüge im E-Commerce Marketing â und in diesem Artikel zeige ich dir, warum du sofort auf ",e.jsx("strong",{children:"POAS (Profit on Ad Spend)"})," umsteigen solltest."]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 rounded-lg p-6 mb-8",children:[e.jsx("p",{className:"text-destructive font-semibold mb-2",children:"â ï¸ Die unbequeme Wahrheit"}),e.jsxs("p",{className:"text-muted-foreground",children:["Ein ROAS von 400% bedeutet ",e.jsx("strong",{children:"nicht"}),", dass du Gewinn machst. Bei einem Produkt mit 15% Marge brauchst du mindestens 667% ROAS, um überhaupt Break-Even zu erreichen."]})]}),e.jsx("h2",{children:"Was ROAS wirklich misst â und was nicht"}),e.jsxs("p",{children:[e.jsx("strong",{children:"ROAS (Return on Ad Spend)"})," berechnet sich simpel: Umsatz geteilt durch Werbeausgaben. Klingt logisch, oder? Das Problem: Diese Formel ignoriert alles, was deinen tatsächlichen Gewinn beeinflusst."]}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-6 my-6",children:[e.jsxs("p",{className:"font-mono text-lg mb-4",children:[e.jsx("strong",{children:"ROAS-Formel:"})," Umsatz ÷ Werbekosten = ROAS"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Beispiel: 10.000⬠Umsatz ÷ 2.500⬠Ads = 400% ROAS"})]}),e.jsxs("p",{children:["Was ROAS ",e.jsx("strong",{children:"nicht"})," berücksichtigt:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Wareneinsatz:"})," Ein T-Shirt für 30⬠mit 25⬠Einkaufspreis hat nur 5⬠Marge"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Versandkosten:"})," Besonders bei schweren oder sperrigen Produkten erheblich"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Retourenquote:"})," In der Modebranche oft 40-60% â der Umsatz verschwindet"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zahlungsausfälle:"}
532)," Mahnungen, Inkasso, nicht eingelöste Rechnungen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Payment-Gebühren:"})," PayPal, Klarna & Co. kosten 2-4% pro Transaktion"]})]}),e.jsx("p",{children:"Wenn du nur auf ROAS schaust, optimierst du auf eine Vanity Metric â eine Zahl, die gut aussieht, aber nichts über deinen tatsächlichen Geschäftserfolg aussagt."}),e.jsx("h2",{children:"Das ROAS-Problem bei unterschiedlichen Margen"}),e.jsx("p",{children:"Stell dir vor, du hast einen Shop mit 2.000 Produkten. Die Margen variieren zwischen 10% und 50%. Google Ads optimiert auf Conversions oder Conversion-Wert â aber die AI weià nichts über deine Margen."}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Produkt"}),e.jsx("th",{className:"border p-3 text-left",children:"Preis"}),e.jsx("th",{className:"border p-3 text-left",children:"Marge"}),e.jsx("th",{className:"border p-3 text-left",children:"ROAS"}),e.jsx("th",{className:"border p-3 text-left",children:"Gewinn pro Sale"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3",children:"Produkt A"}),e.jsx("td",{className:"border p-3",children:"100â¬"}),e.jsx("td",{className:"border p-3",children:"10%"}),e.jsx("td",{className:"border p-3 text-green-600 font-semibold",children:"500%"}),e.jsx("td",{className:"border p-3 text-red-600",children:"-10⬠(Verlust!)"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3",children:"Produkt B"}),e.jsx("td",{className:"border p-3",children:"100â¬"}),e.jsx("td",{className:"border p-3",children:"40%"}),e.jsx("td",{className:"border p-3",children:"250%"}),e.jsx("td",{className:"border p-3 text-green-600 font-semibold",children:"+20⬠(Gewinn!)"})]})]})]})}),e.jsxs("p",{children:[e.jsx("strong",{children:"Das Ergebnis:"}),' Google pusht Produkt A, weil der ROAS höher ist. Aber du verlierst bei jedem Verkauf Geld! Produkt B mit "schlechterem" ROAS wäre profitabel gewesen.']}),e.jsx(ie,{}),e.jsx("h2",{children:"POAS: Die Metrik, die wirklich zählt"}),e.jsxs("p",{children:[e.jsx("strong",{children:"POAS (Profit on Ad Spend)"})," löst dieses Problem, indem es den tatsächlichen Gewinn statt des Umsatzes betrachtet. Die Formel:"]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-6",children:[e.jsxs("p",{className:"font-mono text-lg mb-4",children:[e.jsx("strong",{children:"POAS-Formel:"})," (Umsatz - Wareneinsatz - variable Kosten) ÷ Werbekosten = POAS"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Beispiel: (10.000⬠- 6.000⬠- 500â¬) ÷ 2.500⬠= 140% POAS"})]}),e.jsxs("p",{children:["Ein POAS von 140% bedeutet: Für jeden Euro Werbeausgaben bekommst du 1,40⬠Deckungsbeitrag zurück.",e.jsx("strong",{children:"Das ist echte Profitabilität."})]}),e.jsx("h3",{children:"Warum POAS besser für Google Ads AI funktioniert"}),e.jsx("p",{children:"Wenn du POAS als Conversion-Wert an Google übergibst, optimiert die AI automatisch auf Gewinn statt Umsatz. Das bedeutet:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Produkte mit hoher Marge bekommen mehr Budget"}),e.jsx("li",{children:"Low-Margin-Produkte werden automatisch gedrosselt"}),e.jsx("li",{children:"Die AI lernt, welche Kunden profitabel sind"}),e.jsx("li",{children:"Dein tatsächlicher Gewinn steigt â nicht nur der Umsatz"})]}),e.jsx("h2",{children:"Praxis-Beispiel: 1.000 SKUs, eine Erkenntnis"}),e.jsx("p",{children:"Nehmen wir einen typischen B2B-Shop mit 1.000+ Produkten. Vor der POAS-Umstellung:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"ROAS: 350% (sieht gut aus!)"}),e.jsx("li",{children:"Monatlicher Umsatz: 80.000â¬"}),e.jsx("li",{children:"Werbekosten: 22.857â¬"}),e.jsxs("li",{children:[e.jsx("strong",{children:"Echter Gewinn:"})," 3.200⬠(traurig)"]})]}),e.jsx("p",{children:"Nach der POAS-Umstellung (3 Monate später):"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:'ROAS: 280% (sieht "schlechter" aus)'}),e.jsx("li",{children:"Monatlicher Umsatz: 65.000⬠(weniger!)"}),e.jsx("li",{children:"Werbekosten: 23.214â¬"}),e.jsxs("li",{children:[e.jsx("strong",{children:"Echter Gewinn:"})," 12.800⬠(+300%!)"]})]}),e.jsxs("p",{children:["Der Umsatz ist gesunken, aber der Gewinn hat sich ",e.jsx("strong",{children:"vervierfacht"}),". Das ist die Macht von POAS-Optimierung."]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-8",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Die Lektion"}),e.jsx("p",{className:"text-muted-foreground",children:"Weniger Ums
532atz kann mehr Gewinn bedeuten â wenn du auf die richtigen Produkte und Kunden fokussierst."})]}),e.jsx("h2",{children:"So implementierst du POAS in deinem Shop"}),e.jsx("p",{children:"Es gibt mehrere Wege, POAS-Daten an Google Ads zu übergeben. Von einfach bis fortgeschritten:"}),e.jsx("h3",{children:"Methode 1: Custom Labels im Merchant Center"}),e.jsxs("p",{children:["Segmentiere deine Produkte nach Margen-Kategorien (z.B. High Margin, Medium Margin, Low Margin). Erstelle separate Kampagnen oder Asset-Gruppen pro Segment. Vorteil: Kostenlos. Nachteil: Manuelle Pflege, keine Echtzeit-Daten. Wie du Custom Labels konkret in einer"," ",e.jsx(E,{to:"/feed-only-performance-max",className:"text-primary hover:underline",children:"Feed-Only Performance Max Kampagne"})," ","einsetzt, erfährst du in unserem separaten Guide."]}),e.jsx("h3",{children:"Methode 2: Manuelle Conversion-Wert-Anpassung"}),e.jsx("p",{children:"Ãbergib bei der Conversion nicht den Umsatz, sondern den berechneten Deckungsbeitrag. Technisch machbar, aber aufwendig bei vielen Produkten und dynamischen Margen."}),e.jsx("h3",{children:"Methode 3: Automatisierte POAS-Tools (empfohlen)"}),e.jsxs("p",{children:["Tools wie ",e.jsx("strong",{children:"ProfitMetrics"})," verbinden sich mit deinem Shop-System und ERP, berechnen die echte Marge pro Transaktion und übergeben diese automatisch an Google Ads. Das ist die professionelle Lösung für Shops mit 1.000+ SKUs."]}),e.jsxs("p",{children:["Mehr Details zur technischen Umsetzung findest du in unserem Artikel zu"," ",e.jsx(E,{to:"/google-ads-conversion-shopify",className:"text-primary hover:underline",children:"Google Ads Conversion Tracking für Shopify"}),"."]}),e.jsx(ie,{}),e.jsx("h2",{children:"Die 5 gröÃten ROAS-Irrtümer"}),e.jsx("h3",{children:'Irrtum 1: "Höherer ROAS ist immer besser"'}),e.jsx("p",{children:"Falsch. Ein ROAS von 800% bei 5% Marge bringt weniger Gewinn als 200% ROAS bei 50% Marge."}),e.jsx("h3",{children:'Irrtum 2: "ROAS zeigt die Kampagnen-Performance"'}),e.jsx("p",{children:'Teilweise. ROAS zeigt Umsatz-Effizienz, nicht Gewinn-Effizienz. Eine "schlechte" ROAS-Kampagne kann deine profitabelste sein.'}),e.jsx("h3",{children:'Irrtum 3: "Mein Break-Even ROAS ist 100%"'}),e.jsx("p",{children:"Nur wenn deine Marge 100% beträgt (also Wareneinsatz = 0). Bei 30% Marge liegt der Break-Even ROAS bei 333%."}),e.jsx("h3",{children:'Irrtum 4: "Google optimiert automatisch auf Gewinn"'}),e.jsx("p",{children:"Nein. Google optimiert auf das, was du als Conversion-Wert übergibst. Ohne Margen-Daten optimiert die AI auf Umsatz â egal ob profitabel oder nicht."}),e.jsx("h3",{children:'Irrtum 5: "POAS ist nur für groÃe Shops relevant"'}),e.jsx("p",{children:"Ab ca. 3.000â¬/Monat Werbebudget lohnt sich POAS-Tracking. Bei kleineren Budgets reicht eine grobe Margen-Segmentierung."}),e.jsx("h2",{children:"Break-Even ROAS berechnen: Die Formel"}),e.jsx("p",{children:"Um zu verstehen, ab welchem ROAS du profitabel bist, musst du deinen Break-Even ROAS kennen:"}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-6 my-6",children:[e.jsxs("p",{className:"font-mono text-lg mb-4",children:[e.jsx("strong",{children:"Break-Even ROAS:"})," 1 ÷ Deckungsbeitrag-Marge = Break-Even ROAS"]}),e.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsxs("p",{children:["⢠50% Marge: 1 ÷ 0,50 = ",e.jsx("strong",{children:"200% ROAS"})," für Break-Even"]}),e.jsxs("p",{children:["⢠30% Marge: 1 ÷ 0,30 = ",e.jsx("strong",{children:"333% ROAS"})," für Break-Even"]}),e.jsxs("p",{children:["⢠20% Marge: 1 ÷ 0,20 = ",e.jsx("strong",{children:"500% ROAS"})," für Break-Even"]}),e.jsxs("p",{children:["⢠15% Marge: 1 ÷ 0,15 = ",e.jsx("strong",{children:"667% ROAS"})," für Break-Even"]})]})]}),e.jsx("p",{children:'Diese Zahlen zeigen, warum viele E-Commerce-Shops mit "gutem" ROAS trotzdem Verluste machen. Bei 15% durchschnittlicher Marge brauchst du 667% ROAS, nur um bei ±0 zu landen!'}),e.jsx("h2",{children:"Wann sich POAS-Tracking lohnt"}),e.jsxs("p",{children:["POAS-Tracking ist ",e.jsx("strong",{children:"sinnvoll"})," wenn:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Du mehr als 3.000â¬/Monat für Google Ads ausgibst"}),e.jsx("li",{children:"Deine Produktmargen stark variieren (10-50%)"}),e.jsx("li",{children:"Du 500+ SKUs im Shop hast"}),e.jsx("li",{children:"Retouren ein relevanter Faktor sind"}),e.jsx("li",{children:"Du B2B-Kunde bist mit unterschiedlichen Kundenpreisen"})]}),e.jsxs("p",{children:["POAS-Tracking ist ",e.jsx("strong",{children:"noch nicht nötig"})," wenn:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Du unter 2.000â¬/Monat Werbebudget hast"}),e.jsx("li",{children:"Alle Produkte ähnliche Margen haben (±5%)"}),e.jsx("li",{children:"Du nur 10-20 Produkte verkaufst"}),e.jsx("li",{children:"Deine Retourenquote unter 5% liegt"})]}),e.jsx("h2",{children:"Häufige Fragen zu ROAS und POAS"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Was ist der Unterschied zwischen ROAS und POAS?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"ROAS (Return on Ad Spend) misst nur Umsatz im Verhältnis zu Werbeausgaben. POAS (Profit on Ad Spend) berücksichtigt die tatsächlichen Margen und zeigt den echten Gewinn. Bei unter
532schiedlichen Produktmargen kann ein hoher ROAS trotzdem Verlust bedeuten."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Warum ist ROAS als alleinige Kennzahl gefährlich?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"ROAS ignoriert Produktmargen, Retourenquoten, Versandkosten und Zahlungsausfälle. Ein Produkt mit 5% Marge und 400% ROAS bringt weniger Gewinn als ein Produkt mit 40% Marge und 200% ROAS."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Ab welchem Werbebudget lohnt sich POAS-Tracking?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Ab ca. 3.000⬠monatlichem Google Ads Budget wird POAS-Tracking rentabel. Der Aufwand für die Implementierung amortisiert sich durch die bessere Budgetallokation schnell."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Wie berechne ich POAS für meinen Shop?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"POAS = (Umsatz - Wareneinsatz - variable Kosten) / Werbeausgaben. Dafür brauchst du Margen-Daten auf Produktebene, die an Google Ads übergeben werden. Tools wie ProfitMetrics automatisieren diesen Prozess."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Kann ich POAS auch ohne externes Tool nutzen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Theoretisch ja, durch Custom Labels im Merchant Center für Margen-Segmente. Aber die manuelle Pflege ist aufwendig und fehleranfällig. Bei 1.000+ SKUs wird ein automatisiertes Tool empfohlen."})]})]}),e.jsx("h2",{children:"Fazit: Von ROAS zu POAS â Dein nächster Schritt"}),e.jsx("p",{children:"ROAS ist nicht komplett nutzlos â aber als alleinige Optimierungs-Metrik ist es gefährlich. Besonders bei Shops mit vielen Produkten und unterschiedlichen Margen führt ROAS-Optimierung oft zu mehr Umsatz, aber weniger Gewinn."}),e.jsx("p",{children:e.jsx("strong",{children:"Der Shift zu POAS bedeutet:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Echte Profitabilität statt Vanity Metrics"}),e.jsx("li",{children:"Bessere Budget-Allokation auf profitable Produkte"}),e.jsx("li",{children:"Google AI optimiert auf deinen tatsächlichen Geschäftserfolg"}),e.jsx("li",{children:"Weniger Stress, weil du weiÃt, dass jeder Euro Gewinn bringt"})]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¯ Dein nächster Schritt"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Willst du wissen, wie profitabel deine Google Ads wirklich sind? In unserem kostenlosen Profit-Audit zeigen wir dir, wo dein Budget verschwendet wird und wie du mit POAS-Optimierung mehr Gewinn aus deinen Kampagnen holst."}),e.jsx(E,{to:"/profit-analyse",className:"inline-flex items-center text-primary font-semibold hover:underline",children:"Jetzt kostenlose Profit-Analyse anfordern â"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Weiterführende Artikel:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen 2026 â Der ultimative Leitfaden"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-tutorial",className:"text-primary hover:underline",children:"Google Ads Tutorial 2026 â Komplette Schritt-für-Schritt Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-fehler",className:"text-primary hover:underline",children:"10 Google Ads Fehler 2026, die dein Budget verbrennen"})})]})]})]})},AM=()=>{const t=ss("feed-only-performance-max"),n=ct.gordon,r="2026-02-20",s="2026-02-20",i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Funktioniert Feed-Only Performance Max noch 2026?",acceptedA
532nswer:{"@type":"Answer",text:"Ja. Feed-Only PMax funktioniert auch 2026 zuverlässig. Solange du keine Assets (Bilder, Videos, Texte) in der Asset-Gruppe hinterlegst, spielt Google die Kampagne primär über Shopping-Platzierungen aus. Google hat diesen Ansatz nie offiziell unterbunden."}},{"@type":"Question",name:"Kann Google trotzdem Display oder YouTube ausspielen bei Feed-Only?",acceptedAnswer:{"@type":"Answer",text:"In seltenen Fällen kann Google minimale Impressionen auf Display oder YouTube generieren, selbst ohne Assets. Das liegt daran, dass Google automatisch generierte Assets erstellen kann. Du kannst dies unter Kampagneneinstellungen > Automatisch erstellte Assets deaktivieren, um das zu verhindern."}},{"@type":"Question",name:"Feed-Only PMax oder Standard Shopping â was ist besser?",acceptedAnswer:{"@type":"Answer",text:"Feed-Only PMax bietet durch Googles AI oft bessere Conversion-Raten als Standard Shopping, besonders bei groÃen Katalogen. Standard Shopping bietet dafür mehr manuelle Kontrolle über Gebote auf Keyword-Ebene. Für die meisten E-Commerce-Shops mit 500+ Produkten ist Feed-Only PMax die bessere Wahl."}},{"@type":"Question",name:"Wie viele Produkte brauche ich mindestens für Feed-Only PMax?",acceptedAnswer:{"@type":"Answer",text:"Es gibt kein offizielles Minimum, aber wir empfehlen mindestens 50-100 aktive Produkte im Feed und 30+ Conversions in 30 Tagen, damit Googles AI genug Daten zur Optimierung hat. Bei weniger Produkten kann Standard Shopping die bessere Option sein."}},{"@type":"Question",name:"Kann ich Feed-Only und All-Assets PMax gleichzeitig laufen lassen?",acceptedAnswer:{"@type":"Answer",text:"Ja, das ist eine gängige Strategie. Nutze Feed-Only PMax für deinen gesamten Katalog (Breitband-Abdeckung) und All-Assets PMax für ausgewählte Top-Seller oder High-Margin-Produkte, die von zusätzlicher Reichweite über Display und YouTube profitieren."}},{"@type":"Question",name:"Wie schlieÃe ich unprofitable Produkte bei Feed-Only PMax aus?",acceptedAnswer:{"@type":"Answer",text:"Nutze Eintragsgruppen (Listing Groups) in deiner PMax-Kampagne. Segmentiere nach Custom Labels, Produktkategorie oder Marke und schlieÃe unprofitable Segmente gezielt aus. Custom Labels im Merchant Center sind der flexibelste Weg, z.B. Custom Label 0 für Margen-Kategorien."}}]},a={"@context":"https://schema.org","@type":"Article",headline:(t==null?void 0:t.title)||"Feed-Only Performance Max 2026 â Komplette Anleitung",description:t==null?void 0:t.description,image:"https://adshero.de/assets/blog/performance-max-kampagnen/featured.webp",author:{"@type":"Person",name:n.name,url:n.linkedin},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:r,dateModified:s,mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/feed-only-performance-max"}},l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Feed-Only Performance Max",item:"https://adshero.de/feed-only-performance-max"}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Feed-Only Performance Max 2026 â Komplette Anleitung | AdsHero"}),e.jsx("meta",{name:"description",content:"Feed-Only Performance Max 2026: Schritt-für-Schritt Anleitung â PMax nur mit Produkt-Feed einrichten â Feed-Optimierung â Custom Labels â Eintragsgruppen-Strategie â Ideal für B2B E-Commerce"}),e.jsx("meta",{name:"keywords",content:"Feed Only Performance Max, Performance Max ohne Assets, PMax Shopping Kampagne, Feed Only PMax einrichten, Performance Max nur Shopping, PMax Feed Only vs All Assets, Google Ads Shopping, Merchant Center, Custom Labels, Eintragsgruppen"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/feed-only-performance-max"}),e.jsx("meta",{property:"og:title",content:"Feed-Only Performance Max 2026 â Komplette Anleitung"}),e.jsx("meta",{property:"og:description",content:"PMax nur mit Produkt-Feed einrichten. Feed-Optimierung, Custom Labels und Eintragsgruppen-Strategie für B2B E-Commerce."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/feed-only-performance-max"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:image",content:"https://adshero.de/assets/blog/performance-max-kampagnen/featured.webp"}),e.jsx("meta",{property:"og:locale",content:"de_DE"}),e.jsx("meta",{property:"article:published_time",content:r}),e.jsx("meta",{property:"article:modified_time",content:s}),e.jsx("meta",{property:"article:author",content:n.name}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Feed-Only Performance Max 2026 â Komplette Anleitung"}),e.jsx("meta",{name:"twitter:description",content:"PMax nur mit Produkt-Feed einrichten. Feed-Optimierung, Custom Labels und Eintragsgruppen-Strategie."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]}),e.jsxs(nt,{title:"Feed-Only Performance Max 2026 â Komplette Anleitung",date:"20. Februar 2026",readingTime:22,author:n,children:[e.jsxs("div",{className:"bg-muted rounded-lg p-6 my-8 not-prose",children:[e.jsx("h3",{className:"font-semibold text-lg mb-4",children:"ð Das Wichtigste in Kürze"}),e.jsxs("ul",{className:"space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Feed-Only PMax = Performance Max nur mit Produkt-Feed, ohne Bilder/Videos/Texte"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Ideal für B2B E-Commerce mit groÃen Katalogen (500+ SKUs) und niedrigen Margen"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Mehr Kontrolle als All-Assets PMax: Ausspielung primär über Shopping-Platzierungen"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Custom Labels für Margen-Segmentierung sind der Schlüssel zur Profitabilität"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}
532),e.jsx("span",{children:"Kombinierbar mit All-Assets PMax für Top-Seller"})]})]})]}),e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["Du willst Performance Max nutzen, aber ohne die Kontrolle über deine Shopping-Platzierungen zu verlieren? Dann ist eine ",e.jsx("strong",{children:"Feed-Only Performance Max Kampagne"})," genau das Richtige für dich. In diesem Guide zeige ich dir Schritt für Schritt, wie du PMax nur mit deinem Produkt-Feed einrichtest â ohne Assets, ohne Streuverluste, mit maximalem Fokus auf Shopping."]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 mb-8",children:[e.jsx("p",{className:"text-primary font-semibold mb-2",children:"ð¡ Warum dieser Artikel?"}),e.jsx("p",{className:"text-muted-foreground",children:"Im deutschsprachigen Raum gibt es kaum fundierte Anleitungen zu Feed-Only PMax. Die meisten Guides behandeln nur Standard-PMax mit allen Assets. Dabei ist Feed-Only für viele Shops die deutlich bessere Wahl â besonders wenn du einen groÃen Katalog mit unterschiedlichen Margen hast."})]}),e.jsx("h2",{children:"Was ist eine Feed-Only Performance Max Kampagne?"}),e.jsxs("p",{children:["Eine ",e.jsx("strong",{children:"Feed-Only Performance Max Kampagne"})," ist eine PMax-Kampagne, bei der du bewusst",e.jsx("strong",{children:" keine"})," Creative-Assets (Bilder, Videos, Texte, Logos) in der Asset-Gruppe hinterlegst. Stattdessen nutzt du ausschlieÃlich deinen Produkt-Feed aus dem Google Merchant Center."]}),e.jsxs("p",{children:["Das Ergebnis: Google spielt deine Anzeigen primär über ",e.jsx("strong",{children:"Shopping-Platzierungen"})," aus â also genau dort, wo kaufbereite Nutzer nach Produkten suchen. Display, YouTube und Gmail werden weitgehend übersprungen, weil Google keine Assets hat, die es dort zeigen kann."]}),e.jsx("h3",{children:"Der Unterschied zu Standard-PMax"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Merkmal"}),e.jsx("th",{className:"border p-3 text-left",children:"Feed-Only PMax"}),e.jsx("th",{className:"border p-3 text-left",children:"Standard PMax (All-Assets)"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Assets"}),e.jsx("td",{className:"border p-3",children:"Nur Produkt-Feed"}),e.jsx("td",{className:"border p-3",children:"Feed + Bilder + Videos + Texte"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"Netzwerke"}),e.jsx("td",{className:"border p-3",children:"Primär Shopping + Suche"}),e.jsx("td",{className:"border p-3",children:"Alle Google-Netzwerke"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Kontrolle"}),e.jsx("td",{className:"border p-3 text-green-600 font-semibold",children:"Hoch"}),e.jsx("td",{className:"border p-3",children:"Niedrig"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"Reichweite"}),e.jsx("td",{className:"border p-3",children:"Fokussiert"}),e.jsx("td",{className:"border p-3 text-green-600 font-semibold",children:"Maximal"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Aufwand"}),e.jsx("td",{className:"border p-3 text-green-600 font-semibold",children:"Gering (Feed only)"}),e.jsx("td",{className:"border p-3",children:"Hoch (Assets erstellen)"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"Ideal für"}),e.jsx("td",{className:"border p-3",children:"GroÃe Kataloge, B2B"}),e.jsx("td",{className:"border p-3",children:"Brand Awareness, D2C"})]})]})]})}),e.jsx("h3",{children:"Warum Google Feed-Only nicht offiziell bewirbt"}),e.jsx("p",{children:'Google möchte, dass du möglichst viele Assets bereitstellst â denn mehr Assets bedeuten mehr Inventar, in dem Google deine Anzeigen ausspielen kann. Feed-Only schränkt Google ein. Deshalb wirst du in keiner offiziellen Google-Dokumentation âFeed-Only" als empfohlene Strategie finden.'}),e.jsxs("p",{children:["Trotzdem funktioniert es einwandfrei. Google hat diese Möglichkeit nie unterbunden, weil es technisch einfach eine PMax-Kampagne ohne optionale Assets ist â und Assets sind ",e.jsx("em",{children:"optional"}),"."]}),e.jsx("h2",{children:"Feed-Only vs. All-Assets PMax: Wann welche Variante?"}),e.jsx("p",{children:"Die Entscheidung zwischen Feed-Only und All-Assets hängt von deinem Geschäftsmodell, deiner Produktanzahl und deinen Zielen ab."}),e.jsx("h3",{children:"Feed-Only ist ideal, wenn du:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"500+ Produkte"})," im Katalog hast â bei groÃen Katalogen sind individuelle Assets unrealistisch"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"B2B E-Commerce"})," betreibst â hier zählt der direkte Produkt-Kauf, nicht Brand Awareness"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Niedrige Margen"})," hast â jeder Euro Streuverlust auf Display/YouTube tut weh"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kein Creative-Team"})," hast â Feed-Only braucht keine Bilder oder Videos"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Maximale Kontrolle"})," willst â du weiÃt genau, wo dein Budget hingeht"]})]}),e.jsx("h3",{children:"All-Assets PMax ist besser, wenn du:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Wenige Produkte"})," hast (unter 50) und diese gezielt pushen willst"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Brand Awareness"})," aufbauen musst â Display und YouTube helfen hier"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Hohe Margen"})," hast â Streuverluste sind verkraftbar"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Video-Content"})," bereits produzierst â dann nutze ihn auch"]})]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-8",children:[e.jsx("p",{className:"text-primary font-semibold mb-2",children:"ð¯ POAS-Perspektive"}),e.jsxs("p",{className:"text-muted-foreground",children:["Bei 1.000+ SKUs mit unterschiedlichen Margen ist Kontrolle entscheidend. Feed-Only PMax in Kombination mit"," ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"POAS-basierter Optimierung"})," ","stellt sicher, dass dein Budget nur für profitable Produkte ausgegeben wird â statt auf Display-Platzierungen verpufft zu werden."]})]}),e.jsx(ie,{}),e.jsx("h2",{children:"Voraussetzungen: Was du vorher brauchst"}),e.jsx("p",{children:"Bevor du eine Feed-Only PMax Kampagne startest, müssen einige Grundlagen stehen:"}),e.jsx("h3",{children:"1. Google Merchant Center mit sauberem Feed"}),e.jsxs("p",{children:["Dein Produkt-Feed ist bei Feed-Only dein ",e.jsx("strong",{children:"einziges"})," Werbemittel. Wenn der Feed schlecht ist, wird die Kampagne schlecht performen â ohne Ausnahme. Stelle sicher, dass:"]}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Alle Pflichtfelder ausgefüllt sind (Titel, Beschreibung, Preis, Verfügbarkeit, Bild)"}),e.jsx("li",{children:"Produkttitel keyword-optimiert sind (wichtigstes Keyword zuerst)"}),e.jsx("li",{children:"Bilder hochauflösend und freigestellt sind (mindestens 800x800px
532)"}),e.jsx("li",{children:"Preise und Verfügbarkeit in Echtzeit aktualisiert werden"}),e.jsx("li",{children:"Keine Ablehnungen oder Warnungen im Merchant Center vorliegen"})]}),e.jsx("h3",{children:"2. Conversion Tracking"}),e.jsxs("p",{children:["Ohne funktionierendes Conversion Tracking kann Google nicht optimieren. Wir empfehlen dringend"," ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"})," ","einzurichten, um die Datenqualität zu maximieren â besonders wichtig seit dem Ende der Third-Party Cookies."]}),e.jsx("h3",{children:"3. Ausreichend Conversion-Daten"}),e.jsxs("p",{children:["Als Faustregel: Mindestens ",e.jsx("strong",{children:"30 Conversions in 30 Tagen"})," auf Account-Ebene, bevor du PMax startest. Bei weniger Daten fehlt Googles AI die Grundlage zur Optimierung. Wenn du noch nicht genug Daten hast, starte zuerst mit Standard Shopping."]}),e.jsx("h3",{children:"4. Google Tag Manager (empfohlen)"}),e.jsxs("p",{children:["Für sauberes Tracking empfehlen wir den Einsatz des"," ",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"Google Tag Managers"}),". Er gibt dir Flexibilität beim Tracking-Setup und erleichtert die Implementierung von Enhanced Conversions und Consent Mode V2."]}),e.jsx("h2",{children:"Feed-Only PMax einrichten: Schritt für Schritt"}),e.jsx("p",{children:"Jetzt wird's konkret. Hier ist die Anleitung, wie du eine Feed-Only Performance Max Kampagne in Google Ads erstellst."}),e.jsx("h3",{children:"Schritt 1: Neue Kampagne erstellen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Gehe in Google Ads zu ",e.jsx("strong",{children:"Kampagnen â Neue Kampagne"})]}),e.jsxs("li",{children:["Wähle als Zielvorhaben ",e.jsx("strong",{children:'âUmsätze"'})," (für E-Commerce) oder ",e.jsx("strong",{children:'âLeads"'})]}),e.jsxs("li",{children:["Wähle als Kampagnentyp ",e.jsx("strong",{children:'âPerformance Max"'})]})]}),e.jsxs("p",{children:["Falls du unsicher bist, wie du eine PMax-Kampagne grundsätzlich erstellst, lies zuerst unseren ausführlichen"," ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen Guide"}),"."]}),e.jsx("h3",{children:"Schritt 2: Merchant Center verknüpfen"}),e.jsx("p",{children:"Im nächsten Schritt verknüpfst du dein Google Merchant Center Konto. Wähle das richtige Konto aus und stelle sicher, dass dein Feed aktiv und fehlerfrei ist."}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-destructive font-semibold mb-2",children:"â ï¸ Wichtig"}),e.jsxs("p",{className:"text-muted-foreground",children:["Ohne verknüpftes Merchant Center funktioniert Feed-Only PMax nicht. Stelle sicher, dass dein Merchant Center Konto mit deinem Google Ads Konto verbunden ist, ",e.jsx("em",{children:"bevor"})," du die Kampagne erstellst."]})]}),e.jsx("h3",{children:"Schritt 3: Budget und Gebotsstrategie festlegen"}),e.jsx("p",{children:"Wähle dein Tagesbudget und die Gebotsstrategie. Für Feed-Only empfehlen wir:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Gebotsstrategie:"}),' âConversion-Wert maximieren" mit optionalem tROAS-Ziel']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Budget:"})," Mindestens das 10-fache deines durchschnittlichen CPA pro Tag"]}),e.jsx("li",{children:"Starte ohne tROAS-Ziel, wenn du weniger als 50 Conversions/Monat hast"})]}),e.jsx("h3",{children:'Schritt 4: Asset-Gruppe erstellen â der âTrick"'}),e.jsxs("p",{children:["Hier kommt der entscheidende Punkt: Du erstellst eine Asset-Gruppe, fügst aber",e.jsx("strong",{children:" keine"})," Assets hinzu. Google zeigt dir Warnungen an, dass Assets fehlen â das ist normal und gewollt."]}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Erstelle eine neue Asset-Gruppe und gib ihr einen Namen"}),e.jsxs("li",{children:["Unter ",e.jsx("strong",{children:'âFinale URL"'})," gibst du deine Shop-URL ein"]}),e.jsxs("li",{children:["Die Felder für Bilder, Logos, Videos und Texte lässt du ",e.jsx("strong",{children:"komplett leer"})]}),e.jsx("li",{children:'Google zeigt Warnungen an (z.B. âAnzeigeneffektivität: Unvollständig") â das
532ist OK'}),e.jsxs("li",{children:["Konfiguriere deine ",e.jsx("strong",{children:"Eintragsgruppen"})," (Listing Groups) wie gewünscht"]})]}),e.jsx("h3",{children:"Workaround: Wenn Google Assets erzwingt"}),e.jsx("p",{children:"In manchen Fällen lässt Google dich die Kampagne nicht ohne mindestens ein Asset erstellen. Der Workaround:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-2 my-4",children:[e.jsxs("li",{children:["Füge ",e.jsx("strong",{children:"minimale Assets"})," hinzu (1 Bild, 1 Logo, 3 Ãberschriften, 2 Beschreibungen)"]}),e.jsx("li",{children:"Erstelle die Kampagne und lass sie live gehen"}),e.jsxs("li",{children:["Gehe zurück in die Asset-Gruppe und ",e.jsx("strong",{children:"lösche alle Assets wieder"})]}),e.jsxs("li",{children:["Deaktiviere unter Kampagneneinstellungen ",e.jsx("strong",{children:'âAutomatisch erstellte Assets"'})]})]}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¡ Profi-Tipp"}),e.jsx("p",{className:"text-muted-foreground",children:'Deaktiviere unbedingt âAutomatisch erstellte Assets" in den Kampagneneinstellungen. Sonst erstellt Google eigenständig Texte und nutzt Bilder von deiner Website â und deine Kampagne ist nicht mehr wirklich âFeed-Only".'})]}),e.jsx("h3",{children:"Schritt 5: Eintragsgruppen konfigurieren"}),e.jsx("p",{children:'Die Eintragsgruppen (Listing Groups) bestimmen, welche Produkte aus deinem Feed in der Kampagne laufen. StandardmäÃig sind âAlle Produkte" ausgewählt. Für eine optimale Performance solltest du hier segmentieren â mehr dazu im Abschnitt zur Eintragsgruppen-Strategie.'}),e.jsx(ie,{}),e.jsx("h2",{children:"Feed-Optimierung für maximale Performance"}),e.jsx("p",{children:"Bei Feed-Only PMax ist dein Produkt-Feed dein wichtigstes Werkzeug. Hier sind die entscheidenden Optimierungen:"}),e.jsx("h3",{children:"Produkttitel-Optimierung (Keyword-First-Strategie)"}),e.jsx("p",{children:"Der Produkttitel ist das wichtigste Feld in deinem Feed. Google nutzt den Titel, um zu entscheiden, bei welchen Suchanfragen dein Produkt ausgespielt wird."}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"font-semibold mb-4",children:"Titel-Formel für maximale Sichtbarkeit:"}),e.jsx("p",{className:"font-mono text-sm mb-4",children:"[Hauptkeyword] + [Marke] + [Produktmerkmal] + [GröÃe/Farbe/Variante]"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Schlecht:"}),' âPremium Wanderschuh Modell X-Trail Pro 2026"',e.jsx("br",{}),e.jsx("strong",{children:"Gut:"}),' âWanderschuhe Herren wasserdicht â X-Trail Pro Gore-Tex, GröÃe 42"']})]}),e.jsx("h3",{children:"Custom Labels für Margen-Segmentierung"}),e.jsx("p",{children:"Custom Labels sind das mächtigste Werkzeug für profitables Feed-Management. Du hast 5 Custom Labels (0-4) zur Verfügung. So nutzt du sie strategisch:"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Custom Label"}),e.jsx("th",{className:"border p-3 text-left",children:"Empfohlene Nutzung"}),e.jsx("th",{className:"border p-3 text-left",children:"Beispielwerte"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Label 0"}),e.jsx("td",{className:"border p-3",children:"Marge / Profitabilität"}),e.jsx("td",{className:"border p-3",children:"high_margin, medium_margin, low_margin"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"Label 1"}),e.jsx("td",{className:"border p-3",children:"Saison / Zeitraum"}),e.jsx("td",{className:"border p-3",children:"evergreen, sommer, winter, sale"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Label 2"}),e.jsx("td",{className:"border p-3",children:"Bestseller-Status"}),e.jsx("td",{className:"border p-3",children:"top_seller, standard, slow_mover"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"Label 3"}),e.jsx("td",{className:"border p-3",children:"Preis-Segment"}),e.jsx("td",{className:"border p-3",children:"premium, mittelklasse, einstieg"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Label 4"}),e.jsx("td",{className:"border p-3",children:"Kampagnen-Zuordnung"}),e.jsx("td",{className:"border p-3",children:"pmax_feed_only, pmax_all_assets, exclude"})]})]})]})}),e.jsxs("p",{children:["Die Margen-Segmentierung über Custom Labels ist die Brücke zum"," ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"POAS-Framework"}),". Indem du Produkte nach Marge segmentierst, kannst du unterschiedliche Gebotsstrategien und Budgets pro Segment fahren â und sicherstellst, dass dein Werbebudget nur für profitable Produkte ausgegeben wird."]}),e.jsx("h3",{children:"GTIN, Beschreibungen und Bilder"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"GTIN/EAN:"})," Immer angeben wenn vorhanden â verbessert die Zuordnung zu Suchanfragen erheblich"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Beschreibungen:"})," Mindestens 150 Zeichen, relevante Keywords natürlich einbauen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Bilder:"})," Hauptbild freigestellt auf weiÃem Hintergrund, zusätzliche Bilder mit Anwendungskontext"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Produkttyp:"})," Eigene Kategorisierung nutzen, möglichst granular"]})]}),e.jsx("h3",{children:"Supplemental Feeds für schnelle Ãnderungen"}),e.jsx("p",{children:"Supplemental Feeds (ergänzende Feeds) erlauben es dir, Daten in deinem Haupt-Feed zu überschreiben, ohne den Haupt-Feed anzupassen. Das ist ideal für:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Schnelle Titel-Optimierungen ohne Shop-Ãnderungen"}),e.jsx("li",{children:"Custom Labels hinzufügen oder ändern"}),e.jsx("li",{children:'Saisonale Anpassungen (z.B. âWeihnachtsangebot" in Titel)'}),e.jsx("li",{children:"A/B-Tests von Produkttiteln"})]}),e.jsx("p",{children:"Erstelle einen Supplemental Feed als Google Sheet â so kannst du Ãnderungen in Minuten vornehmen, statt auf den nächsten Feed-Crawl zu warten."}),e.jsx("h2",{children:"Eintragsgruppen-Strategie: Produkte richtig segmentieren"}),e.jsx("p",{children:"Die Eintragsgruppen-Strategie entscheidet darüber, welche Produkte beworben werden und wie granular du optimieren kannst. Hier sind die bewährten Ansätze:"}),e.jsx("h3",{children:"Segmentierung nach Custom Label (Marge)"}),e.jsx("p",{children:"Die effektivste Segmentierung für profitable Kampagnen. Erstelle separate Eintragsgruppen für:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"High Margin (40%+):"})," Aggressiveres Budget, niedrigerer tROAS möglich"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Medium Margin (20-40%):"})," Standard-Budget, moderater tROAS"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Low Margin (unter 20%):"})," Konservatives Budget, hoher tROAS â oder ausschlieÃen"]})]}),e.jsx("h3",{children:"Unprofitable Produkte ausschlieÃen"}),e.jsx("p",{children:"Nicht jedes Produkt sollte beworben werden. SchlieÃe gezielt aus:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Produkte mit negativem Deckungsbeitrag nach Werbekosten"}),e.jsx("li",{children:"Produkte mit extrem hoher Retourenquote"}),e.jsx("li",{children:"Auslaufmodelle oder Produkte mit geringer Verfügbarkeit"}),e.jsx("li",{children:"Produkte unter einer bestimmten Preisschwelle (z.B. unter 10â¬)"})]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-8",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¯ POAS in Aktion"}),e.jsxs("p",{className:"text-muted-foreground",children:["Ein Kunde mit 2.000 Produkten hat durch konsequentes AusschlieÃen unprofitabler Produkte (25% des Katalogs) seinen Gewinn um 40% gesteigert â bei gleichem Werbebudget. Der ROAS sank von 350% auf 280%, aber der ",e.jsx("strong",{children:"echte Profit stieg deutlich"}),"."]})]}),e.jsx("h3",{children:"Saisonale Segmentierung"}),e.jsx("p",{children:"Nutze Custom Labels, um saisonale Produkte gezielt zu steuern:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Saisonale Produkte vor der Saison aktivieren und Budget erhöhen"}),e.jsx("li",{children:"Nach der Saison Budget reduzieren oder Produkte ausschlieÃen"}),e.jsx("li",{children:"Evergreen-Produkte als stabiles Fundament beibehalten"})]}),e.jsx(ie,{}),e.jsx("h2",{children:"Gebotsstrategie und Budget"}),e.jsx("p",{children:"Die richtige Gebotsstrategie ist bei Feed-Only PMax entscheidend für den Erfolg."}),e.jsx("h3",{children:"tROAS vs. Maximize Conversion Value"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Strategie"}),e.jsx("th",{className:"border p-3 text-left",children:"Wann nutzen"}),e.jsx("th",{className:"border p-3 text-left",children:"Vorteil"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-medium",children:"Max. Conversion-Wert"}),e.jsx("td",{className:"border p-3",children:"Start / wenig Daten (<50 Conv./Monat)"}),e.jsx("td",{className:"border p-3",children:"Google hat volle Flexibilität zur Datensammlung"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-medium",children:"tROAS"}),e.jsx("td",{className:"border p-3",children:"Stabil / viel Daten (50+ Conv./Monat)"}),e.jsx("td",{className:"border p-3",children:"Kontrolle über Profitabilität"})]})]})]})}),e.jsxs("p",{children:[e.jsx("strong",{children:"Empfehlung:"}),' Starte mit âConversion-Wert maximieren" ohne tROAS-Ziel. Nach 4-6 Wochen und mindestens 50 Conversions: Setze einen tROAS, der 10-20% unter deinem aktuellen Durchschnitt liegt. Steigere den tROAS dann schrittweise (max. 10% pro Woche).']}),e.jsx("h3",{children:"Budget-Empfehlungen nach Katalog-GröÃe"}),e.jsx("div",{className:"overflow-x-auto my-8",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Katalog-GröÃe"}),e.jsx("th",{className:"border p-3 text-left",children:"Min. Tagesbudget"}),e.jsx("th",{className:"border p-3 text-left",children:"Empfehlung"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3",children:"50-200 Produkte"}),e.jsx("td",{className:"border p-3",children:"30-50â¬/Tag"}),e.jsx("td",{className:"border p-3",children:"1 Kampagne reicht"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3",children:"200-1.000 Produkte"}),e.jsx("td",{className:"border p-3",children:"50-150â¬/Tag"}),e.jsx("td",{className:"border p-3",children:"1-2 Kampagnen nach Marge"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3",children:"1.000-5.000 Produkte"}),e.jsx("td",{className:"border p-3",children:"150-500â¬/Tag"}),e.jsx("td",{className:"border p-3",children:"2-3 Kampagnen nach Marge/Kategorie"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3",children:"5.000+ Produkte"}),e.jsx("td",{className:"border p-3",children:"500â¬+/Tag"}),e.jsx("td",{className:"border p-3",children:"3-5 Kampagnen, Portfolio-Strategie"})]})]})]})}),e.jsxs("p",{children:["Bei groÃen Katalogen empfehlen wir den Einsatz von"," ",e.jsx(E,{to:"/google-ads-portfolio-gebotsstrategie",className:"text-primary hover:underline",children:"Portfolio-Gebotsstrategien"}),", um mehrere Kampagnen effizient zu steuern und das Budget automatisch zwischen Kampagnen zu verteilen."]}),e.jsx("h2",{children:"Reporting und Optimierung"}),e.jsx("p",{children:"Feed-Only PMax hat andere Reporting-Schwerpunkte als All-Assets PMax. Hier die wichtigsten Metriken:"}),e.jsx("h3",{children:"Die wichtigsten KPIs für Feed-Only"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Conversion-Wert / Kosten (ROAS):"})," Grundlegende Effizienz-Metrik"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Kosten pro Conversion (CPA):"})," Für Lead-Gen-Shops"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Impression Share:"})," Wie viel des möglichen Traffics erreichst du?"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Click-Through-Rate (CTR):"})," Indikator für Feed-Qualität"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Eintragsgruppen-Performance:"})," Welche Produktsegmente performen?"]})]}),e.jsx("h3",{children:"Eintragsgruppen-Performance auswerten"}),e.jsx("p",{children:"Gehe in deine PMax-Kampagne â Asset-Gruppen â Eintragsgruppen. Hier siehst du die Performance nach deiner Segmentierung (Kategorie, Custom Label, Marke etc.). Identifiziere Segmente mit:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Hohem Spend, niedrigem ROAS:"})," Budget reduzieren oder ausschlieÃen"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Hohem ROAS, niedrigem Spend:"})," Budget erhöhen, ggf. eigene Kampagne"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Keinen Impressionen:"})," Feed-Probleme prüfen, Titel optimieren"]})]}),e.jsx("h3",{children:"Channel-Level Reporting nutzen"}),e.jsxs("p",{children:["Seit 2026 bietet Google ",e.jsx("strong",{children:"Channel-Level Reporting"})," für PMax. Das zeigt dir, wie viel deines Budgets auf Shopping, Suche, Display, YouTube etc. verteilt wird. Bei einer echten Feed-Only Kampagne sollte der Shopping-Anteil bei 90%+ liegen."]}),e.jsx("p",{children:"Wenn du siehst, dass signifikanter Traffic über Display oder YouTube kommt, prüfe:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Sind wirklich alle Assets gelöscht?"}),e.jsx("li",{children:'Ist âAutomatisch erstellte Assets" deaktiviert?'}),e.jsx("li",{children:"Hat Google automatisch Videos erstellt? (unter Assets â Videos prüfen)"})]}),e.jsx("h3",{children:"Wann du auf All-Assets wechseln solltest"}),e.jsx("p",{children:"Ein Wechsel zu All-Assets PMax kann sinnvoll sein, wenn:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Dein Impression Share bei 80%+ liegt und du zusätzliche Reichweite brauchst"}),e.jsx("li",{children:"Du gezielt Top-Seller mit Video-Content pushen willst"}),e.jsx("li",{children:"Dein Brand noch unbekannt ist und Awareness-Kampagnen nötig sind"})]}),e.jsx("h2",{children:"Häufige Fehler bei Feed-Only PMax"}),e.jsx("p",{children:"Diese Fehler sehen wir immer wieder â vermeide sie von Anfang an:"}),e.jsx("h3",{children:"â Fehler 1: Schlechter Feed = schlechte Ergebnisse"}),e.jsxs("p",{children:["Bei Feed-Only ist dein Feed ",e.jsx("em",{children:"alles"}),". Schlechte Produkttitel, fehlende GTINs und niedrigauflösende Bilder zerstören deine Performance. Investiere Zeit in die Feed-Optimierung â sie hat den gröÃten Hebel."]}),e.jsx("h3",{children:"â Fehler 2: Alle Produkte in eine Kampagne packen"}),e.jsx("p",{children:'Bei 1.000+ Produkten mit unterschiedlichen Margen brauchst du Segmentierung. Eine einzige Kampagne mit âAlle Produkte" gibt Google keine Möglichkeit, Budget sinnvoll zu verteilen. Nutze Custom Labels und separate Kampagnen.'}),e.jsx("h3",{children:"â Fehler 3: Kein Conversion Tracking"}
532),e.jsxs("p",{children:["Performance Max ohne Conversion Tracking ist wie Autofahren ohne Tacho. Richte mindestens Standard-Conversions ein, idealerweise mit"," ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"}),"."]}),e.jsx("h3",{children:"â Fehler 4: Feed-Only mit zu wenig Daten starten"}),e.jsx("p",{children:'Googles AI braucht Daten zum Lernen. Wenn du unter 30 Conversions pro Monat hast, starte lieber mit Standard Shopping oder âConversion-Wert maximieren" ohne tROAS-Ziel.'}),e.jsx("h3",{children:'â Fehler 5: âAutomatisch erstellte Assets" nicht deaktivieren'}),e.jsx("p",{children:'Wenn du diese Einstellung nicht deaktivierst, erstellt Google eigenständig Texte und nutzt Bilder von deiner Website. Deine âFeed-Only"-Kampagne ist dann keine mehr. Prüfe das regelmäÃig unter den Kampagneneinstellungen.'}),e.jsxs("p",{children:["Mehr zu häufigen Fehlern bei Google Ads findest du in unserem Artikel"," ",e.jsx(E,{to:"/google-ads-fehler",className:"text-primary hover:underline",children:"10 Google Ads Fehler, die dein Budget verbrennen"}),"."]}),e.jsx(ie,{}),e.jsx("h2",{children:"FAQ â Häufig gestellte Fragen zu Feed-Only PMax"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Funktioniert Feed-Only Performance Max noch 2026?"}),e.jsx("p",{className:"text-muted-foreground",children:"Ja. Feed-Only PMax funktioniert auch 2026 zuverlässig. Solange du keine Assets in der Asset-Gruppe hinterlegst, spielt Google die Kampagne primär über Shopping-Platzierungen aus. Google hat diesen Ansatz nie offiziell unterbunden."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Kann Google trotzdem Display oder YouTube ausspielen?"}),e.jsx("p",{className:"text-muted-foreground",children:'In seltenen Fällen kann Google minimale Impressionen auf Display oder YouTube generieren, selbst ohne Assets. Deaktiviere âAutomatisch erstellte Assets" in den Kampagneneinstellungen, um das zu verhindern. Prüfe regelmäÃig das Channel-Level Reporting.'})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Feed-Only PMax oder Standard Shopping?"}),e.jsx("p",{className:"text-muted-foreground",children:"Feed-Only PMax bietet durch Googles AI oft bessere Conversion-Raten als Standard Shopping, besonders bei groÃen Katalogen. Standard Shopping bietet dafür mehr manuelle Kontrolle. Für die meisten Shops mit 500+ Produkten ist Feed-Only PMax die bessere Wahl."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Wie viele Produkte brauche ich mindestens?"}),e.jsx("p",{className:"text-muted-foreground",children:"Es gibt kein offizielles Minimum, aber wir empfehlen mindestens 50-100 aktive Produkte im Feed und 30+ Conversions in 30 Tagen. Bei weniger Produkten kann Standard Shopping die bessere Option sein."})]}),e.jsxs("div",{className:"border-b border-border pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Kann ich Feed-Only und All-Assets gleichzeitig laufen lassen?"}),e.jsx("p",{className:"text-muted-foreground",children:"Ja, das ist eine gängige Strategie. Nutze Feed-Only PMax für deinen gesamten Katalog und All-Assets PMax für ausgewählte Top-Seller oder High-Margin-Produkte, die von zusätzlicher Reichweite profitieren."})]}),e.jsxs("div",{className:"pb-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Wie schlieÃe ich unprofitable Produkte aus?"}),e.jsx("p",{className:"text-muted-foreground",children:"Nutze Eintragsgruppen (Listing Groups) in deiner PMax-Kampagne. Segmentiere nach Custom Labels, Produktkategorie oder Marke und schlieÃe unprofitable Segmente aus. Custom Labels im Merchant Center sind der flexibelste Weg."})]})]}),e.jsx("h2",{children:"Zusammenfassung und Fazit"}),e.jsx("p",{children:"Feed-Only Performance Max ist eine der effektivsten Strategien für E-Commerce-Shops mit groÃen Katalogen und unter
532schiedlichen Margen. Du behältst die Kontrolle über deine Shopping-Platzierungen, vermeidest Streuverluste auf Display und YouTube, und kannst durch Custom Labels gezielt profitable Produkte pushen."}),e.jsxs("div",{className:"bg-muted/50 border-l-4 border-primary p-6 rounded-r-lg my-8",children:[e.jsx("p",{className:"font-semibold mb-4",children:"Die wichtigsten Takeaways:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsx("li",{children:"Feed-Only PMax = PMax ohne Assets, primär Shopping-Ausspielung"}),e.jsx("li",{children:"Ideal für B2B E-Commerce mit 500+ SKUs und variierenden Margen"}),e.jsx("li",{children:"Feed-Qualität ist der wichtigste Erfolgsfaktor"}),e.jsx("li",{children:"Custom Labels für Margen-Segmentierung nutzen (POAS-Brücke)"}),e.jsx("li",{children:'âAutomatisch erstellte Assets" immer deaktivieren'}),e.jsx("li",{children:'Starte mit âMax. Conversion-Wert", wechsle nach 50 Conversions zu tROAS'}),e.jsx("li",{children:"Kombinierbar mit All-Assets PMax für Top-Seller"})]})]}),e.jsx("h3",{children:"Weiterführende Artikel"}),e.jsxs("ul",{className:"list-disc pl-6 mb-6 space-y-2",children:[e.jsx("li",{children:e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen 2026 â Der ultimative Leitfaden"})}),e.jsx("li",{children:e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions einrichten â Komplette GTM Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-portfolio-gebotsstrategie",className:"text-primary hover:underline",children:"Portfolio-Gebotsstrategie â Wann sie sinnvoll ist"})})]}),e.jsx(ie,{})]})]})},CM=()=>{const t=ss("google-ads-optimieren"),n=ct.gordon,r="2026-03-26",s="2026-03-26",i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Wie oft sollte man Google Ads optimieren?",acceptedAnswer:{"@type":"Answer",text:"Wöchentlich: Suchbegriffe prüfen, Negative Keywords ergänzen. Monatlich: Gebotsstrategien evaluieren, Budget-Allokation anpassen. Quartalsweise: Kampagnenstruktur überprüfen, neue Formate testen. Nac
532h groÃen Ãnderungen (z.B. Gebotsstrategie-Wechsel) mindestens 2-3 Wochen Lernphase abwarten."}},{"@type":"Question",name:"Was kostet eine Google Ads Optimierung?",acceptedAnswer:{"@type":"Answer",text:"Selbst optimieren: Kostenlos, aber zeitintensiv (5-10 Stunden/Woche). Freelancer: 500-2.000â¬/Monat. Spezialisierte Agentur: 1.500-5.000â¬/Monat je nach Ad Spend. Der ROI einer professionellen Optimierung liegt typischerweise bei 3-10x der Investition."}},{"@type":"Question",name:"Welcher ROAS ist gut für E-Commerce?",acceptedAnswer:{"@type":"Answer",text:"Das hängt von deiner Marge ab. Bei 30% Marge brauchst du mindestens 333% ROAS für Break-Even. Ein 'guter' ROAS liegt dann bei 500-800%. Besser als ROAS ist allerdings POAS (Profit on Ad Spend), das die echte Marge berücksichtigt."}},{"@type":"Question",name:"Was ist der wichtigste Hebel bei der Google Ads Optimierung?",acceptedAnswer:{"@type":"Answer",text:"Conversion Tracking. Ohne saubere Daten kann Google Ads AI nicht korrekt optimieren. Enhanced Conversions und Server-Side Tracking sind 2026 Pflicht. Danach folgen Gebotsstrategien und die Umstellung auf POAS-basierte Optimierung."}},{"@type":"Question",name:"Soll ich Google Ads selbst optimieren oder eine Agentur beauftragen?",acceptedAnswer:{"@type":"Answer",text:"Bei unter 5.000â¬/Monat Ad Spend: Selbst lernen lohnt sich oft. Ab 10.000â¬/Monat: Eine spezialisierte Agentur spart Zeit und holt typischerweise 20-50% mehr Gewinn aus dem gleichen Budget. Wichtig: Die Agentur sollte auf Profit optimieren, nicht auf ROAS."}}]},a={"@context":"https://schema.org","@type":"Article",headline:(t==null?void 0:t.title)||"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn",description:t==null?void 0:t.description,author:{"@type":"Person",name:n.name,url:n.linkedin},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:r,dateModified:s,mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/google-ads-optimieren"}},l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Google Ads optimieren",item:"https://adshero.de/google-ads-optimieren"}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn | AdsHero"}),e.jsx("meta",{name:"description",content:"Google Ads optimieren für E-Commerce: 7 konkrete Hebel für mehr Gewinn aus deinen Kampagnen. Von Conversion Tracking über POAS bis Feed-Optimierung â mit Praxis-Beispielen."}),e.jsx("meta",{name:"keywords",content:"Google Ads optimieren, Google Ads Optimierung, Google Ads verbessern, Google Ads Tipps, Google Ads E-Commerce, POAS, Conversion Tracking, Feed-Optimierung, Gebotsstrategie, Google Ads Kampagne optimieren"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-optimieren"}),e.jsx("meta",{property:"og:title",content:"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn"}),e.jsx("meta",{property:"og:description",content:"7 konkrete Hebel, mit denen E-Commerce Shops mehr Gewinn aus Google Ads holen. Von Conversion Tracking über POAS bis Feed-Optimierung."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-optimieren"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"article:published_time",content:r}),e.jsx("meta",{property:"article:modified_time",content:s}),e.jsx("meta",{property:"article:author",content:n.name}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn"}),e.jsx("meta",{name:"twitter:description",content:"7 konkrete Hebel für mehr Gewinn aus Google Ads. Für E-Commerce Shops mit 10.000â¬+ Ad Spend."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]}),e.jsxs(nt,{title:"Google Ads optimieren 2026 â Die 7 Hebel für mehr Gewinn",date:"26. März 2026",modifiedDate:"26. März 2026",readingTime:20,author:n,children:[e.jsxs("div",{className:"bg-muted rounded-lg p-6 my-8 not-prose",children:[e.jsx("h3",{className:"font-semibold text-lg mb-4",children:"ð Das Wichtigste in Kürze"}),e.jsxs("ul",{className:"space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Ohne sauberes Conversion Tracking sind alle weiteren Optimierungen sinnlos"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"POAS statt ROAS: Optimiere auf echten Gewinn, nicht auf Umsatz"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Feed-Qualität entscheidet über 80% deiner Shopping-Performance"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Die richtige Gebotsstrategie kann den Gewinn um 30-50% steigern"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Negative Keywords sparen durchschnittlich 15-25% verschwendetes Budget"})]})]})]}),e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["Du gibst monatlich 10.000⬠oder mehr für Google Ads aus â aber der Gewinn wächst nicht mit? Dann optimierst du wahrscheinlich an den falschen Stellschrauben. In diesem Artikel zeige ich dir die ",e.jsx("strong",{children:"7 Hebel, die bei E-Commerce Shops den gröÃten Unterschied machen"})," â sortiert nach Impact, mit konkreten Handlungsanweisungen."]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 mb-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¡ Warum diese Reihenfolge?"}),e.jsx("p",{className:"text-muted-foreground",children:"Die 7 Hebel sind nach ihrer Hebelwirkung sortiert. Hebel 1 (Conversion Tracking) ist das Fundament â ohne saubere Daten sind alle anderen Optimierungen Blindflug. Arbeite dich von oben nach unten durch."})]}),e.jsx("h2",{children:"Hebel 1: Conversion Tracking prüfen und korrigieren"}),e.jsxs("p",{children:["Das Fundament jeder Google Ads Optimierung ist ",e.jsx("strong",{children:"sauberes Conversion Tracking"}),". Klingt selbstverständlich â aber in der Praxis sehen wir bei 8 von 10 Konten Fehler im Setup. Doppelte
532Conversions, fehlende Enhanced Conversions, kein Consent Mode: Wenn die Datenbasis nicht stimmt, optimiert Google Ads AI in die falsche Richtung."]}),e.jsx("h3",{children:"Was du 2026 brauchst"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Enhanced Conversions:"})," Ãbergib gehashte Kundendaten (E-Mail, Telefon) an Google, um Conversion-Lücken durch Cookie-Einschränkungen zu schlieÃen. Unsere"," ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Schritt-für-Schritt Anleitung für Enhanced Conversions"})," ","zeigt dir genau, wie das geht."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Consent Mode V2:"})," Pflicht in der EU seit März 2024. Ohne korrekte Implementierung verlierst du bis zu 40% deiner Conversion-Daten."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Server-Side Tracking:"})," Optional, aber empfohlen ab 50.000â¬/Monat Ad Spend. Robuster gegen Adblocker und Browser-Einschränkungen."]})]}),e.jsxs("p",{children:["Falls du noch kein GTM-Setup hast, starte mit unserem Guide:"," ",e.jsx(E,{to:"/google-ads-google-tag-manager",className:"text-primary hover:underline",children:"Google Ads mit Google Tag Manager verknüpfen"}),"."]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-destructive font-semibold mb-2",children:"â ï¸ Häufigster Fehler"}),e.jsxs("p",{className:"text-muted-foreground",children:["Doppelte Conversion-Tags: Einmal über Google Ads direkt, einmal über GTM. Das verdoppelt deine gemessenen Conversions und verfälscht alle Gebotsstrategien. Prüfe unter",e.jsx("em",{children:" Tools â Conversions â Diagnose"})," ob alles sauber ist."]})]}),e.jsx("h2",{children:"Hebel 2: Gebotsstrategien richtig wählen"}),e.jsx("p",{children:"Die Gebotsstrategie ist der Steuerknüppel deines Kontos. Falsch eingestellt, verbrennt sie Budget. Richtig konfiguriert, kann sie den Gewinn um 30-50% steigern â bei gleichem Budget."}),e.jsx("h3",{children:"Die wichtigsten Strategien für E-Commerce"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Strategie"}),e.jsx("th",{className:"border p-3 text-left",children:"Wann einsetzen"}),e.jsx("th",{className:"border p-3 text-left",children:"Typischer Fehler"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Target ROAS"}),e.jsx("td",{className:"border p-3",children:"Ab 30+ Conversions/Monat, wenn du klare Margenziele hast"}),e.jsx("td",{className:"border p-3",children:"Zu hohen tROAS setzen â Kampagne liefert kaum noch aus"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Maximize Conversion Value"}),e.jsx("td",{className:"border p-3",children:"Neue Kampagnen, die noch Daten sammeln"}),e.jsx("td",{className:"border p-3",children:"Ohne Budget-Cap â Google gibt alles am Monatsanfang aus"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Target CPA"}),e.jsx("td",{className:"border p-3",children:"Lead-Gen oder Shops mit einheitlichem Warenkorbwert"}),e.jsx("td",{className:"border p-3",children:"CPA zu niedrig â Kampagne geht in Lernphase und erholt sich nicht"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Portfolio-Strategien"}),e.jsx("td",{className:"border p-3",children:"Mehrere Kampagnen mit ähnlichem Ziel bündeln"}),e.jsx("td",{className:"border p-3",children:"Zu verschiedene Kampagnentypen in ein Portfolio packen"})]})]})]})}),e.jsxs("p",{children:["Eine detaillierte Analyse, wann Portfolio-Strategien sinnvoll sind (und wann nicht), findest du in unserem"," ",e.jsx(E,{to:"/google-ads-portfolio-gebotsstrategie",className:"text-primary hover:underline",children:"Guide zu Portfolio-Gebotsstrategien"}),"."]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Profi-Tipp"}),e.jsxs("p",{className:"text-muted-foreground",children:["Nach jedem Gebotsstrategie-Wechsel: ",e.jsx("strong",{children:"Mindestens 2-3 Wochen abwarten."})," Die AI braucht Lernzeit. Wer nach 3 Tagen panisch zurückschaltet, sabotiert die Optimierung."]})]}),e.jsx("h2",{children:"Hebel 3: POAS statt ROAS â auf echten Gewinn optimieren"}),e.jsxs("p",{children:["Die meisten E-Commerce Shops optimieren auf ROAS (Return on Ad Spend). Das Problem:",e.jsx("strong",{children:" ROAS ignoriert deine Produktmargen."})," Ein 500% ROAS auf einem Produkt mit 8% Marge ist ein Verlustgeschäft. Ein 200% ROAS auf einem Produkt mit 45% Marge bringt echten Gewinn."]}),e.jsxs("p",{children:["Die Lösung heiÃt ",e.jsx("strong",{children:"POAS (Profit on Ad Spend)"}),": Statt des Umsatzes übergibst du den Deckungsbeitrag als Conversion-Wert an Google. So optimiert die AI automatisch auf deine profitabelsten Produkte und Kundengruppen."]}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-6 my-6",children:[e.jsxs("p",{className:"font-mono text-lg mb-4",children:[e.jsx("strong",{children:"POAS-Formel:"})," (Umsatz â Wareneinsatz â variable Kosten) ÷ Werbekosten"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Beispiel: (10.000⬠â 6.000⬠â 500â¬) ÷ 2.500⬠= 140% POAS â Für jeden Werbe-Euro 1,40⬠Deckungsbeitrag"})]}),e.jsxs("p",{children:["Warum ROAS als alleinige Kennzahl gefährlich ist und wie du POAS konkret implementierst, erkläre ich ausführlich in unserem Artikel"," ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce"}),"."]}),e.jsx(ie,{}),e.jsx("h2",{children:"Hebel 4: Feed-Optimierung für Shopping & Performance Max"}),e.jsx("p",{children:"Dein Produkt-Feed ist das Herzstück deiner Shopping-Kampagnen. Google kann nur verkaufen, was der Feed hergibt. Bei Shops mit 1.000+ Produkten entscheidet die Feed-Qualität über 80% der Performance."}),e.jsx("h3",{children:"Die 5 wichtigsten Feed-Optimierungen"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Produkttitel:"}
532)," Keyword-optimiert, 70-150 Zeichen. Struktur: Marke + Produkttyp + Attribut (Farbe, GröÃe, Material).",e.jsx("em",{children:' Schlecht: "T-Shirt blau". Gut: "Nike Dri-FIT Herren T-Shirt blau â GröÃe L, atmungsaktiv".'})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Custom Labels:"})," Segmentiere Produkte nach Marge, Bestseller-Status oder Saison. So kannst du High-Margin-Produkte aggressiver bewerben und Low-Margin-Produkte ausschlieÃen."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Produktbilder:"})," WeiÃer Hintergrund, hohe Auflösung, keine Wasserzeichen. Lifestyle-Bilder als additional_image_link für bessere CTR."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"GTIN/EAN:"})," Immer angeben wenn vorhanden. Google nutzt GTINs für Produkterkennung und Benchmark-Vergleiche."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Supplemental Feeds:"})," Für zusätzliche Attribute (Custom Labels, Sale-Preise), ohne den Haupt-Feed anzufassen."]})]}),e.jsxs("p",{children:["Wie du einen Feed-Only Performance Max ohne Assets aufsetzt und mit Custom Labels die Marge steuerst, erfährst du in unserem"," ",e.jsx(E,{to:"/feed-only-performance-max",className:"text-primary hover:underline",children:"Feed-Only Performance Max Guide"}),"."]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Quick Win"}),e.jsxs("p",{className:"text-muted-foreground",children:["Prüfe die ",e.jsx("strong",{children:"Feed-Diagnose"})," im Merchant Center. Oft liegen dort Hunderte Warnungen (fehlende GTINs, abgelehnte Produkte), die deine Reichweite einschränken. 30 Minuten Aufräumen können sofort 10-20% mehr Impressionen bringen."]})]}),e.jsx("h2",{children:"Hebel 5: Kampagnenstruktur bereinigen"}),e.jsx("p",{children:"Viele Konten leiden unter einer historisch gewachsenen, chaotischen Kampagnenstruktur. Zu viele Kampagnen mit zu wenig Budget, sich überschneidende Zielgruppen, keine klare Trennung zwischen Akquise und Remarketing."}),e.jsx("h3",{children:"Die optimale Struktur für E-Commerce 2026"}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"font-semibold mb-3",children:"Empfohlene Grundstruktur:"}),e.jsxs("ul",{className:"space-y-2 text-muted-foreground",children:[e.jsxs("li",{children:["ð¦ ",e.jsx("strong",{children:"Performance Max (Feed-Only):"})," Für Shopping-Traffic, segmentiert nach Marge"]}),e.jsxs("li",{children:["ð ",e.jsx("strong",{children:"Search (Brand):"})," Eigene Markenbegriffe schützen â günstiger CPC, hohe Conversion Rate"]}),e.jsxs("li",{children:["ð ",e.jsx("strong",{children:"Search (Non-Brand):"})," Generische Keywords mit hoher Kaufabsicht"]}),e.jsxs("li",{children:["ðº ",e.jsx("strong",{children:"Demand Gen:"})," YouTube + Discover für Awareness und Remarketing"]}),e.jsxs("li",{children:["ð¯ ",e.jsx("strong",{children:"PMax (Full Assets):"})," Optional für Remarketing und Display-Reichweite"]})]})]}),e.jsx("p",{children:"Jede Kampagne sollte genug Budget haben, um mindestens 5-10 Conversions pro Woche zu erzielen. Faustregel: Lieber 3 gut gefütterte Kampagnen als 10 hungernde."}),e.jsxs("p",{children:["Alles zu Performance Max â von der Erstellung bis zur Optimierung â findest du in unserem"," ",e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen Leitfaden"}),"."]}),e.jsx("h2",{children:"Hebel 6: Negative Keywords und Ausschlüsse"}),e.jsxs("p",{children:["Negative Keywords sind der unterschätzteste Hebel in Google Ads. In fast jedem Konto, das wir auditieren, finden wir ",e.jsx("strong",{children:"15-25% verschwendetes Budget"})," durch irrelevante Suchanfragen."]}),e.jsx("h3",{children:"So räumst du auf"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Suchbegriffbericht analysieren:"})," Gehe auf ",e.jsx("em",{children:"Keywords â Suchbegriffe"})," und sortiere nach Kosten. Alles mit hohen Kosten und null Conversions â prüfen und ggf. ausschlieÃen."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Negative Keyword-Listen erstellen:"}),' Zentrale Listen für wiederkehrende Ausschlüsse (z.B. "kostenlos", "gratis", "DIY", "Erfahrung", "Test") und kontoübergreifend anwenden.']}),e.jsxs("li",{children:[e.jsx("strong",{children:"Placement-Ausschlüsse (für PMax/Display):"})," SchlieÃe Mobile-Game-Apps, Kinder-Content und Low-Quality-Placements aus. Das allein spart oft 5-10% Budget."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Marken-Ausschlüsse in PMax:"})," Seit 2024 kannst du Wettbewerber-Marken in Performance Max ausschlieÃen. Nutze diese Funktion."]})]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-destructive font-semibold mb-2",children:"â ï¸ Nicht übertreiben"}),e.jsx("p",{className:"text-muted-foreground",children:"Zu viele Negative Keywords schränken die Reichweite ein. Fokussiere dich auf die teuersten irrelevanten Begriffe. Und: Prüfe regelmäÃig, ob deine Negatives nicht versehentlich profitable Suchanfragen blockieren."})]}),e.jsx(ie,{}),e.jsx("h2",{children:"Hebel 7: Landingpage-Optimierung"}),e.jsx("p",{children:"Google Ads endet nicht beim Klick. Wenn deine Landingpage nicht konvertiert, ist jeder Werbe-Euro verschwendet. Und Google berücksichtigt die Landingpage-Qualität im Quality Score â eine schlechte Seite kostet dich also auch höhere CPCs."}),e.jsx("h3",{children:"Die 4 Landingpage-Grundlagen"}),e.jsxs("ul",{className:"list-disc list-inside space-y-3 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ladezeit unter 3 Sekunden:"})," Jede Sekunde mehr kostet ca. 7% Conversion Rate. Nutze Google PageSpeed Insights und optimiere Bilder (WebP), Server-Response und JavaScript."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Mobile-First:"})," 60-70% deines Traffics kommt von Mobilgeräten. Wenn die Mobile-Experience schlecht ist, verlierst du die Mehrheit deiner Besucher."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Trust Signals:"})," Bewertungen, Gütesiegel, sichere Zahlungsmethoden â sichtbar above the fold. Das steigert die Conversion Rate um 10-30%."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Klare Call-to-Actions:"}),' Ein Ziel pro Seite. "In den Warenkorb" muss sofort sichtbar sein. Keine Ablenkung durch zu viele Optionen.']})]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Profi-Tipp"}),e.jsxs("p",{className:"text-muted-foreground",children:["Richte ",e.jsx("strong",{children:"Landingpage-spezifische Conversion-Tests"})," ein. Erstelle für deine Top-5-Produkte jeweils eine optimierte Produktseite und leite den Ads-Traffic dorthin. A/B-Test gegen die Standard-Produktseite. Die Ergebnisse sind oft überraschend."]})]}),e.jsx("h2",{children:"Deine Google Ads Optimierungs-Checkliste"}),e.jsx("p",{children:"Hier die 7 Hebel als Checkliste â arbeite sie von oben nach unten ab:"}),e.jsx("div",{className:"bg-muted rounded-lg p-6 my-6 not-prose",children:e.jsxs("ol",{className:"space-y-3",children:[e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"1"}),e.jsx("span",{children:"Conversion Tracking prüfen: Enhanced Conversions aktiv? Consent Mode V2 korrekt? Keine doppelten Tags?"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"2"}),e.jsx("span",{children:"Gebotsstrategie evaluieren: Passend zum Conversion-Volumen? Genug Lernzeit gegeben?"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"3"}),e.jsx("span",{children:"POAS implementieren: Margen-Daten als Conversion-Wert übergeben statt Umsatz"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"4"}),e.jsx("span",{children:"Feed optimieren: Titel, Custom Labels, Bilder, GTINs, Supplemental Feeds"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"5"}),e.jsx("span",{children:"Kampagnenstruktur bereinigen: Max. 3-5 Kampagnen, jede mit genug Budget für 5+ Conv./Woche"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"6"}),e.jsx("span",{children:"Negative Keywords pflegen: Suchbegriffbericht wöchentlich prüfen, Placement-Ausschlüsse setzen"})]}),e.jsxs("li",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"bg-primary text-primary-foreground rounded-full w-7 h-7 flex items-center justify-center text-sm font-bold shrink-0",children:"7"}),e.jsx("span",{children:"Landingpages testen: Ladezeit, Mobile, Trust Signals, CTA-Platzierung"})]})]})}),e.jsx("h2",{children:"Häufige Fragen zur Google Ads Optimierung"}),e.jsxs("div",{className:"space-y-6 my-8",children:[e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Wie oft sollte man Google Ads optimieren?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Wöchentlich: Suchbegriffe prüfen, Negative Keywords ergänzen. Monatlich: Gebotsstrategien evaluieren, Budget-Allokation anpassen. Quartalsweise: Kampagnenstruktur überprüfen, neue Formate testen. Nac
532h groÃen Ãnderungen mindestens 2-3 Wochen Lernphase abwarten."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Was kostet eine Google Ads Optimierung?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Selbst optimieren: Kostenlos, aber zeitintensiv (5-10 Stunden/Woche). Freelancer: 500-2.000â¬/Monat. Spezialisierte Agentur: 1.500-5.000â¬/Monat je nach Ad Spend. Der ROI einer professionellen Optimierung liegt typischerweise bei 3-10x."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Welcher ROAS ist gut für E-Commerce?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:'Das hängt von deiner Marge ab. Bei 30% Marge brauchst du mindestens 333% ROAS für Break-Even. Ein "guter" ROAS liegt dann bei 500-800%. Besser als ROAS ist allerdings POAS (Profit on Ad Spend), das die echte Marge berücksichtigt.'})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Was ist der wichtigste Hebel bei der Google Ads Optimierung?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Conversion Tracking. Ohne saubere Daten kann Google Ads AI nicht korrekt optimieren. Enhanced Conversions und Server-Side Tracking sind 2026 Pflicht. Danach folgen Gebotsstrategien und die Umstellung auf POAS."})]}),e.jsxs("div",{className:"border-l-4 border-primary pl-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"Soll ich Google Ads selbst optimieren oder eine Agentur beauftragen?"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Bei unter 5.000â¬/Monat Ad Spend: Selbst lernen lohnt sich oft. Ab 10.000â¬/Monat: Eine spezialisierte Agentur spart Zeit und holt typischerweise 20-50% mehr Gewinn aus dem gleichen Budget. Wichtig: Die Agentur sollte auf Profit optimieren, nicht auf ROAS."})]})]}),e.jsx("h2",{children:"Fazit: Systematisch optimieren statt blind schrauben"}),e.jsx("p",{children:"Google Ads Optimierung ist kein einmaliges Projekt â es ist ein kontinuierlicher Prozess. Aber die Reihenfolge ist entscheidend: Erst das Tracking reparieren, dann die Strategie anpassen, dann die Details optimieren."}),e.jsxs("p",{children:[e.jsx("strong",{children:"Die gröÃten Gewinne liegen fast immer in den ersten 3 Hebeln:"})," Sauberes Tracking, die richtige Gebotsstrategie und die Umstellung auf POAS. Wenn du diese drei Punkte richtig umsetzt, holst du typischerweise 30-50% mehr Gewinn aus dem gleichen Budget."]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-8",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¯ Dein nächster Schritt"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Du willst wissen, wo dein gröÃtes Optimierungspotential liegt? In unserer kostenlosen Profit-Analyse prüfen wir dein Google Ads Konto auf alle 7 Hebel und zeigen dir konkret, wo du Gewinn liegen lässt."}),e.jsx(E,{to:"/profit-analyse",className:"inline-flex items-center text-primary font-semibold hover:underline",children:"Jetzt kostenlose Profit-Analyse anfordern â"})]}),e.jsx("p",{children:e.jsx("strong",{children:"Weiterführende Artikel:"})}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"Warum ROAS lügt: Die Profit-Wahrheit für E-Commerce"})}),e.jsx("li",{children:e.jsx(E,{to:"/performance-max-kampagnen",className:"text-primary hover:underline",children:"Performance Max Kampagnen 2026 â Der ultimative Leitfaden"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions einrichten 2026 â Komplette GTM Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/feed-only-performance-max",className:"text-primary hover:underline",children:"Feed-Only Performance Max 2026 â Komplette Anleitung"})}),e.jsx("li",{children:e.jsx(E,{to:"/google-ads-fehler",className:"text-primary hover:underline",children:"10 Google Ads Fehler 2026, die dein Budget verbrennen"})})]})]})]})},PM=()=>{const t=ss("google-ads-agentur"),n=ct.gordon,r="2026-04-13",s="2026-04-13",i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Was kostet eine Google Ads Agentur pro Monat?",acceptedA
532nswer:{"@type":"Answer",text:"Die meisten spezialisierten Google Ads Agenturen berechnen zwischen 1.500 und 5.000⬠pro Monat. Gängige Preismodelle sind prozentual vom Ad Spend (10-20%), Fixpreis oder Performance-basiert. Bei einem Ad Spend unter 5.000â¬/Monat lohnt sich eine Agentur wirtschaftlich oft noch nicht."}},{"@type":"Question",name:"Woran erkenne ich eine gute Google Ads Agentur?",acceptedAnswer:{"@type":"Answer",text:"Eine gute Agentur hat einen klaren Branchenfokus (z.B. E-Commerce), transparentes Reporting mit Profit-Kennzahlen statt nur ROAS, flexible Vertragsmodelle ohne 12-Monats-Bindung, und gibt dir vollen Zugriff auf dein Google Ads Konto. Google Partner Status ist ein positives Signal, aber kein Garant für Qualität."}},{"@type":"Question",name:"Ab welchem Ad Spend lohnt sich eine Google Ads Agentur?",acceptedAnswer:{"@type":"Answer",text:"Als Faustregel: Ab 10.000⬠monatlichem Ad Spend wird eine spezialisierte Agentur wirtschaftlich sinnvoll. Bei diesem Budget kann eine professionelle Optimierung typischerweise 20-50% mehr Gewinn aus dem gleichen Budget herausholen â das übersteigt die Agenturkosten deutlich."}},{"@type":"Question",name:"Google Ads Agentur oder Freelancer â was ist besser?",acceptedAnswer:{"@type":"Answer",text:"Freelancer sind günstiger (500-2.000â¬/Monat) und flexibler, aber oft Einzelkämpfer ohne Vertretung. Agenturen bieten ein Team mit verschiedenen Spezialisten, Ausfallsicherheit und meist breitere Erfahrung â kosten aber mehr. Für Shops mit 10.000â¬+ Ad Spend ist eine spezialisierte Agentur in der Regel die bessere Wahl."}},{"@type":"Question",name:"Wie lange dauert es, bis eine Google Ads Agentur Ergebnisse liefert?",acceptedAnswer:{"@type":"Answer",text:"Erste Verbesserungen im Tracking und der Kontostruktur sind innerhalb von 2-4 Wochen sichtbar. Signifikante Performance-Steigerungen zeigen sich nach 6-12 Wochen, da Gebotsstrategien Lernphasen durchlaufen. Eine seriöse Agentur setzt realistische Erwartungen und verspricht keine Wunder in der ersten Woche."}},{"@type":"Question",name:"Soll die Agentur auf ROAS oder POAS optimieren?",acceptedAnswer:{"@type":"Answer",text:"Idealerweise auf POAS (Profit on Ad Spend). ROAS misst nur den Umsatz pro Werbe-Euro und ignoriert die Produktmarge. Eine Agentur, die auf POAS optimiert, maximiert deinen echten Gewinn â nicht nur den Umsatz. Frage bei der Agenturwahl gezielt nach, ob sie Profit-basierte Optimierung anbieten."}}]},a={"@context":"https://schema.org","@type":"Article",headline:(t==null?void 0:t.title)||"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen",description:t==null?void 0:t.description,author:{"@type":"Person",name:n.name,url:n.linkedin},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:r,dateModified:s,mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/google-ads-agentur"}},l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://adshero.de"},{"@type":"ListItem",position:2,name:"Blog",item:"https://adshero.de/blog"},{"@type":"ListItem",position:3,name:"Google Ads Agentur",item:"https://adshero.de/google-ads-agentur"}]},o={"@context":"https://schema.org","@type":"HowTo",name:"Die richtige Google Ads Agentur finden â in 5 Schritten",description:"Eine Schritt-für-Schritt-Anleitung, um die passende Google Ads Agentur für deinen E-Commerce Shop zu finden.",step:[{"@type":"HowToStep",position:1,name:"Ziele und Budget definieren",text:"Definiere dein monatliches Ad Spend Budget, deine Zielkennzahlen (POAS, CPA) und ob du Unterstützung für Google Ads, YouTube Ads oder beides brauchst."},{"@type":"HowToStep",position:2,name:"Shortlist erstellen",text:"Recherchiere 3-5 Agenturen mit Branchenfokus auf E-Commerce. Prüfe Google Partner Status, Referenzen und Case Studies in deiner Branche."},{"@type":"HowToStep",position:3,name:"Erstgespräch führen und Red Flags prüfen",text:"Führe ein Erstgespräch und achte auf Red Flags: keine Kontenzugriffe, Langzeitverträge, unrealistische Versprechen oder fehlende Trans
532parenz."},{"@type":"HowToStep",position:4,name:"Audit des bestehenden Kontos anfordern",text:"Bitte um einen kostenlosen oder günstigen Audit deines bestehenden Google Ads Kontos. So siehst du, ob die Agentur Substanz hat und konkrete Verbesserungspotenziale identifiziert."},{"@type":"HowToStep",position:5,name:"Testphase vereinbaren",text:"Vereinbare eine 3-monatige Testphase mit klaren KPIs. So kannst du die Zusammenarbeit risikofrei evaluieren, bevor du dich langfristig bindest."}]};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen | AdsHero"}),e.jsx("meta",{name:"description",content:"Google Ads Agentur finden: 7 Kriterien für die richtige Wahl, typische Kosten (1.500-5.000â¬/Monat) und Red Flags. Ehrlicher Vergleich Agentur vs. Freelancer vs. In-House."}),e.jsx("meta",{name:"keywords",content:"Google Ads Agentur, Google Ads Agentur finden, Google Ads Betreuung, Google Ads Agentur Kosten, Google Ads Management, Google Ads Agentur E-Commerce, PPC Agentur, SEA Agentur"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/google-ads-agentur"}),e.jsx("meta",{property:"og:title",content:"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen"}),e.jsx("meta",{property:"og:description",content:"7 Kriterien für die richtige Google Ads Agentur, typische Kosten und Red Flags. Ehrlicher Vergleich Agentur vs. Freelancer vs. In-House."}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/google-ads-agentur"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"article:published_time",content:r}),e.jsx("meta",{property:"article:modified_time",content:s}),e.jsx("meta",{property:"article:author",content:n.name}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen"}),e.jsx("meta",{name:"twitter:description",content:"7 Kriterien, typische Kosten und Red Flags bei der Agenturwahl. Für E-Commerce Shops mit 10.000â¬+ Ad Spend."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(o)})]}),e.jsxs(nt,{title:"Google Ads Agentur finden 2026 â Worauf E-Commerce Shops achten müssen",date:"13. April 2026",modifiedDate:"13. April 2026",readingTime:12,author:n,children:[e.jsxs("div",{className:"bg-muted rounded-lg p-6 my-8 not-prose",children:[e.jsx("h3",{className:"font-semibold text-lg mb-4",children:"ð Das Wichtigste in Kürze"}),e.jsxs("ul",{className:"space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Ab 10.000â¬/Monat Ad Spend lohnt sich eine spezialisierte Agentur wirtschaftlich"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Die Agentur sollte auf Profit (POAS) optimieren â nicht nur auf ROAS"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Red Flags: 12-Monats-Verträge, kein Kontozugang, nur ROAS-Reporting"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Typische Kosten: 1.500â5.000â¬/Monat je nach Ad Spend und Leistungsumfang"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary font-bold",children:"â¢"}),e.jsx("span",{children:"Immer eine 3-monatige Testphase mit klaren KPIs vereinbaren"})]})]})]}),e.jsxs("p",{className:"lead text-xl text-muted-foreground mb-8",children:["Du gibst fünfstellig pro Monat für Google Ads aus, aber bist dir nicht sicher, ob du das Maximum herausholst? Oder du merkst, dass dir schlicht die Zeit fehlt, Kampagnen professionell zu steuern? Dann stellt sich die Frage: ",e.jsx("strong",{children:"Brauchst du eine Google Ads Agentur â und wenn ja, welche?"})]}),e.jsx("p",{children:"In diesem Artikel bekommst du einen ehrlichen, praxisnahen Leitfaden. Keine Werbesprüche, sondern klare Kriterien, mit denen du die richtige Entscheidung triffst. Am Ende weiÃt du genau, worauf es ankommt â und welche Agenturen du lieber meidest."}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Wann lohnt sich eine Google Ads Agentur?"}),e.jsxs("p",{children:["Nicht jeder Shop braucht eine Agentur. Die ehrliche Antwort: ",e.jsx("strong",{children:"Es hängt von deinem Ad Spend, deiner internen Kapazität und der Komplexität deines Kontos ab."})]}),e.jsx("h3",{children:"Die Faustregeln"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Unter 5.000â¬/Monat Ad Spend:"})," Selbst lernen oder einen Freelancer für punktuelle Aufgaben engagieren. Eine Full-Service-Agentur ist hier wirtschaftlich meist nicht sinnvoll."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"5.000â10.000â¬/Monat:"})," Grauzone. Wenn du intern 5-10 Stunden pro Woche für Google Ads hast, kann es reichen. Wenn nicht, ist eine Agentur oder ein erfahrener Freelancer sinnvoll."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Ab 10.000â¬/Monat:"})," Hier wird es fast immer sinnvoll. Eine spezialisierte Agentur holt typischerweise 20-50% mehr Gewinn aus dem gleichen Budget â das übersteigt die Agenturkosten bei Weitem."]})]}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¡ Die eigentliche Frage"}),e.jsxs("p",{className:"text-muted-foreground",children:['Nicht âKann ich mir eine Agentur leisten?", sondern: ',e.jsx("strong",{children:'âWas kostet es mich, KEINE Agentur zu haben?"'})," Wenn du bei 15.000⬠Ad Spend durch suboptimale Kampagnen 3.000â¬/Monat Gewinn liegen lässt, ist eine Agentur für 2.000â¬/Monat eine Investition mit positivem ROI."]})]}),e.jsx("h3",{children:"Typische Anzeichen, dass du eine Agentur brauchst"}),e.jsxs("ul",{className:"list-disc list-inside space-y-2 my-4",children:[e.jsx("li",{children:"Du optimierst weniger als 2 Stunden pro Woche an deinen Kampagnen"}
532),e.jsx("li",{children:"Du nutzt immer noch die gleiche Kampagnenstruktur wie vor 12 Monaten"}),e.jsx("li",{children:"Dein ROAS stagniert oder sinkt trotz steigendem Budget"}),e.jsx("li",{children:"Du weiÃt nicht, ob dein Conversion Tracking wirklich sauber ist"}),e.jsxs("li",{children:["Du verwendest keine"," ",e.jsx(E,{to:"/google-ads-enhanced-conversions-einrichten",className:"text-primary hover:underline",children:"Enhanced Conversions"})," ","oder Consent Mode V2"]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 my-8 not-prose",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-muted/50 p-5 text-center",children:[e.jsx(_2,{className:"mx-auto mb-2 text-muted-foreground",size:28}),e.jsx("p",{className:"font-semibold text-lg mb-1",children:"Unter 5.000â¬"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Selbst lernen oder Freelancer für punktuelle Aufgaben"}),e.jsx("div",{className:"mt-3 h-1.5 rounded-full bg-muted-foreground/20"})]}),e.jsxs("div",{className:"rounded-xl border border-cta/40 bg-cta/5 p-5 text-center",children:[e.jsx(ic,{className:"mx-auto mb-2 text-cta",size:28}),e.jsx("p",{className:"font-semibold text-lg mb-1",children:"5.000â10.000â¬"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Grauzone â abhängig von interner Kapazität"}),e.jsx("div",{className:"mt-3 h-1.5 rounded-full bg-cta/40"})]}),e.jsxs("div",{className:"rounded-xl border border-profit-green/40 bg-profit-green/5 p-5 text-center",children:[e.jsx(Os,{className:"mx-auto mb-2 text-profit-green",size:28}),e.jsx("p",{className:"font-semibold text-lg mb-1",children:"Ab 10.000â¬"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Agentur lohnt sich â 20-50% mehr Gewinn typisch"}),e.jsx("div",{className:"mt-3 h-1.5 rounded-full bg-profit-green/60"})]})]}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"7 Kriterien für die richtige Google Ads Agentur"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 my-8 not-prose",children:["Google Partner Status prüfen","E-Commerce-Branchenfokus","Transparentes Profit-Reporting","POAS statt nur ROAS","Flexible Verträge (max. 3 Monate)","Konkrete Case Studies & Referenzen","Fortgeschrittener Toolstack"].map(d=>e.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-border bg-muted/30 px-4 py-3",children:[e.jsx("div",{className:"flex-shrink-0 w-6 h-6 rounded-full bg-cta/20 flex items-center justify-center",children:e.jsx(Rh,{className:"text-cta",size:14})}),e.jsx("span",{className:"text-sm font-medium",children:d})]},d))}),e.jsx("p",{children:"Die Agenturlandschaft ist riesig â von der 2-Mann-Boutique bis zur Fullservice-Agentur mit 200 Mitarbeitern. Diese 7 Kriterien helfen dir, die Spreu vom Weizen zu trennen:"}),e.jsxs("div",{className:"space-y-6 my-8 not-prose",children:[e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"1"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Google Partner Status"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Ein positives Signal, aber kein Garant für Qualität. Google Partner bedeutet: Die Agentur verwaltet ein gewisses Mindest-Budget, hat zertifizierte Mitarbeiter und erfüllt Performance-Schwellen. ",e.jsx("strong",{children:"Premier Partner"})," ist nochmal eine Stufe höher â das sind die Top 3% der Agenturen im jeweiligen Land."]})]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"2"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Branchenfokus"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:['Eine Agentur, die âalles für jeden" macht, wird selten exzellent sein. Achte auf ',e.jsx("strong",{children:"E-Commerce-Spezialisierung"}),": Kennt die Agentur sich mit Shopping-Feeds, Merchant Center, POAS und branchenspezifischen Herausforderungen (Retouren, saisonale Schwankungen, SKU-Management) aus?"]})]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"3"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Reporting-Transparenz"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Du solltest jederzeit wissen, was mit deinem Budget passiert. Monatliche Reports sind Minimum, wöchentliche Updates bei hohem Ad Spend Standard. Gute Agenturen berichten nicht nur über Klicks und ROAS, sondern über ",e.jsx("strong",{children:"Deckungsbeitrag, POAS und echten Gewinn"}),"."]})]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"4"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Profit-Fokus (POAS statt ROAS)"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Das entscheidende Kriterium. Fragt die Agentur im Erstgespräch nach deinen Margen? Kennt sie den Unterschied zwischen ROAS und ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"POAS"}),"? Wenn eine Agentur nur über ROAS-Ziele spricht, fehlt das Verständnis für echte Profitabilität."]})]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"5"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Vertragsmodell"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:[e.jsx("strong",{children:"Flexible Verträge mit maximal 3 Monaten Bindung"})," sind Standard bei guten Agenturen. Wer 12-Monats-Verträge fordert, ist sich seiner Leistung offenbar nicht sicher genug. Kündigungsfristen von 30 Tagen zum Monatsende sind fair."]})]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"6"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Referenzen und Case Studies"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Konkrete Ergebnisse zählen mehr als Logos auf der Website. Frag nach: In welcher Branche? Welcher Ad Spend? Welche Verbesserung in welchem Zeitraum? ",e.jsx("strong",{children:"Bonus: Wenn die Agentur dich mit einem bestehenden Kunden verbindet"}),", ist das ein starkes Vertrauenssignal."]}
532)]})]})}),e.jsx("div",{className:"rounded-xl border border-border bg-card p-5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-cta/15 text-cta font-bold text-sm flex items-center justify-center",children:"7"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-base mb-2",children:"Toolstack und Methodik"}),e.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Nutzt die Agentur eigene Dashboards oder nur den Standard Google Ads Report? Setzt sie auf ",e.jsx(E,{to:"/feed-only-performance-max",className:"text-primary hover:underline",children:"Feed-Only Performance Max"}),", ",e.jsx(E,{to:"/google-ads-portfolio-gebotsstrategie",className:"text-primary hover:underline",children:"Portfolio-Gebotsstrategien"})," oder andere fortgeschrittene Methoden? Der Toolstack verrät viel über die Arbeitstiefe."]})]})]})})]}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Red Flags: Woran du schlechte Agenturen erkennst"}),e.jsxs("p",{children:["Mindestens genauso wichtig wie die richtigen Kriterien: ",e.jsx("strong",{children:"Die Warnsignale erkennen."})," Wenn du eines dieser Red Flags siehst, lauf."]}),e.jsxs("div",{className:"bg-destructive/10 border border-destructive/20 rounded-lg p-6 my-6 not-prose",children:[e.jsx("p",{className:"text-destructive font-semibold mb-4",children:"ð© Red Flags bei Google Ads Agenturen"}),e.jsxs("ul",{className:"space-y-3 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Kein Kontozugang:"})," Das Google Ads Konto gehört DIR. Wenn die Agentur in ihrem eigenen MCC-Konto arbeitet und dir keinen Admin-Zugang gibt, bist du abhängig."]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"12+ Monate Vertragsbindung:"})," Kein Zeichen von Partnerschaft, sondern von Unsicherheit über die eigene Leistung."]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Garantierte Ergebnisse:"}),' âWir garantieren 500% ROAS" â Niemand kann das garantieren. Google Ads Performance hängt von zu vielen Faktoren ab.']})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Nur ROAS-Reporting:"})," Wenn die Agentur nicht nach deinen Margen fragt und nur auf Umsatz-Kennzahlen optimiert, fehlt die Profit-Perspektive."]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Keine regelmäÃigen Calls:"})," Eine gute Agentur proaktiv kommuniziert. Wenn du wochenlang nichts hörst, läuft etwas falsch."]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-destructive font-bold",children:"â"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Intransparente Kosten:"})," Versteckte Setup-Gebühren, Ad Spend Aufschläge oder unklare Abrechnungsmodelle sind ein klares Warnsignal."]})]})]})]}),e.jsx(ie,{}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Agentur vs. Freelancer vs. In-House: Der ehrliche Vergleich"}),e.jsx("p",{children:"Es muss nicht immer eine Agentur sein. Je nach Situation kann ein Freelancer oder ein interner Mitarbeiter die bessere Wahl sein. Hier der objektive Vergleich:"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Kriterium"}),e.jsx("th",{className:"border p-3 text-left",children:"Agentur"}),e.jsx("th",{className:"border p-3 text-left",children:"Freelancer"}),e.jsx("th",{className:"border p-3 text-left",children:"In-House"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Kosten/Monat"}),e.jsx("td",{className:"border p-3",children:"1.500â5.000â¬"}),e.jsx("td",{className:"border p-3",children:"500â2.000â¬"}),e.jsx("td",{className:"border p-3",children:"4.000â6.000⬠(Gehalt)"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Expertise-Breite"}),e.jsx("td",{className:"border p-3",children:"Hoch (Team mit Spezialisten)"}
532),e.jsx("td",{className:"border p-3",children:"Mittel (Einzelkämpfer)"}),e.jsx("td",{className:"border p-3",children:"Wächst mit Erfahrung"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Ausfallsicherheit"}),e.jsx("td",{className:"border p-3",children:"Hoch (Team-Backup)"}),e.jsx("td",{className:"border p-3",children:"Niedrig (Urlaub, Krankheit)"}),e.jsx("td",{className:"border p-3",children:"Niedrig (1 Person)"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Branchen-Know-how"}),e.jsx("td",{className:"border p-3",children:"Hoch (viele Kunden)"}),e.jsx("td",{className:"border p-3",children:"Variiert stark"}),e.jsx("td",{className:"border p-3",children:"Tiefes Produktwissen"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Flexibilität"}),e.jsx("td",{className:"border p-3",children:"Mittel (Prozesse)"}),e.jsx("td",{className:"border p-3",children:"Hoch"}),e.jsx("td",{className:"border p-3",children:"Sehr hoch"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Skalierbarkeit"}),e.jsx("td",{className:"border p-3",children:"Hoch"}),e.jsx("td",{className:"border p-3",children:"Begrenzt"}),e.jsx("td",{className:"border p-3",children:"Begrenzt (ohne Team)"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Empfohlen ab"}),e.jsx("td",{className:"border p-3",children:"10.000⬠Ad Spend"}),e.jsx("td",{className:"border p-3",children:"3.000⬠Ad Spend"}),e.jsx("td",{className:"border p-3",children:"30.000â¬+ Ad Spend"})]})]})]})}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Hybrid-Modell"}),e.jsxs("p",{className:"text-muted-foreground",children:["Viele erfolgreiche Shops kombinieren: ",e.jsx("strong",{children:"Ein interner Marketing Manager für Strategie und Koordination + eine spezialisierte Agentur für die operative Google Ads Steuerung."})," So hast du internes Know-how und externe Execution-Power."]})]}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Was kostet eine Google Ads Agentur?"}),e.jsx("p",{children:"Transparenz bei den Kosten ist wichtig. Hier die gängigen Preismodelle und ihre Vor- und Nachteile:"}),e.jsx("h3",{children:"Die 3 gängigen Preismodelle"}),e.jsx("div",{className:"overflow-x-auto my-6",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted",children:[e.jsx("th",{className:"border p-3 text-left",children:"Modell"}),e.jsx("th",{className:"border p-3 text-left",children:"Typischer Preis"}),e.jsx("th",{className:"border p-3 text-left",children:"Vorteil"}),e.jsx("th",{className:"border p-3 text-left",children:"Nachteil"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"% vom Ad Spend"}),e.jsx("td",{className:"border p-3",children:"10â20%"}),e.jsx("td",{className:"border p-3",children:"Skaliert mit deinem Wachstum"}),e.jsx("td",{className:"border p-3",children:"Anreiz, mehr Budget auszugeben"})]}),e.jsxs("tr",{className:"bg-muted/30",children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Fixpreis"}),e.jsx("td",{className:"border p-3",children:"1.500â5.000â¬"}),e.jsx("td",{className:"border p-3",children:"Planbare Kosten"}),e.jsx("td",{className:"border p-3",children:"Kein direkter Performance-Anreiz"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"border p-3 font-semibold",children:"Performance-basiert"}),e.jsx("td",{className:"border p-3",children:"Basis + Bonus bei KPI-Erreichung"}),e.jsx("td",{className:"border p-3",children:"Interessen-Alignment"}),e.jsx("td",{className:"border p-3",children:"Komplexe Vertragsgestaltung"})]})]})]})}),e.jsxs("div",{className:"bg-primary/5 border border-primary/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð Rechenbeispiel"}),e.jsxs("p",{className:"text-muted-foreground",children:["Bei 20.000⬠Ad Spend/Monat und 15% Agenturgebühr zahlst du 3.000â¬/Monat. Wenn die Agentur durch bessere Optimierung deinen POAS von 120% auf 180% steigert, gewinnst du ca. 12.000⬠mehr Deckungsbeitrag â ",e.jsx("strong",{children:"4x Return auf die Agenturkosten"}),"."]})]}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Checkliste: So findest du die richtige Agentur in 5 Schritten"}),e.jsx("p",{children:"Nutze diese Checkliste, um systematisch die passende Google Ads Agentur zu finden:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-4 my-6",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Ziele und Budget definieren:"}
532)," Was ist dein monatliches Ad Spend Budget? Welche Kennzahlen (POAS, CPA) willst du erreichen? Brauchst du Google Ads, YouTube Ads oder beides? Je klarer dein Briefing, desto besser die Agenturauswahl."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Shortlist erstellen:"})," Recherchiere 3-5 Agenturen mit E-Commerce-Fokus. Prüfe Google Partner Status, lies Case Studies und schau dir Bewertungen auf Plattformen wie ProvenExpert oder Google Reviews an."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Erstgespräch führen:"})," Achte auf: Fragt die Agentur nach deinen Margen? Kennt sie POAS? Welche Vertragsmodelle bietet sie an? Gibt sie dir vollen Kontozugang? Ãberprüfe die Red Flags aus Abschnitt 3."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Audit anfordern:"})," Bitte um einen Audit deines bestehenden Kontos â viele gute Agenturen bieten das kostenlos an. So siehst du, ob die Agentur konkrete Verbesserungspotenziale identifiziert und Substanz hat."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Testphase vereinbaren:"})," Starte mit einer ",e.jsx("strong",{children:"3-monatigen Testphase"})," mit klar definierten KPIs. Nach 3 Monaten evaluieren: Wurden die Ziele erreicht? Stimmt die Kommunikation? Erst dann langfristig binden."]})]}),e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-6 my-6",children:[e.jsx("p",{className:"text-green-700 dark:text-green-400 font-semibold mb-2",children:"ð¡ Profi-Tipp"}),e.jsxs("p",{className:"text-muted-foreground",children:["Frag die Agentur im Erstgespräch: ",e.jsx("strong",{children:'âWas würdet ihr in den ersten 4 Wochen konkret ändern?"'}),' Eine gute Agentur hat sofort 3-5 konkrete Hebel parat. Eine schlechte antwortet mit Allgemeinplätzen wie âWir müssen erstmal alles analysieren."']})]}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Häufig gestellte Fragen zur Google Ads Agenturwahl"}),e.jsx("div",{className:"my-8 not-prose",children:e.jsxs(ip,{type:"single",collapsible:!0,className:"space-y-4",children:[e.jsxs(Jn,{value:"faq-1",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Was kostet eine Google Ads Agentur pro Monat?"}),e.jsx(Xn,{className:"text-muted-foreground leading-relaxed",children:"Die meisten spezialisierten Google Ads Agenturen berechnen zwischen 1.500 und 5.000⬠pro Monat. Gängige Preismodelle sind prozentual vom Ad Spend (10-20%), Fixpreis oder Performance-basiert. Bei einem Ad Spend unter 5.000â¬/Monat lohnt sich eine Agentur wirtschaftlich oft noch nicht."})]}),e.jsxs(Jn,{value:"faq-2",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Woran erkenne ich eine gute Google Ads Agentur?"}),e.jsx(Xn,{className:"text-muted-foreground leading-relaxed",children:"Klarer Branchenfokus (z.B. E-Commerce), transparentes Reporting mit Profit-Kennzahlen, flexible Vertragsmodelle, voller Kontozugang für dich und nachweisbare Case Studies. Google Partner Status ist ein positives Signal, aber kein alleiniger Qualitätsindikator."})]}),e.jsxs(Jn,{value:"faq-3",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Ab welchem Ad Spend lohnt sich eine Google Ads Agentur?"}),e.jsxs(Xn,{className:"text-muted-foreground leading-relaxed",children:["Als Faustregel: Ab 10.000⬠monatlichem Ad Spend. Bei diesem Budget kann eine professionelle"," ",e.jsx(E,{to:"/google-ads-optimieren",className:"text-primary hover:underline",children:"Google Ads Optimierung"})," ","typischerweise 20-50% mehr Gewinn aus dem gleichen Budget herausholen."]})]}),e.jsxs(Jn,{value:"faq-4",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Google Ads Agentur oder Freelancer â was ist besser?"}),e.jsx(Xn,{className:"text-muted-foreground leading-relaxed",children:"Freelancer sind günstiger und flexibler, aber oft Einzelkämpfer. Agenturen bieten Team-Expertise und Ausfallsicherheit. Für Shops mit 10.000â¬+ Ad Spend ist eine spezialisierte Agentur meist die bessere Wahl."})]}),e.jsxs(Jn,{value:"faq-5",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Wie lange dauert es, bis eine Agentur Ergebnisse liefert?"}),e.jsx(Xn,{className:"text-muted-foreground leading-relaxed",children:"Erste Verbesserungen (Tracking, Kontostruktur) in 2-4 Wochen. Signifikante Performance-Steigerungen nach 6-12 Wochen, da Gebotsstrategien Lernphasen durchlaufen. Eine seriöse Agentur setzt realistische Erwartungen."})]}),e.jsxs(Jn,{value:"faq-6",className:"bg-card border-2 border-border rounded-xl px-6 shadow-soft",children:[e.jsx(Qn,{className:"text-left text-base font-semibold hover:no-underline",children:"Soll die Agentur auf ROAS oder POAS optimieren?"}),e.jsxs(Xn,{className:"text-muted-foreground leading-relaxed",children:["Idealerweise auf"," ",e.jsx(E,{to:"/warum-roas-luegt",className:"text-primary hover:underline",children:"POAS (Profit on Ad Spend)"}),". ROAS ignoriert deine Produktmarge. Eine Agentur, die auf POAS optimiert, maximiert deinen echten Gewinn â nicht nur den Umsatz."]}
532)]})]})}),e.jsx("hr",{className:"my-12 border-border/50"}),e.jsx("h2",{children:"Fazit: Die richtige Agentur ist eine Gewinn-Investition"}),e.jsxs("div",{className:"rounded-xl bg-gradient-to-br from-cta/5 to-primary/5 border border-cta/20 p-6 md:p-8 my-8 not-prose",children:[e.jsxs("p",{className:"text-foreground leading-relaxed mb-4",children:["Eine gute Google Ads Agentur ist kein Kostenfaktor, sondern eine Investition mit messbarem Return. Der Schlüssel liegt in der Auswahl: ",e.jsx("strong",{children:"Branchenfokus, Profit-Orientierung, transparente Kommunikation und flexible Verträge"})," â das sind die Kriterien, die den Unterschied machen."]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:"Nimm dir die Zeit für eine sorgfältige Auswahl. Nutze die 5-Schritte-Checkliste, prüfe die Red Flags und starte immer mit einer Testphase. Denn die teuerste Agentur ist nicht die mit dem höchsten Preis â sondern die, die dein Budget verschwendet."})]}),e.jsxs("div",{className:"bg-muted rounded-lg p-6 my-8 not-prose",children:[e.jsx("p",{className:"font-semibold mb-2",children:"ð¯ Nächster Schritt"}),e.jsxs("p",{className:"text-muted-foreground",children:["Willst du wissen, wie viel Gewinn-Potenzial in deinem Google Ads Konto steckt? In unserem"," ",e.jsx(E,{to:"/google-ads-optimieren",className:"text-primary hover:underline",children:"Google Ads Optimierung Guide"})," ","zeigen wir dir die 7 konkreten Hebel, mit denen E-Commerce Shops mehr Profit aus ihren Kampagnen holen."]})]})]})]})},Bs="/assets/google-partner-BsY8dGQM.webp",EM=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"AdsHero | Ihre Strategie für mehr Gewinn aus Google Ads"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("section",{className:"container mx-auto px-4 pt-8 pb-10 md:pt-14 md:pb-16",children:e.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-10 md:h-12 mx-auto mb-8 md:mb-12"}),e.jsx("h1",{className:"text-3xl md:text-5xl lg:text-6xl font-bold leading-tight mb-4 md:mb-6",children:"Mehr Gewinn, nicht nur mehr Umsatz."}),e.jsx("h2",{className:"text-lg md:text-xl text-muted-foreground leading-relaxed",children:"Wie die Stahlia GmbH mit derselben Google Ads-Ausgabe ihren Profit um 40% steigerte â und wie auch du das schaffen kannst."})]})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-16",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsx("div",{className:"relative w-full rounded-xl overflow-hidden shadow-strong aspect-video",children:e.jsx("iframe",{src:"https://www.youtube.com/embed/9XPApWVtbbg?rel=0",title:"Case Study: Stahlia GmbH â Profit-Steigerung mit POAS",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,className:"absolute inset-0 w-full h-full",loading:"lazy"})})})}),e.jsx("section",{className:"container mx-auto px-4 pb-12 md:pb-20",children:e.jsxs("div",{className:"max-w-2xl mx-auto text-center space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-3 sm:gap-4",children:[e.jsx("a",{href:"/profit-analyse",children:e.jsx(q,{variant:"cta",size:"lg",className:"w-full sm:w-auto h-16 px-10 text-lg md:text-xl btn-shimmer",children:"Zur Profit-Analyse"})}),e.jsx(E,{to:"/resources/profit-audit-e7k2m",children:e.jsx(q,{variant:"outline",size:"sm",className:"w-full sm:w-auto h-11 px-6 text-sm border border-primary/15",children:"Mehr Details zum POAS"})})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 md:gap-6 pt-2",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-10 md:h-12 opacity-80"}),e.jsxs("div",{className:"text-xs md:text-sm text-muted-foreground",children:[e.jsx("div",{className:"font-semibold",children:"Ãber 13 Mio. â¬"}),e.jsx("div",{children:"Werbebudget verwaltet"})]})]})]})}),e.jsx("section",{className:"py-8 px-4",children:e.jsxs("div",{className:"max-w-2xl mx-auto text-center space-y-3 text-xs text-muted-foreground",children:[e.jsx("p",{children:"This site is not a part of the Facebook, Instagram website or Meta Platforms Inc. Additionally, this site is NOT endorsed by Meta Platforms in any way. FACEBOOK is a trademark of Meta Platforms, Inc."}),e.jsx("p",{children:"This website is not affiliated with, endorsed by, or operated by Google LLC. Google is a registered trademark of Google LLC. Our service and offerings are not directly connected to the products or services of Google."})]})}),e.jsx("footer",{className:"bg-primary text-primary-foreground py-6",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-3xl text-center space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-center gap-4 text-sm text-primary-foreground
532/80",children:[e.jsx(E,{to:"/impressum",className:"hover:text-cta transition-colors",children:"Impressum"}),e.jsx("span",{className:"text-primary-foreground/40",children:"|"}),e.jsx(E,{to:"/datenschutz",className:"hover:text-cta transition-colors",children:"Datenschutz"}),e.jsx("span",{className:"text-primary-foreground/40",children:"|"}),e.jsxs("button",{onClick:()=>window.dispatchEvent(new CustomEvent("openCookieBanner")),className:"flex items-center gap-1.5 hover:text-cta transition-colors",children:[e.jsx(rc,{className:"h-3.5 w-3.5"}),"Cookie-Einstellungen"]})]}),e.jsxs("p",{className:"text-xs text-primary-foreground/50",children:["© ",new Date().getFullYear()," AdsHero GmbH. Alle Rechte vorbehalten."]})]})})]})]}),TM=t=>t?(...n)=>t(...n):(...n)=>fetch(...n);class ap extends Error{constructor(n,r="FunctionsError",s){super(n),this.name=r,this.context=s}}class zM extends ap{constructor(n){super("Failed to send a request to the Edge Function","FunctionsFetchError",n)}}class Ux extends ap{constructor(n){super("Relay Error invoking the Edge Function","FunctionsRelayError",n)}}class $x extends ap{constructor(n){super("Edge Function returned a non-2xx status code","FunctionsHttpError",n)}}var dm;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(dm||(dm={}));class DM{constructor(n,{headers:r={},customFetch:s,region:i=dm.Any}={}){this.url=n,this.headers=r,this.region=i,this.fetch=TM(s)}setAuth(n){this.headers.Authorization=`Bearer ${n}`}invoke(n){return F(this,arguments,void 0,function*(r,s={}){var i;let a,l;try{const{headers:o,method:d,body:c,signal:u,timeout:h}=s;let g={},{region:m}=s;m||(m=this.region);const j=new URL(`${this.url}/${r}`);m&&m!=="any"&&(g["x-region"]=m,j.searchParams.set("forceFunctionRegion",m));let p;c&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o)?typeof Blob<"u"&&c instanceof Blob||c instanceof ArrayBuffer?(g["Content-Type"]="application/octet-stream",p=c):typeof c=="string"?(g["Content-Type"]="text/plain",p=c):typeof FormData<"u"&&c instanceof FormData?p=c:(g["Content-Type"]="application/json",p=JSON.stringify(c)):p=c;let b=u;h&&(l=new AbortController,a=setTimeout(()=>l.abort(),h),u?(b=l.signal,u.addEventListener("abort",()=>l.abort())):b=l.signal);const x=yield this.fetch(j.toString(),{method:d||"POST",headers:Object.assign(Object.assign(Object.assign({},g),this.headers),o),body:p,signal:b}).catch(k=>{throw new zM(k)}),f=x.headers.get("x-relay-error");if(f&&f==="true")throw new Ux(x);if(!x.ok)throw new $x(x);let v=((i=x.headers.get("Content-Type"))!==null&&i!==void 0?i:"text/plain").split(";")[0].trim(),w;return v==="application/json"?w=yield x.json():v==="application/octet-stream"||v==="application/pdf"?w=yield x.blob():v==="text/event-stream"?w=x:v==="multipart/form-data"?w=yield x.formData():w=yield x.text(),{data:w,error:null,response:x}}catch(o){return{data:null,error:o,response:o instanceof $x||o instanceof Ux?o.context:void 0}}finally{a&&clearTimeout(a)}})}}var ft={};const aa=nN(cz);var vo={},yo={},wo={},ko={},No={},So={},Hx;function vk(){if(Hx)return So;Hx=1,Object.defineProperty(So,"__esModule",{value:!0});class t extends Error{constructor(r){super(r.message),this.name="PostgrestError",this.details=r.details,this.hint=r.hint,this.co
532de=r.code}}return So.default=t,So}var Zx;function yk(){if(Zx)return No;Zx=1,Object.defineProperty(No,"__esModule",{value:!0});const n=aa.__importDefault(vk());class r{constructor(i){var a,l;this.shouldThrowOnError=!1,this.method=i.method,this.url=i.url,this.headers=new Headers(i.headers),this.schema=i.schema,this.body=i.body,this.shouldThrowOnError=(a=i.shouldThrowOnError)!==null&&a!==void 0?a:!1,this.signal=i.signal,this.isMaybeSingle=(l=i.isMaybeSingle)!==null&&l!==void 0?l:!1,i.fetch?this.fetch=i.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(i,a){return this.headers=new Headers(this.headers),this.headers.set(i,a),this}then(i,a){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json");const l=this.fetch;let o=l(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async d=>{var c,u,h,g;let m=null,j=null,p=null,b=d.status,x=d.statusText;if(d.ok){if(this.method!=="HEAD"){const k=await d.text();k===""||(this.headers.get("Accept")==="text/csv"||this.headers.get("Accept")&&(!((c=this.headers.get("Accept"))===null||c===void 0)&&c.includes("application/vnd.pgrst.plan+text"))?j=k:j=JSON.parse(k))}const v=(u=this.headers.get("Prefer"))===null||u===void 0?void 0:u.match(/count=(exact|planned|estimated)/),w=(h=d.headers.get("content-range"))===null||h===void 0?void 0:h.split("/");v&&w&&w.length>1&&(p=parseInt(w[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(j)&&(j.length>1?(m={code:"PGRST116",details:`Results contain ${j.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},j=null,p=null,b=406,x="Not Acceptable"):j.length===1?j=j[0]:j=null)}else{const v=await d.text();try{m=JSON.parse(v),Array.isArray(m)&&d.status===404&&(j=[],m=null,b=200,x="OK")}catch{d.status===404&&v===""?(b=204,x="No Content"):m={message:v}}if(m&&this.isMaybeSingle&&(!((g=m==null?void 0:m.details)===null||g===void 0)&&g.includes("0 rows"))&&(m=null,b=200,x="OK"),m&&this.shouldThrowOnError)throw new n.default(m)}return{error:m,data:j,count:p,status:b,statusText:x}});return this.shouldThrowOnError||(o=o.catch(d=>{var c,u,h,g,m,j;let p="";const b=d==null?void 0:d.cause;if(b){const x=(c=b==null?void 0:b.message)!==null&&c!==void 0?c:"",f=(u=b==null?void 0:b.code)!==null&&u!==void 0?u:"";p=`${(h=d==null?void 0:d.name)!==null&&h!==void 0?h:"FetchError"}: ${d==null?void 0:d.message}`,p+=` 533 534Caused by: ${(g=b==null?void 0:b.name)!==null&&g!==void 0?g:"Error"}: ${x}`,f&&(p+=` (${f})`),b!=null&&b.stack&&(p+=` 535${b.stack}`)}else p=(m=d==null?void 0:d.stack)!==null&&m!==void 0?m:"";return{error:{message:`${(j=d==null?void 0:d.name)!==null&&j!==void 0?j:"FetchError"}: ${d==null?void 0:d.message}`,details:p,hint:"",code:""},data:null,count:null,status:0,statusText:""}})),o.then(i,a)}returns(){return this}overrideTypes(){return this}}return No.default=r,No}var qx;function wk(){if(qx)return ko;qx=1,Object.defineProperty(ko,"__esModule",{value:!0});const n=aa.__importDefault(yk());class r extends n.default{select(i){let a=!1;const l=(i??"*").split("").map(o=>/\s/.test(o)&&!a?"":(o==='"'&&(a=!a),o)).join("");return this.url.searchParams.set("select",l),this.headers.append("Prefer","return=representation"),this}order(i,{ascending:a=!0,nullsFirst:l,foreignTable:o,referencedTable:d=o}={}){const c=d?`${d}.order`:"order",u=this.url.searchParams.get(c);return this.url.searchParams.set(c,`${u?`${u},`:""}${i}.${a?"asc":"desc"}${l===void 0?"":l?".nullsfirst":".nullslast"}`),this}limit(i,{foreignTable:a,referencedTable:l=a}={}){const o=typeof l>"u"?"limit":`${l}.limit`;return this.url.searchParams.set(o,`${i}`),this}range(i,a,{foreignTable:l,referencedTable:o=l}={}){const d=typeof o>"u"?"offset":`${o}.offset`,c=typeof o>"u"?"limit":`${o}.limit`;return this.url.searchParams.set(d,`${i}`),this.url.searchParams.set(c,`${a-i+1}`),this}abortSignal(i){return this.signal=i,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.method==="GET"?this.headers.set("Accept","application/json"):this.headers.set("Accept","application/vnd.pgrst.object+json"),this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
535explain({analyze:i=!1,verbose:a=!1,settings:l=!1,buffers:o=!1,wal:d=!1,format:c="text"}={}){var u;const h=[i?"analyze":null,a?"verbose":null,l?"settings":null,o?"buffers":null,d?"wal":null].filter(Boolean).join("|"),g=(u=this.headers.get("Accept"))!==null&&u!==void 0?u:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${c}; for="${g}"; options=${h};`),c==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(i){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${i}`),this}}return ko.default=r,ko}var Yx;function lp(){if(Yx)return wo;Yx=1,Object.defineProperty(wo,"__esModule",{value:!0});const n=aa.__importDefault(wk()),r=new RegExp("[,()]");class s extends n.default{eq(a,l){return this.url.searchParams.append(a,`eq.${l}`),this}neq(a,l){return this.url.searchParams.append(a,`neq.${l}`),this}gt(a,l){return this.url.searchParams.append(a,`gt.${l}`),this}gte(a,l){return this.url.searchParams.append(a,`gte.${l}`),this}lt(a,l){return this.url.searchParams.append(a,`lt.${l}`),this}lte(a,l){return this.url.searchParams.append(a,`lte.${l}`),this}like(a,l){return this.url.searchParams.append(a,`like.${l}`),this}likeAllOf(a,l){return this.url.searchParams.append(a,`like(all).{${l.join(",")}}`),this}likeAnyOf(a,l){return this.url.searchParams.append(a,`like(any).{${l.join(",")}}`),this}ilike(a,l){return this.url.searchParams.append(a,`ilike.${l}`),this}ilikeAllOf(a,l){return this.url.searchParams.append(a,`ilike(all).{${l.join(",")}}`),this}ilikeAnyOf(a,l){return this.url.searchParams.append(a,`ilike(any).{${l.join(",")}}`),this}regexMatch(a,l){return this.url.searchParams.append(a,`match.${l}`),this}regexIMatch(a,l){return this.url.searchParams.append(a,`imatch.${l}`),this}is(a,l){return this.url.searchParams.append(a,`is.${l}`),this}isDistinct(a,l){return this.url.searchParams.append(a,`isdistinct.${l}`),this}in(a,l){const o=Array.from(new Set(l)).map(d=>typeof d=="string"&&r.test(d)?`"${d}"`:`${d}`).join(",");return this.url.searchParams.append(a,`in.(${o})`),this}contains(a,l){return typeof l=="string"?this.url.searchParams.append(a,`cs.${l}`):Array.isArray(l)?this.url.searchParams.append(a,`cs.{${l.join(",")}}`):this.url.searchParams.append(a,`cs.${JSON.stringify(l)}`),this}containedBy(a,l){return typeof l=="string"?this.url.searchParams.append(a,`cd.${l}`):Array.isArray(l)?this.url.searchParams.append(a,`cd.{${l.join(",")}}`):this.url.searchParams.append(a,`cd.${JSON.stringify(l)}`),this}rangeGt(a,l){return this.url.searchParams.append(a,`sr.${l}`),this}rangeGte(a,l){return this.url.searchParams.append(a,`nxl.${l}`),this}rangeLt(a,l){return this.url.searchParams.append(a,`sl.${l}`),this}rangeLte(a,l){return this.url.searchParams.append(a,`nxr.${l}`),this}rangeAdjacent(a,l){return this.url.searchParams.append(a,`adj.${l}`),this}overlaps(a,l){return typeof l=="string"?this.url.searchParams.append(a,`ov.${l}`):this.url.searchParams.append(a,`ov.{${l.join(",")}}`),this}textSearch(a,l,{config:o,type:d}={}){let c="";d==="plain"?c="pl":d==="phrase"?c="ph":d==="websearch"&&(c="w");const u=o===void 0?"":`(${o})`;return this.url.searchParams.append(a,`${c}fts${u}.${l}`),this}match(a){return Object.entries(a).forEach(([l,o])=>{this.url.searchParams.append(l,`eq.${o}`)}),this}not(a,l,o){return this.url.searchParams.append(a,`not.${l}.${o}`),this}or(a,{foreignTable:l,referencedTable:o=l}={}){const d=o?`${o}.or`:"or";return this.url.searchParams.append(d,`(${a})`),this}filter(a,l,o){return this.url.searchParams.append(a,`${l}.${o}`),this}}return wo.default=s,wo}var Jx;function kk(){if(Jx)return yo;Jx=1,Object.defineProperty(yo,"__esModule",{value:!0});const n=aa.__importDefault(lp());class r{constructor(i,{headers:a={},schema:l,fetch:o}){this.url=i,this.headers=new Headers(a),this.schema=l,this.fetch=o}select(i,a){const{head:l=!1,count:o}=a??{},d=l?"HEAD":"GET";let c=!1;const u=(i??"*").split("").map(h=>/\s/.test(h)&&!c?"":(h==='"'&&(c=!c),h)).join("");return this.url.searchParams.set("select",u),o&&this.headers.append("Prefer",`count=${o}`),new n.default({method:d,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(i,{count:a,defaultToNull:l=!0}={}){var o;const d="POST";if(a&&this.headers.append("Prefer",`count=${a}`),l||this.headers.append("Prefer","missing=default"),Array.isArray(i)){const c=i.reduce((u,h)=>u.concat(Object.keys(h)),[]);if(c.length>0){const u=[...new Set(c)].map(h=>`"${h}"`);this.url.searchParams.set("columns",u.join(","))}}return new n.default({method:d,url:this.url,headers:this.headers,schema:this.schema,body:i,fetch:(o=this.fetch)!==null&&o!==void 0?o:fetch})}upsert(i,{onConflict:a,ignoreDuplicates:l=!1,count:o,defaultToNull:d=!0}={}){var c;const u="POST";if(this.headers.append("Prefer",`resolution=${l?"ignore":"merge"}-duplicates`),a!==void 0&&this.url.searchParams.set("on_conflict",a),o&&this.headers.append("Prefer",`count=${o}`),d||this.headers.append("Prefer","missing=default"),Array.isArray(i)){const h=i.reduce((g,m)=>g.concat(Object.keys(m)),[]);if(h.length>0){const g=[...new Set(h)].map(m=>`"${m}"`);this.url.searchParams.set("columns",g.join(","))}}return new n.default({method:u,url:this.url,headers:this.headers,schema:this.schema,body:i,fetch:(c=this.fetch)!==null&&c!==void 0?c:fetch})}update(i,{count:a}={}){var l;const o="PATCH";return a&&this.headers.append("Prefer",`count=${a}`),new n.default({method:o,url:this.url,headers:this.headers,schema:this.schema,body:i,fetch:(l=this.fetch)!==null&&l!==void 0?l:fetch})}delete({count:i}={}){var a;const l="DELETE";return i&&this.headers.append("Prefer",`count=${i}`),new n.default({method:l,url:this.url,headers:this.headers,schema:this.schema,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch})}}return yo.default=r,yo}var Qx;function _M(){if(Qx)return vo;Qx=1,Object.defineProperty(vo,"__esModule",{value:!0});const t=aa,n=t.__importDefault(kk()),r=t.__importDefault(lp());class s{constructor(a,{headers:l={},schema:o,fetch:d}={}){this.url=a,this.headers=new Headers(l),this.schemaName=o,this.fetch=d}from(a){if(!a||typeof a!="string"||a.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");const l=new URL(`${this.url}/${a}`);return new n.default(l,{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(a){return new s(this.url,{headers:this.headers,schema:a,fetch:this.fetch})}rpc(a,l={},{head:o=!1,get:d=!1,count:c}={}){var u;let h;const g=new URL(`${this.url}/rpc/${a}`);let m;o||d?(h=o?"HEAD":"GET",Object.entries(l).filter(([p,b])=>b!==void 0).map(([p,b])=>[p,Array.isArray(b)?`{${b.join(",")}}`:`${b}
535`]).forEach(([p,b])=>{g.searchParams.append(p,b)})):(h="POST",m=l);const j=new Headers(this.headers);return c&&j.set("Prefer",`count=${c}`),new r.default({method:h,url:g,headers:j,schema:this.schemaName,body:m,fetch:(u=this.fetch)!==null&&u!==void 0?u:fetch})}}return vo.default=s,vo}Object.defineProperty(ft,"__esModule",{value:!0});var Nk=ft.PostgrestError=Mk=ft.PostgrestBuilder=Dk=ft.PostgrestTransformBuilder=Tk=ft.PostgrestFilterBuilder=Pk=ft.PostgrestQueryBuilder=Ak=ft.PostgrestClient=void 0;const la=aa,Sk=la.__importDefault(_M());var Ak=ft.PostgrestClient=Sk.default;const Ck=la.__importDefault(kk());var Pk=ft.PostgrestQueryBuilder=Ck.default;const Ek=la.__importDefault(lp());var Tk=ft.PostgrestFilterBuilder=Ek.default;const zk=la.__importDefault(wk());var Dk=ft.PostgrestTransformBuilder=zk.default;const _k=la.__importDefault(yk());var Mk=ft.PostgrestBuilder=_k.default;const Ok=la.__importDefault(vk());Nk=ft.PostgrestError=Ok.default;var Rk=ft.default={PostgrestClient:Sk.default,PostgrestQueryBuilder:Ck.default,PostgrestFilterBuilder:Ek.default,PostgrestTransformBuilder:zk.default,PostgrestBuilder:_k.default,PostgrestError:Ok.default};const MM=zb({__proto__:null,get PostgrestBuilder(){return Mk},get PostgrestClient(){return Ak},get PostgrestError(){return Nk},get PostgrestFilterBuilder(){return Tk},get PostgrestQueryBuilder(){return Pk},get PostgrestTransformBuilder(){return Dk},default:Rk},[ft]),{PostgrestClient:OM,PostgrestQueryBuilder:GR,PostgrestFilterBuilder:IR,PostgrestTransformBuilder:BR,PostgrestBuilder:KR,PostgrestError:FR}=Rk||MM;class RM{constructor(){}static detectEnvironment(){var n;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&(!((n=navigator.userAgent)===null||n===void 0)&&n.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};if(typeof process<"u"){const r=process.versions;if(r&&r.node){const s=r.node,i=parseInt(s.replace(/^v/,"").split(".")[0]);return i>=22?typeof globalThis.WebSocket<"u"?{type:"native",constructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${i} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${i} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option: 536import ws from "ws" 537new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const n=this.detectEnvironment();if(n.constructor)return n.constructor;let r=n.error||"WebSocket not supported in this environment.";throw n.workaround&&(r+=` 538 539Suggested solution: ${n.workaround}`),new Error(r)}static createWebSocket(n,r){const s=this.getWebSocketConstructor();return new s(n,r)}static isWebSocketSupported(){try{const n=this.detectEnvironment();return n.type==="native"||n.type==="ws"}catch{return!1}}}const GM="2.84.0",IM=`realtime-js/${GM}`,Gk="1.0.0",BM="2.0.0",Xx=Gk,cm=1e4,KM=1e3,FM=100;var gs;(function(t){t[t.connecting=0]="connecting",t[t.open=1]="open",t[t.closing=2]="closing",t[t.closed=3]="closed"})(gs||(gs={}));var Ue;(function(t){t.closed="closed",t.errored="errored",t.joined="joined",t.joining="joining",t.leaving="leaving"})(Ue||(Ue={}));var pn;(function(t){t.close="phx_close",t.error="phx_error",t.join="phx_join",t.reply="phx_reply",t.leave="phx_leave",t.access_token="access_token"})(pn||(pn={}));var um;(function(t){t.websocket="websocket"})(um||(um={}));var ps;(function(t){t.Connecting="connecting",t.Open="open",t.Closing="closing",t.Closed="closed"})(ps||(ps={}));class LM{constructor(){this.HEADER_LENGTH=1,this.META_LENGTH=4,this.USER_BROADCAST_PUSH_META_LENGTH=5,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast"}encode(n,r){if(n.event===this.BROADCAST_EVENT&&!(n.payload instanceof ArrayBuffer)&&typeof n.payload.event=="string")return r(this._binaryEncodeUserBroadcastPush(n));let s=[n.join_ref,n.ref,n.topic,n.event,n.payload];return r(JSON.stringify(s))}_binaryEncodeUserBroadcastPush(n){var r;return this._isArrayBuffer((r=n.payload)===null||r===void 0?void 0:r.payload)?this._encodeBinaryUserBroadcastPush(n):this._encodeJsonUserBroadcastPush(n)}_encodeBinaryUserBroadcastPush(n){var r,s,i,a;const l=n.topic,o=(r=n.ref)!==null&&r!==void 0?r:"",d=(s=n.join_ref)!==null&&s!==void 0?s:"",c=n.payload.event,u=(a=(i=n.payload)===null||i===void 0?void 0:i.payload)!==null&&a!==void 0?a:new ArrayBuffer(0),h=this.USER_BROADCAST_PUSH_META_LENGTH+d.length+o.length+l.length+c.length,g=new ArrayBuffer(this.HEADER_LENGTH+h);let m=new DataView(g),j=0;m.setUint8(j++,this.KINDS.userBroadcastPush),m.setUint8(j++,d.length),m.setUint8(j++,o.length),m.setUint8(j++,l.length),m.setUint8(j++,c.length),m.setUint8(j++,this.BINARY_ENCODING),Array.from(d,b=>m.setUint8(j++,b.charCodeAt(0))),Array.from(o,b=>m.setUint8(j++,b.charCodeAt(0))),Array.from(l,b=>m.setUint8(j++,b.charCodeAt(0))),Array.from(c,b=>m.setUint8(j++,b.charCodeAt(0)));var p=new Uint8Array(g.byteLength+u.byteLength);return p.set(new Uint8Array(g),0),p.set(new Uint8Array(u),g.byteLength),p.buffer}_encodeJsonUserBroadcastPush(n){var r,s,i,a;const l=n.topic,o=(r=n.ref)!==null&&r!==void 0?r:"",d=(s=n.join_ref)!==null&&s!==void 0?s:"",c=n.payload.event,u=(a=(i=n.payload)===null||i===void 0?void 0:i.payload)!==null&&a!==void 0?a:{},g=new TextEncoder().encode(JSON.stringify(u)).buffer,m=this.USER_BROADCAST_PUSH_META_LENGTH+d.length+o.length+l.length+c.length,j=new ArrayBuffer(this.HEADER_LENGTH+m);let p=new DataView(j),b=0;p.setUint8(b++,this.KINDS.userBroadcastPush),p.setUint8(b++,d.length),p.setUint8(b++,o.length),p.setUint8(b++,l.length),p.setUint8(b++,c.length),p.setUint8(b++,this.JSON_ENCODING),Array.from(d,f=>p.setUint8(b++,f.charCodeAt(0))),Array.from(o,f=>p.setUint8(b++,f.charCodeAt(0))),Array.from(l,f=>p.setUint8(b++,f.charCodeAt(0))),Array.from(c,f=>p.setUint8(b++,f.charCodeAt(0)));var x=new Uint8Array(j.byteLength+g.byteLength);return x.set(new Uint8Array(j),0),x.set(new Uint8Array(g),j.byteLength),x.buffer}decode(n,r){if(this._isArrayBuffer(n)){let s=this._binaryDecode(n);return r(s)}if(typeof n=="string"){const s=JSON.parse(n),[i,a,l,o,d]=s;return r({join_ref:i,ref:a,topic:l,event:o,payload:d})}return r({})}_binaryDecode(n){const r=new DataView(n),s=r.getUint8(0),i=new TextDecoder;switch(s){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(n,r,i)}}_decodeUserBroadcast(n,r,s){const i=r.getUint8(1),a=r.getUint8(2),l=r.getUint8(3),o=r.getUint8(4);let d=this.HEADER_LENGTH+4;const c=s.decode(n.slice(d,d+i));d=d+i;const u=s.decode(n.slice(d,d+a));d=d+a;const h=s.decode(n.slice(d,d+l));d=d+l;const g=n.slice(d,n.byteLength),m=o===this.JSON_ENCODING?JSON.parse(s.decode(g)):g,j={type:this.BROADCAST_EVENT,event:u,payload:m};return l>0&&(j.meta=JSON.parse(h)),{join_ref:null,ref:null,topic:c,event:this.BROADCAST_EVENT,payload:j}}_isArrayBuffer(n){var r;return n instanceof ArrayBuffer||((r=n==null?void 0:n.constructor)===null||r===void 0?void 0:r.name)==="ArrayBuffer"}}class Ik{constructor(n,r){this.callback=n,this.timerCalc=r,this.timer=void 0,this.tries=0,this.callback=n,this.timerCalc=r}reset(){this.tries=0,clearTimeout(this.timer),this.timer=void 0}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}var ve;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.t
539srange="tsrange",t.tstzrange="tstzrange"})(ve||(ve={}));const eb=(t,n,r={})=>{var s;const i=(s=r.skipTypes)!==null&&s!==void 0?s:[];return n?Object.keys(n).reduce((a,l)=>(a[l]=WM(l,t,n,i),a),{}):{}},WM=(t,n,r,s)=>{const i=n.find(o=>o.name===t),a=i==null?void 0:i.type,l=r[t];return a&&!s.includes(a)?Bk(a,l):hm(l)},Bk=(t,n)=>{if(t.charAt(0)==="_"){const r=t.slice(1,t.length);return HM(n,r)}switch(t){case ve.bool:return VM(n);case ve.float4:case ve.float8:case ve.int2:case ve.int4:case ve.int8:case ve.numeric:case ve.oid:return UM(n);case ve.json:case ve.jsonb:return $M(n);case ve.timestamp:return ZM(n);case ve.abstime:case ve.date:case ve.daterange:case ve.int4range:case ve.int8range:case ve.money:case ve.reltime:case ve.text:case ve.time:case ve.timestamptz:case ve.timetz:case ve.tsrange:case ve.tstzrange:return hm(n);default:return hm(n)}},hm=t=>t,VM=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},UM=t=>{if(typeof t=="string"){const n=parseFloat(t);if(!Number.isNaN(n))return n}return t},$M=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch(n){return console.log(`JSON parse error: ${n}`),t}return t},HM=(t,n)=>{if(typeof t!="string")return t;const r=t.length-1,s=t[r];if(t[0]==="{"&&s==="}"){let a;const l=t.slice(1,r);try{a=JSON.parse("["+l+"]")}catch{a=l?l.split(","):[]}return a.map(o=>Bk(n,o))}return t},ZM=t=>typeof t=="string"?t.replace(" ","T"):t,Kk=t=>{const n=new URL(t);return n.protocol=n.protocol.replace(/^ws/i,"http"),n.pathname=n.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),n.pathname===""||n.pathname==="/"?n.pathname="/api/broadcast":n.pathname=n.pathname+"/api/broadcast",n.href};class Au{constructor(n,r,s={},i=cm){this.channel=n,this.event=r,this.payload=s,this.timeout=i,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(n){this.timeout=n,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref,join_ref:this.channel._joinRef()}))}updatePayload(n){this.payload=Object.assign(Object.assign({},this.payload),n)}receive(n,r){var s;return this._hasReceived(n)&&r((s=this.receivedResp)===null||s===void 0?void 0:s.response),this.recHooks.push({status:n,callback:r}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket._makeRef(),this.refEvent=this.channel._replyEventName(this.ref);const n=r=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=r,this._matchReceive(r)};this.channel._on(this.refEvent,{},n),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(n,r){this.refEvent&&this.channel._trigger(this.refEvent,{status:n,response:r})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){this.refEvent&&this.channel._off(this.refEvent,{})}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:n,response:r}){this.recHooks.filter(s=>s.status===n).forEach(s=>s.callback(r))}_hasReceived(n){return this.receivedResp&&this.receivedResp.status===n}}var tb;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(tb||(tb={}));class La{constructor(n,r){this.channel=n,this.state={},this.pendingDiffs=[],this.joinRef=null,this.enabled=!1,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const s=(r==null?void 0:r.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(s.state,{},i=>{const{onJoin:a,onLeave:l,onSync:o}=this.caller;this.joinRef=this.channel._joinRef(),this.state=La.syncState(this.state,i,a,l),this.pendingDiffs.forEach(d=>{this.state=La.syncDiff(this.state,d,a,l)}),this.pendingDiffs=[],o()}),this.channel._on(s.diff,{},i=>{const{onJoin:a,onLeave:l,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=La.syncDiff(this.state,i,a,l),o())}),this.onJoin((i,a,l)=>{this.channel._trigger("presence",{event:"join",key:i,currentPresences:a,newPresences:l})}),this.onLeave((i,a,l)=>{this.channel._trigger("presence",{event:"leave",key:i,currentPresences:a,leftPresences:l})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(n,r,s,i){const a=this.cloneDeep(n),l=this.transformState(r),o={},d={};return this.map(a,(c,u)=>{l[c]||(d[c]=u)}),this.map(l,(c,u)=>{const h=a[c];if(h){const g=u.map(b=>b.presence_ref),m=h.map(b=>b.presence_ref),j=u.filter(b=>m.indexOf(b.presence_ref)<0),p=h.filter(b=>g.indexOf(b.presence_ref)<0);j.length>0&&(o[c]=j),p.length>0&&(d[c]=p)}else o[c]=u}),this.syncDiff(a,{joins:o,leaves:d},s,i)}static syncDiff(n,r,s,i){const{joins:a,leaves:l}={joins:this.transformState(r.joins),leaves:this.transformState(r.leaves)};return s||(s=()=>{}),i||(i=()=>{}),this.map(a,(o,d)=>{var c;const u=(c=n[o])!==null&&c!==void 0?c:[];if(n[o]=this.cloneDeep(d),u.length>0){const h=n[o].map(m=>m.presence_ref),g=u.filter(m=>h.indexOf(m.presence_ref)<0);n[o].unshift(...g)}s(o,u,d)}),this.map(l,(o,d)=>{let c=n[o];if(!c)return;const u=d.map(h=>h.presence_ref);c=c.filter(h=>u.indexOf(h.presence_ref)<0),n[o]=c,i(o,c,d),c.length===0&&delete n[o]}),n}static map(n,r){return Object.getOwnPropertyNames(n).map(s=>r(s,n[s]))}static transformState(n){return n=this.cloneDeep(n),Object.getOwnPropertyNames(n).reduce((r,s)=>{const i=n[s];return"metas"in i?r[s]=i.metas.map(a=>(a.presence_ref=a.phx_ref,delete a.phx_ref,delete a.phx_ref_prev,a)):r[s]=i,r},{})}static cloneDeep(n){return JSON.parse(JSON.stringify(n))}onJoin(n){this.caller.onJoin=n}onLeave(n){this.caller.onLeave=n}onSync(n){this.caller.onSync=n}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel._joinRef()}}var nb;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELET
539E="DELETE"})(nb||(nb={}));var Wa;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes",t.SYSTEM="system"})(Wa||(Wa={}));var qn;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(qn||(qn={}));class op{constructor(n,r={config:{}},s){var i,a;if(this.topic=n,this.params=r,this.socket=s,this.bindings={},this.state=Ue.closed,this.joinedOnce=!1,this.pushBuffer=[],this.subTopic=n.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},r.config),this.timeout=this.socket.timeout,this.joinPush=new Au(this,pn.join,this.params,this.timeout),this.rejoinTimer=new Ik(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=Ue.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(l=>l.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=Ue.closed,this.socket._remove(this)}),this._onError(l=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,l),this.state=Ue.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=Ue.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("error",l=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,l),this.state=Ue.errored,this.rejoinTimer.scheduleTimeout())}),this._on(pn.reply,{},(l,o)=>{this._trigger(this._replyEventName(o),l)}),this.presence=new La(this),this.broadcastEndpointURL=Kk(this.socket.endPoint),this.private=this.params.config.private||!1,!this.private&&(!((a=(i=this.params.config)===null||i===void 0?void 0:i.broadcast)===null||a===void 0)&&a.replay))throw`tried to use replay on public channel '${this.topic}'. It must be a private channel.`}subscribe(n,r=this.timeout){var s,i,a;if(this.socket.isConnected()||this.socket.connect(),this.state==Ue.closed){const{config:{broadcast:l,presence:o,private:d}}=this.params,c=(i=(s=this.bindings.postgres_changes)===null||s===void 0?void 0:s.map(m=>m.filter))!==null&&i!==void 0?i:[],u=!!this.bindings[Wa.PRESENCE]&&this.bindings[Wa.PRESENCE].length>0||((a=this.params.config.presence)===null||a===void 0?void 0:a.enabled)===!0,h={},g={broadcast:l,presence:Object.assign(Object.assign({},o),{enabled:u}),postgres_changes:c,private:d};this.socket.accessTokenValue&&(h.access_token=this.socket.accessTokenValue),this._onError(m=>n==null?void 0:n(qn.CHANNEL_ERROR,m)),this._onClose(()=>n==null?void 0:n(qn.CLOSED)),this.updateJoinPayload(Object.assign({config:g},h)),this.joinedOnce=!0,this._rejoin(r),this.joinPush.receive("ok",async({postgres_changes:m})=>{var j;if(this.socket.setAuth(),m===void 0){n==null||n(qn.SUBSCRIBED);return}else{const p=this.bindings.postgres_changes,b=(j=p==null?void 0:p.length)!==null&&j!==void 0?j:0,x=[];for(let f=0;f<b;f++){const v=p[f],{filter:{event:w,schema:k,table:N,filter:S}}=v,A=m&&m[f];if(A&&A.event===w&&A.schema===k&&A.table===N&&A.filter===S)x.push(Object.assign(Object.assign({},v),{id:A.id}));else{this.unsubscribe(),this.state=Ue.errored,n==null||n(qn.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=x,n&&n(qn.SUBSCRIBED);return}}).receive("error",m=>{this.state=Ue.errored,n==null||n(qn.CHANNEL_ERROR,new Error(JSON.stringify(Object.values(m).join(", ")||"error")))}).receive("timeout",()=>{n==null||n(qn.TIMED_OUT)})}return this}presenceState(){return this.presence.state}async track(n,r={}){return await this.send({type:"presence",event:"track",payload:n},r.timeout||this.timeout)}async untrack(n={}){return await this.send({type:"presence",event:"untrack"},n)}on(n,r,s){return this.state===Ue.joined&&n===Wa.PRESENCE&&(this.socket.log("channel",`resubscribe to ${this.topic} due to change in presence callbacks on joined channel`),this.unsubscribe().then(()=>this.subscribe())),this._on(n,r,s)}async httpSend(n,r,s={}){var i;const a=this.socket.accessTokenValue?`Bearer ${this.socket.accessTokenValue}`:"";if(r==null)return Promise.reject("Payload is required for httpSend()");const l={method:"POST",headers:{Authorization:a,apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:n,payload:r,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,l,(i=s.timeout)!==null&&i!==void 0?i:this.timeout);if(o.status===202)return{success:!0};let d=o.statusText;
539try{const c=await o.json();d=c.error||c.message||d}catch{}return Promise.reject(new Error(d))}async send(n,r={}){var s,i;if(!this._canPush()&&n.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");const{event:a,payload:l}=n,d={method:"POST",headers:{Authorization:this.socket.accessTokenValue?`Bearer ${this.socket.accessTokenValue}`:"",apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:a,payload:l,private:this.private}]})};try{const c=await this._fetchWithTimeout(this.broadcastEndpointURL,d,(s=r.timeout)!==null&&s!==void 0?s:this.timeout);return await((i=c.body)===null||i===void 0?void 0:i.cancel()),c.ok?"ok":"error"}catch(c){return c.name==="AbortError"?"timed out":"error"}}else return new Promise(a=>{var l,o,d;const c=this._push(n.type,n,r.timeout||this.timeout);n.type==="broadcast"&&!(!((d=(o=(l=this.params)===null||l===void 0?void 0:l.config)===null||o===void 0?void 0:o.broadcast)===null||d===void 0)&&d.ack)&&a("ok"),c.receive("ok",()=>a("ok")),c.receive("error",()=>a("error")),c.receive("timeout",()=>a("timed out"))})}updateJoinPayload(n){this.joinPush.updatePayload(n)}unsubscribe(n=this.timeout){this.state=Ue.leaving;const r=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(pn.close,"leave",this._joinRef())};this.joinPush.destroy();let s=null;return new Promise(i=>{s=new Au(this,pn.leave,{},n),s.receive("ok",()=>{r(),i("ok")}).receive("timeout",()=>{r(),i("timed out")}).receive("error",()=>{i("error")}),s.send(),this._canPush()||s.trigger("ok",{})}).finally(()=>{s==null||s.destroy()})}teardown(){this.pushBuffer.forEach(n=>n.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=Ue.closed,this.bindings={}}async _fetchWithTimeout(n,r,s){const i=new AbortController,a=setTimeout(()=>i.abort(),s),l=await this.socket.fetch(n,Object.assign(Object.assign({},r),{signal:i.signal}));return clearTimeout(a),l}_push(n,r,s=this.timeout){if(!this.joinedOnce)throw`tried to push '${n}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let i=new Au(this,n,r,s);return this._canPush()?i.send():this._addToPushBuffer(i),i}_addToPushBuffer(n){if(n.startTimeout(),this.pushBuffer.push(n),this.pushBuffer.length>FM){const r=this.pushBuffer.shift();r&&(r.destroy(),this.socket.log("channel",`discarded push due to buffer overflow: ${r.event}`,r.payload))}}_onMessage(n,r,s){return r}_isMember(n){return this.topic===n}_joinRef(){return this.joinPush.ref}_trigger(n,r,s){var i,a;const l=n.toLocaleLowerCase(),{close:o,error:d,leave:c,join:u}=pn;if(s&&[o,d,c,u].indexOf(l)>=0&&s!==this._joinRef())return;let g=this._onMessage(l,r,s);if(r&&!g)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(l)?(i=this.bindings.postgres_changes)===null||i===void 0||i.filter(m=>{var j,p,b;return((j=m.filter)===null||j===void 0?void 0:j.event)==="*"||((b=(p=m.filter)===null||p===void 0?void 0:p.event)===null||b===void 0?void 0:b.toLocaleLowerCase())===l}).map(m=>m.callback(g,s)):(a=this.bindings[l])===null||a===void 0||a.filter(m=>{var j,p,b,x,f,v;if(["broadcast","presence","postgres_changes"].includes(l))if("id"in m){const w=m.id,k=(j=m.filter)===null||j===void 0?void 0:j.event;return w&&((p=r.ids)===null||p===void 0?void 0:p.includes(w))&&(k==="*"||(k==null?void 0:k.toLocaleLowerCase())===((b=r.data)===null||b===void 0?void 0:b.type.toLocaleLowerCase()))}else{const w=(f=(x=m==null?void 0:m.filter)===null||x===void 0?void 0:x.event)===null||f===void 0?void 0:f.toLocaleLowerCase();return w==="*"||w===((v=r==null?void 0:r.event)===null||v===void 0?void 0:v.toLocaleLowerCase())}else return m.type.toLocaleLowerCase()===l}).map(m=>{if(typeof g=="object"&&"ids"in g){const j=g.data,{schema:p,table:b,commit_timestamp:x,type:f,errors:v}=j;g=Object.assign(Object.assign({},{schema:p,table:b,commit_timestamp:x,eventType:f,new:{},old:{},errors:v}),this._getPayloadRecords(j))}m.callback(g,s)})}_isClosed(){return this.state===Ue.closed}_isJoined(){return this.state===Ue.joined}_isJoining(){return this.state===Ue.joining}_isLeaving(){return this.state===Ue.leaving}_replyEventName(n){return`chan_reply_${n}`}_on(n,r,s){const i=n.toLocaleLowerCase(),a={type:i,filter:r,callback:s};return this.bindings[i]?this.bindings[i].push(a):this.bindings[i]=[a],this}_off(n,r){const s=n.toLocaleLowerCase();return this.bindings[s]&&(this.bindings[s]=this.bindings[s].filter(i=>{var a;return!(((a=i.type)===null||a===void 0?void 0:a.toLocaleLowerCase())===s&&op.isEqual(i.filter,r))})),this}static isEqual(n,r){if(Object.keys(n).length!==Object.keys(r).length)return!1;for(const s in n)if(n[s]!==r[s])return!1;return!0}_rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this._rejoin()}_onClose(n){this._on(pn.close,{},n)}_onError(n){this._on(pn.error,{},r=>n(r))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(n=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=Ue.joining,this.joinPush.resend(n))}_getPayloadRecords(n){const r={new:{},old:{}};
539return(n.type==="INSERT"||n.type==="UPDATE")&&(r.new=eb(n.columns,n.record)),(n.type==="UPDATE"||n.type==="DELETE")&&(r.old=eb(n.columns,n.old_record)),r}}const Cu=()=>{},Ao={HEARTBEAT_INTERVAL:25e3,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},qM=[1e3,2e3,5e3,1e4],YM=1e4,JM=` 540 addEventListener("message", (e) => { 541 if (e.data.event === "start") { 542 setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); 543 } 544 });`;class QM{constructor(n,r){var s;if(this.accessTokenValue=null,this.apiKey=null,this.channels=new Array,this.endPoint="",this.httpEndpoint="",this.headers={},this.params={},this.timeout=cm,this.transport=null,this.heartbeatIntervalMs=Ao.HEARTBEAT_INTERVAL,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.heartbeatCallback=Cu,this.ref=0,this.reconnectTimer=null,this.vsn=Xx,this.logger=Cu,this.conn=null,this.sendBuffer=[],this.serializer=new LM,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.accessToken=null,this._connectionState="disconnected",this._wasManualDisconnect=!1,this._authPromise=null,this._resolveFetch=i=>i?(...a)=>i(...a):(...a)=>fetch(...a),!(!((s=r==null?void 0:r.params)===null||s===void 0)&&s.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=r.params.apikey,this.endPoint=`${n}/${um.websocket}`,this.httpEndpoint=Kk(n),this._initializeOptions(r),this._setupReconnectionTimer(),this.fetch=this._resolveFetch(r==null?void 0:r.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.conn!==null&&this.isConnected())){if(this._setConnectionState("connecting"),this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this.transport)this.conn=new this.transport(this.endpointURL());else try{this.conn=RM.createWebSocket(this.endpointURL())}catch(n){this._setConnectionState("disconnected");const r=n.message;throw r.includes("Node.js")?new Error(`${r} 545 546To use Realtime in Node.js, you need to provide a WebSocket implementation: 547 548Option 1: Use Node.js 22+ which has native WebSocket support 549Option 2: Install and provide the "ws" package: 550 551 npm install ws 552 553 import ws from "ws" 554 const client = new RealtimeClient(url, { 555 ...options, 556 transport: ws 557 })`):new Error(`WebSocket not available: ${r}`)}this._setupConnectionHandlers()}}endpointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:this.vsn}))}disconnect(n,r){if(!this.isDisconnecting())if(this._setConnectionState("disconnecting",!0),this.conn){const s=setTimeout(()=>{this._setConnectionState("disconnected")},100);this.conn.onclose=()=>{clearTimeout(s),this._setConnectionState("disconnected")},typeof this.conn.close=="function"&&(n?this.conn.close(n,r??""):this.conn.close()),this._teardownConnection()}else this._setConnectionState("disconnected")}getChannels(){return this.channels}async removeChannel(n){const r=await n.unsubscribe();return this.channels.length===0&&this.disconnect(),r}async removeAllChannels(){const n=await Promise.all(this.channels.map(r=>r.unsubscribe()));return this.channels=[],this.disconnect(),n}log(n,r,s){this.logger(n,r,s)}connectionState(){switch(this.conn&&this.conn.readyState){case gs.connecting:return ps.Connecting;case gs.open:return ps.Open;case gs.closing:return ps.Closing;default:return ps.Closed}}isConnected(){return this.connectionState()===ps.Open}isConnecting(){return this._connectionState==="connecting"}isDisconnecting(){return this._connectionState==="disconnecting"}channel(n,r={config:{}}){const s=`realtime:${n}`,i=this.getChannels().find(a=>a.topic===s);if(i)return i;{const a=new op(`realtime:${n}`,r,this);return this.channels.push(a),a}}push(n){const{topic:r,event:s,payload:i,ref:a}=n,l=()=>{this.encode(n,o=>{var d;(d=this.conn)===null||d===void 0||d.send(o)})};this.log("push",`${r} ${s} (${a})`,i),this.isConnected()?l():this.sendBuffer.push(l)}async setAuth(n=null){this._authPromise=this._performAuth(n);try{await this._authPromise}finally{this._authPromise=null}}async sendHeartbeat(){var n;if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(r){this.log("error","error in heartbeat callback",r)}return}if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(r){this.log("error","error in heartbeat callback",r)}this._wasManualDisconnect=!1,(n=this.conn)===null||n===void 0||n.close(KM,"heartbeat timeout"),setTimeout(()=>{var r;this.isConnected()||(r=this.reconnectTimer)===null||r===void 0||r.sc
557heduleTimeout()},Ao.HEARTBEAT_TIMEOUT_FALLBACK);return}this.pendingHeartbeatRef=this._makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(r){this.log("error","error in heartbeat callback",r)}this._setAuthSafely("heartbeat")}onHeartbeat(n){this.heartbeatCallback=n}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(n=>n()),this.sendBuffer=[])}_makeRef(){let n=this.ref+1;return n===this.ref?this.ref=0:this.ref=n,this.ref.toString()}_leaveOpenTopic(n){let r=this.channels.find(s=>s.topic===n&&(s._isJoined()||s._isJoining()));r&&(this.log("transport",`leaving duplicate topic "${n}"`),r.unsubscribe())}_remove(n){this.channels=this.channels.filter(r=>r.topic!==n.topic)}_onConnMessage(n){this.decode(n.data,r=>{if(r.topic==="phoenix"&&r.event==="phx_reply")try{this.heartbeatCallback(r.payload.status==="ok"?"ok":"error")}catch(c){this.log("error","error in heartbeat callback",c)}r.ref&&r.ref===this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null);const{topic:s,event:i,payload:a,ref:l}=r,o=l?`(${l})`:"",d=a.status||"";this.log("receive",`${d} ${s} ${i} ${o}`.trim(),a),this.channels.filter(c=>c._isMember(s)).forEach(c=>c._trigger(i,a,l)),this._triggerStateCallbacks("message",r)})}_clearTimer(n){var r;n==="heartbeat"&&this.heartbeatTimer?(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0):n==="reconnect"&&((r=this.reconnectTimer)===null||r===void 0||r.reset())}_clearAllTimers(){this._clearTimer("heartbeat"),this._clearTimer("reconnect")}_setupConnectionHandlers(){this.conn&&("binaryType"in this.conn&&(this.conn.binaryType="arraybuffer"),this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=n=>this._onConnError(n),this.conn.onmessage=n=>this._onConnMessage(n),this.conn.onclose=n=>this._onConnClose(n))}_teardownConnection(){if(this.conn){if(this.conn.readyState===gs.open||this.conn.readyState===gs.connecting)try{this.conn.close()}catch(n){this.log("error","Error closing connection",n)}this.conn.onopen=null,this.conn.onerror=null,this.conn.onmessage=null,this.conn.onclose=null,this.conn=null}this._clearAllTimers(),this.channels.forEach(n=>n.teardown())}_onConnOpen(){this._setConnectionState("connected"),this.log("transport",`connected to ${this.endpointURL()}`),(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).then(()=>{this.flushSendBuffer()}).catch(r=>{this.log("error","error waiting for auth on connect",r),this.flushSendBuffer()}),this._clearTimer("reconnect"),this.worker?this.workerRef||this._startWorkerHeartbeat():this._startHeartbeat(),this._triggerStateCallbacks("open")}_startHeartbeat(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const n=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(n),this.workerRef.onerror=r=>{this.log("worker","worker error",r.message),this.workerRef.terminate()},this.workerRef.onmessage=r=>{r.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_onConnClose(n){var r;this._setConnectionState("disconnected"),this.log("transport","close",n),this._triggerChanError(),this._clearTimer("heartbeat"),this._wasManualDisconnect||(r=this.reconnectTimer)===null||r===void 0||r.sc
557heduleTimeout(),this._triggerStateCallbacks("close",n)}_onConnError(n){this._setConnectionState("disconnected"),this.log("transport",`${n}`),this._triggerChanError(),this._triggerStateCallbacks("error",n)}_triggerChanError(){this.channels.forEach(n=>n._trigger(pn.error))}_appendParams(n,r){if(Object.keys(r).length===0)return n;const s=n.match(/\?/)?"&":"?",i=new URLSearchParams(r);return`${n}${s}${i}`}_workerObjectUrl(n){let r;if(n)r=n;else{const s=new Blob([JM],{type:"application/javascript"});r=URL.createObjectURL(s)}return r}_setConnectionState(n,r=!1){this._connectionState=n,n==="connecting"?this._wasManualDisconnect=!1:n==="disconnecting"&&(this._wasManualDisconnect=r)}async _performAuth(n=null){let r;n?r=n:this.accessToken?r=await this.accessToken():r=this.accessTokenValue,this.accessTokenValue!=r&&(this.accessTokenValue=r,this.channels.forEach(s=>{const i={access_token:r,version:IM};r&&s.updateJoinPayload(i),s.joinedOnce&&s._isJoined()&&s._push(pn.access_token,{access_token:r})}))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(n="general"){this.setAuth().catch(r=>{this.log("error",`error setting auth in ${n}`,r)})}_triggerStateCallbacks(n,r){try{this.stateChangeCallbacks[n].forEach(s=>{try{s(r)}catch(i){this.log("error",`error in ${n} callback`,i)}})}catch(s){this.log("error",`error triggering ${n} callbacks`,s)}}_setupReconnectionTimer(){this.reconnectTimer=new Ik(async()=>{setTimeout(async()=>{await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()},Ao.RECONNECT_DELAY)},this.reconnectAfterMs)}_initializeOptions(n){var r,s,i,a,l,o,d,c,u,h,g,m;switch(this.transport=(r=n==null?void 0:n.transport)!==null&&r!==void 0?r:null,this.timeout=(s=n==null?void 0:n.timeout)!==null&&s!==void 0?s:cm,this.heartbeatIntervalMs=(i=n==null?void 0:n.heartbeatIntervalMs)!==null&&i!==void 0?i:Ao.HEARTBEAT_INTERVAL,this.worker=(a=n==null?void 0:n.worker)!==null&&a!==void 0?a:!1,this.accessToken=(l=n==null?void 0:n.accessToken)!==null&&l!==void 0?l:null,this.heartbeatCallback=(o=n==null?void 0:n.heartbeatCallback)!==null&&o!==void 0?o:Cu,this.vsn=(d=n==null?void 0:n.vsn)!==null&&d!==void 0?d:Xx,n!=null&&n.params&&(this.params=n.params),n!=null&&n.logger&&(this.logger=n.logger),(n!=null&&n.logLevel||n!=null&&n.log_level)&&(this.logLevel=n.logLevel||n.log_level,this.params=Object.assign(Object.assign({},this.params),{log_level:this.logLevel})),this.reconnectAfterMs=(c=n==null?void 0:n.reconnectAfterMs)!==null&&c!==void 0?c:j=>qM[j-1]||YM,this.vsn){case Gk:this.encode=(u=n==null?void 0:n.encode)!==null&&u!==void 0?u:(j,p)=>p(JSON.stringify(j)),this.decode=(h=n==null?void 0:n.decode)!==null&&h!==void 0?h:(j,p)=>p(JSON.parse(j));break;case BM:this.encode=(g=n==null?void 0:n.encode)!==null&&g!==void 0?g:this.serializer.encode.bind(this.serializer),this.decode=(m=n==null?void 0:n.decode)!==null&&m!==void 0?m:this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${this.vsn}`)}if(this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=n==null?void 0:n.workerUrl}}}class dp extends Error{constructor(n){super(n),this.__isStorageError=!0,this.name="StorageError"}}function Te(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}class XM extends dp{constructor(n,r,s){super(n),this.name="StorageApiError",this.status=r,this.statusCode=s}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}}class mm extends dp{constructor(n,r){super(n),this.name="StorageUnknownError",this.originalError=r}}const cp=t=>t?(...n)=>t(...n):(...n)=>fetch(...n),eO=()=>Response,gm=t=>{if(Array.isArray(t))return t.map(r=>gm(r));if(typeof t=="function"||t!==Object(t))return t;const n={};return Object.entries(t).forEach(([r,s])=>{const i=r.replace(/([-_][a-z])/gi,a=>a.toUpperCase().replace(/[-_]/g,""));n[i]=gm(s)}),n},tO=t=>{if(typeof t!="object"||t===null)return!1;const n=Object.getPrototypeOf(t);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},Pu=t=>{var n;return t.msg||t.message||t.error_description||(typeof t.error=="string"?t.error:(n=t.error)===null||n===void 0?void 0:n.message)||JSON.stringify(t)},nO=(t,n,r)=>F(void 0,void 0,void 0,function*(){const s=yield eO();t instanceof s&&!(r!=null&&r.noResolveJson)?t.json().then(i=>{const a=t.status||500,l=(i==null?void 0:i.statusCode)||a+"";n(new XM(Pu(i),a,l))}).catch(i=>{n(new mm(Pu(i),i))}):n(new mm(Pu(t),t))}),rO=(t,n,r,s)=>{const i={method:t,headers:(n==null?void 0:n.headers)||{}};return t==="GET"||!s?i:(tO(s)?(i.headers=Object.assign({"Content-Type":"application/json"},n==null?void 0:n.headers),i.body=JSON.stringify(s)):i.body=s,n!=null&&n.duplex&&(i.duplex=n.duplex),Object.assign(Object.assign({},i),r))};function Rl(t,n,r,s,i,a){return F(this,void 0,void 0,function*(){return new Promise((l,o)=>{t(r,rO(n,s,i,a)).then(d=>{if(!d.ok)throw d;return s!=null&&s.noResolveJson?d:d.json()}).then(d=>l(d)).catch(d=>nO(d,o,s))})})}function xl(t,n,r,s){return F(this,void 0,void 0,function*(){return Rl(t,"GET",n,r,s
557)})}function un(t,n,r,s,i){return F(this,void 0,void 0,function*(){return Rl(t,"POST",n,s,i,r)})}function pm(t,n,r,s,i){return F(this,void 0,void 0,function*(){return Rl(t,"PUT",n,s,i,r)})}function sO(t,n,r,s){return F(this,void 0,void 0,function*(){return Rl(t,"HEAD",n,Object.assign(Object.assign({},r),{noResolveJson:!0}),s)})}function up(t,n,r,s,i){return F(this,void 0,void 0,function*(){return Rl(t,"DELETE",n,s,i,r)})}class iO{constructor(n,r){this.downloadFn=n,this.shouldThrowOnError=r}then(n,r){return this.execute().then(n,r)}execute(){return F(this,void 0,void 0,function*(){try{return{data:(yield this.downloadFn()).body,error:null}}catch(n){if(this.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}})}}var Fk;class aO{constructor(n,r){this.downloadFn=n,this.shouldThrowOnError=r,this[Fk]="BlobDownloadBuilder",this.promise=null}asStream(){return new iO(this.downloadFn,this.shouldThrowOnError)}then(n,r){return this.getPromise().then(n,r)}catch(n){return this.getPromise().catch(n)}finally(n){return this.getPromise().finally(n)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}execute(){return F(this,void 0,void 0,function*(){try{return{data:yield(yield this.downloadFn()).blob(),error:null}}catch(n){if(this.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}})}}Fk=Symbol.toStringTag;const lO={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},rb={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};class oO{constructor(n,r={},s,i){this.shouldThrowOnError=!1,this.url=n,this.headers=r,this.bucketId=s,this.fetch=cp(i)}throwOnError(){return this.shouldThrowOnError=!0,this}uploadOrUpdate(n,r,s,i){return F(this,void 0,void 0,function*(){try{let a;const l=Object.assign(Object.assign({},rb),i);let o=Object.assign(Object.assign({},this.headers),n==="POST"&&{"x-upsert":String(l.upsert)});const d=l.metadata;typeof Blob<"u"&&s instanceof Blob?(a=new FormData,a.append("cacheControl",l.cacheControl),d&&a.append("metadata",this.encodeMetadata(d)),a.append("",s)):typeof FormData<"u"&&s instanceof FormData?(a=s,a.has("cacheControl")||a.append("cacheControl",l.cacheControl),d&&!a.has("metadata")&&a.append("metadata",this.encodeMetadata(d))):(a=s,o["cache-control"]=`max-age=${l.cacheControl}`,o["content-type"]=l.contentType,d&&(o["x-metadata"]=this.toBase64(this.encodeMetadata(d))),(typeof ReadableStream<"u"&&a instanceof ReadableStream||a&&typeof a=="object"&&"pipe"in a&&typeof a.pipe=="function")&&!l.duplex&&(l.duplex="half")),i!=null&&i.headers&&(o=Object.assign(Object.assign({},o),i.headers));const c=this._removeEmptyFolders(r),u=this._getFinalPath(c),h=yield(n=="PUT"?pm:un)(this.fetch,`${this.url}/object/${u}`,a,Object.assign({headers:o},l!=null&&l.duplex?{duplex:l.duplex}:{}));return{data:{path:c,id:h.Id,fullPath:h.Key},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}})}upload(n,r,s){return F(this,void 0,void 0,function*(){return this.uploadOrUpdate("POST",n,r,s)})}uploadToSignedUrl(n,r,s,i){return F(this,void 0,void 0,function*(){const a=this._removeEmptyFolders(n),l=this._getFinalPath(a),o=new URL(this.url+`/object/upload/sign/${l}`);o.searchParams.set("token",r);try{let d;const c=Object.assign({upsert:rb.upsert},i),u=Object.assign(Object.assign({},this.headers),{"x-upsert":String(c.upsert)});typeof Blob<"u"&&s instanceof Blob?(d=new FormData,d.append("cacheControl",c.cacheControl),d.append("",s)):typeof FormData<"u"&&s instanceof FormData?(d=s,d.append("cacheControl",c.cacheControl)):(d=s,u["cache-control"]=`max-age=${c.cacheControl}`,u["content-type"]=c.contentType);const h=yield pm(this.fetch,o.toString(),d,{headers:u});return{data:{path:a,fullPath:h.Key},error:null}}catch(d){if(this.shouldThrowOnError)throw d;if(Te(d))return{data:null,error:d};throw d}})}createSignedUploadUrl(n,r){return F(this,void 0,void 0,function*(){try{let s=this._getFinalPath(n);const i=Object.assign({},this.headers);r!=null&&r.upsert&&(i["x-upsert"]="true");const a=yield un(this.fetch,`${this.url}/object/upload/sign/${s}`,{},{headers:i}),l=new URL(this.url+a.url),o=l.searchParams.get("token");if(!o)throw new dp("No token returned by API");return{data:{signedUrl:l.toString(),path:n,token:o},error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Te(s))return{data:null,error:s};throw s}})}update(n,r,s){return F(this,void 0,void 0,function*(){return this.uploadOrUpdate("PUT",n,r,s
557)})}move(n,r,s){return F(this,void 0,void 0,function*(){try{return{data:yield un(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:n,destinationKey:r,destinationBucket:s==null?void 0:s.destinationBucket},{headers:this.headers}),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}copy(n,r,s){return F(this,void 0,void 0,function*(){try{return{data:{path:(yield un(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:n,destinationKey:r,destinationBucket:s==null?void 0:s.destinationBucket},{headers:this.headers})).Key},error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}createSignedUrl(n,r,s){return F(this,void 0,void 0,function*(){try{let i=this._getFinalPath(n),a=yield un(this.fetch,`${this.url}/object/sign/${i}`,Object.assign({expiresIn:r},s!=null&&s.transform?{transform:s.transform}:{}),{headers:this.headers});const l=s!=null&&s.download?`&download=${s.download===!0?"":s.download}`:"";return a={signedUrl:encodeURI(`${this.url}${a.signedURL}${l}`)},{data:a,error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}createSignedUrls(n,r,s){return F(this,void 0,void 0,function*(){try{const i=yield un(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:r,paths:n},{headers:this.headers}),a=s!=null&&s.download?`&download=${s.download===!0?"":s.download}`:"";return{data:i.map(l=>Object.assign(Object.assign({},l),{signedUrl:l.signedURL?encodeURI(`${this.url}${l.signedURL}${a}`):null})),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}download(n,r){const i=typeof(r==null?void 0:r.transform)<"u"?"render/image/authenticated":"object",a=this.transformOptsToQueryString((r==null?void 0:r.transform)||{}),l=a?`?${a}`:"",o=this._getFinalPath(n),d=()=>xl(this.fetch,`${this.url}/${i}/${o}${l}`,{headers:this.headers,noResolveJson:!0});return new aO(d,this.shouldThrowOnError)}info(n){return F(this,void 0,void 0,function*(){const r=this._getFinalPath(n);try{const s=yield xl(this.fetch,`${this.url}/object/info/${r}`,{headers:this.headers});return{data:gm(s),error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Te(s))return{data:null,error:s};throw s}})}exists(n){return F(this,void 0,void 0,function*(){const r=this._getFinalPath(n);try{return yield sO(this.fetch,`${this.url}/object/${r}`,{headers:this.headers}),{data:!0,error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Te(s)&&s instanceof mm){const i=s.originalError;if([400,404].includes(i==null?void 0:i.status))return{data:!1,error:s}}throw s}})}getPublicUrl(n,r){const s=this._getFinalPath(n),i=[],a=r!=null&&r.download?`download=${r.download===!0?"":r.download}`:"";a!==""&&i.push(a);const o=typeof(r==null?void 0:r.transform)<"u"?"render/image":"object",d=this.transformOptsToQueryString((r==null?void 0:r.transform)||{});d!==""&&i.push(d);let c=i.join("&");return c!==""&&(c=`?${c}`),{data:{publicUrl:encodeURI(`${this.url}/${o}/public/${s}${c}`)}}}remove(n){return F(this,void 0,void 0,function*(){try{return{data:yield up(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:n},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}list(n,r,s){return F(this,void 0,void 0,function*(){try{const i=Object.assign(Object.assign(Object.assign({},lO),r),{prefix:n||""});return{data:yield un(this.fetch,`${this.url}/object/list/${this.bucketId}`,i,{headers:this.headers},s),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}listV2(n,r){return F(this,void 0,void 0,function*(){try{const s=Object.assign({},n);return{data:yield un(this.fetch,`${this.url}/object/list-v2/${this.bucketId}`,s,{headers:this.headers},r),error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Te(s))return{data:null,error:s};throw s}})}encodeMetadata(n){return JSON.stringify(n)}toBase64(n){return typeof Buffer<"u"?Buffer.from(n).toString("base64"):btoa(n)}_getFinalPath(n){return`${this.bucketId}/${n.replace(/^\/+/,"")}`}_removeEmptyFolders(n){return n.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(n){const r=[];return n.width&&r.push(`width=${n.width}`),n.height&&r.push(`height=${n.height}`),n.resize&&r.push(`resize=${n.resize}`),n.format&&r.push(`format=${n.format}`),n.quality&&r.push(`quality=${n.quality}`),r.join("&")}}const Lk="2.84.0",Wk={"X-Client-Info":`storage-js/${Lk}`};class dO{constructor(n,r={},s,i){this.shouldThrowOnError=!1;const a=new URL(n);i!=null&&i.useNewHostname&&/supabase\.(co|in|red)$/.test(a.hostname)&&!a.hostname.includes("storage.supabase.")&&(a.hostname=a.hostname.replace("supabase.","storage.supabase.")),this.url=a.href.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Wk),r),this.fetch=cp(s)}throwOnError(){return this.shouldThrowOnError=!0,this}listBuckets(n){return F(this,void 0,void 0,function*(){try{const r=this.listBucketOptionsToQueryString(n);return{data:yield xl(this.fetch,`${this.url}/bucket${r}`,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}getBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield xl(this.fetch,`${this.url}/bucket/${n}`,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}createBucket(n){return F(this,arguments,void 0,function*(r,s={public:!1}){try{return{data:yield un(this.fetch,`${this.url}/bucket`,{id:r,name:r,type:s.type,public:s.public,file_size_limit:s.fileSizeLimit,allowed_mime_types:s.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(Te(i))return{data:null,error:i};throw i}})}updateBucket(n,r){return F(this,void 0,void 0,function*(){try{return{data:yield pm(this.fetch,`${this.url}/bucket/${n}`,{id:n,name:n,public:r.public,file_size_limit:r.fileSizeLimit,allowed_mime_types:r.allowedMimeTypes},{headers:this.headers}),error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Te(s))return{data:null,error:s};throw s}})}emptyBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield un(this.fetch,`${this.url}/bucket/${n}/empty`,{},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}deleteBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield up(this.fetch,`${this.url}/bucket/${n}`,{},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}listBucketOptionsToQueryString(n){const r={};return n&&("limit"in n&&(r.limit=String(n.limit)),"offset"in n&&(r.offset=String(n.offset)),n.search&&(r.search=n.search),n.sortColumn&&(r.sortColumn=n.sortColumn),n.sortOrder&&(r.sortOrder=n.sortOrder)),Object.keys(r).length>0?"?"+new URLSearchParams(r).toString():""}}class cO{constructor(n,r={},s){this.shouldThrowOnError=!1,this.url=n.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Wk),r),this.fetch=cp(s)}throwOnError(){return this.shouldThrowOnError=!0,this}createBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield un(this.fetch,`${this.url}/bucket`,{name:n},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}listBuckets(n){return F(this,void 0,void 0,function*(){try{const r=new
557URLSearchParams;(n==null?void 0:n.limit)!==void 0&&r.set("limit",n.limit.toString()),(n==null?void 0:n.offset)!==void 0&&r.set("offset",n.offset.toString()),n!=null&&n.sortColumn&&r.set("sortColumn",n.sortColumn),n!=null&&n.sortOrder&&r.set("sortOrder",n.sortOrder),n!=null&&n.search&&r.set("search",n.search);const s=r.toString(),i=s?`${this.url}/bucket?${s}`:`${this.url}/bucket`;return{data:yield xl(this.fetch,i,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}deleteBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield up(this.fetch,`${this.url}/bucket/${n}`,{},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}})}}const hp={"X-Client-Info":`storage-js/${Lk}`,"Content-Type":"application/json"};class Vk extends Error{constructor(n){super(n),this.__isStorageVectorsError=!0,this.name="StorageVectorsError"}}function Dt(t){return typeof t=="object"&&t!==null&&"__isStorageVectorsError"in t}class Eu extends Vk{constructor(n,r,s){super(n),this.name="StorageVectorsApiError",this.status=r,this.statusCode=s}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}}class uO extends Vk{constructor(n,r){super(n),this.name="StorageVectorsUnknownError",this.originalError=r}}var sb;(function(t){t.InternalError="InternalError",t.S3VectorConflictException="S3VectorConflictException",t.S3VectorNotFoundException="S3VectorNotFoundException",t.S3VectorBucketNotEmpty="S3VectorBucketNotEmpty",t.S3VectorMaxBucketsExceeded="S3VectorMaxBucketsExceeded",t.S3VectorMaxIndexesExceeded="S3VectorMaxIndexesExceeded"})(sb||(sb={}));const mp=t=>t?(...n)=>t(...n):(...n)=>fetch(...n),hO=t=>{if(typeof t!="object"||t===null)return!1;const n=Object.getPrototypeOf(t);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},ib=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),mO=(t,n,r)=>F(void 0,void 0,void 0,function*(){if(t&&typeof t=="object"&&"status"in t&&"ok"in t&&typeof t.status=="number"&&!(r!=null&&r.noResolveJson)){const i=t.status||500,a=t;if(typeof a.json=="function")a.json().then(l=>{const o=(l==null?void 0:l.statusCode)||(l==null?void 0:l.code)||i+"";n(new Eu(ib(l),i,o))}).catch(()=>{const l=i+"",o=a.statusText||`HTTP ${i} error`;n(new Eu(o,i,l))});else{const l=i+"",o=a.statusText||`HTTP ${i} error`;n(new Eu(o,i,l))}}else n(new uO(ib(t),t))}),gO=(t,n,r,s)=>{const i={method:t,headers:(n==null?void 0:n.headers)||{}};return s?(hO(s)?(i.headers=Object.assign({"Content-Type":"application/json"},n==null?void 0:n.headers),i.body=JSON.stringify(s)):i.body=s,Object.assign(Object.assign({},i),r)):i};function pO(t,n,r,s,i,a){return F(this,void 0,void 0,function*(){return new Promise((l,o)=>{t(r,gO(n,s,i,a)).then(d=>{if(!d.ok)throw d;if(s!=null&&s.noResolveJson)return d;const c=d.headers.get("content-type");return!c||!c.includes("application/json")?{}:d.json()}).then(d=>l(d)).catch(d=>mO(d,o,s))})})}function _t(t,n,r,s,i){return F(this,void 0,void 0,function*(){return pO(t,"POST",n,s,i,r)})}class fO{constructor(n,r={},s){this.shouldThrowOnError=!1,this.url=n.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},hp),r),this.fetch=mp(s)}throwOnError(){return this.shouldThrowOnError=!0,this}createIndex(n){return F(this,void 0,void 0,function*(){try{return{data:(yield _t(this.fetch,`${this.url}/CreateIndex`,n,{headers:this.headers}))||{},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}getIndex(n,r){return F(this,void 0,void 0,function*(){try{return{data:yield _t(this.fetch,`${this.url}/GetIndex`,{vectorBucketName:n,indexName:r},{headers:this.headers}),error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Dt(s))return{data:null,error:s};throw s}})}listIndexes(n){return F(this,void 0,void 0,function*(){try{return{data:yield _t(this.fetch,`${this.url}/ListIndexes`,n,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}deleteIndex(n,r){return F(this,void 0,void 0,function*(){try{return{data:(yield _t(this.fetch,`${this.url}/DeleteIndex`,{vectorBucketName:n,indexName:r},{headers:this.headers}))||{},error:null}}catch(s){if(this.shouldThrowOnError)throw s;if(Dt(s))return{data:null,error:s};throw s}})}}class xO{constructor(n,r={},s){this.shouldThrowOnError=!1,this.url=n.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},hp),r),this.fetch=mp(s)}throwOnError(){return this.shouldThrowOnError=!0,this}putVectors(n){return F(this,void 0,void 0,function*(){try{if(n.vectors.length<1||n.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return{data:(yield _t(this.fetch,`${this.url}/PutVectors`,n,{headers:this.headers}))||{},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}getVectors(n){return F(this,void 0,void 0,function*(){try{return{data:yield _t(this.fetch,`${this.url}/GetVectors`,n,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}listVectors(n){return F(this,void 0,void 0,function*(){try{if(n.segmentCount!==void 0){if(n.segmentCount<1||n.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");
557if(n.segmentIndex!==void 0&&(n.segmentIndex<0||n.segmentIndex>=n.segmentCount))throw new Error(`segmentIndex must be between 0 and ${n.segmentCount-1}`)}return{data:yield _t(this.fetch,`${this.url}/ListVectors`,n,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}queryVectors(n){return F(this,void 0,void 0,function*(){try{return{data:yield _t(this.fetch,`${this.url}/QueryVectors`,n,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}deleteVectors(n){return F(this,void 0,void 0,function*(){try{if(n.keys.length<1||n.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return{data:(yield _t(this.fetch,`${this.url}/DeleteVectors`,n,{headers:this.headers}))||{},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}}class bO{constructor(n,r={},s){this.shouldThrowOnError=!1,this.url=n.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},hp),r),this.fetch=mp(s)}throwOnError(){return this.shouldThrowOnError=!0,this}createBucket(n){return F(this,void 0,void 0,function*(){try{return{data:(yield _t(this.fetch,`${this.url}/CreateVectorBucket`,{vectorBucketName:n},{headers:this.headers}))||{},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}getBucket(n){return F(this,void 0,void 0,function*(){try{return{data:yield _t(this.fetch,`${this.url}/GetVectorBucket`,{vectorBucketName:n},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}listBuckets(){return F(this,arguments,void 0,function*(n={}){try{return{data:yield _t(this.fetch,`${this.url}/ListVectorBuckets`,n,{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}deleteBucket(n){return F(this,void 0,void 0,function*(){try{return{data:(yield _t(this.fetch,`${this.url}/DeleteVectorBucket`,{vectorBucketName:n},{headers:this.headers}))||{},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(Dt(r))return{data:null,error:r};throw r}})}}class jO extends bO{constructor(n,r={}){super(n,r.headers||{},r.fetch)}from(n){return new vO(this.url,this.headers,n,this.fetch)}}class vO extends fO{constructor(n,r,s,i){super(n,r,i),this.vectorBucketName=s}createIndex(n){const r=Object.create(null,{createIndex:{get:()=>super.createIndex}});return F(this,void 0,void 0,function*(){return r.createIndex.call(this,Object.assign(Object.assign({},n),{vectorBucketName:this.vectorBucketName}))})}listIndexes(){const n=Object.create(null,{listIndexes:{get:()=>super.listIndexes}});return F(this,arguments,void 0,function*(r={}){return n.listIndexes.call(this,Object.assign(Object.assign({},r),{vectorBucketName:this.vectorBucketName}))})}getIndex(n){const r=Object.create(null,{getIndex:{get:()=>super.getIndex}});return F(this,void 0,void 0,function*(){return r.getIndex.call(this,this.vectorBucketName,n)})}deleteIndex(n){const r=Object.create(null,{deleteIndex:{get:()=>super.deleteIndex}});return F(this,void 0,void 0,function*(){return r.deleteIndex.call(this,this.vectorBucketName,n)})}index(n){return new yO(this.url,this.headers,this.vectorBucketName,n,this.fetch)}}class yO extends xO{constructor(n,r,s,i,a){super(n,r,a),this.vectorBucketName=s,this.indexName=i}putVectors(n){const r=Object.create(null,{putVectors:{get:()=>super.putVectors}});return F(this,void 0,void 0,function*(){return r.putVectors.call(this,Object.assign(Object.assign({},n),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}getVectors(n){const r=Object.create(null,{getVectors:{get:()=>super.getVectors}});return F(this,void 0,void 0,function*(){return r.getVectors.call(this,Object.assign(Object.assign({},n),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}listVectors(){const n=Object.create(null,{listVectors:{get:()=>super.listVectors}});return F(this,arguments,void 0,function*(r={}){return n.listVectors.call(this,Object.assign(Object.assign({},r),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}queryVectors(n){const r=Object.create(null,{queryVectors:{get:()=>super.queryVectors}});return F(this,void 0,void 0,function*(){return r.queryVectors.call(this,Object.assign(Object.assign({},n),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}deleteVectors(n){const r=Object.create(null,{deleteVectors:{get:()=>super.deleteVectors}});return F(this,void 0,void 0,function*(){return r.deleteVectors.call(this,Object.assign(Object.assign({},n),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}}class wO extends dO{constructor(n,r={},s,i){super(n,r,s,i)}from(n){return new oO(this.url,this.headers,n,this.fetch)}get vectors(){return new jO(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new cO(this.url+"/iceberg",this.headers,this.fetch)}}const kO="2.84.0";let Ea="";typeof Deno<"u"?Ea="deno":typeof document<"u"?Ea="web":typeof navigator<"u"&&navigator.product==="ReactNative"?Ea="react-native":Ea="node";const NO={"X-Client-Info":`supabase-js-${Ea}/${kO}`},SO={headers:NO},AO={schema:"public"},CO={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},PO={},EO=t=>t?(...n)=>t(...n):(...n)=>fetch(...n),TO=()=>Headers,zO=(t,n,r)=>{const s=EO(r),i=TO();return async(a,l)=>{var o;const d=(o=await n())!==null&&o!==void 0?o:t;
557let c=new i(l==null?void 0:l.headers);return c.has("apikey")||c.set("apikey",t),c.has("Authorization")||c.set("Authorization",`Bearer ${d}`),s(a,Object.assign(Object.assign({},l),{headers:c}))}};function DO(t){return t.endsWith("/")?t:t+"/"}function _O(t,n){var r,s;const{db:i,auth:a,realtime:l,global:o}=t,{db:d,auth:c,realtime:u,global:h}=n,g={db:Object.assign(Object.assign({},d),i),auth:Object.assign(Object.assign({},c),a),realtime:Object.assign(Object.assign({},u),l),storage:{},global:Object.assign(Object.assign(Object.assign({},h),o),{headers:Object.assign(Object.assign({},(r=h==null?void 0:h.headers)!==null&&r!==void 0?r:{}),(s=o==null?void 0:o.headers)!==null&&s!==void 0?s:{})}),accessToken:async()=>""};return t.accessToken?g.accessToken=t.accessToken:delete g.accessToken,g}function MO(t){const n=t==null?void 0:t.trim();if(!n)throw new Error("supabaseUrl is required.");if(!n.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(DO(n))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}const Uk="2.84.0",ii=30*1e3,fm=3,Tu=fm*ii,OO="http://localhost:9999",RO="supabase.auth.token",GO={"X-Client-Info":`gotrue-js/${Uk}`},xm="X-Supabase-Api-Version",$k={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},IO=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,BO=10*60*1e3;class bl extends Error{constructor(n,r,s){super(n),this.__isAuthError=!0,this.name="AuthError",this.status=r,this.code=s}}function W(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class KO extends bl{constructor(n,r,s){super(n,r,s),this.name="AuthApiError",this.status=r,this.code=s}}function FO(t){return W(t)&&t.name==="AuthApiError"}class fs extends bl{constructor(n,r){super(n),this.name="AuthUnknownError",this.originalError=r}}class is extends bl{constructor(n,r,s,i){super(n,s,i),this.name=r,this.status=s}}class Et extends is{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function LO(t){return W(t)&&t.name==="AuthSessionMissingError"}class Xs extends is{constructor(){super("Auth session or user missing","AuthInvalidToken
557ResponseError",500,void 0)}}class Co extends is{constructor(n){super(n,"AuthInvalidCredentialsError",400,void 0)}}class Po extends is{constructor(n,r=null){super(n,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=r}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}function WO(t){return W(t)&&t.name==="AuthImplicitGrantRedirectError"}class ab extends is{constructor(n,r=null){super(n,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=r}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class bm extends is{constructor(n,r){super(n,"AuthRetryableFetchError",r,void 0)}}function zu(t){return W(t)&&t.name==="AuthRetryableFetchError"}class lb extends is{constructor(n,r,s){super(n,"AuthWeakPasswordError",r,"weak_password"),this.reasons=s}}class jm extends is{constructor(n){super(n,"AuthInvalidJwtError",400,"invalid_jwt")}}const _d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),ob=` 558\r=`.split(""),VO=(()=>{const t=new Array(128);for(let n=0;n<t.length;n+=1)t[n]=-1;for(let n=0;n<ob.length;n+=1)t[ob[n].charCodeAt(0)]=-2;for(let n=0;n<_d.length;n+=1)t[_d[n].charCodeAt(0)]=n;return t})();function db(t,n,r){if(t!==null)for(n.queue=n.queue<<8|t,n.queuedBits+=8;n.queuedBits>=6;){const s=n.queue>>n.queuedBits-6&63;r(_d[s]),n.queuedBits-=6}else if(n.queuedBits>0)for(n.queue=n.queue<<6-n.queuedBits,n.queuedBits=6;n.queuedBits>=6;){const s=n.queue>>n.queuedBits-6&63;r(_d[s]),n.queuedBits-=6}}function Hk(t,n,r){const s=VO[t];if(s>-1)for(n.queue=n.queue<<6|s,n.queuedBits+=6;n.queuedBits>=8;)r(n.queue>>n.queuedBits-8&255),n.queuedBits-=8;else{if(s===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(t)}"`)}}function cb(t){const n=[],r=l=>{n.push(String.fromCodePoint(l))},s={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},a=l=>{HO(l,s,r)};for(let l=0;l<t.length;l+=1)Hk(t.charCodeAt(l),i,a);return n.join("")}function UO(t,n){if(t<=127){n(t);return}else if(t<=2047){n(192|t>>6),n(128|t&63);return}else if(t<=65535){n(224|t>>12),n(128|t>>6&63),n(128|t&63);return}else if(t<=1114111){n(240|t>>18),n(128|t>>12&63),n(128|t>>6&63),n(128|t&63);return}throw new Error(`Unrecognized Unicode codepoint: ${t.toString(16)}`)}function $O(t,n){for(let r=0;r<t.length;r+=1){let s=t.charCodeAt(r);if(s>55295&&s<=56319){const i=(s-55296)*1024&65535;s=(t.charCodeAt(r+1)-56320&65535|i)+65536,r+=1}UO(s,n)}}function HO(t,n,r){if(n.utf8seq===0){if(t<=127){r(t);return}for(let s=1;s<6;s+=1)if(!(t>>7-s&1)){n.utf8seq=s;break}if(n.utf8seq===2)n.codepoint=t&31;else if(n.utf8seq===3)n.codepoint=t&15;else if(n.utf8seq===4)n.codepoint=t&7;else throw new Error("Invalid UTF-8 sequence");n.utf8seq-=1}else if(n.utf8seq>0){if(t<=127)throw new Error("Invalid UTF-8 sequence");n.codepoint=n.codepoint<<6|t&63,n.utf8seq-=1,n.utf8seq===0&&r(n.codepoint)}}function Ti(t){const n=[],r={queue:0,queuedBits:0},s=i=>{n.push(i)};for(let i=0;i<t.length;i+=1)Hk(t.charCodeAt(i),r,s);return new Uint8Array(n)}function ZO(t){const n=[];return $O(t,r=>n.push(r)),new Uint8Array(n)}function vs(t){const n=[],r={queue:0,queuedBits:0},s=i=>{n.push(i)};return t.forEach(i=>db(i,r,s)),db(null,r,s),n.join("")}function qO(t){return Math.round(Date.now()/1e3)+t}function YO(){return Symbol("auth-callback")}const Je=()=>typeof window<"u"&&typeof document<"u",ls={tested:!1,writable:!1},Zk=()=>{if(!Je())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(ls.tested)return ls.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),ls.tested=!0,ls.writable=!0}catch{ls.tested=!0,ls.writable=!1}return ls.writable};function JO(t){const n={},r=new URL(t);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((i,a)=>{n[a]=i})}catch{}return r.searchParams.forEach((s,i)=>{n[i]=s}),n}const qk=t=>t?(...n)=>t(...n):(...n)=>fetch(...n),QO=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",ai=async(t,n,r)=>{await t.setItem(n,JSON.stringify(r))},os=async(t,n)=>{const r=await t.getItem(n);if(!r)return null;try{return JSON.parse(r)}catch{return r}},yr=async(t,n)=>{await t.removeItem(n)};class Cc{constructor(){this.promise=new Cc.promiseConstructor((n,r)=>{this.resolve=n,this.reject=r})}}Cc.promiseConstructor=Promise;function Du(t){const n=t.split(".");if(n.length!==3)throw new jm("Invalid JWT structure");for(let s=0;s<n.length;s++)if(!IO.test(n[s]))throw new jm("JWT not in base64url format");return{header:JSON.parse(cb(n[0])),payload:JSON.parse(cb(n[1])),signature:Ti(n[2]),raw:{header:n[0],payload:n[1]}}}async function XO(t){return await new Promise(n=>{setTimeout(()=>n(null),t)})}function e4(t,n){return new Promise((s,i)=>{(async()=>{for(let a=0;a<1/0;a++)try{const l=await t(a);if(!n(a,null,l)){s(l);return}}catch(l){if(!n(a,l)){i(l);return}}})()})}function t4(t){return("0"+t.toString(16)).substr(-2)}function n4(){const n=new Uint32Array(56);if(typeof crypto>"u"){const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",s=r.length;let i="";for(let a=0;a<56;a++)i+=r.charAt(Math.floor(Math.random()*s));return i}return crypto.getRandomValues(n),Array.from(n,t4).join("")}async function r4(t){const r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r),i=new Uint8Array(s);return Array.from(i).map(a=>String.fromCharCode(a)).join("")}async function s4(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code
558challenge method will default to use plain instead of sha256."),t;const r=await r4(t);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function ei(t,n,r=!1){const s=n4();let i=s;r&&(i+="/PASSWORD_RECOVERY"),await ai(t,`${n}-code-verifier`,i);const a=await s4(s);return[a,s===a?"plain":"s256"]}const i4=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function a4(t){const n=t.headers.get(xm);if(!n||!n.match(i4))return null;try{return new Date(`${n}T00:00:00.0Z`)}catch{return null}}function l4(t){if(!t)throw new Error("Missing exp claim");const n=Math.floor(Date.now()/1e3);if(t<=n)throw new Error("JWT has expired")}function o4(t){switch(t){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const d4=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function ti(t){if(!d4.test(t))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function _u(){const t={};return new Proxy(t,{get:(n,r)=>{if(r==="__isUserNotAvailableProxy")return!0;if(typeof r=="symbol"){const s=r.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${r}" property of the session object is not supported. Please use getUser() instead.`)},set:(n,r)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(n,r)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function c4(t,n){return new Proxy(t,{get:(r,s,i)=>{if(s==="__isInsecureUserWarningProxy")return!0;if(typeof s=="symbol"){const a=s.toString();if(a==="Symbol(Symbol.toPrimitive)"||a==="Symbol(Symbol.toStringTag)"||a==="Symbol(util.inspect.custom)"||a==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,s,i)}return!n.value&&typeof s=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),n.value=!0),Reflect.get(r,s,i)}})}function ub(t){return JSON.parse(JSON.stringify(t))}const ms=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),u4=[502,503,504];async function hb(t){var n;if(!QO(t))throw new bm(ms(t),0);if(u4.includes(t.status))throw new bm(ms(t),t.status);let r;try{r=await t.json()}catch(a){throw new fs(ms(a),a)}let s;const i=a4(t);if(i&&i.getTime()>=$k["2024-01-01"].timestamp&&typeof r=="object"&&r&&typeof r.code=="string"?s=r.code:typeof r=="object"&&r&&typeof r.error_code=="string"&&(s=r.error_code),s){if(s==="weak_password")throw new lb(ms(r),t.status,((n=r.weak_password)===null||n===void 0?void 0:n.reasons)||[]);if(s==="session_not_found")throw new Et}else if(typeof r=="object"&&r&&typeof r.weak_password=="object"&&r.weak_password&&Array.isArray(r.weak_password.reasons)&&r.weak_password.reasons.length&&r.weak_password.reasons.reduce((a,l)=>a&&typeof l=="string",!0))throw new lb(ms(r),t.status,r.weak_password.reasons);throw new KO(ms(r),t.status||500,s)}const h4=(t,n,r,s)=>{const i={method:t,headers:(n==null?void 0:n.headers)||{}};return t==="GET"?i:(i.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},n==null?void 0:n.headers),i.body=JSON.stringify(s),Object.assign(Object.assign({},i),r))};async function Z(t,n,r,s){var i;const a=Object.assign({},s==null?void 0:s.headers);a[xm]||(a[xm]=$k["2024-01-01"].name),s!=null&&s.jwt&&(a.Authorization=`Bearer ${s.jwt}`);const l=(i=s==null?void 0:s.query)!==null&&i!==void 0?i:{};s!=null&&s.redirectTo&&(l.redirect_to=s.redirectTo);const o=Object.keys(l).length?"?"+new URLSearchParams(l).toString():"",d=await m4(t,n,r+o,{headers:a,noResolveJson:s==null?void 0:s.noResolveJson},{},s==null?void 0:s.body);return s!=null&&s.xform?s==null?void 0:s.xform(d):{data:Object.assign({},d),error:null}}async function m4(t,n,r,s,i,a){const l=h4(n,s,i,a);let o;try{o=await t(r,Object.assign({},l))}catch(d){throw console.error(d),new bm(ms(d),0)}if(o.ok||await hb(o),s!=null&&s.noResolveJson)return o;try{return await o.json()}catch(d){await hb(d)}}function on(t){var n;let r=null;f4(t)&&(r=Object.assign({},t),t.expires_at||(r.expires_at=qO(t.expires_in)));const s=(n=t.user)!==null&&n!==void 0?n:t;return{data:{session:r,user:s},error:null}}function mb(t){const n=on(t);return!n.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((r,s)=>r&&typeof s=="string",!0)&&(n.data.weak_password=t.weak_password),n}function Er(t){var n;return{data:{user:(n=t.user)!==null&&n!==void 0?n:t},error:null}}function g4(t){return{data:t,error:null}}function p4(t){const{action_link:n,email_otp:r,hashed_token:s,redirect_to:i,verification_type:a}=t,l=ns(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),o={action_link:n,email_otp:r,hashed_token:s,redirect_to:i,verification_type:a},d=Object.assign({},l);return{data:{properties:o,user:d},error:null}}function gb(t){return t}function f4(t){return t.access_token&&t.refresh_token&&t.expires_in}const Mu=["global","local","others"];class x4{constructor({url:n="",headers:r={},fetch:s}){this.url=n,this.headers=r,this.fetch=qk(s),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)}}async signOut(n,r=Mu[0]){if(Mu.indexOf(r)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${Mu.join(", ")}`);try{return await Z(this.fetch,"POST",`${this.url}/logout?scope=${r}`,{headers:this.headers,jwt:n,noResolveJson:!0}),{data:null,error:null}}catch(s){if(W(s))return{data:null,error:s};throw s}}async inviteUserByEmail(n,r={}){try{return await Z(this.fetch,"POST",`${this.url}/invite`,{body:{email:n,data:r.data},headers:this.headers,redirectTo:r.redirectTo,xform:Er})}catch(s){if(W(s))return{data:{user:null},error:s};throw s}}async generateLink(n){try{const{options:r}=n,s=ns(n,["options"]),i=Object.assign(Object.assign({},s),r);return"newEmail"in s&&(i.new_email=s==null?void 0:s.newEmail,delete i.newEmail),await Z(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:i,headers:this.headers,xform:p4,redirectTo:r==null?void 0:r.redirectTo})}catch(r){if(W(r))return{data:{properties:null,user:null},error:r};throw r}}async createUser(n){try{return await Z(this.fetch,"POST",`${this.url}/admin/users`,{body:n,headers:this.headers,xform:Er})}catch(r){if(W(r))return{data:{user:null},error:r};throw r}}async listUsers(n){var r,s,i,a,l,o,d;try{const c={nextPage:null,lastPage:0,total:0},u=await Z(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(s=(r=n==null?void 0:n.page)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:"",per_page:(a=(i=n==null?void 0:n.perPage)===null||i===void 0?void 0:i.toString())!==null&&a!==void 0?a:""},xform:gb});if(u.error)throw u.error;
558const h=await u.json(),g=(l=u.headers.get("x-total-count"))!==null&&l!==void 0?l:0,m=(d=(o=u.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&d!==void 0?d:[];return m.length>0&&(m.forEach(j=>{const p=parseInt(j.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(j.split(";")[1].split("=")[1]);c[`${b}Page`]=p}),c.total=parseInt(g)),{data:Object.assign(Object.assign({},h),c),error:null}}catch(c){if(W(c))return{data:{users:[]},error:c};throw c}}async getUserById(n){ti(n);try{return await Z(this.fetch,"GET",`${this.url}/admin/users/${n}`,{headers:this.headers,xform:Er})}catch(r){if(W(r))return{data:{user:null},error:r};throw r}}async updateUserById(n,r){ti(n);try{return await Z(this.fetch,"PUT",`${this.url}/admin/users/${n}`,{body:r,headers:this.headers,xform:Er})}catch(s){if(W(s))return{data:{user:null},error:s};throw s}}async deleteUser(n,r=!1){ti(n);try{return await Z(this.fetch,"DELETE",`${this.url}/admin/users/${n}`,{headers:this.headers,body:{should_soft_delete:r},xform:Er})}catch(s){if(W(s))return{data:{user:null},error:s};throw s}}async _listFactors(n){ti(n.userId);try{const{data:r,error:s}=await Z(this.fetch,"GET",`${this.url}/admin/users/${n.userId}/factors`,{headers:this.headers,xform:i=>({data:{factors:i},error:null})});return{data:r,error:s}}catch(r){if(W(r))return{data:null,error:r};throw r}}async _deleteFactor(n){ti(n.userId),ti(n.id);try{return{data:await Z(this.fetch,"DELETE",`${this.url}/admin/users/${n.userId}/factors/${n.id}`,{headers:this.headers}),error:null}}catch(r){if(W(r))return{data:null,error:r};throw r}}async _listOAuthClients(n){var r,s,i,a,l,o,d;try{const c={nextPage:null,lastPage:0,total:0},u=await Z(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(s=(r=n==null?void 0:n.page)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:"",per_page:(a=(i=n==null?void 0:n.perPage)===null||i===void 0?void 0:i.toString())!==null&&a!==void 0?a:""},xform:gb});if(u.error)throw u.error;const h=await u.json(),g=(l=u.headers.get("x-total-count"))!==null&&l!==void 0?l:0,m=(d=(o=u.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&d!==void 0?d:[];return m.length>0&&(m.forEach(j=>{const p=parseInt(j.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(j.split(";")[1].split("=")[1]);c[`${b}Page`]=p}),c.total=parseInt(g)),{data:Object.assign(Object.assign({},h),c),error:null}}catch(c){if(W(c))return{data:{clients:[]},error:c};throw c}}async _createOAuthClient(n){try{return await Z(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:n,headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(W(r))return{data:null,error:r};throw r}}async _getOAuthClient(n){try{return await Z(this.fetch,"GET",`${this.url}/admin/oauth/clients/${n}`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(W(r))return{data:null,error:r};throw r}}async _updateOAuthClient(n,r){try{return await Z(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${n}`,{body:r,headers:this.headers,xform:s=>({data:s,error:null})})}catch(s){if(W(s))return{data:null,error:s};throw s}}async _deleteOAuthClient(n){try{return await Z(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${n}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(r){if(W(r))return{data:null,error:r};throw r}}async _regenerateOAuthClientSecret(n){try{return await Z(this.fetch,"POST",`${this.url}/admin/oauth/clients/${n}/regenerate_secret`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(W(r))return{data:null,error:r};throw r}}}function pb(t={}){return{getItem:n=>t[n]||null,setItem:(n,r)=>{t[n]=r},removeItem:n=>{delete t[n]}}}const ni={debug:!!(globalThis&&Zk()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Yk extends Error{constructor(n){super(n),this.isAcquireTimeout=!0}}class b4 extends Yk{}async function j4(t,n,r){ni.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",t,n);const s=new globalThis.AbortController;return n>0&&setTimeout(()=>{s.abort(),ni.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",t)},n),await Promise.resolve().then(()=>globalThis.navigator.locks.request(t,n===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:s.signal}
558,async i=>{if(i){ni.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",t,i.name);try{return await r()}finally{ni.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",t,i.name)}}else{if(n===0)throw ni.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",t),new b4(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(ni.debug)try{const a=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(a,null," "))}catch(a){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",a)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),await r()}}))}function v4(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function Jk(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error(`@supabase/auth-js: Address "${t}" is invalid.`);return t.toLowerCase()}function y4(t){return parseInt(t,16)}function w4(t){const n=new TextEncoder().encode(t);return"0x"+Array.from(n,s=>s.toString(16).padStart(2,"0")).join("")}function k4(t){var n;const{chainId:r,domain:s,expirationTime:i,issuedAt:a=new Date,nonce:l,notBefore:o,requestId:d,resources:c,scheme:u,uri:h,version:g}=t;{if(!Number.isInteger(r))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${r}`);if(!s)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(l&&l.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${l}`);if(!h)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(g!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${g}`);if(!((n=t.statement)===null||n===void 0)&&n.includes(` 559`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${t.statement}`)}const m=Jk(t.address),j=u?`${u}://${s}`:s,p=t.statement?`${t.statement} 560`:"",b=`${j} wants you to sign in with your Ethereum account: 561${m} 562 563${p}`;let x=`URI: ${h} 564Version: ${g} 565Chain ID: ${r}${l?` 566Nonce: ${l}`:""} 567Issued At: ${a.toISOString()}`;if(i&&(x+=` 568Expiration Time: ${i.toISOString()}`),o&&(x+=` 569Not Before: ${o.toISOString()}`),d&&(x+=` 570Request ID: ${d}`),c){let f=` 571Resources:`;for(const v of c){if(!v||typeof v!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${v}`);f+=` 572- ${v}`}x+=f}return`${b} 573${x}`}class Le extends Error{constructor({message:n,code:r,cause:s,name:i}){var a;super(n,{cause:s}),this.__isWebAuthnError=!0,this.name=(a=i??(s instanceof Error?s.name:void 0))!==null&&a!==void 0?a:"Unknown Error",this.code=r}}class Md extends Le{constructor(n,r){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:r,message:n}),this.name="WebAuthnUnknownError",this.originalError=r}}function N4({error:t,options:n}){var r,s,i;const{publicKey:a}=n;if(!a)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(n.signal instanceof AbortSignal)return new Le({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if(t.name==="ConstraintError"){if(((r=a.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new Le({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if(n.mediation==="conditional"&&((s=a.authenticatorSelection)===null||s===void 0?void 0:s.userVerification)==="required")return new Le({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:t});if(((i=a.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new Le({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if(t.name==="InvalidStateError")return new Le({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if(t.name==="NotAllowedError")return new Le({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="NotSupportedError")return a.pubKeyCredParams.filter(o=>o.type==="public-key").length===0?new Le({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new Le({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if(t.name==="SecurityError"){const l=window.location.hostname;if(Qk(l)){if(a.rp.id!==l)return new Le({message:`The RP ID "${a.rp.id}
573" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new Le({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="TypeError"){if(a.user.id.byteLength<1||a.user.id.byteLength>64)return new Le({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if(t.name==="UnknownError")return new Le({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new Le({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}function S4({error:t,options:n}){const{publicKey:r}=n;if(!r)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(n.signal instanceof AbortSignal)return new Le({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if(t.name==="NotAllowedError")return new Le({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="SecurityError"){const s=window.location.hostname;if(Qk(s)){if(r.rpId!==s)return new Le({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new Le({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="UnknownError")return new Le({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new Le({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}class A4{createNewAbortSignal(){if(this.controller){const r=new Error("Cancelling existing WebAuthn API call for new one");r.name="AbortError",this.controller.abort(r)}const n=new AbortController;return this.controller=n,n.signal}cancelCeremony(){if(this.controller){const n=new Error("Manually cancelling existing WebAuthn API call");n.name="AbortError",this.controller.abort(n),this.controller=void 0}}}const C4=new A4;function P4(t){if(!t)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(t);const{challenge:n,user:r,excludeCredentials:s}=t,i=ns(t,["challenge","user","excludeCredentials"]),a=Ti(n).buffer,l=Object.assign(Object.assign({},r),{id:Ti(r.id).buffer}),o=Object.assign(Object.assign({},i),{challenge:a,user:l});if(s&&s.length>0){o.excludeCredentials=new Array(s.length);for(let d=0;d<s.length;d++){const c=s[d];o.excludeCredentials[d]=Object.assign(Object.assign({},c),{id:Ti(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return o}function E4(t){if(!t)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(t);const{challenge:n,allowCredentials:r}=t,s=ns(t,["challenge","allowCredentials"]),i=Ti(n).buffer,a=Object.assign(Object.assign({},s),{challenge:i});if(r&&r.length>0){a.allowCredentials=new Array(r.length);for(let l=0;l<r.length;l++){const o=r[l];a.allowCredentials[l]=Object.assign(Object.assign({},o),{id:Ti(o.id).buffer,type:o.type||"public-key",transports:o.transports})}}return a}function T4(t){var n;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const r=t;return{id:t.id,rawId:t.id,response:{attestationObject:vs(new Uint8Array(t.response.attestationObject)),clientDataJSON:vs(new Uint8Array(t.response.clientDataJSON))},type:"public-key",clientExtensionResults:t.getClientExtensionResults(),authenticatorAttachment:(n=r.authenticatorAttachment)!==null&&n!==void 0?n:void 0}}function z4(t){var n;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const r=t,s=t.getClientExtensionResults(),i=t.response;return{id:t.id,rawId:t.id,response:{authenticatorData:vs(new Uint8Array(i.authenticatorData)),clientDataJSON:vs(new Uint8Array(i.clientDataJSON)),signature:vs(new Uint8Array(i.signature)),userHandle:i.userHandle?vs(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:s,authenticatorAttachment:(n=r.authenticatorAttachment)!==null&&n!==void 0?n:void 0}}function Qk(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function fb(){var t,n;return!!(Je()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((t=navigator==null?void 0:navigator.credentials)===null||t===void 0?void 0:t.create)=="function"&&typeof((n=navigator==null?void 0:navigator.credentials)===null||n===void 0?void 0:n.get)=="function")}async function D4(t){try{const n=await navigator.credentials.create(t);return n?n instanceof PublicKeyCredential?{data:n,error:null}:{data:null,error:new Md("Browser returned unexpected credential type",n)}:{data:null,error:new Md("Empty credential response",n)}}catch(n){return{data:null,error:N4({error:n,options:t})}}}async function _4(t){try{const n=await navigator.credentials.get(t);return n?n instanceof PublicKeyCredential?{data:n,error:null}:{data:null,error:new Md("Browser returned unexpected credential type",n)}:{data:null,error:new Md("Empty credential response",n)}}catch(n){return{data:null,error:S4({error:n,options:t})}}}const M4={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},O4={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Od(...t){const n=i=>i!==null&&typeof i=="object"&&!Array.isArray(i),r=i=>i instanceof ArrayBuffer||ArrayBuffer.isView(i),s={};for(const i of t)if(i)for(const a in i){const l=i[a];if(l!==void 0)if(Array.isArray(l))s[a]=l;else if(r(l))s[a]=l;else if(n(l)){const o=s[a];n(o)?s[a]=Od(o,l):s[a]=Od(l)}else s[a]=l}return s}function R4(t,n){return Od(M4,t,n||{})}function G4(t,n){return Od(O4,t,n||{})}class I4{constructor(n){this.client=n,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(n){return this.client.mfa.enroll(Object.assign(Object.assign({},n),{factorType:"webauthn"}))}async _challenge({factorId:n,webauthn:r,friendlyName:s,signal:i},a){try{const{data:l,error:o}=await this.client.mfa.challenge({factorId:n,webauthn:r});if(!l)return{data:null,error:o};const d=i??C4.createNewAbortSignal();if(l.webauthn.type==="create"){const{user:c}=l.webauthn.credential_options.publicKey;c.name||(c.name=`${c.id}:${s}`),c.displayName||(c.displayName=c.name)}switch(l.webauthn.type){case"create":{const c=R4(l.webauthn.credential_options.publicKey,a==null?void 0:a.create),{data:u,error:h}=await D4({publicKey:c,signal:d});return u?{data:{factorId:n,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:u}},error:null}:{data:null,error:h}}case"request":{const c=G4(l.webauthn.credential_options.publicKey,a==null?void 0:a.request),{data:u,error:h}=await _4(Object.assign(Object.assign({},l.webauthn.credential_options),{publicKey:c,signal:d}));return u?{data:{factorId:n,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:u}},error:null}:{data:null,error:h}}}}catch(l){return W(l)?{data:null,error:l}:{data:null,error:new fs("Unexpected error in challenge",l)}}}async _verify({challengeId:n,factorId:r,webauthn:s}){return this.client.mfa.verify({factorId:r,challengeId:n,webauthn:s})}async _authenticate({factorId:n,webauthn:{rpId:r=typeof window<"u"?window.location.hostname:void 0,rpOrigins:s=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},a){if(!r)return{data:null,error:new bl("rpId is required for WebAuthn authentication")};try{if(!fb())return{data:null,error:new fs("Browser does not support WebAuthn",null)};const{data:l,error:o}=await this.challenge({factorId:n,webauthn:{rpId:r,rpOrigins:s},signal:i},{request:a});if(!l)return{data:null,error:o};const{webauthn:d}=l;return this._verify({factorId:n,challengeId:l.challengeId,webauthn:{type:d.type,rpId:r,rpOrigins:s,credential_response:d.credential_response}})}catch(l){return W(l)?{data:null,error:l}:{data:null,error:new fs("Unexpected error in authenticate",l)}
573}}async _register({friendlyName:n,webauthn:{rpId:r=typeof window<"u"?window.location.hostname:void 0,rpOrigins:s=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},a){if(!r)return{data:null,error:new bl("rpId is required for WebAuthn registration")};try{if(!fb())return{data:null,error:new fs("Browser does not support WebAuthn",null)};const{data:l,error:o}=await this._enroll({friendlyName:n});if(!l)return await this.client.mfa.listFactors().then(u=>{var h;return(h=u.data)===null||h===void 0?void 0:h.all.find(g=>g.factor_type==="webauthn"&&g.friendly_name===n&&g.status!=="unverified")}).then(u=>u?this.client.mfa.unenroll({factorId:u==null?void 0:u.id}):void 0),{data:null,error:o};const{data:d,error:c}=await this._challenge({factorId:l.id,friendlyName:l.friendly_name,webauthn:{rpId:r,rpOrigins:s},signal:i},{create:a});return d?this._verify({factorId:l.id,challengeId:d.challengeId,webauthn:{rpId:r,rpOrigins:s,type:d.webauthn.type,credential_response:d.webauthn.credential_response}}):{data:null,error:c}}catch(l){return W(l)?{data:null,error:l}:{data:null,error:new fs("Unexpected error in register",l)}}}}v4();const B4={url:OO,storageKey:RO,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:GO,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1};async function xb(t,n,r){return await r()}const ri={};class jl{get jwks(){var n,r;return(r=(n=ri[this.storageKey])===null||n===void 0?void 0:n.jwks)!==null&&r!==void 0?r:{keys:[]}}set jwks(n){ri[this.storageKey]=Object.assign(Object.assign({},ri[this.storageKey]),{jwks:n})}get jwks_cached_at(){var n,r;return(r=(n=ri[this.storageKey])===null||n===void 0?void 0:n.cachedAt)!==null&&r!==void 0?r:Number.MIN_SAFE_INTEGER}set jwks_cached_at(n){ri[this.storageKey]=Object.assign(Object.assign({},ri[this.storageKey]),{cachedAt:n})}constructor(n){var r,s,i;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const a=Object.assign(Object.assign({},B4),n);if(this.storageKey=a.storageKey,this.instanceID=(r=jl.nextInstanceID[this.storageKey])!==null&&r!==void 0?r:0,jl.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!a.debug,typeof a.debug=="function"&&(this.logger=a.debug),this.instanceID>0&&Je()){const l=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(l),this.logDebugMessages&&console.trace(l)}if(this.persistSession=a.persistSession,this.autoRefreshToken=a.autoRefreshToken,this.admin=new x4({url:a.url,headers:a.headers,fetch:a.fetch}),this.url=a.url,this.headers=a.headers,this.fetch=qk(a.fetch),this.lock=a.lock||xb,this.detectSessionInUrl=a.detectSessionInUrl,this.flowType=a.flowType,this.hasCustomAuthorizationHeader=a.hasCustomAuthorizationHeader,this.throwOnError=a.throwOnError,a.lock?this.lock=a.lock:Je()&&(!((s=globalThis==null?void 0:globalThis.navigator)===null||s===void 0)&&s.locks)?this.lock=j4:this.lock=xb,this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new I4(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.persistSession?(a.storage?this.storage=a.storage:Zk()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=pb(this.memoryStorage)),a.userStorage&&(this.userStorage=a.userStorage)):(this.memoryStorage={},this.storage=pb(this.memoryStorage)),Je()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(l){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",l)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async l=>{this._debug("received broadcast notification from other tab or client",l),await this._notifyAllSubscribers(l.data.event,l.data.session,!1)})}this.initialize()}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(n){if(this.throwOnError&&n&&n.error)throw n.error;return n}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Uk}) ${new Date().toISOString()}`}_debug(...n){return this.logDebugMessages&&this.logger(this._logPrefix(),...n),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(-1,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){var n;try{let r={},s="none";if(Je()&&(r=JO(window.location.href),this._isImplicitGrantCallback(r)?s="implicit":await this._isPKCECallback(r)&&(s="pkce")),Je()&&this.detectSessionInUrl&&s!=="none"){const{data:i,error:a}=await this._getSessionFromURL(r,s);if(a){if(this._debug("#_initialize()","error detecting session from URL",a),WO(a)){const d=(n=a.details)===null||n===void 0?void 0:n.code;
573if(d==="identity_already_exists"||d==="identity_not_found"||d==="single_identity_not_deletable")return{error:a}}return await this._removeSession(),{error:a}}const{session:l,redirectType:o}=i;return this._debug("#_initialize()","detected session in URL",l,"redirect type",o),await this._saveSession(l),setTimeout(async()=>{o==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",l):await this._notifyAllSubscribers("SIGNED_IN",l)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(r){return W(r)?this._returnResult({error:r}):this._returnResult({error:new fs("Unexpected error during initialization",r)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(n){var r,s,i;try{const a=await Z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(s=(r=n==null?void 0:n.options)===null||r===void 0?void 0:r.data)!==null&&s!==void 0?s:{},gotrue_meta_security:{captcha_token:(i=n==null?void 0:n.options)===null||i===void 0?void 0:i.captchaToken}},xform:on}),{data:l,error:o}=a;if(o||!l)return this._returnResult({data:{user:null,session:null},error:o});const d=l.session,c=l.user;return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",d)),this._returnResult({data:{user:c,session:d},error:null})}catch(a){if(W(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signUp(n){var r,s,i;try{let a;if("email"in n){const{email:u,password:h,options:g}=n;let m=null,j=null;this.flowType==="pkce"&&([m,j]=await ei(this.storage,this.storageKey)),a=await Z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:g==null?void 0:g.emailRedirectTo,body:{email:u,password:h,data:(r=g==null?void 0:g.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:g==null?void 0:g.captchaToken},code_challenge:m,code_challenge_method:j},xform:on})}else if("phone"in n){const{phone:u,password:h,options:g}=n;a=await Z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:u,password:h,data:(s=g==null?void 0:g.data)!==null&&s!==void 0?s:{},channel:(i=g==null?void 0:g.channel)!==null&&i!==void 0?i:"sms",gotrue_meta_security:{captcha_token:g==null?void 0:g.captchaToken}},xform:on})}else throw new Co("You must provide either an email or phone number and a password");const{data:l,error:o}=a;if(o||!l)return this._returnResult({data:{user:null,session:null},error:o});const d=l.session,c=l.user;return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",d)),this._returnResult({data:{user:c,session:d},error:null})}catch(a){if(W(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signInWithPassword(n){try{let r;if("email"in n){const{email:a,password:l,options:o}=n;r=await Z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:a,password:l,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:mb})}else if("phone"in n){const{phone:a,password:l,options:o}=n;r=await Z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:a,password:l,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:mb})}else throw new Co("You must provide either an email or phone number and a password");const{data:s,error:i}=r;if(i)return this._returnResult({data:{user:null,session:null},error:i});if(!s||!s.session||!s.user){const a=new Xs;return this._returnResult({data:{user:null,session:null},error:a})}return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session)),this._returnResult({data:Object.assign({user:s.user,session:s.session},s.weak_password?{weakPassword:s.weak_password}:null),error:i})}catch(r){if(W(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithOAuth(n){var r,s,i,a;return await this._handleProviderSignIn(n.provider,{redirectTo:(r=n.options)===null||r===void 0?void 0:r.redirectTo,scopes:(s=n.options)===null||s===void 0?void 0:s.scopes,queryParams:(i=n.options)===null||i===void 0?void 0:i.queryParams,skipBrowserRedirect:(a=n.options)===null||a===void 0?void 0:a.skipBrowserRedirect})}async exchangeCodeForSession(n){return await this.initializePromise,this._acquireLock(-1,async()=>this._exchangeCodeForSession(n))}async signInWithWeb3(n){const{chain:r}=n;switch(r){case"ethereum":return await this.signInWithEthereum(n);case"solana":return await this.signInWithSolana(n);default:throw new Error(`@supabase/auth-js: Unsupported chain "${r}"`)}}async signInWithEthereum(n){var r,s,i,a,l,o,d,c,u,h,g;let m,j;if("message"in n)m=n.message,j=n.signature;else{const{chain:p,wallet:b,statement:x,options:f}=n;let v;if(Je())if(typeof b=="object")v=b;else{const P=window;if("ethereum"in P&&typeof P.ethereum=="object"&&"request"in P.ethereum&&typeof P.ethereum.request=="function")v=P.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof b!="object"||!(f!=null&&f.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");v=b}const w=new URL((r=f==null?void 0:f.url)!==null&&r!==void 0?r:window.location.href),k=await v.request({method:"eth_requestAccounts"}).then(P=>P).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!k||k.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const N=Jk(k[0]);let S=(s=f==null?void 0:f.signInWithEthereum)===null||s===void 0?void 0:s.chainId;if(!S){const P=await v.request({method:"eth_chainId"});S=y4(P)}
573const A={domain:w.host,address:N,statement:x,uri:w.href,version:"1",chainId:S,nonce:(i=f==null?void 0:f.signInWithEthereum)===null||i===void 0?void 0:i.nonce,issuedAt:(l=(a=f==null?void 0:f.signInWithEthereum)===null||a===void 0?void 0:a.issuedAt)!==null&&l!==void 0?l:new Date,expirationTime:(o=f==null?void 0:f.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(d=f==null?void 0:f.signInWithEthereum)===null||d===void 0?void 0:d.notBefore,requestId:(c=f==null?void 0:f.signInWithEthereum)===null||c===void 0?void 0:c.requestId,resources:(u=f==null?void 0:f.signInWithEthereum)===null||u===void 0?void 0:u.resources};m=k4(A),j=await v.request({method:"personal_sign",params:[w4(m),N]})}try{const{data:p,error:b}=await Z(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:m,signature:j},!((h=n.options)===null||h===void 0)&&h.captchaToken?{gotrue_meta_security:{captcha_token:(g=n.options)===null||g===void 0?void 0:g.captchaToken}}:null),xform:on});if(b)throw b;if(!p||!p.session||!p.user){const x=new Xs;return this._returnResult({data:{user:null,session:null},error:x})}return p.session&&(await this._saveSession(p.session),await this._notifyAllSubscribers("SIGNED_IN",p.session)),this._returnResult({data:Object.assign({},p),error:b})}catch(p){if(W(p))return this._returnResult({data:{user:null,session:null},error:p});throw p}}async signInWithSolana(n){var r,s,i,a,l,o,d,c,u,h,g,m;let j,p;if("message"in n)j=n.message,p=n.signature;else{const{chain:b,wallet:x,statement:f,options:v}=n;let w;if(Je())if(typeof x=="object")w=x;else{const N=window;if("solana"in N&&typeof N.solana=="object"&&("signIn"in N.solana&&typeof N.solana.signIn=="function"||"signMessage"in N.solana&&typeof N.solana.signMessage=="function"))w=N.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof x!="object"||!(v!=null&&v.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");w=x}const k=new URL((r=v==null?void 0:v.url)!==null&&r!==void 0?r:window.location.href);if("signIn"in w&&w.signIn){const N=await w.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},v==null?void 0:v.signInWithSolana),{version:"1",domain:k.host,uri:k.href}),f?{statement:f}:null));let S;if(Array.isArray(N)&&N[0]&&typeof N[0]=="object")S=N[0];else if(N&&typeof N=="object"&&"signedMessage"in N&&"signature"in N)S=N;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in S&&"signature"in S&&(typeof S.signedMessage=="string"||S.signedMessage instanceof Uint8Array)&&S.signature instanceof Uint8Array)j=typeof S.signedMessage=="string"?S.signedMessage:new TextDecoder().decode(S.signedMessage),p=S.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in w)||typeof w.signMessage!="function"||!("publicKey"in w)||typeof w!="object"||!w.publicKey||!("toBase58"in w.publicKey)||typeof w.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");j=[`${k.host} wants you to sign in with your Solana account:`,w.publicKey.toBase58(),...f?["",f,""]:[""],"Version: 1",`URI: ${k.href}`,`Issued At: ${(i=(s=v==null?void 0:v.signInWithSolana)===null||s===void 0?void 0:s.issuedAt)!==null&&i!==void 0?i:new Date().toISOString()}`,...!((a=v==null?void 0:v.signInWithSolana)===null||a===void 0)&&a.notBefore?[`Not Before: ${v.signInWithSolana.notBefore}`]:[],...!((l=v==null?void 0:v.signInWithSolana)===null||l===void 0)&&l.expirationTime?[`Expiration Time: ${v.signInWithSolana.expirationTime}`]:[],...!((o=v==null?void 0:v.signInWithSolana)===null||o===void 0)&&o.chainId?[`Chain ID: ${v.signInWithSolana.chainId}`]:[],...!((d=v==null?void 0:v.signInWithSolana)===null||d===void 0)&&d.nonce?[`Nonce: ${v.signInWithSolana.nonce}`]:[],...!((c=v==null?void 0:v.signInWithSolana)===null||c===void 0)&&c.requestId?[`Request ID: ${v.signInWithSolana.requestId}`]:[],...!((h=(u=v==null?void 0:v.signInWithSolana)===null||u===void 0?void 0:u.resources)===null||h===void 0)&&h.length?["Resources",...v.signInWithSolana.resources.map(S=>`- ${S}`)]:[]].join(` 574`);const N=await w.signMessage(new TextEncoder().encode(j),"utf8");if(!N||!(N instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");p=N}}try{const{data:b,error:x}=await Z(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:j,signature:vs(p)},!((g=n.options)===null||g===void 0)&&g.captchaToken?{gotrue_meta_security:{captcha_token:(m=n.options)===null||m===void 0?void 0:m.captchaToken}}:null),xform:on});if(x)throw x;if(!b||!b.session||!b.user){const f=new Xs;return this._returnResult({data:{user:null,session:null},error:f})}return b.session&&(await this._saveSession(b.session),await this._notifyAllSubscribers("SIGNED_IN",b.session)),this._returnResult({data:Object.assign({},b),error:x})}catch(b){if(W(b))return this._returnResult({data:{user:null,session:null},error:b});throw b}}async _exchangeCodeForSession(n){const r=await os(this.storage,`${this.storageKey}-code-verifier`),[s,i]=(r??"").split("/");try{const{data:a,error:l}=await Z(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:n,code_verifier:s},xform:on});if(await yr(this.storage,`${this.storageKey}-code-verifier`),l)throw l;if(!a||!a.session||!a.user){const o=new Xs;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}return a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session)),this._returnResult({data:Object.assign(Object.assign({},a),{redirectType:i??null}),error:l})}catch(a){if(W(a))return this._returnResult({data:{user:null,session:null,redirectType:null},error:a});throw a}}async signInWithIdToken(n){try{const{options:r,provider:s,token:i,access_token:a,nonce:l}=n,o=await Z(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:s,id_token:i,access_token:a,nonce:l,gotrue_meta_security:{captcha_token:r==null?void 0:r.captchaToken}},xform:on}),{data:d,error:c}=o;if(c)return this._returnResult({data:{user:null,session:null},error:c});if(!d||!d.session||!d.user){const u=new Xs;return this._returnResult({data:{user:null,session:null},error:u})}return d.session&&(await this._saveSession(d.session),await this._notifyAllSubscribers("SIGNED_IN",d.session)),this._returnResult({data:d,error:c})}catch(r){if(W(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithOtp(n){var r,s,i,a,l;try{if("email"in n){const{email:o,options:d}=n;let c=null,u=null;this.flowType==="pkce"&&([c,u]=await ei(this.storage,this.storageKey));const{error:h}=await Z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(r=d==null?void 0:d.data)!==null&&r!==void 0?r:{},create_user:(s=d==null?void 0:d.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},code_challenge:c,code_challenge_method:u},redirectTo:d==null?void 0:d.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:h})}if("phone"in n){const{phone:o,options:d}=n,{data:c,error:u}=await Z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(i=d==null?void 0:d.data)!==null&&i!==void 0?i:{},create_user:(a=d==null?void 0:d.shouldCreateUser)!==null&&a!==void 0?a:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},channel:(l=d==null?void 0:d.channel)!==null&&l!==void 0?l:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:c==null?void 0:c.message_id},error:u})}throw new Co("You must provide either an email or phone number.")}catch(o){if(W(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(n){var r,s;try{let i,a;"options"in n&&(i=(r=n.options)===null||r===void 0?void 0:r.redirectTo,a=(s=n.options)===null||s===void 0?void 0:s.captchaToken);const{data:l,error:o}=await Z(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},n),{gotrue_meta_security:{captcha_token:a}}),redirectTo:i,xform:on});if(o)throw o;if(!l)throw new Error("An error occurred on token verification.");const d=l.session,c=l.user;return d!=null&&d.access_token&&(await this._saveSession(d),await this._notifyAllSubscribers(n.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",d)),this._returnResult({data:{user:c,session:d},error:null})}catch(i){if(W(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithSSO(n){var r,s,i,a,l;try{let o=null,d=null;this.flowType==="pkce"&&([o,d]=await ei(this.storage,this.storageKey));const c=await Z(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in n?{provider_id:n.providerId}:null),"domain"in n?{domain:n.domain}:null),{redirect_to:(s=(r=n.options)===null||r===void 0?void 0:r.redirectTo)!==null&&s!==void 0?s:void 0}),!((i=n==null?void 0:n.options)===null||i===void 0)&&i.captchaToken?{gotrue_meta_security:{captcha_token:n.options.captchaToken}}
574:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:d}),headers:this.headers,xform:g4});return!((a=c.data)===null||a===void 0)&&a.url&&Je()&&!(!((l=n.options)===null||l===void 0)&&l.skipBrowserRedirect)&&window.location.assign(c.data.url),this._returnResult(c)}catch(o){if(W(o))return this._returnResult({data:null,error:o});throw o}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async n=>{const{data:{session:r},error:s}=n;if(s)throw s;if(!r)throw new Et;const{error:i}=await Z(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:r.access_token});return this._returnResult({data:{user:null,session:null},error:i})})}catch(n){if(W(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async resend(n){try{const r=`${this.url}/resend`;if("email"in n){const{email:s,type:i,options:a}=n,{error:l}=await Z(this.fetch,"POST",r,{headers:this.headers,body:{email:s,type:i,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},redirectTo:a==null?void 0:a.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:l})}else if("phone"in n){const{phone:s,type:i,options:a}=n,{data:l,error:o}=await Z(this.fetch,"POST",r,{headers:this.headers,body:{phone:s,type:i,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:l==null?void 0:l.message_id},error:o})}throw new Co("You must provide either an email or phone number and a type")}catch(r){if(W(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async getSession(){return await this.initializePromise,await this._acquireLock(-1,async()=>this._useSession(async r=>r))}async _acquireLock(n,r){this._debug("#_acquireLock","begin",n);try{if(this.lockAcquired){const s=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),i=(async()=>(await s,await r()))();return this.pendingInLock.push((async()=>{try{await i}catch{}})()),i}return await this.lock(`lock:${this.storageKey}`,n,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const s=r();for(this.pendingInLock.push((async()=>{try{await s}catch{}})()),await s;this.pendingInLock.length;){const i=[...this.pendingInLock];await Promise.all(i),this.pendingInLock.splice(0,i.length)}return await s}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(n){this._debug("#_useSession","begin");try{const r=await this.__loadSession();return await n(r)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let n=null;const r=await os(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",r),r!==null&&(this._isValidSession(r)?n=r:(this._debug("#getSession()","session from storage is not valid"),await this._removeSession())),!n)return{data:{session:null},error:null};const s=n.expires_at?n.expires_at*1e3-Date.now()<Tu:!1;if(this._debug("#__loadSession()",`session has${s?"":" not"} expired`,"expires_at",n.expires_at),!s){if(this.userStorage){const l=await os(this.userStorage,this.storageKey+"-user");l!=null&&l.user?n.user=l.user:n.user=_u()}if(this.storage.isServer&&n.user&&!n.user.__isUserNotAvailableProxy){const l={value:this.suppressGetSessionWarning};n.user=c4(n.user,l),l.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:n},error:null}}const{data:i,error:a}=await this._callRefreshToken(n.refresh_token);return a?this._returnResult({data:{session:null},error:a}):this._returnResult({data:{session:i},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(n){return n?await this._getUser(n):(await this.initializePromise,await this._acquireLock(-1,async()=>await this._getUser()))}async _getUser(n){try{return n?await Z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:n,xform:Er}):await this._useSession(async r=>{var s,i,a;const{data:l,error:o}=r;if(o)throw o;return!(!((s=l.session)===null||s===void 0)&&s.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new Et}:await Z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(a=(i=l.session)===null||i===void 0?void 0:i.access_token)!==null&&a!==void 0?a:void 0,xform:Er})})}catch(r){if(W(r))return LO(r)&&(await this._removeSession(),await yr(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({data:{user:null},error:r});throw r}}async updateUser(n,r={}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._updateUser(n,r))}async _updateUser(n,r={}){try{return await this._useSession(async s=>{const{data:i,error:a}=s;
574if(a)throw a;if(!i.session)throw new Et;const l=i.session;let o=null,d=null;this.flowType==="pkce"&&n.email!=null&&([o,d]=await ei(this.storage,this.storageKey));const{data:c,error:u}=await Z(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:r==null?void 0:r.emailRedirectTo,body:Object.assign(Object.assign({},n),{code_challenge:o,code_challenge_method:d}),jwt:l.access_token,xform:Er});if(u)throw u;return l.user=c.user,await this._saveSession(l),await this._notifyAllSubscribers("USER_UPDATED",l),this._returnResult({data:{user:l.user},error:null})})}catch(s){if(W(s))return this._returnResult({data:{user:null},error:s});throw s}}async setSession(n){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._setSession(n))}async _setSession(n){try{if(!n.access_token||!n.refresh_token)throw new Et;const r=Date.now()/1e3;let s=r,i=!0,a=null;const{payload:l}=Du(n.access_token);if(l.exp&&(s=l.exp,i=s<=r),i){const{data:o,error:d}=await this._callRefreshToken(n.refresh_token);if(d)return this._returnResult({data:{user:null,session:null},error:d});if(!o)return{data:{user:null,session:null},error:null};a=o}else{const{data:o,error:d}=await this._getUser(n.access_token);if(d)throw d;a={access_token:n.access_token,refresh_token:n.refresh_token,user:o.user,token_type:"bearer",expires_in:s-r,expires_at:s},await this._saveSession(a),await this._notifyAllSubscribers("SIGNED_IN",a)}return this._returnResult({data:{user:a.user,session:a},error:null})}catch(r){if(W(r))return this._returnResult({data:{session:null,user:null},error:r});throw r}}async refreshSession(n){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._refreshSession(n))}async _refreshSession(n){try{return await this._useSession(async r=>{var s;if(!n){const{data:l,error:o}=r;if(o)throw o;n=(s=l.session)!==null&&s!==void 0?s:void 0}if(!(n!=null&&n.refresh_token))throw new Et;const{data:i,error:a}=await this._callRefreshToken(n.refresh_token);return a?this._returnResult({data:{user:null,session:null},error:a}):i?this._returnResult({data:{user:i.user,session:i},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(r){if(W(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async _getSessionFromURL(n,r){try{if(!Je())throw new Po("No browser detected.");if(n.error||n.error_description||n.error_code)throw new Po(n.error_description||"Error in URL with unspecified error_description",{error:n.error||"unspecified_error",code:n.error_code||"unspecified_code"});switch(r){case"implicit":if(this.flowType==="pkce")throw new ab("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Po("Not a valid implicit grant flow url.");break;default:}if(r==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!n.code)throw new ab("No code detected.");const{data:f,error:v}=await this._exchangeCodeForSession(n.code);if(v)throw v;const w=new URL(window.location.href);return w.searchParams.delete("code"),window.history.replaceState(window.history.state,"",w.toString()),{data:{session:f.session,redirectType:null},error:null}}const{provider_token:s,provider_refresh_token:i,access_token:a,refresh_token:l,expires_in:o,expires_at:d,token_type:c}=n;if(!a||!o||!l||!c)throw new Po("No session defined in URL");const u=Math.round(Date.now()/1e3),h=parseInt(o);let g=u+h;d&&(g=parseInt(d));const m=g-u;m*1e3<=ii&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${m}s, should have been closer to ${h}s`);const j=g-h;u-j>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",j,g,u):u-j<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",j,g,u);const{data:p,error:b}=await this._getUser(a);if(b)throw b;const x={provider_token:s,provider_refresh_token:i,access_token:a,expires_in:h,expires_at:g,refresh_token:l,token_type:c,user:p.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:x,redirectType:n.type},error:null})}catch(s){if(W(s))return this._returnResult({data:{session:null,redirectType:null},error:s});throw s}}_isImplicitGrantCallback(n){return!!(n.access_token||n.error_description)}async _isPKCECallback(n){const r=await os(this.storage,`${this.storageKey}-code-verifier`);return!!(n.code&&r)}async signOut(n={scope:"global"}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._signOut(n))}async _signOut({scope:n}={scope:"global"}){return await this._useSession(async r=>{var s;const{data:i,error:a}=r;if(a)return this._returnResult({error:a});const l=(s=i.session)===null||s===void 0?void 0:s.access_token;if(l){const{error:o}=await this.admin.signOut(l,n);if(o&&!(FO(o)&&(o.status===404||o.status===401||o.status===403)))return this._returnResult({error:o})}return n!=="others"&&(await this._removeSession(),await yr(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({error:null})})}onAuthStateChange(n){const r=YO(),s={id:r,callback:n,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",r),this.stateChangeEmitters.delete(r)}};return this._debug("#onAuthStateChange()","registered callback with id",r),this.stateChangeEmitters.set(r,s),(
574async()=>(await this.initializePromise,await this._acquireLock(-1,async()=>{this._emitInitialSession(r)})))(),{data:{subscription:s}}}async _emitInitialSession(n){return await this._useSession(async r=>{var s,i;try{const{data:{session:a},error:l}=r;if(l)throw l;await((s=this.stateChangeEmitters.get(n))===null||s===void 0?void 0:s.callback("INITIAL_SESSION",a)),this._debug("INITIAL_SESSION","callback id",n,"session",a)}catch(a){await((i=this.stateChangeEmitters.get(n))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",n,"error",a),console.error(a)}})}async resetPasswordForEmail(n,r={}){let s=null,i=null;this.flowType==="pkce"&&([s,i]=await ei(this.storage,this.storageKey,!0));try{return await Z(this.fetch,"POST",`${this.url}/recover`,{body:{email:n,code_challenge:s,code_challenge_method:i,gotrue_meta_security:{captcha_token:r.captchaToken}},headers:this.headers,redirectTo:r.redirectTo})}catch(a){if(W(a))return this._returnResult({data:null,error:a});throw a}}async getUserIdentities(){var n;try{const{data:r,error:s}=await this.getUser();if(s)throw s;return this._returnResult({data:{identities:(n=r.user.identities)!==null&&n!==void 0?n:[]},error:null})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async linkIdentity(n){return"token"in n?this.linkIdentityIdToken(n):this.linkIdentityOAuth(n)}async linkIdentityOAuth(n){var r;try{const{data:s,error:i}=await this._useSession(async a=>{var l,o,d,c,u;const{data:h,error:g}=a;if(g)throw g;const m=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,n.provider,{redirectTo:(l=n.options)===null||l===void 0?void 0:l.redirectTo,scopes:(o=n.options)===null||o===void 0?void 0:o.scopes,queryParams:(d=n.options)===null||d===void 0?void 0:d.queryParams,skipBrowserRedirect:!0});return await Z(this.fetch,"GET",m,{headers:this.headers,jwt:(u=(c=h.session)===null||c===void 0?void 0:c.access_token)!==null&&u!==void 0?u:void 0})});if(i)throw i;return Je()&&!(!((r=n.options)===null||r===void 0)&&r.skipBrowserRedirect)&&window.location.assign(s==null?void 0:s.url),this._returnResult({data:{provider:n.provider,url:s==null?void 0:s.url},error:null})}catch(s){if(W(s))return this._returnResult({data:{provider:n.provider,url:null},error:s});throw s}}async linkIdentityIdToken(n){return await this._useSession(async r=>{var s;try{const{error:i,data:{session:a}}=r;if(i)throw i;const{options:l,provider:o,token:d,access_token:c,nonce:u}=n,h=await Z(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(s=a==null?void 0:a.access_token)!==null&&s!==void 0?s:void 0,body:{provider:o,id_token:d,access_token:c,nonce:u,link_identity:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:on}),{data:g,error:m}=h;return m?this._returnResult({data:{user:null,session:null},error:m}):!g||!g.session||!g.user?this._returnResult({data:{user:null,session:null},error:new Xs}):(g.session&&(await this._saveSession(g.session),await this._notifyAllSubscribers("USER_UPDATED",g.session)),this._returnResult({data:g,error:m}))}catch(i){if(W(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}})}async unlinkIdentity(n){try{return await this._useSession(async r=>{var s,i;const{data:a,error:l}=r;if(l)throw l;return await Z(this.fetch,"DELETE",`${this.url}/user/identities/${n.identity_id}`,{headers:this.headers,jwt:(i=(s=a.session)===null||s===void 0?void 0:s.access_token)!==null&&i!==void 0?i:void 0})})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async _refreshAccessToken(n){const r=`#_refreshAccessToken(${n.substring(0,5)}...)`;this._debug(r,"begin");try{const s=Date.now();return await e4(async i=>(i>0&&await XO(200*Math.pow(2,i-1)),this._debug(r,"refreshing attempt",i),await Z(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:n},headers:this.headers,xform:on})),(i,a)=>{const l=200*Math.pow(2,i);return a&&zu(a)&&Date.now()+l-s<ii})}catch(s){if(this._debug(r,"error",s),W(s))return this._returnResult({data:{session:null,user:null},error:s});throw s}finally{this._debug(r,"end")}}_isValidSession(n){return typeof n=="object"&&n!==null&&"access_token"in n&&"refresh_token"in n&&"expires_at"in n}async _handleProviderSignIn(n,r){const s=await this._getUrlForProvider(`${this.url}/authorize`,n,{redirectTo:r.redirectTo,scopes:r.scopes,queryParams:r.queryParams});return this._debug("#_handleProviderSignIn()","provider",n,"options",r,"url",s),Je()&&!r.skipBrowserRedirect&&window.location.assign(s),{data:{provider:n,url:s},error:null}}async _recoverAndRefresh(){var n,r;const s="#_recoverAndRefresh()";this._debug(s,"begin");try{const i=await os(this.storage,this.storageKey);if(i&&this.userStorage){let l=await os(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!l&&(l={user:i.user},await ai(this.userStorage,this.storageKey+"-user",l)),i.user=(n=l==null?void 0:l.user)!==null&&n!==void 0?n:_u()}else if(i&&!i.user&&!i.user){const l=await os(this.storage,this.storageKey+"-user");l&&(l!=null&&l.user)?(i.user=l.user,await yr(this.storage,this.storageKey+"-user"),await ai(this.storage,this.storageKey,i)):i.user=_u()}
574if(this._debug(s,"session from storage",i),!this._isValidSession(i)){this._debug(s,"session is not valid"),i!==null&&await this._removeSession();return}const a=((r=i.expires_at)!==null&&r!==void 0?r:1/0)*1e3-Date.now()<Tu;if(this._debug(s,`session has${a?"":" not"} expired with margin of ${Tu}s`),a){if(this.autoRefreshToken&&i.refresh_token){const{error:l}=await this._callRefreshToken(i.refresh_token);l&&(console.error(l),zu(l)||(this._debug(s,"refresh failed with a non-retryable error, removing the session",l),await this._removeSession()))}}else if(i.user&&i.user.__isUserNotAvailableProxy===!0)try{const{data:l,error:o}=await this._getUser(i.access_token);!o&&(l!=null&&l.user)?(i.user=l.user,await this._saveSession(i),await this._notifyAllSubscribers("SIGNED_IN",i)):this._debug(s,"could not get user data, skipping SIGNED_IN notification")}catch(l){console.error("Error getting user data:",l),this._debug(s,"error getting user data, skipping SIGNED_IN notification",l)}else await this._notifyAllSubscribers("SIGNED_IN",i)}catch(i){this._debug(s,"error",i),console.error(i);return}finally{this._debug(s,"end")}}async _callRefreshToken(n){var r,s;if(!n)throw new Et;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const i=`#_callRefreshToken(${n.substring(0,5)}...)`;this._debug(i,"begin");try{this.refreshingDeferred=new Cc;const{data:a,error:l}=await this._refreshAccessToken(n);if(l)throw l;if(!a.session)throw new Et;await this._saveSession(a.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",a.session);const o={data:a.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(a){if(this._debug(i,"error",a),W(a)){const l={data:null,error:a};return zu(a)||await this._removeSession(),(r=this.refreshingDeferred)===null||r===void 0||r.resolve(l),l}throw(s=this.refreshingDeferred)===null||s===void 0||s.reject(a),a}finally{this.refreshingDeferred=null,this._debug(i,"end")}}async _notifyAllSubscribers(n,r,s=!0){const i=`#_notifyAllSubscribers(${n})`;this._debug(i,"begin",r,`broadcast = ${s}`);try{this.broadcastChannel&&s&&this.broadcastChannel.postMessage({event:n,session:r});const a=[],l=Array.from(this.stateChangeEmitters.values()).map(async o=>{try{await o.callback(n,r)}catch(d){a.push(d)}});if(await Promise.all(l),a.length>0){for(let o=0;o<a.length;o+=1)console.error(a[o]);throw a[0]}}finally{this._debug(i,"end")}}async _saveSession(n){this._debug("#_saveSession()",n),this.suppressGetSessionWarning=!0;const r=Object.assign({},n),s=r.user&&r.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!s&&r.user&&await ai(this.userStorage,this.storageKey+"-user",{user:r.user});const i=Object.assign({},r);delete i.user;const a=ub(i);await ai(this.storage,this.storageKey,a)}else{const i=ub(r);await ai(this.storage,this.storageKey,i)}}async _removeSession(){this._debug("#_removeSession()"),await yr(this.storage,this.storageKey),await yr(this.storage,this.storageKey+"-code-verifier"),await yr(this.storage,this.storageKey+"-user"),this.userStorage&&await yr(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const n=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{n&&Je()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",n)}catch(r){console.error("removing visibilitychange callback failed",r)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const n=setInterval(()=>this._autoRefreshTokenTick(),ii);this.autoRefreshTicker=n,n&&typeof n=="object"&&typeof n.unref=="function"?n.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(n),setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const n=this.autoRefreshTicker;this.autoRefreshTicker=null,n&&clearInterval(n)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const n=Date.now();try{return await this._useSession(async r=>{const{data:{session:s}}=r;if(!s||!s.refresh_token||!s.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const i=Math.floor((s.expires_at*1e3-n)/ii);this._debug("#_autoRefreshTokenTick()",`access token expires in ${i} ticks, a tick lasts ${ii}ms, refresh threshold is ${fm} ticks`),i<=fm&&await this._callRefreshToken(s.refresh_token)})}catch(r){console.error("Auto refresh tick failed with error. This is likely a transient error.",r)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(n){if(n.isAcquireTimeout||n instanceof Yk)this._debug("auto refresh token tick lock not available");else throw n}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Je()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>await this._onVisibilityChanged(!1),window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(n){console.error("_handleVisibilityChange",n)}}async _onVisibilityChanged(n){const r=`#_onVisibilityChanged(${n})`;this._debug(r,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),n||(await this.initializePromise,await this._acquireLock(-1,async()=>
574{if(document.visibilityState!=="visible"){this._debug(r,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(n,r,s){const i=[`provider=${encodeURIComponent(r)}`];if(s!=null&&s.redirectTo&&i.push(`redirect_to=${encodeURIComponent(s.redirectTo)}`),s!=null&&s.scopes&&i.push(`scopes=${encodeURIComponent(s.scopes)}`),this.flowType==="pkce"){const[a,l]=await ei(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(a)}`,code_challenge_method:`${encodeURIComponent(l)}`});i.push(o.toString())}if(s!=null&&s.queryParams){const a=new URLSearchParams(s.queryParams);i.push(a.toString())}return s!=null&&s.skipBrowserRedirect&&i.push(`skip_http_redirect=${s.skipBrowserRedirect}`),`${n}?${i.join("&")}`}async _unenroll(n){try{return await this._useSession(async r=>{var s;const{data:i,error:a}=r;return a?this._returnResult({data:null,error:a}):await Z(this.fetch,"DELETE",`${this.url}/factors/${n.factorId}`,{headers:this.headers,jwt:(s=i==null?void 0:i.session)===null||s===void 0?void 0:s.access_token})})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async _enroll(n){try{return await this._useSession(async r=>{var s,i;const{data:a,error:l}=r;if(l)return this._returnResult({data:null,error:l});const o=Object.assign({friendly_name:n.friendlyName,factor_type:n.factorType},n.factorType==="phone"?{phone:n.phone}:n.factorType==="totp"?{issuer:n.issuer}:{}),{data:d,error:c}=await Z(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(s=a==null?void 0:a.session)===null||s===void 0?void 0:s.access_token});return c?this._returnResult({data:null,error:c}):(n.factorType==="totp"&&d.type==="totp"&&(!((i=d==null?void 0:d.totp)===null||i===void 0)&&i.qr_code)&&(d.totp.qr_code=`data:image/svg+xml;utf-8,${d.totp.qr_code}`),this._returnResult({data:d,error:null}))})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async _verify(n){return this._acquireLock(-1,async()=>{try{return await this._useSession(async r=>{var s;const{data:i,error:a}=r;if(a)return this._returnResult({data:null,error:a});const l=Object.assign({challenge_id:n.challengeId},"webauthn"in n?{webauthn:Object.assign(Object.assign({},n.webauthn),{credential_response:n.webauthn.type==="create"?T4(n.webauthn.credential_response):z4(n.webauthn.credential_response)})}:{code:n.code}),{data:o,error:d}=await Z(this.fetch,"POST",`${this.url}/factors/${n.factorId}/verify`,{body:l,headers:this.headers,jwt:(s=i==null?void 0:i.session)===null||s===void 0?void 0:s.access_token});return d?this._returnResult({data:null,error:d}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),this._returnResult({data:o,error:d}))})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}})}async _challenge(n){return this._acquireLock(-1,async()=>{try{return await this._useSession(async r=>{var s;const{data:i,error:a}=r;if(a)return this._returnResult({data:null,error:a});const l=await Z(this.fetch,"POST",`${this.url}/factors/${n.factorId}/challenge`,{body:n,headers:this.headers,jwt:(s=i==null?void 0:i.session)===null||s===void 0?void 0:s.access_token});if(l.error)return l;const{data:o}=l;if(o.type!=="webauthn")return{data:o,error:null};switch(o.webauthn.type){case"create":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:P4(o.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:E4(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}})}async _challengeAndVerify(n){const{data:r,error:s}=await this._challenge({factorId:n.factorId});return s?this._returnResult({data:null,error:s}):await this._verify({factorId:n.factorId,challengeId:r.id,code:n.code})}async _listFactors(){var n;const{data:{user:r},error:s}=await this.getUser();if(s)return{data:null,error:s};const i={all:[],phone:[],totp:[],webauthn:[]};for(const a of(n=r==null?void 0:r.factors)!==null&&n!==void 0?n:[])i.all.push(a),a.status==="verified"&&i[a.factor_type].push(a);return{data:i,error:null}}async _getAuthenticatorAssuranceLevel(){var n,r;const{data:{session:s},error:i}
574=await this.getSession();if(i)return this._returnResult({data:null,error:i});if(!s)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:a}=Du(s.access_token);let l=null;a.aal&&(l=a.aal);let o=l;((r=(n=s.user.factors)===null||n===void 0?void 0:n.filter(u=>u.status==="verified"))!==null&&r!==void 0?r:[]).length>0&&(o="aal2");const c=a.amr||[];return{data:{currentLevel:l,nextLevel:o,currentAuthenticationMethods:c},error:null}}async _getAuthorizationDetails(n){try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;return i?this._returnResult({data:null,error:i}):s?await Z(this.fetch,"GET",`${this.url}/oauth/authorizations/${n}`,{headers:this.headers,jwt:s.access_token,xform:a=>({data:a,error:null})}):this._returnResult({data:null,error:new Et})})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async _approveAuthorization(n,r){try{return await this._useSession(async s=>{const{data:{session:i},error:a}=s;if(a)return this._returnResult({data:null,error:a});if(!i)return this._returnResult({data:null,error:new Et});const l=await Z(this.fetch,"POST",`${this.url}/oauth/authorizations/${n}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"approve"},xform:o=>({data:o,error:null})});return l.data&&l.data.redirect_url&&Je()&&!(r!=null&&r.skipBrowserRedirect)&&window.location.assign(l.data.redirect_url),l})}catch(s){if(W(s))return this._returnResult({data:null,error:s});throw s}}async _denyAuthorization(n,r){try{return await this._useSession(async s=>{const{data:{session:i},error:a}=s;
574if(a)return this._returnResult({data:null,error:a});if(!i)return this._returnResult({data:null,error:new Et});const l=await Z(this.fetch,"POST",`${this.url}/oauth/authorizations/${n}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"deny"},xform:o=>({data:o,error:null})});return l.data&&l.data.redirect_url&&Je()&&!(r!=null&&r.skipBrowserRedirect)&&window.location.assign(l.data.redirect_url),l})}catch(s){if(W(s))return this._returnResult({data:null,error:s});throw s}}async _listOAuthGrants(){try{return await this._useSession(async n=>{const{data:{session:r},error:s}=n;return s?this._returnResult({data:null,error:s}):r?await Z(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,xform:i=>({data:i,error:null})}):this._returnResult({data:null,error:new Et})})}catch(n){if(W(n))return this._returnResult({data:null,error:n});throw n}}async _revokeOAuthGrant(n){try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;return i?this._returnResult({data:null,error:i}):s?await Z(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:s.access_token,query:{client_id:n.clientId},xform:()=>({data:{},error:null})}):this._returnResult({data:null,error:new Et})})}catch(r){if(W(r))return this._returnResult({data:null,error:r});throw r}}async fetchJwk(n,r={keys:[]}){let s=r.keys.find(o=>o.kid===n);if(s)return s;const i=Date.now();if(s=this.jwks.keys.find(o=>o.kid===n),s&&this.jwks_cached_at+BO>i)return s;const{data:a,error:l}=await Z(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(l)throw l;return!a.keys||a.keys.length===0||(this.jwks=a,this.jwks_cached_at=i,s=a.keys.find(o=>o.kid===n),!s)?null:s}async getClaims(n,r={}){try{let s=n;if(!s){const{data:m,error:j}
574=await this.getSession();if(j||!m.session)return this._returnResult({data:null,error:j});s=m.session.access_token}const{header:i,payload:a,signature:l,raw:{header:o,payload:d}}=Du(s);r!=null&&r.allowExpired||l4(a.exp);const c=!i.alg||i.alg.startsWith("HS")||!i.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(i.kid,r!=null&&r.keys?{keys:r.keys}:r==null?void 0:r.jwks);if(!c){const{error:m}=await this.getUser(s);if(m)throw m;return{data:{claims:a,header:i,signature:l},error:null}}const u=o4(i.alg),h=await crypto.subtle.importKey("jwk",c,u,!0,["verify"]);if(!await crypto.subtle.verify(u,h,l,ZO(`${o}.${d}`)))throw new jm("Invalid JWT signature");return{data:{claims:a,header:i,signature:l},error:null}}catch(s){if(W(s))return this._returnResult({data:null,error:s});throw s}}}jl.nextInstanceID={};const K4=jl;class F4 extends K4{constructor(n){super(n)}}class L4{constructor(n,r,s){var i,a,l;this.supabaseUrl=n,this.supabaseKey=r;const o=MO(n);if(!r)throw new Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",o),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",o),this.storageUrl=new URL("storage/v1",o),this.functionsUrl=new URL("functions/v1",o);const d=`sb-${o.hostname.split(".")[0]}-auth-token`,c={db:AO,realtime:PO,auth:Object.assign(Object.assign({},CO),{storageKey:d}),global:SO},u=_O(s??{},c);this.storageKey=(i=u.auth.storageKey)!==null&&i!==void 0?i:"",this.headers=(a=u.global.headers)!==null&&a!==void 0?a:{},u.accessToken?(this.accessToken=u.accessToken,this.auth=new Proxy({},{get:(h,g)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(g)} is not possible`)}})):this.auth=this._initSupabaseAuthClient((l=u.auth)!==null&&l!==void 0?l:{},this.headers,u.global.fetch),this.fetch=zO(r,this._getAccessToken.bind(this),u.global.fetch),this.realtime=this._initRealtimeClient(Object.assign({headers:this.headers,accessToken:this._getAccessToken.bind(this)},u.realtime)),this.accessToken&&this.accessToken().then(h=>this.realtime.setAuth(h)).catch(h=>console.warn("Failed to set initial Realtime auth token:",h)),this.rest=new OM(new URL("rest/v1",o).href,{headers:this.headers,schema:u.db.schema,fetch:this.fetch}),this.storage=new wO(this.storageUrl.href,this.headers,this.fetch,s==null?void 0:s.storage),u.accessToken||this._listenForAuthEvents()}get functions(){return new DM(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(n){return this.rest.from(n)}schema(n){return this.rest.schema(n)}rpc(n,r={},s={head:!1,get:!1,count:void 0}){return this.rest.rpc(n,r,s)}channel(n,r={config:{}}){return this.realtime.channel(n,r)}getChannels(){return this.realtime.getChannels()}removeChannel(n){return this.realtime.removeChannel(n)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var n,r;if(this.accessToken)return await this.accessToken();const{data:s}=await this.auth.getSession();return(r=(n=s.session)===null||n===void 0?void 0:n.access_token)!==null&&r!==void 0?r:this.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:n,persistSession:r,detectSessionInUrl:s,storage:i,userStorage:a,storageKey:l,flowType:o,lock:d,debug:c,throwOnError:u},h,g){const m={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new F4({url:this.authUrl.href,headers:Object.assign(Object.assign({},m),h),storageKey:l,autoRefreshToken:n,persistSession:r,detectSessionInUrl:s,storage:i,userStorage:a,flowType:o,lock:d,debug:c,throwOnError:u,fetch:g,hasCustomAuthorizationHeader:Object.keys(this.headers).some(j=>j.toLowerCase()==="authorization")})}_initRealtimeClient(n){return new QM(this.realtimeUrl.href,Object.assign(Object.assign({},n),{params:Object.assign({apikey:this.supabaseKey},n==null?void 0:n.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((r,s)=>{this._handleTokenChanged(r,"CLIENT",s==null?void 0:s.access_token)})}_handleTokenChanged(n,r,s){(n==="TOKEN_REFRESHED"||n==="SIGNED_IN")&&this.changedAccessToken!==s?(this.changedAccessToken=s,this.realtime.setAuth(s)):n==="SIGNED_OUT"&&(this.realtime.setAuth(),r=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}}const W4=(t,n,r)=>new L4(t,n,r);function V4(){if(typeof window<"u"||typeof process>"u")return!1;const t=process.version;if(t==null)return!1;const n=t.match(/^v(\d+)\./);return n?parseInt(n[1],10)<=18:!1}V4()&&console.warn("â ï¸ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to N
574ode.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");function U4(){var b,x;if(typeof window>"u")return;const t=location.hostname,r=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(f=>t===f||t.endsWith("."+f)),s="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",i=r?((b=t.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+s+")(?:-dev)?(?=\\.|$)","i")))==null?void 0:b[1])??((x=t.match(new RegExp("^("+s+")(?=[.-])","i")))==null?void 0:x[1]):void 0,a=window.parent&&window.parent!==window;if(!i||!a)return localStorage;const l=t.endsWith(".lovableproject-dev.com")||t.endsWith(".gpt-eng.com"),o=l?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,d=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),c=d&&o.test(d)?[d]:l?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],u="lovable-preview-auth:result",h=2e3,g=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),m=(f,v,w)=>new Promise(k=>{const N=g();let S=!1,A;const P=O=>{S||(S=!0,clearTimeout(A),window.removeEventListener("message",D),k(O))},D=O=>{if(c.indexOf(O.origin)<0)return;const V=O.data;V&&V.type===u&&V.requestId===N&&P(V)};window.addEventListener("message",D);const G={type:f,requestId:N,projectId:i,key:v};w!==void 0&&(G.value=w);for(const O of c)window.parent.postMessage(G,O);A=setTimeout(()=>P(null),h)});let j=!0;const p=250;return{getItem:async f=>{let v=await m("lovable-preview-auth:get",f);return!v&&j&&(await new Promise(w=>setTimeout(w,p)),v=await m("lovable-preview-auth:get",f)),j=!1,v&&v.ok&&typeof v.value=="string"?v.value===""?(localStorage.removeItem(f),null):v.value:localStorage.getItem(f)},setItem:(f,v)=>(localStorage.setItem(f,v),m("lovable-preview-auth:set",f,v).then(w=>{w&&w.ok&&typeof w.value=="string"&&localStorage.getItem(f)===v&&(w.value===""?localStorage.removeItem(f):localStorage.setItem(f,w.value))})),removeItem:f=>(localStorage.removeItem(f),m("lovable-preview-auth:remove",f).then(()=>{}))}}const $4="https://jktcmzeltwjwdzxntuvk.supabase.co",H4="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImprdGNtemVsdHdqd2R6eG50dXZrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjQxNjA3MzYsImV4cCI6MjA3OTczNjczNn0.4ChlDovdW45qbk-eQ7xnCFr97hDxYQL64IGIsCzkgRA",gp=W4($4,H4,{auth:{storage:U4(),persistSession:!0,autoRefreshToken:!0}}),ka=[{id:"intro",number:"00",title:"Intro"},{id:"chapter-1",number:"01",title:"Das Problem"},{id:"chapter-2",number:"02",title:"POAS"},{id:"chapter-3",number:"03",title:"Framework"},{id:"chapter-4",number:"04",title:"Budget"},{id:"chapter-5",number:"05",title:"Case Study"},{id:"chapter-6",number:"06",title:"Takeaways"},{id:"chapter-7",number:"07",title:"30-Tage-Plan"},{id:"chapter-8",number:"08",title:"Audit"},{id:"chapter-9",number:"09",title:"Checklist"}],Z4=({onPrint:t})=>{var c;const[n,r]=y.useState("intro"),[s,i]=y.useState(!1),a=ka.length-1,l=ka.findIndex(u=>u.id===n),o=l===0?0:l/a*100;y.useEffect(()=>{const u=()=>{i(window.scrollY>100);const h=ka.map(g=>({id:g.id,element:document.getElementById(g.id)})).filter(g=>g.element);for(let g=h.length-1;g>=0;g--){const{id:m,element:j}=h[g];if(j&&j.getBoundingClientRect().top<=150){r(m);break}}};return window.addEventListener("scroll",u,{passive:!0}),()=>window.removeEventListener("scroll",u)},[]);const d=u=>{const h=document.getElementById(u);h&&h.scrollIntoView({behavior:"smooth"})};return e.jsxs("header",{className:`sticky top-0 z-50 transition-all duration-300 ${s?"bg-swiss-white shadow-md":"bg-swiss-white"}`,children:[e.jsx("div",{className:"h-1 bg-swiss-black/10",children:e.jsx("div",{className:"h-full bg-swiss-black transition-all duration-300 ease-out",style:{width:`${o}%`}})}),e.jsx("div",{className:"max-w-[1200px] mx-auto px-4 md:px-8",children:e.jsxs("div",{className:"flex items-center justify-between h-14 md:h-16",children:[e.jsx("a",{href:"/",className:"h-7 md:h-8 shrink-0",children:e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-full w-auto object-contain"})}),e.jsx("nav",{className:"hidden lg:flex items-center gap-0.5",children:ka.map(u=>e.jsx("button",{onClick:()=>d(u.id),className:`px-2.5 py-1.5 font-jetbrains text-xs transition-colors ${n===u.id?"bg-swiss-black text-swiss-white":"text-swiss-black/60 hover:text-swiss-black hover:bg-swiss-black/5"}`,title:u.title,children:u.number},u.id))}),e.jsx("div",{className:"flex lg:hidden items-center gap-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-jetbrains text-xs text-swiss-black/60",children:"Kapitel"}),e.jsx("span",{className:"font-jetbrains text-sm font-bold bg-swiss-black text-swiss-white px-2 py-0.5",children:((c=ka.find(u=>u.id===n))==null?void 0:c.number)||"00"}),e.jsx("span",{className:"font-jetbrains text-xs text-swiss-black/40",children:"/ 09"})]})}),e.jsxs(q,{variant:"outline",size:"sm",onClick:t,className:"no-print border-2 border-swiss-black text-swiss-black hover:bg-swiss-black hover:text-swiss-white font-inter-tight font-bold h-8 px-3",children:[e.jsx(G2,{className:"w-3.5 h-3.5 mr-1.5"}),e.jsx("span",{className:"hidden md:inline text-xs",children:"PDF"})]})]})})]})},Un=({id:t,number:n,title:r,children:s})=>e.jsxs("article",{id:t,className:"mb-20 md:mb-32 scroll-mt-24",children:[e.jsxs("header",{className:"mb-10 md:mb-16",children:[e.jsxs("div",{className:"flex items-start gap-4 md:gap-8",children:[e.jsx("span",{className:"font-inter-tight text-6xl md:text-8xl lg:text-9xl font-black text-swiss-black/10 leading-none select-none",children:n}),e.jsxs("div",{className:"pt-2 md:pt-4",children:[e.jsxs("span",{className:"block font-jetbrains text-xs uppercase tracking-[0.2em] text-swiss-black/50 mb-2",children:["Kapitel ",n]}),e.jsx("h2",{className:"font-inter-tight text-2xl md:text-4xl lg:text-5xl font-black text-swiss-black leading-tight",children:r})]})]}),e.jsx("div",{className:"mt-6 md:mt-10 h-0.5 bg-swiss-black"})]}),e.jsx("div",{className:"space-y-6",children:s})]}),q4=()=>{const[t,n]=y.useState(1e4),[r,s]=y.useState(4e4),[i,a]=y.useState(25),l=y.useMemo(()=>{const d=r/t,c=r*(i/100),u=c-t,h=c/t,g=h>1,m=Math.abs(h-1)<.01,j=t/r*100;return{roas:d.toFixed(2),grossProfit:c.toFixed(0),netProfit:u.toFixed(0),poas:h.toFixed(2),isProfitable:g,isBreakEven:m,breakEvenMargin:j.toFixed(1)}},[t,r,i]),o=d=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(d);return e.jsxs("div",{className:"bg-swiss-white border-2 border-swiss-black p-8 md:p-12 my-12",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("span",{className:"font-inter-tight text-xs uppercase tracking-[0.2em] text-swiss-black/60",children:"Interaktiv"}),e.jsx("h3",{className:"font-inter-tight text-2xl md:text-3xl font-black text-swiss-black mt-2",children:"POAS-Rechner"}),e.jsx("p",{className:"text-swiss-black/70 mt-2 font-inter",children:"Berechne deinen echten Gewinn pro Werbe-Euro"})]}),e.jsxs("div",{className:"space-y-8 mb-10",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-baseline mb-3",children:[e.jsx("label",{className:"font-inter text-sm font-medium text-swiss-black",children:"Werbeausgaben (Ad Spend)"}),e.jsx("span",{className:"font-jetbrains text-lg font-bold text-swiss-black",children:o(t)})]}),e.jsx("input",{type:"range",value:t,onChange:d=>n(Number(d.target.value)),min:1e3,max:1e5,step:500,className:"w-full h-2 bg-swiss-black/20 rounded-lg appearance-none cursor-pointer accent-swiss-black"}),e.jsxs("div",{className:"flex justify-between text-xs text-swiss-black/50 mt-1 font-jetbrains",children:[e.jsx("span",{children:"1.000 â¬"}),e.jsx("span",{children:"100.000 â¬"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-baseline mb-3",children:[e.jsx("label",{className:"font-inter text-sm font-medium text-swiss-black",children:"Umsatz"}),e.jsx("span",{className:"font-jetbrains text-lg font-bold text-swiss-black",children:o(r)})]}),e.jsx("input",{type:"range",value:r,onChange:d=>s(Number(d.target.value)),min:1e3,max:5e5,step:1e3,className:"w-full h-2 bg-swiss-black/20 rounded-lg appearance-none cursor-pointer accent-swiss-black"}),e.jsxs("div",{className:"flex justify-between text-xs text-swiss-black/50 mt-1 font-jetbrains",children:[e.jsx("span",{children:"1.000 â¬"}),e.jsx("span",{children:"500.000 â¬"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-baseline mb-3",children:[e.jsx("label",{className:"font-inter text-sm font-medium text-swiss-black",children:"Marge (%)"}),e.jsxs("span",{className:"font-jetbrains text-lg font-bold text-swiss-black",children:[i,"%"]})]}),e.jsx("input",{type:"range",value:i,onChange:d=>
574a(Number(d.target.value)),min:5,max:80,step:1,className:"w-full h-2 bg-swiss-black/20 rounded-lg appearance-none cursor-pointer accent-swiss-black"}),e.jsxs("div",{className:"flex justify-between text-xs text-swiss-black/50 mt-1 font-jetbrains",children:[e.jsx("span",{children:"5%"}),e.jsx("span",{children:"80%"})]})]})]}),e.jsxs("div",{className:"border-t-2 border-swiss-black pt-8",children:[e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:[e.jsxs("div",{className:"bg-swiss-black/5 p-6",children:[e.jsx("span",{className:"font-inter text-xs uppercase tracking-wider text-swiss-black/60 block mb-2",children:"ROAS (Return on Ad Spend)"}),e.jsxs("span",{className:"font-jetbrains text-4xl font-bold text-swiss-black",children:[l.roas,"x"]}),e.jsx("p",{className:"text-sm text-swiss-black/60 mt-2 font-inter",children:"= Umsatz / Werbeausgaben"})]}),e.jsxs("div",{className:`p-6 ${l.isProfitable?"bg-profit-green/10 border-2 border-profit-green":"bg-signal-red/10 border-2 border-signal-red"}`,children:[e.jsx("span",{className:"font-inter text-xs uppercase tracking-wider text-swiss-black/60 block mb-2",children:"POAS (Profit on Ad Spend)"}),e.jsxs("span",{className:`font-jetbrains text-4xl font-bold ${l.isProfitable?"text-profit-green":"text-signal-red"}`,children:[l.poas,"x"]}),e.jsx("p",{className:"text-sm text-swiss-black/60 mt-2 font-inter",children:"= Rohertrag / Werbeausgaben"})]})]}),e.jsx("div",{className:"bg-swiss-black text-swiss-white p-6",children:e.jsxs("div",{className:"grid md:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"block text-swiss-white/60 text-xs uppercase tracking-wider mb-1",children:"Rohertrag"}),e.jsx("span",{className:"font-jetbrains text-xl font-bold",children:o(parseFloat(l.grossProfit))})]}),e.jsxs("div",{children:[e.jsx("span",{className:"block text-swiss-white/60 text-xs uppercase tracking-wider mb-1",children:"â Werbeausgaben"}),e.jsx("span",{className:"font-jetbrains text-xl font-bold",children:o(t)})]}),e.jsxs("div",{className:`${l.isProfitable?"text-profit-green":"text-signal-red"}`,children:[e.jsx("span",{className:"block text-swiss-white/60 text-xs uppercase tracking-wider mb-1",children:"= Netto-Gewinn"}),e.jsx("span",{className:"font-jetbrains text-2xl font-bold",children:o(parseFloat(l.netProfit))})]})]})}),e.jsx("div",{className:`mt-6 p-4 border-l-4 ${l.isProfitable?"border-profit-green bg-profit-green/5":"border-signal-red bg-signal-red/5"}`,children:e.jsx("p",{className:"font-inter font-medium text-swiss-black",children:l.isBreakEven?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-swiss-black font-bold",children:"â Break-Even:"})," Du machst keinen Gewinn, aber auch keinen Verlust. POAS = 1.00x bedeutet, dass dein Rohertrag exakt deine Werbeausgaben deckt."]}):l.isProfitable?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-profit-green font-bold",children:"â Profitabel:"})," Für jeden 1 ⬠in Ads bekommst du"," ",e.jsxs("span",{className:"font-jetbrains font-bold",children:[l.poas," â¬"]})," ","Rohertrag zurück â das sind"," ",e.jsx("span",{className:"font-jetbrains font-bold text-profit-green",children:o(parseFloat(l.netProfit))})," ","Netto-Gewinn."]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-signal-red font-bold",children:"â Verlust:"})," Du verlierst"," ",e.jsx("span",{className:"font-jetbrains font-bold",children:o(Math.abs(parseFloat(l.netProfit)))})," ","mit diesen Kampagnen. Break-Even (POAS = 1.00x) benötigt mindestens"," ",e.jsxs("span",{className:"font-jetbrains font-bold",children:[l.breakEvenMargin,"%"]})," ","Marge."]})})})]})]})},bb=[{name:"Kampagne A",subtitle:'"ROAS-Optimiert"',umsatz:8e4,gewinn:0,adSpend:2e4},{name:"Kampagne B",subtitle:'"POAS-Optimiert"',umsatz:5e4,gewinn:15e3,adSpend:1e4}],jb=t=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(t),Y4=()=>{const t=Math.max(...bb.map(n=>n.umsatz));return e.jsxs("div",{className:"bg-swiss-white border-2 border-swiss-black p-8 md:p-12 my-12",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("span",{className:"font-inter-tight text-xs uppercase tracking-[0.2em] text-swiss-black/60",children:"Vergleich"}),e.jsx("h3",{className:"font-inter-tight text-2xl md:text-3xl font-black text-swiss-black mt-2",children:"ROAS vs. POAS Optimierung"}),e.jsx("p",{className:"text-swiss-black/70 mt-2 font-inter",children:"Mehr Umsatz bedeutet nicht automatisch mehr Gewinn"})]}),e.jsx("div",{className:"space-y-8 mb-10",children:bb.map((n,r)=>e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-inter-tight font-bold text-swiss-black",children:n.name}),e.jsx("span",{className:"font-inter text-sm text-swiss-black/60",children:n.subtitle})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"font-inter text-swiss-black/70",children:"Umsatz"}),e.jsx("span",{className:"font-jetbrains font-bold",children:jb(n.umsatz)})]}),e.jsx("div",{className:"h-8 bg-swiss-black/10 relative overflow-hidden",children:e.jsx("div",{className:"h-full bg-swiss-black/80 transition-all duration-500",style:{width:`${n.umsatz/t*100}%`}})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"font-inter text-swiss-black/70",children:"Gewinn"}),e.jsx("span",{className:`font-jetbrains font-bold ${n.gewinn>0?"text-profit-green":"text-signal-red"}`,children:jb(n.gewinn)})]}),e.jsx("div",{className:"h-8 bg-swiss-black/10 relative overflow-hidden",children:e.jsx("div",{className:`h-full transition-all duration-500 ${n.gewinn>0?"bg-profit-green":"bg-signal-red"}`,style:{width:`${n.gewinn/t*100}%`}})})]})]},r))}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mt-8",children:[e.jsxs("div",{className:"border-2 border-signal-red p-6 bg-signal-red/5",children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-lg font-black text-swiss-black",children:"Kampagne A"}),e.jsx("span",{className:"text-swiss-black/60 text-sm font-inter",children:'"ROAS-Optimiert"'})]}),e.jsx("span",{className:"bg-signal-red text-swiss-white px-3 py-1 text-xs font-bold uppercase tracking-wider",children:"Falle"})]}),e.jsxs("div",{className:"space-y-2 font-jetbrains text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Umsatz:"}),e.jsx("span",{className:"font-bold",children:"80.000 â¬"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Ad Spend:"}),e.jsx("span",{className:"font-bold",children:"20.000 â¬"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"ROAS:"}),e.jsx("span",{className:"font-bold",children:"4,0x"})]}),e.jsx("div",{className:"border-t border-swiss-black/20 pt-2 mt-2",children:e.jsxs("div",{className:"flex justify-between text-signal-red",children:[e.jsx("span",{className:"font-bold",children:"Gewinn:"}),e.jsx("span",{className:"font-bold text-lg",children:"0 â¬"})]})})]})]}),e.jsxs("div",{className:"border-2 border-profit-green p-6 bg-profit-green/5",children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-lg font-black text-swiss-black",children:"Kampagne B"}),e.jsx("span",{className:"text-swiss-black/60 text-sm font-inter",children:'"POAS-Optimiert"'})]}),e.jsx("span",{className:"bg-profit-green text-swiss-white px-3 py-1 text-xs font-bold uppercase tracking-wider",children:"Skalierbar"})]}),e.jsxs("div",{className:"space-y-2 font-jetbrains text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Umsatz:"}),e.jsx("span",{className:"font-bold",children:"50.000 â¬"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Ad Spend:"}),e.jsx("span",{className:"font-bold",children:"10.000 â¬"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"ROAS:"}),e.jsx("span",{className:"font-bold",children:"5,0x"})]}),e.jsx("div",{className:"border-t border-swiss-black/20 pt-2 mt-2",children:e.jsxs("div",{className:"flex justify-between text-profit-green",children:[e.jsx("span",{className:"font-bold",children:"Gewinn:"}),e.jsx("span",{className:"font-bold text-lg",children:"15.000 â¬"})]})})]})]})]}),e.jsx("p",{className:"text-center text-swiss-black/60 font-inter text-sm mt-6",children:"Kampagne A bringt 60% mehr Umsatz, aber 0 ⬠Gewinn. Kampagne B ist der klare Gewinner."})]})},Eo=[{month:"Juni",umsatz:45e3,gewinn:12339,spend:9800},{month:"Juli",umsatz:58e3,gewinn:17360,spend:11e3},{month:"August",umsatz:74e3,gewinn:23959,spend:11300}],Ou=t=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(t),J4=()=>{const t=Math.max(...Eo.map(n=>n.umsatz));return e.jsxs("div",{className:"bg-swiss-black text-swiss-white p-8 md:p-12 my-12",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("span",{className:"font-inter-tight text-xs uppercase tracking-[0.2em] text-swiss-white/60",children:"Case Study"}),e.jsx("h3",{className:"font-inter-tight text-3xl md:text-4xl font-black text-swiss-white mt-2",children:"Stahlia GmbH"}),e.jsx("p",{className:"text-swiss-white/70 mt-2 font-inter",children:"Von Amazon-Abhängigkeit zu profitablem E-Commerce"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4 md:gap-6 mb-10",children:[e.jsxs("div",{className:"text-center p-4 md:p-6 border border-swiss-white/20",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-10 h-10 md:w-12 md:h-12 bg-profit-green/20 rounded-full mb-3",children:e.jsx(Os,{className:"w-5 h-5 md:w-6 md:h-6 text-profit-green"})}),e.jsx("span",{className:"block font-jetbrains text-3xl md:text-5xl font-bold text-profit-green",children:"+85%"}),e.jsx("span",{className:"block text-swiss-white/60 text-xs md:text-sm mt-1 uppercase tracking-wider",children:"Umsatz"})]}),e.jsxs("div",{className:"text-center p-4 md:p-6 border border-swiss-white/20",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-10 h-10 md:w-12 md:h-12 bg-swiss-white/10 rounded-full mb-3",children:e.jsx(Dl,{className:"w-5 h-5 md:w-6 md:h-6 text-swiss-white"})}),e.jsx("span",{className:"block font-jetbrains text-3xl md:text-5xl font-bold text-swiss-white",children:"90"}),e.jsx("span",{className:"block text-swiss-white/60 text-xs md:text-sm mt-1 uppercase tracking-wider",children:"Tage"})]}),e.jsxs("div",{className:"text-center p-4 md:p-6 border border-swiss-white/20",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-10 h-10 md:w-12 md:h-12 bg-profit-green/20 rounded-full mb-3",children:e.jsx(ac,{className:"w-5 h-5 md:w-6 md:h-6 text-profit-green"})}),e.jsx("span",{className:"block font-jetbrains text-3xl md:text-5xl font-bold text-profit-green",children:"+94%"}),e.jsx("span",{className:"block text-swiss-white/60 text-xs md:text-sm mt-1 uppercase tracking-wider",children:"Gewinn"})]})]}),e.jsxs("div",{className:"mb-10 space-y-4",children:[e.jsx("div",{className:"flex items-end justify-between h-[200px] border-b border-l border-swiss-white/30 p-4",children:Eo.map((n,r)=>e.jsxs("div",{className:"flex flex-col items-center flex-1 h-full justify-end",children:[e.jsxs("div",{className:"w-full max-w-[80px] space-y-1",children:[e.jsx("div",{className:"w-full bg-swiss-white/30 transition-all duration-500",style:{height:`${n.umsatz/t*140}px`}}
574),e.jsx("div",{className:"w-full bg-profit-green -mt-1 transition-all duration-500",style:{height:`${n.gewinn/t*140}px`}})]}),e.jsx("span",{className:"mt-2 font-inter-tight text-sm font-bold text-swiss-white/80",children:n.month})]},r))}),e.jsxs("div",{className:"flex justify-center gap-6 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 bg-swiss-white/30"}),e.jsx("span",{className:"text-swiss-white/70",children:"Umsatz"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 bg-profit-green"}),e.jsx("span",{className:"text-swiss-white/70",children:"Gewinn"})]})]})]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:Eo.map((n,r)=>e.jsxs("div",{className:`p-5 border ${r===Eo.length-1?"border-profit-green bg-profit-green/10":"border-swiss-white/20"}`,children:[e.jsx("span",{className:"font-inter-tight text-sm font-bold text-swiss-white/60 uppercase tracking-wider",children:n.month}),e.jsxs("div",{className:"mt-3 space-y-2",children:[e.jsxs("div",{className:"flex justify-between font-jetbrains",children:[e.jsx("span",{className:"text-swiss-white/70 text-sm",children:"Umsatz"}),e.jsx("span",{className:"font-bold",children:Ou(n.umsatz)})]}),e.jsxs("div",{className:"flex justify-between font-jetbrains",children:[e.jsx("span",{className:"text-swiss-white/70 text-sm",children:"Spend"}),e.jsx("span",{className:"font-bold",children:Ou(n.spend)})]}),e.jsxs("div",{className:"flex justify-between font-jetbrains pt-2 border-t border-swiss-white/10",children:[e.jsx("span",{className:"text-profit-green text-sm",children:"Gewinn"}),e.jsx("span",{className:"font-bold text-profit-green",children:Ou(n.gewinn)})]})]})]},r))}),e.jsx("div",{className:"mt-10 pt-8 border-t border-swiss-white/20",children:e.jsxs("blockquote",{className:"relative",children:[e.jsx("div",{className:"text-profit-green text-4xl font-serif absolute -top-2 -left-2",children:'"'}),e.jsx("p",{className:"text-swiss-white/90 italic pl-6 pr-4 text-sm md:text-base leading-relaxed",children:"Die Zusammenarbeit mit AdsHero ist von Anfang an professionell und zielführend verlaufen â und läuft weiterhin sehr erfolgreich. Unsere Google-Ads-Kampagnen wurden effizient aufgesetzt und werden kontinuierlich optimiert. Besonders überzeugt uns die strategische Herangehensweise, die transparente Kommunikation und die schnelle Reaktionszeit bei Fragen oder Anpassungen. Wer eine kompetente Agentur für Google Ads sucht, ist bei AdsHero bestens aufgehoben. Klare Empfehlung!"}),e.jsx("footer",{className:"mt-4 pl-6",children:e.jsx("span",{className:"text-swiss-white font-inter-tight font-bold text-sm",children:"â Geschäftsführung Stahlia GmbH"})})]})})]})},Ru=({headline:t,subline:n,variant:r="compact"})=>r==="compact"?e.jsx("div",{className:"no-print bg-swiss-black border-l-4 border-cta p-6 md:p-8 my-12 md:my-16",children:e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-inter-tight text-lg md:text-xl font-bold text-swiss-white m-0",children:t}),e.jsx("p",{className:"text-swiss-white/60 text-sm md:text-base font-inter m-0 mt-1",children:n})]}),e.jsx(q,{size:"lg",variant:"cta",className:"hover:brightness-125 hover:scale-[1.02] hover:shadow-gold-glow font-inter-tight font-bold shrink-0 transition-all",asChild:!0,children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"InlineReportCTA"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt Termin sichern ",e.jsx(dt,{className:"ml-2 h-4 w-4"})]})})]})}):e.jsxs("div",{className:"no-print bg-swiss-black border-l-4 border-cta text-swiss-white p-8 md:p-12 my-12 md:my-16",children:[e.jsx("h3",{className:"font-inter-tight text-2xl md:text-3xl font-black mb-3",children:t}),e.jsx("p",{className:"text-swiss-white/70 mb-6 font-inter text-lg",children:n}),e.jsx(q,{size:"lg",variant:"cta",className:"hover:brightness-125 hover:scale-[1.02] hover:shadow-gold-glow font-inter-tight font-bold transition-all",asChild:!0,children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"InlineReportCTA"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Kostenloses Audit anfordern ",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})]}),ds=({children:t})=>{const n=String(t),r=n.charAt(0),s=n.slice(1);return e.jsxs("p",{className:"text-lg md:text-xl text-swiss-black/80 leading-relaxed font-inter",children:[e.jsx("span",{className:"float-left font-inter-tight text-6xl md:text-7xl font-black text-swiss-black leading-none mr-3 mt-1",children:r}),s]})},Gu=({children:t})=>e.jsx("aside",{className:"my-10 md:my-16 py-8 border-t-2 border-b-2 border-swiss-black",children:e.jsx("p",{className:"font-inter-tight text-2xl md:text-3xl font-bold text-swiss-black text-center",children:t})}),To=({variant:t="default",title:n,icon:r,children:s,className:i=""})=>{const a={default:"border-swiss-black bg-swiss-black/5",warning:"border-signal-red bg-signal-red/5",success:"border-profit-green bg-profit-green/5"},l={default:"text-swiss-black",warning:"text-signal-red",success:"text-profit-green"};return e.jsxs("div",{className:`border-l-4 ${a[t]} p-6 md:p-8 my-8 ${i}`,children:[n&&e.jsxs("h4",{className:`flex items-center gap-3 mb-4 font-inter-tight text-lg font-bold ${l[t]}`,children:[r,n]}),s]})},Iu=({children:t,className:n=""})=>e.jsx("div",{className:`bg-swiss-black text-swiss-white p-6 md:p-8 my-8 font-jetbrains text-sm md:text-base ${n}`,children:t}),vb=({title:t,adspend:n,result:r,poas:s,variant:i,label:a,description:l})=>{const o=i==="good";return e.jsxs("div",{className:`border-2 p-6 md:p-8 ${o?"border-profit-green bg-profit-green/5":"border-signal-red bg-signal-red/5"}`,children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsx("h4",{className:"font-inter-tight text-lg font-black text-swiss-black",children:t}),e.jsx("span",{className:`px-3 py-1 text-xs font-bold uppercase tracking-wider text-swiss-white ${o?"bg-profit-green":"bg-signal-red"}`,children:a})]}),e.jsxs("div",{className:"space-y-2 font-jetbrains text-sm mb-4",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Adspend:"}),e.jsx("span",{className:"font-bold",children:n})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-swiss-black/70",children:"Gewinn:"}),e.jsx("span",{className:"font-bold",children:r})]})]}),e.jsx("div",{className:"border-t-2 border-swiss-black/10 pt-4",children:e.jsxs("span",{className:`font-jetbrains text-4xl font-bold ${o?"text-profit-green":"text-signal-red"}`,children:["POAS = ",s]})}),e.jsx("p",{className:"text-sm text-swiss-black/70 mt-4 font-inter",children:l})]})},Q4=()=>
574{const t=[{name:"Möbelfuà X",revenue:"20k â¬",margin:"35%",poas:"2,33",tag:"profit",tagLabel:"Profitabel"},{name:"Tischbein Z",revenue:"7k â¬",margin:"45%",poas:"2,10",tag:"best",tagLabel:"Bestseller"},{name:"Spezialteil A",revenue:"2k â¬",margin:"40%",poas:"0,44",tag:"kill",tagLabel:"Killen"},{name:"Beschlag Y",revenue:"10k â¬",margin:"20%",poas:"0,66",tag:"kill",tagLabel:"Unprofitabel"}],n=r=>({profit:"bg-profit-green text-swiss-white",best:"bg-swiss-black text-swiss-white",kill:"bg-signal-red text-swiss-white"})[r]||"bg-swiss-black/20 text-swiss-black";return e.jsx("div",{className:"overflow-x-auto my-8 border-2 border-swiss-black",children:e.jsxs("table",{className:"w-full text-sm md:text-base",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-swiss-black text-swiss-white",children:[e.jsx("th",{className:"text-left p-3 md:p-4 font-inter-tight font-bold",children:"Produkt"}),e.jsx("th",{className:"text-left p-3 md:p-4 font-inter-tight font-bold",children:"Umsatz"}),e.jsx("th",{className:"text-left p-3 md:p-4 font-inter-tight font-bold",children:"Marge"}),e.jsx("th",{className:"text-left p-3 md:p-4 font-inter-tight font-bold",children:"POAS"}),e.jsx("th",{className:"text-left p-3 md:p-4 font-inter-tight font-bold",children:"Label"})]})}),e.jsx("tbody",{children:t.map((r,s)=>e.jsxs("tr",{className:s%2===0?"bg-swiss-white":"bg-swiss-black/5",children:[e.jsx("td",{className:"p-3 md:p-4 font-inter",children:r.name}),e.jsx("td",{className:"p-3 md:p-4 font-jetbrains",children:r.revenue}),e.jsx("td",{className:"p-3 md:p-4 font-jetbrains",children:r.margin}),e.jsx("td",{className:"p-3 md:p-4 font-jetbrains font-bold",children:r.poas}),e.jsx("td",{className:"p-3 md:p-4",children:e.jsx("span",{className:`inline-block px-2 py-1 text-xs font-bold uppercase ${n(r.tag)}`,children:r.tagLabel})})]},s))})]})})},yb=({steps:t})=>e.jsx("div",{className:"space-y-8 my-8",children:t.map((n,r)=>e.jsxs("div",{className:"relative pl-16 md:pl-20",children:[e.jsx("div",{className:"absolute left-0 top-0 w-10 h-10 md:w-12 md:h-12 bg-swiss-black text-swiss-white flex items-center justify-center font-jetbrains font-bold text-lg",children:String(r+1).padStart(2,"0")}),e.jsx("span",{className:"block font-inter-tight text-lg md:text-xl font-bold text-swiss-black mb-2",children:n.title}),e.jsx("p",{className:"text-swiss-black/70 font-inter leading-relaxed",children:n.desc})]},r))}),wr=({items:t})=>e.jsx("ul",{className:"space-y-4 my-8",children:t.map((n,r)=>e.jsxs("li",{className:"relative pl-10 pb-4 border-b border-swiss-black/10 last:border-b-0 font-inter text-swiss-black/80",children:[e.jsx(Zt,{className:"absolute left-0 top-0.5 w-6 h-6 text-profit-green"}),n]},r))}),ln=({children:t,className:n=""})=>e.jsx("p",{className:`text-lg md:text-xl text-swiss-black/80 leading-relaxed font-inter mb-6 ${n}`,children:t}),cs=({children:t})=>e.jsxs("li",{className:"relative pl-8 text-lg text-swiss-black/80 font-inter mb-3",children:[e.jsx("span",{className:"absolute left-0 top-2 w-2 h-2 bg-swiss-black"}),t]}),$n=({children:t,className:n=""})=>e.jsx("h3",{className:`font-inter-tight text-xl md:text-2xl font-bold text-swiss-black mt-10 mb-4 pl-4 border-l-4 border-swiss-black ${n}`,children:t}),X4=()=>{const t=y.useRef(!1);y.useEffect(()=>{var i;if(t.current)return;t.current=!0;const s=crypto.randomUUID();(i=window.fbq)==null||i.call(window,"track","CompleteRegistration",{},{eventID:s}),gp.functions.invoke("meta-capi-event",{body:{eventName:"CompleteRegistration",eventId:s,sourceUrl:window.location.href}}).catch(a=>console.error("CAPI CompleteRegistration error:",a))},[]);const n=()=>{window.print()},r={"@context":"https://schema.org","@type":"Article",headline:"Wie du mit Google Ads endlich Gewinn statt nur Umsatz skalierst",description:"Das ProfitEngine⢠Framework für E-Commerce Brands: Lerne, wie du mit POAS statt ROAS echten Profit aus deinen Google Ads Kampagnen holst.",author:{"@type":"Organization",name:"AdsHero",url:"https://adshero.de"},publisher:{"@type":"Organization",name:"AdsHero",logo:{"@type":"ImageObject",url:"https://adshero.de/adshero-logo.png"}},datePublished:"2024-01-15",dateModified:"2025-01-15",mainEntityOfPage:{"@type":"WebPage","@id":"https://adshero.de/resources/profit-audit-e7k2m"}};return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Profit-Audit Report â Wie du mit Google Ads endlich Gewinn
574statt nur Umsatz skalierst | AdsHero"}),e.jsx("meta",{name:"description",content:"Das ProfitEngine⢠Framework für E-Commerce: Lerne in 9 Kapiteln, wie du mit POAS statt ROAS echten Profit aus deinen Google Ads Kampagnen holst. Inkl. 30-Tage-Plan."}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"}),e.jsx("meta",{property:"og:title",content:"Profit-Audit Report â Google Ads Gewinn statt Umsatz | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Das Framework für E-Commerce Brands, die das 'Umsatz um jeden Preis' Spiel nicht mehr mitspielen wollen."}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/resources/profit-audit-e7k2m"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"Profit-Audit Report â Google Ads Gewinn statt Umsatz"}),e.jsx("meta",{name:"twitter:description",content:"Das ProfitEngine⢠Framework für E-Commerce: POAS statt ROAS."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(r)})]}),e.jsxs("div",{className:"min-h-screen bg-swiss-white",children:[e.jsx(Z4,{onPrint:n}),e.jsx("section",{className:"py-16 md:py-24 lg:py-32 border-b-2 border-swiss-black",children:e.jsx("div",{className:"max-w-[1200px] mx-auto px-4 md:px-8",children:e.jsxs("div",{className:"grid lg:grid-cols-12 gap-8 lg:gap-16",children:[e.jsxs("div",{className:"lg:col-span-8",children:[e.jsx("span",{className:"inline-block font-jetbrains text-xs uppercase tracking-[0.2em] text-swiss-black/60 mb-4",children:"Profit-Audit Report ⢠9 Kapitel"}),e.jsxs("h1",{className:"font-inter-tight text-4xl md:text-5xl lg:text-6xl xl:text-7xl font-black text-swiss-black leading-[0.95] tracking-tight",children:["Wie du mit Google Ads endlich"," ",e.jsxs("span",{className:"relative inline-block",children:[e.jsx("span",{className:"relative z-10",children:"Gewinn"}),e.jsx("span",{className:"absolute bottom-2 left-0 w-full h-3 md:h-4 bg-profit-green/30 -z-0"})]})," ","statt nur Umsatz skalierst"]})]}),e.jsxs("div",{className:"lg:col-span-4 flex flex-col justify-end",children:[e.jsx("p",{className:"text-lg md:text-xl text-swiss-black/70 font-inter leading-relaxed",children:'Das Framework für E-Commerce Brands, die das "Umsatz um jeden Preis" Spiel nicht mehr mitspielen wollen.'}),e.jsx("div",{className:"h-1 w-16 bg-swiss-black mt-6"})]})]})})}),e.jsxs("div",{className:"max-w-[900px] mx-auto px-4 md:px-8 py-16 md:py-24",children:[e.jsx("section",{id:"intro",className:"mb-20 md:mb-32 scroll-mt-24",children:e.jsxs("div",{className:"border-2 border-swiss-black p-8 md:p-12 relative",children:[e.jsx("span",{className:"absolute -top-4 left-8 bg-swiss-white px-4 font-inter-tight text-sm font-bold uppercase tracking-wider text-swiss-black",children:"Vorwort"}),e.jsx("h2",{className:"font-inter-tight text-2xl md:text-3xl font-black text-swiss-black mb-6",children:"Warum dieser Report anders ist"}),e.jsx(ln,{children:"Die meisten Google-Ads-Reports erzählen dir, wie du deine Klickpreise senkst, deinen ROAS erhöhst oder mehr Impressionen bekommst."}),e.jsx(Gu,{children:"Das Problem: Keins davon garantiert dir Gewinn."}),e.jsx(ln,{children:'Dieser Report ist anders. Wir sprechen nicht über "mehr Reichweite" oder "mehr Klicks" â sondern darüber, wie viel Geld am Ende wirklich bei dir hängen bleibt.'}),e.jsx("div",{className:"bg-swiss-black text-swiss-white p-6 mt-8",children:e.jsx("p",{className:"font-inter font-medium text-lg m-0",children:"Wenn du diesen Report aufmerksam liest, wirst du nie wieder naiv auf den ROAS schauen."})})]})}),e.jsxs(Un,{id:"chapter-1",number:"01",title:"Das versteckte Problem: Umsatz wächst â Kontostand nicht",children:[e.jsx(ds,{children:'Lass uns ehrlich sein: Dein Umsatz kann steigen, dein ROAS kann "okay" aussehen und deine Agentur kann zufrieden sein. Und trotzdem sitzt du vor Zahlen, die sich nicht nach einem gesundem Geschäft anfühlen.'}),e.jsx(To,{variant:"warning",title:"Typische Symptome",icon:e.jsx(ic,{className:"w-5 h-5"}),children:e.jsxs("ul",{children:[e.jsx(cs,{children:"Der Monatsumsatz wächst, aber dein Gewinn fühlt sich gleich oder schlechter an."}),e.jsx(cs,{children:"Du kannst Budgets nicht weiter skalieren, ohne dass die Marge bricht."}),e.jsx(cs,{children:'Du hast keine klare Antwort auf die Frage: "Welche 10 Produkte in meinem Shop verdienen mir wirklich das meiste Geld?"'})]})}),e.jsx($n,{children:"Ursache Nr. 1: ROAS ist blind für Margen"}),e.jsxs(ln,{children:["Der ROAS misst nur ",e.jsx("code",{className:"bg-swiss-black/10 px-2 py-1 font-jetbrains text-sm",children:"Umsatz / Adspend"}),". Ein ROAS von 4,0 kann komplett Break-Even sein â oder sogar Verlust bedeuten."]}),e.jsx(Iu,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"m-0",children:["Adspend: ",e.jsx("strong",{children:"10.000 â¬"})]}),e.jsxs("p",{className:"m-0",children:["Umsatz: ",e.jsx("strong",{children:"40.000 â¬"})]}),e.jsxs("p",{className:"m-0 text-profit-green",children:["ROAS: ",e.jsx("strong",{children:"4,0"})," (Sieht super aus, oder?)"]}),e.jsx("div",{className:"border-t border-swiss-white/20 my-4"}),e.jsxs("p",{className:"m-0",children:["Deine durchschnittliche Marge: ",e.jsx("strong",{children:"25%"})]}),e.jsxs("p",{className:"m-0",children:["25% von 40.000 ⬠= ",e.jsx("strong",{children:"10.000 ⬠Rohertrag"})]}),e.jsx("p",{className:"m-0 text-signal-red text-xl mt-2",children:e.jsx("strong",{children:"Gewinn nach Ads: 0 â¬"})})]})})]}),e.jsxs(Un,{id:"chapter-2",number:"02",title:"Der Perspektivwechsel: POAS statt ROAS",children:[e.jsx(ds,{children:'Stell dir vor, du hättest eine Kennzahl, die dir direkt sagt: "Für jeden 1 â¬, den ich in Ads stecke, kommen X ⬠echter Gewinn zurück." Genau das ist der POAS (Profit on Ad Spend).'}),e.jsx(q4,{}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 my-10",children:[e.jsx(vb,{title:"Beispiel A",adspend:"10.000 â¬",result:"7.000 â¬",poas:"0,7",variant:"bad",label:"Verlust",description:"Du weiÃt sofort: Das skaliere ich besser nicht weiter."}),e.jsx(vb,{title:"Beispiel B",adspend:"5.000 â¬",result:"8.000 â¬",poas:"1,6",variant:"good",label:"Skalierbar",description:"Für jeden 1 ⬠in Ads kommen 1,60 ⬠Gewinn zurück."})]}),e.jsx(Y4,{}),e.jsx(Gu,{children:"Wenn du diesen einen Switch machst â von ROAS zu POAS â änderst du dein komplettes Setup."})]}),e.jsx(Ru,{headline:"Willst du über deinen POAS sprechen?",subline:"Kostenlos in 30 Minuten.",variant:"compact"}),e.jsxs(Un,{id:"chapter-3",number:"03",title:"Das ProfitEngine⢠Framework â die 4 Bausteine",children:[e.jsx(ds,{children:"Um POAS sinnvoll nutzen zu können, brauchst du ein System. Wir nennen das bei AdsHero: ProfitEngine⢠â und es besteht aus 4 Bausteinen, die perfekt ineinandergreifen."}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-4 my-10",children:[e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-10 h-10 bg-swiss-black text-swiss-white flex items-center justify-center font-jetbrains font-bold",children:"01"}),e.jsx(Dl,{className:"w-6 h-6 text-swiss-black"})]}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold mb-2",children:"POAS-Tracking"}),e.jsx("p",{className:"text-sm text-swiss-black/70",children:"Datenfundament für profitable Entscheidungen"})]}),e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-10 h-10 bg-swiss-black text-swiss-white flex items-center justify-center font-jetbrains font-bold",children:"02"}),e.jsx(yg,{className:"w-6 h-6 text-swiss-black"})]}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold mb-2",children:"Produkt-Segmentierung"}),e.jsx("p",{className:"text-sm text-swiss-black/70",children:"Gewinner fördern, Verlierer stoppen"})]}),e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-10 h-10 bg-swiss-black text-swiss-white flex items-center justify-center font-jetbrains font-bold",children:"03"}),e.jsx(S0,{className:"w-6 h-6 text-swiss-black"})]}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold mb-2",children:"Kampagnen-Setup"}),e.jsx("p",{className:"text-sm text-swiss-black/70",children:"Struktur für maximalen Profit"})]}),e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"w-10 h-10 bg-swiss-black text-swiss-white flex items-center justify-center font-jetbrains font-bold",children:"04"}),e.jsx(ac,{className:"w-6 h-6 text-swiss-black"})]}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold mb-2",children:"Optimierungs-Framework"}),e.jsx("p",{className:"text-sm text-swiss-black/70",children:"Kontinuierliche Verbesserung"})]})]}),e.jsx($n,{children:"Baustein 1: POAS-Tracking & Datenfundament"}),e.jsx(ln,{children:"Ohne saubere Daten ist alles andere Rätselraten. Diese Daten brauchst du auf Produktebene:"}),e.jsx(wr,{items:["EK-Preise auf Produktebene (nicht Durchschnitt!)","Versandkosten und Zahlungsgebühren pro Bestellung","Retouren-Daten (mindestens Retourenquote pro Kategorie)","Server-seitiges Tracking für 95%+ Datenqualität"]}),e.jsx($n,{children:"Baustein 2: Produkt-Segmentierung"}),e.jsx(ln,{children:"Nicht alle Produkte sind gleich. Mit der richtigen Segmentierung erkennst du auf einen Blick, welche Produkte Geld verdienen â und welche es verbrennen."}),e.jsx(Q4,{}),e.jsx($n,{children:"Baustein 3: Kampagnen-Setup für Profit"}),e.jsx(ln,{children:"Deine Kampagnenstruktur muss zu deiner Profitabilität passen, nicht umgekehrt. Das bedeutet:"}),e.jsx(wr,{items:["PMax nur für bewiesene Profit-Produkte einsetzen","Separate Kampagnen nach Margen-Klassen (High/Mid/Low)","Negative Keywords für Geldverbrenner-Suchanfragen","Smart Bidding auf POAS-Ziele ausrichten (nicht ROAS!)"]}),e.jsx(To,{variant:"success",title:"Profi-Tipp",children:e.jsx(ln,{className:"mb-0",children:'Erstelle eine "Quarantäne-Kampagne" für neue Produkte. Dort testest du 2-4 Wochen, bevor ein Produkt in die Hauptkampagne kommt â oder aussortiert wird.'})}),e.jsx($n,{children:"Baustein 4: Optimierungs-Framework"}
574),e.jsx(ln,{children:"Einmal aufsetzen reicht nicht. Du brauchst ein wiederkehrendes System:"}),e.jsxs("div",{className:"border-2 border-swiss-black divide-y-2 divide-swiss-black my-8",children:[e.jsxs("div",{className:"p-6 flex items-start gap-4",children:[e.jsx("span",{className:"font-jetbrains text-sm font-bold text-swiss-black/50 shrink-0",children:"WÃCHENTLICH"}),e.jsx("p",{className:"m-0 text-swiss-black/80",children:"POAS-Controlling: Top 10 und Flop 10 Produkte checken, Budget anpassen"})]}),e.jsxs("div",{className:"p-6 flex items-start gap-4",children:[e.jsx("span",{className:"font-jetbrains text-sm font-bold text-swiss-black/50 shrink-0",children:"MONATLICH"}),e.jsx("p",{className:"m-0 text-swiss-black/80",children:"Produkt-Review: Segmentierung aktualisieren, neue Geldverbrenner identifizieren"})]}),e.jsxs("div",{className:"p-6 flex items-start gap-4",children:[e.jsx("span",{className:"font-jetbrains text-sm font-bold text-swiss-black/50 shrink-0",children:"QUARTALSWEISE"}),e.jsx("p",{className:"m-0 text-swiss-black/80",children:"Strategische Analyse: Margen-Entwicklung, Saisonalität, Sortiments-Optimierung"})]})]})]}),e.jsxs(Un,{id:"chapter-4",number:"04",title:"Budget-Intelligenz: Warum 'mehr Budget' oft der falsche Hebel ist",children:[e.jsx(ds,{children:'Die Skalierungs-Falle ist eine der teuersten Lektionen im E-Commerce: "Wenn ich mehr investiere, verdiene ich mehr." Das stimmt â aber nur unter bestimmten Bedingungen.'}),e.jsx(To,{variant:"warning",title:"Die Skalierungs-Falle",children:e.jsxs(ln,{className:"mb-0",children:["Wenn dein POAS unter 1 liegt, verdoppelst du mit mehr Budget nur deine Verluste. Ein ROAS von 3,0 bei 20% Marge bedeutet: ",e.jsx("strong",{children:"Minus für jeden ausgegebenen Euro."})]})}),e.jsx($n,{children:"Wann Budget erhöhen Sinn macht"}),e.jsx(ln,{children:"Budget-Erhöhung ist nur dann sinnvoll, wenn folgende Bedingungen erfüllt sind:"}),e.jsx(wr,{items:["POAS liegt stabil über 1,0 (du verdienst an jedem Ad-Euro)","Du hast Impression Share unter 80% (Potenzial ist da)","Dein Tracking ist validiert (keine Daten-Lücken)","Du hast profitable Produkte identifiziert (nicht alles mischen)"]}),e.jsx(Iu,{children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"m-0 text-swiss-white/70 text-sm uppercase tracking-wider",children:"Beispielrechnung: 10.000 ⬠â 20.000 ⬠Budget"}),e.jsx("div",{className:"border-t border-swiss-white/20 my-4"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("p",{className:"m-0 text-signal-red font-bold mb-2",children:"Szenario A: POAS = 0,8"}),e.jsxs("p",{className:"m-0",children:["Bei 10.000 â¬: ",e.jsx("strong",{children:"-2.000 ⬠Verlust"})]}),e.jsxs("p",{className:"m-0",children:["Bei 20.000 â¬: ",e.jsx("strong",{children:"-4.000 ⬠Verlust"})]}),e.jsx("p",{className:"m-0 text-signal-red mt-2",children:"â Verdoppelter Verlust!"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"m-0 text-profit-green font-bold mb-2",children:"Szenario B: POAS = 1,4"}),e.jsxs("p",{className:"m-0",children:["Bei 10.000 â¬: ",e.jsx("strong",{children:"+4.000 ⬠Gewinn"})]}),e.jsxs("p",{className:"m-0",children:["Bei 20.000 â¬: ",e.jsx("strong",{children:"+8.000 ⬠Gewinn"})]}),e.jsx("p",{className:"m-0 text-profit-green mt-2",children:"â Verdoppelter Gewinn!"})]})]})]})}),e.jsx($n,{children:"Die Budget-Entscheidungsmatrix"}),e.jsx("div",{className:"border-2 border-swiss-black my-8",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-swiss-black text-swiss-white",children:[e.jsx("th",{className:"p-4 text-left font-inter-tight",children:"POAS"}),e.jsx("th",{className:"p-4 text-left font-inter-tight",children:"Empfehlung"}),e.jsx("th",{className:"p-4 text-left font-inter-tight",children:"Priorität"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-swiss-black/10",children:[e.jsx("td",{className:"p-4 font-jetbrains text-signal-red font-bold",children:"< 0,8"}),e.jsx("td",{className:"p-4",children:"Budget reduzieren oder Kampagne stoppen"}),e.jsx("td",{className:"p-4",children:e.jsx("span",{className:"bg-signal-red text-swiss-white px-2 py-1 text-xs font-bold",children:"DRINGEND"})})]}),e.jsxs("tr",{className:"border-b border-swiss-black/10 bg-swiss-black/5",children:[e.jsx("td",{className:"p-4 font-jetbrains font-bold",children:"0,8 â 1,0"}),e.jsx("td",{className:"p-4",children:"Optimieren: Produkte, Keywords, Gebote prüfen"}),e.jsx("td",{className:"p-4",children:e.jsx("span",{className:"bg-swiss-black/50 text-swiss-white px-2 py-1 text-xs font-bold",children:"HOCH"})})]}),e.jsxs("tr",{className:"border-b border-swiss-black/10",children:[e.jsx("td",{className:"p-4 font-jetbrains font-bold",children:"1,0 â 1,3"}),e.jsx("td",{className:"p-4",children:"Halten: Stabil, aber Potenzial für Verbesserung"}),e.jsx("td",{className:"p-4",children:e.jsx("span",{className:"bg-swiss-black/30 text-swiss-black px-2 py-1 text-xs font-bold",children:"MITTEL"})})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-4 font-jetbrains text-profit-green font-bold",children:"> 1,3"}),e.jsx("td",{className:"p-4",children:"Skalieren: Mehr Budget, ähnliche Produkte pushen"}),e.jsx("td",{className:"p-4",children:e.jsx("span",{className:"bg-profit-green text-swiss-white px-2 py-1 text-xs font-bold",children:"SKALIEREN"})})]})]})]})}),e.jsx(Gu,{children:"Die beste Budget-Entscheidung triffst du nicht mit Bauchgefühl â sondern mit POAS-Daten."})]}),e.jsxs(Un,{id:"chapter-5",number:"05",title:"Case Study: Stahlia GmbH â +94% Gewinn in 90 Tagen",children:[e.jsx(ds,{children:"Das klingt alles toll in der Theorie. Aber was passiert, wenn man dieses Framework in einem echten E-Commerce-Shop umsetzt? Hier ist ein konkretes Beispiel."}),e.jsx(J4,{}),e.jsx($n,{children:"Was wir konkret gemacht haben"}),e.jsx(yb,{steps:[{title:"POAS-Tracking implementiert",desc:"EK-Preise auf Produktebene integriert, Server-seitiges Tracking aufgesetzt."},{title:"Geldverbrenner identifiziert",desc:"23% der Produkte hatten POAS unter 0,5 â sofort aus Ads entfernt."},{title:"Top-Performer gepusht",desc:"Budget auf die 15 profitabelsten Produkte konzentriert."},{title:"Wöchentliches POAS-Controlling",desc:"Dashboard mit den wichtigsten Kennzahlen eingerichtet."}]})]}),e.jsx(Ru,{headline:"Bereit für dein Profit-Audit?",subline:"+94% bei Stahlia â finde heraus, wo dein Potenzial liegt.",variant:"medium"}),e.jsx(Un,{id:"chapter-6",number:"06",title:"5 Key Takeaways",children:e.jsx(yb,{steps:[{title:"ROAS ist Vanity, POAS ist Sanity",desc:"Frag immer: 'Was bleibt übrig?' â nicht 'Wie viel Umsatz habe ich gemacht?'"},{title:"Kenne deine Margen auf Produktebene",desc:"Durchschnittswerte reichen nicht. Jedes Produkt hat eine andere Profitabilität."},{title:"Segmentiere radikal",desc:"Killen, was nicht profitabel ist. Kein Mitleid mit Geldverbrennern."},{title:"Budget folgt Profit",desc:"Mehr Geld nur in Kampagnen stecken, die nachweislich POAS > 1 liefern."},{title:"Messe wöchentlich",desc:"Ein Dashboard mit POAS ist Pflicht. Ohne Daten fliegst du blind."}]})}),e.jsxs(Un,{id:"chapter-7",number:"07",title:"Der 30-Tage-Plan: So startest du",children:[e.jsx(ds,{children:"Du willst direkt loslegen? Hier ist ein konkreter 30-Tage-Plan, den du sofort umsetzen kannst â auch ohne externe Hilfe."}),e.jsxs("div",{className:"space-y-0 my-10",children:[e.jsx("div",{className:"border-2 border-swiss-black border-b-0 p-6 md:p-8",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs("div",{className:"w-16 h-16 bg-swiss-black text-swiss-white flex flex-col items-center justify-center shrink-0",children:[e.jsx("span",{className:"font-jetbrains text-xs",children:"WOCHE"}),e.jsx("span",{className:"font-inter-tight text-2xl font-black",children:"1"})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-xl font-bold mb-2",children:"Margen-Analyse"}),e.jsx(wr,{items:["EK-Preise für deine Top-50 Produkte sammeln","Versandkosten und Zahlungsgebühren berechnen","Durchschnittliche Retourenquote pro Kategorie ermitteln","Excel/Sheet mit Brutto-Marge pro Produkt erstellen"]})]})]})}),e.jsx("div",{className:"border-2 border-swiss-black border-b-0 p-6 md:p-8 bg-swiss-black/5",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs("div",{className:"w-16 h-16 bg-swiss-black text-swiss-white flex flex-col items-center justify-center shrink-0",children:[e.jsx("span",{className:"font-jetbrains text-xs",children:"WOCHE"}),e.jsx("span",{className:"font-inter-tight text-2xl font-black",children:"2"})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-xl font-bold mb-2",children:"Produkt-Segmentierung"}),e.jsx(wr,{items:["Google Ads Daten der letzten 90 Tage exportieren","Umsatz und Kosten pro Produkt zusammenführen","POAS für jedes Produkt berechnen (Marge à Umsatz / Adspend)","Produkte in Gewinner/Neutral/Verlierer kategorisieren"]})]})]})}),e.jsx("div",{className:"border-2 border-swiss-black border-b-0 p-6 md:p-8",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs("div",{className:"w-16 h-16 bg-signal-red text-swiss-white flex flex-col items-center justify-center shrink-0",children:[e.jsx("span",{className:"font-jetbrains text-xs",children:"WOCHE"}),e.jsx("span",{className:"font-inter-tight text-2xl font-black",children:"3"})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-xl font-bold mb-2",children:"Geldverbrenner stoppen"}),e.jsx(wr,{items:["Alle Produkte mit POAS < 0,5 aus Kampagnen entfernen","Negative Keywords für unprofitable Suchanfragen hinzufügen","Budget von Verlierern auf Gewinner umverteilen","Erste Ergebnisse nach 7 Tagen dokumentieren"]})]})]})}),e.jsx("div",{className:"border-2 border-swiss-black p-6 md:p-8 bg-profit-green/10",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs("div",{className:"w-16 h-16 bg-profit-green text-swiss-white flex flex-col items-center justify-center shrink-0",children:[e.jsx("span",{className:"font-jetbrains text-xs",children:"WOCHE"}),e.jsx("span",{className:"font-inter-tight text-2xl font-black",children:"4"})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-inter-tight text-xl font-bold mb-2",children:"POAS-System etablieren"}),e.jsx(wr,{items:["Wöchentliches Reporting-Template erstellen","Top 10 und Flop 10 Produkte wöchentlich tracken","Automatisierte Alerts für POAS-Einbrüche einrichten","Ersten Monatsbericht mit Vorher/Nachher erstellen"]})]})]})})]}),e.jsx(To,{variant:"success",title:"Nach 30 Tagen hast du...",children:e.jsxs("ul",{className:"space-y-2",children:[e.jsx(cs,{children:"Klarheit über die wahre Profitabilität deiner Produkte"}),e.jsx(cs,{children:"Geldverbrenner aus deinen Kampagnen entfernt"}),e.jsx(cs,{children:"Ein System für kontinuierliche Optimierung"}),e.jsx(cs,{children:"Erste messbare Verbesserungen im POAS"})]})})]}),e.jsx(Ru,{headline:"Lieber mit Experten statt allein?",subline:"Wir übernehmen die Analyse für dich.",variant:"compact"}),e.jsx("section",{className:"mb-20 md:mb-32 scroll-mt-24",children:e.jsxs("div",{className:"border-2 border-swiss-black p-8 md:p-12",children:[e.jsx("h2",{className:"font-inter-tight text-2xl md:text-3xl font-black text-swiss-black mb-6",children:"Wer steckt hinter diesem Report?"}),e.jsx("p",{className:"text-lg text-swiss-black/70 font-inter mb-8",children:"Wir sind AdsHero â die Agentur für E-Commerce Shops, die rechnen können."}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-10",children:[e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsx("img",{src:ia,alt:"Gordon Kuckluck",className:"w-24 h-24 object-cover border-2 border-swiss-black mb-4"}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold text-swiss-black mb-1",children:"Gordon Kuckluck"}),e.jsx("p",{className:"text-sm text-swiss-black/60 mb-3",children:"Founder & Google Ads Experte"}),e.jsxs("a",{href:"https://www.linkedin.com/in/gordonkuckluck/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-sm font-medium text-swiss-black hover:text-swiss-black/70 transition-colors",children:[e.jsx(Bn,{className:"w-4 h-4"}),"LinkedIn"]})]}),e.jsxs("div",{className:"border-2 border-swiss-black p-6",children:[e.jsx("img",{src:wc,alt:"Christoph Bogner",className:"w-24 h-24 object-cover border-2 border-swiss-black mb-4"}),e.jsx("h4",{className:"font-inter-tight text-lg font-bold text-swiss-black mb-1",children:"Christoph Bogner"}),e.jsx("p",{className:"text-sm text-swiss-black/60 mb-3",children:"Founder & Growth Strategist"}),e.jsxs("a",{href:"https://www.linkedin.com/in/christophbogner/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-sm font-medium text-swiss-black hover:text-swiss-black/70 transition-colors",children:[e.jsx(Bn,{className:"w-4 h-4"}),"LinkedIn"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-10",children:[e.jsxs("div",{className:"bg-swiss-black text-swiss-white p-4 text-center",children:[e.jsx("span",{className:"font-jetbrains text-2xl font-bold block",children:"13M+"}),e.jsx("span",{className:"text-xs text-swiss-white/60 uppercase tracking-wider",children:"Werbebudget"})]}),e.jsxs("div",{className:"bg-swiss-black text-swiss-white p-4 text-center",children:[e.jsx("span",{className:"font-jetbrains text-2xl font-bold block",children:"2M+"}),e.jsx("span",{className:"text-xs text-swiss-white/60 uppercase tracking-wider",children:"Leads"})]}),e.jsxs("div",{className:"bg-swiss-black text-swiss-white p-4 text-center",children:[e.jsx("span",{className:"font-jetbrains text-2xl font-bold block",children:"7+"}),e.jsx("span",{className:"text-xs text-swiss-white/60 uppercase tracking-wider",children:"Jahre Google Ads"})]}),e.jsxs("div",{className:"bg-swiss-black text-swiss-white p-4 text-center",children:[e.jsx("span",{className:"font-jetbrains text-2xl font-bold block",children:"14+"}),e.jsx("span",{className:"text-xs text-swiss-white/60 uppercase tracking-wider",children:"Jahre Marketing"})]})]}),e.jsx("div",{className:"border-t-2 border-swiss-black pt-6",children:e.jsx("p",{className:"text-swiss-black/70 font-inter italic text-center",children:`"Wir bieten langfristig gedachte Unterstützung und stellen uns klar gegen 'Schnellschüsse' und unseriöse Anbieter."`})})]})}),e.jsxs(Un,{id:"chapter-8",number:"08",title:"So läuft ein Profit-Audit mit AdsHero ab",children:[e.jsx(ds,{children:"Du willst das Ganze nicht alleine machen? Kein Problem. In einem kostenlosen Profit-Audit analysieren wir gemeinsam dein Google Ads Konto."}),e.jsx($n,{children:"Was du bekommst:"}),e.jsx(wr,{items:["Analyse deiner Top-20 Produkte nach POAS","Identifikation von Geldverbrenner-Kampagnen","Konkrete Quick-Win Empfehlungen (sofort umsetzbar)","POAS-Tracking Einschätzung und Roadmap","Persönliches 30-Minuten Gespräch mit einem Experten"]}),e.jsxs("div",{className:"bg-swiss-black border-l-4 border-cta text-swiss-white p-8 md:p-12 my-10",children:[e.jsx("h3",{className:"font-inter-tight text-2xl md:text-3xl font-black mb-4",children:"Bereit für dein Profit-Audit?"}),e.jsx("p",{className:"text-swiss-white/70 mb-6",children:"Kostenlos. Unverbindlich. In 30 Minuten weiÃt du, wo dein Geld verbrennt."}),e.jsx(q,{size:"lg",variant:"cta",className:"hover:brightness-125 hover:scale-[1.02] hover:shadow-gold-glow font-inter-tight font-bold transition-all",asChild:!0,children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"ProfitAuditReport"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Kostenloses Audit anfordern ",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})]})]}),e.jsxs(Un,{id:"chapter-9",number:"09",title:"Deine Profit-Checkliste: 6 Fragen",children:[e.jsx(ln,{children:'Bevor du diesen Report schlieÃt, geh diese 6 Fragen durch. Jede "Nein"-Antwort ist ein Hebel für mehr Profit:'}),e.jsx("div",{className:"space-y-4 my-10",children:["Kenne ich meine Marge pro Produkt (nicht nur den Durchschnitt)?","Weià ich, welche 10 Produkte mir am meisten Gewinn bringen?","Habe ich meine Top-3 Geldverbrenner identifiziert und gestoppt?","Ist mein Tracking robust genug für POAS-Berechnung?","Optimiere ich meine Kampagnen auf POA
574S statt ROAS?","Habe ich ein wöchentliches Controlling-System etabliert?"].map((s,i)=>e.jsxs("div",{className:"flex items-start gap-4 p-4 border-2 border-swiss-black hover:bg-swiss-black/5 transition-colors",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-swiss-black flex items-center justify-center shrink-0 font-jetbrains text-sm font-bold",children:i+1}),e.jsx("p",{className:"text-lg text-swiss-black/80 font-inter m-0",children:s})]},i))}),e.jsx(Iu,{children:e.jsxs("p",{className:"m-0 text-center",children:[e.jsx("strong",{children:'Weniger als 4 à "Ja"?'}),e.jsx("br",{}),e.jsx("span",{className:"text-swiss-white/70",children:"Dann verschenkst du wahrscheinlich Profit. Zeit für ein Audit."})]})}),e.jsx("div",{className:"text-center py-10",children:e.jsx(q,{size:"lg",className:"bg-swiss-black text-swiss-white hover:bg-swiss-black/90 font-inter-tight font-bold px-8",asChild:!0,children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"ProfitAuditReport"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt Profit-Audit anfordern ",e.jsx(dt,{className:"ml-2 h-5 w-5"})]})})})]})]}),e.jsx("footer",{className:"border-t-2 border-swiss-black py-12",children:e.jsxs("div",{className:"max-w-[1200px] mx-auto px-4 md:px-8 flex flex-col md:flex-row items-center justify-center gap-4 md:gap-8",children:[e.jsxs("p",{className:"font-inter text-sm text-swiss-black/60",children:["© ",new Date().getFullYear()," AdsHero. Alle Rechte vorbehalten."]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsx(E,{to:"/impressum",className:"font-inter text-sm text-swiss-black/60 hover:text-swiss-black transition-colors",children:"Impressum"}),e.jsx(E,{to:"/datenschutz",className:"font-inter text-sm text-swiss-black/60 hover:text-swiss-black transition-colors",children:"Datenschutz"})]})]})})]})]})},eR=()=>e.jsxs("section",{className:"relative bg-gradient-hero pt-24 pb-20 md:pt-32 md:pb-28 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top_right,_var(--tw-gradient-stops))] from-primary/10 via-trans
574parent to-transparent"}),e.jsx("div",{className:"container mx-auto px-4 max-w-6xl relative z-10",children:e.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[e.jsxs(cr,{variant:"secondary",className:"mb-6 text-sm font-semibold px-5 py-2.5 bg-cta/10 text-cta border-cta/20",children:[e.jsx(Os,{className:"w-4 h-4 mr-2"}),"Kostenlose Profit-Analyse für E-Commerce"]}),e.jsxs("h1",{className:"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-6 leading-tight",children:["Dein ROAS ist hoch â aber ",e.jsx("span",{className:"text-cta",children:"dein Gewinn nicht?"})]}),e.jsxs("p",{className:"text-lg md:text-xl text-muted-foreground mb-8 max-w-3xl mx-auto leading-relaxed",children:["In 30 Minuten zeigen wir dir, welche deiner Produkte wirklich Gewinn bringen â und welche dein Budget verbrennen. ",e.jsx("strong",{className:"text-foreground",children:"Ohne Kosten. Ohne Verpflichtung."})]}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-4 justify-center items-center mb-10",children:e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-8 py-6 h-auto w-full sm:w-auto group",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"PAHero"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt kostenlose Analyse sichern",e.jsx(dt,{className:"ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform"})]})})}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-8 mb-8",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"Ãber 13 Mio. ⬠Werbebudget verwaltet"})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"à 47% Gewinnsteigerung"})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta"}),e.jsx("span",{className:"font-medium",children:"In à 4-6 Wochen spürbare Verbesserung"})]})]}),e.jsxs("div",{className:"flex justify-center items-center gap-6",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-14 object-contain opacity-80 hover:opacity-100 transition-opacity"}),e.jsx("img",{src:Fw,alt:"ProfitMetrics Partner",className:"h-10 object-contain opacity-80 hover:opacity-100 transition-opacity"})]})]})})]}),tR=()=>{const t=[{title:"ROAS sieht gut aus â Konto nicht",description:"Du feierst 400% ROAS, aber am Monatsende fehlt das Geld auf dem Konto."},{title:"Blindflug bei Produktprofitabilität",description:"Du weiÃt nicht, welche Produkte wirklich Gewinn bringen und welche nur Umsatz."},{title:"PMax frisst dein Budget",description:"Performance Max optimiert auf Umsatz, nicht auf Profit â und pusht deine Ladenhüter."},{title:"Tracking-Chaos",description:"Deine Conversion-Daten sind unvollständig oder falsch â Google optimiert ins Leere."},{title:"Marge wird ignoriert",description:"Google kennt deine Produktmargen nicht und behandelt alle Produkte gleich."},{title:"Skalierung bringt Verluste",description:"Mehr Budget = mehr Umsatz, aber irgendwie weniger Gewinn. Kennst du das?"}];return e.jsx("section",{className:"py-20 md:py-28 bg-secondary/30",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-destructive/10 text-destructive mb-6",children:[e.jsx(ic,{className:"w-5 h-5"}),e.jsx("span",{className:"font-semibold text-sm",children:"Der Status Quo der meisten E-Commerce Shops"})]}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Das Problem: Du optimierst auf die ",e.jsx("span",{className:"text-destructive",children:"falsche Metrik"})]}),e.jsxs("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:["Die meisten Agenturen und Google selbst pushen ROAS. Aber ROAS zeigt dir nur Umsatz pro Werbe-Euro â nicht, was davon als ",e.jsx("strong",{className:"text-foreground",children:"Gewinn"})," bei dir ankommt."]})]}),e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:t.map((n,r)=>e.jsxs("div",{className:"flex flex-col gap-3 p-6 rounded-xl bg-background border border-border hover:border-destructive/50 transition-colors group",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-destructive/10 group-hover:bg-destructive/20 transition-colors",children:e.jsx(Hi,{className:"h-5 w-5 text-destructive"})}),e.jsx("h3",{className:"text-lg font-semibold text-foreground",children:n.title})]}),e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed pl-11",children:n.description})]},r))}),e.jsx("div",{className:"mt-12 text-center",children:e.jsxs("p",{className:"text-xl md:text-2xl font-semibold text-foreground max-w-3xl mx-auto",children:["Du kannst nicht profitabel skalieren, wenn du nicht weiÃt, ",e.jsx("br",{className:"hidden md:block"}),e.jsx("span",{className:"text-cta",children:"welche Produkte wirklich Geld verdienen."})]})})]})})},nR=()=>{const t=[{icon:Dl,title:"POAS statt ROAS",subtitle:"Profit on Ad Spend",description:"Wir implementieren echtes Profit-Tracking. Google sieht deine Margen und optimiert auf das, was zählt: deinen Gewinn pro Bestellung."},{icon:yg,title:"Produkt-Segmentierung",subtitle:"Nach Profitabilität",description:"Wir analysieren jedes Produkt und segmentieren nach Marge. Top-Performer bekommen mehr Budget, Geldverbrenner werden gestoppt."},{icon:ac,title:"PMax-Optimierung",subtitle:"Für echten Profit",description:"Performance Max bekommt klare Signale: Welche Produkte gepusht werden sollen und welche nicht. Kein Blindflug mehr."},{icon:E2,title:"Conversion-Setup",subtitle:"Lückenlos & Präzise",description:"Wir fixen dein Tracking komplett. Jeder Kauf, jede Marge wird erfasst. So kann Google wirklich optimieren."}];return e.jsx("section",{className:"py-20 md:py-28 bg-background",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsx("span",{className:"inline-block text-cta font-semibold text-sm uppercase tracking-wider mb-4",children:"Die Lösung"}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Das AdsHero ",e.jsx("span",{className:"text-cta",children:"POAS-Framework"})]}),e.jsxs("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:["Unser bewährtes System, mit dem E-Commerce-Shops im Schnitt ",e.jsx("strong",{className:"text-foreground",children:"47% mehr Gewinn"})," aus dem gleichen Werbebudget holen â ohne mehr auszugeben."]})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-6 mb-12",children:t.map((n,r)=>e.jsxs("div",{className:"relative p-8 rounded-2xl bg-gradient-to-br from-secondary/50 to-secondary/20 border border-border
574card-gold-hover transition-all group",children:[e.jsxs("div",{className:"flex items-start gap-5",children:[e.jsx("div",{className:"p-3 rounded-xl bg-cta/10 group-hover:bg-cta/20 transition-colors",children:e.jsx(n.icon,{className:"h-7 w-7 text-cta"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-xs font-semibold text-cta uppercase tracking-wider",children:n.subtitle}),e.jsx("h3",{className:"text-xl font-bold text-foreground mt-1 mb-3",children:n.title}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:n.description})]})]}),e.jsx("div",{className:"absolute top-4 right-4 w-8 h-8 rounded-full bg-cta/10 flex items-center justify-center",children:e.jsx("span",{className:"text-cta font-bold text-sm",children:r+1})})]},r))}),e.jsx("div",{className:"text-center",children:e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-8 py-6 h-auto group",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"PAFramework"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Framework auf deinen Shop anwenden",e.jsx(dt,{className:"ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform"})]})})})]})})},rR=()=>{const t=[{label:"Werbeausgaben",before:"â¬12.500",after:"â¬12.500",change:"0%",highlight:!1},{label:"Umsatz",before:"â¬45.000",after:"â¬52.000",change:"+15%",highlight:!1},{label:"ROAS",before:"3,6x",after:"4,2x",change:"+17%",highlight:!1},{label:"Rohertrag",before:"â¬18.000",after:"â¬24.500",change:"+36%",highlight:!0},{label:"Nettogewinn",before:"â¬5.500",after:"â¬12.000",change:"+118%",highlight:!0},{label:"POAS",before:"0,44x",after:"0,96x",change:"+118%",highlight:!0}];return e.jsx("section",{className:"py-20 md:py-28 bg-secondary/30",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsxs(cr,{variant:"secondary",className:"mb-6 text-sm font-semibold px-5 py-2.5 bg-success/10 text-success border-success/20",children:[e.jsx(Os,{className:"w-4 h-4 mr-2"}),"Echte Ergebnisse"]}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Case Study: ",e.jsx("span",{className:"text-cta",children:"+118% Nettogewinn"})]}),e.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:"Ein Fashion-Shop mit â¬150k Jahresumsatz. Gleiches Werbebudget, aber komplett andere Ergebnisse nach Implementierung unseres POAS-Frameworks."})]}),e.jsx("div",{className:"bg-background rounded-2xl border border-border overflow-hidden mb-10",children:e.jsxs("div",{className:"grid grid-cols-4 gap-0 text-sm md:text-base",children:[e.jsx("div",{className:"p-4 md:p-6 font-semibold text-muted-foreground bg-secondary/50",children:"Metrik"}),e.jsx("div",{className:"p-4 md:p-6 font-semibold text-muted-foreground bg-secondary/50 text-center",children:"Vorher"}),e.jsx("div",{className:"p-4 md:p-6 font-semibold text-muted-foreground bg-secondary/50 text-center",children:"Nachher"}),e.jsx("div",{className:"p-4 md:p-6 font-semibold text-muted-foreground bg-secondary/50 text-center",children:"Veränderung"}),t.map((n,r)=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`p-4 md:p-6 font-medium border-t border-border ${n.highlight?"text-foreground bg-cta/5":"text-muted-foreground"}`,children:n.label},`label-${r}`),e.jsx("div",{className:`p-4 md:p-6 text-center border-t border-border ${n.highlight?"bg-cta/5":""}`,children:n.before},`before-${r}`),e.jsx("div",{className:`p-4 md:p-6 text-center border-t border-border font-semibold ${n.highlight?"text-foreground bg-cta/5":""}`,children:n.after},`after-${r}`),e.jsx("div",{className:`p-4 md:p-6 text-center border-t border-border ${n.highlight?"bg-cta/5":""}`,children:e.jsxs("span",{className:`inline-flex items-center gap-1 font-semibold ${n.highlight?"text-success":"text-muted-foreground"}`,children:[n.change,n.highlight&&e.jsx(C2,{className:"w-4 h-4"})]})},`change-${r}`)]}))]})}),e.jsx("div",{className:"bg-gradient-to-r from-cta/10 via-cta/5 to-transparent roun
574ded-2xl p-8 border border-cta/20",children:e.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center gap-6",children:[e.jsx("div",{className:"flex-shrink-0 p-4 rounded-xl bg-cta/20",children:e.jsx(Os,{className:"w-10 h-10 text-cta"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xl font-bold text-foreground mb-2",children:"Das Geheimnis: Nicht mehr ausgeben â smarter ausgeben"}),e.jsx("p",{className:"text-muted-foreground",children:"Die Werbeausgaben blieben identisch. Der Unterschied: Google wusste endlich, welche Produkte profitabel sind und konnte gezielt auf diese optimieren. Unprofitable Produkte wurden aus den Kampagnen entfernt."})]})]})})]})})},sR=()=>{const t=[{number:"01",icon:R2,title:"Produkt-Profitabilitäts-Analyse",description:"Wir analysieren dein komplettes Sortiment und identifizieren deine Top-Performer und Geldverbrenner nach echter Marge."},{number:"02",icon:T2,title:"Kampagnen-Struktur-Audit",description:"Wir prüfen deine aktuelle Kampagnenstruktur und zeigen, wo Budget verschwendet wird und wo Potenzial liegt."},{number:"03",icon:F2,title:"Quick-Win Empfehlungen",description:"Konkrete MaÃnahmen, die du sofort umsetzen kannst â mit geschätztem Impact auf deinen Gewinn."},{number:"04",icon:U2,title:"Individuelle Roadmap",description:"Ein klarer Plan, wie du von ROAS zu POAS kommst und deine Profitabilität systematisch steigerst."}];return e.jsx("section",{className:"py-20 md:py-28 bg-background",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsx("span",{className:"inline-block text-cta font-semibold text-sm uppercase tracking-wider mb-4",children:"Was du bekommst"}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Deine kostenlose ",e.jsx("span",{className:"text-cta",children:"Profit-Analyse"})]}),e.jsxs("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:["In 30 Minuten erhältst du eine fundierte Analyse deiner Google Ads und konkrete Handlungsempfehlungen â",e.jsx("strong",{className:"text-foreground",children:" komplett kostenlos und ohne Verpflichtung."})]})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-6 mb-12",children:t.map((n,r)=>e.jsxs("div",{className:"relative p-8 rounded-2xl bg-gradient-to-br from-background to-secondary/30 border border-border card-gold-hover transition-all group",children:[e.jsx("span",{className:"absolute top-4 right-6 text-7xl font-bold text-cta/5 group-hover:text-cta/10 transition-colors",children:n.number}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"p-3 rounded-xl bg-cta/10 w-fit mb-5 group-hover:bg-cta/20 transition-colors",children:e.jsx(n.icon,{className:"h-7 w-7 text-cta"})}),e.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:n.title}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:n.description})]})]},r))}),e.jsxs("div",{className:"text-center",children:[e.jsxs("p",{className:"text-lg text-muted-foreground mb-6",children:["Kein Verkaufsgespräch. Keine versteckten Kosten. ",e.jsx("span",{className:"text-foreground font-semibold",children:"Nur echte Insights."})]}),e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-base md:text-lg px-8 py-6 h-auto group",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"PADeliverables"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt Termin sichern",e.jsx(dt,{className:"ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform"})]})})]})]})})},iR=()=>{const t=["Ãber 13 Mio. ⬠verwaltetes Werbebudget","100+ E-Commerce Shops optimiert","Google Partner seit 2019","ProfitMetrics Certified Partner","Spezialisiert auf POAS & Performance Max"];return e.jsx("section",{className:"py-20 md:py-28 bg-secondary/30",children:e.jsx("div",{className:"container mx-auto px-4 max-w-6xl",children:e.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"relative rounded-2xl overflow-hidden",children:[e.jsx("img",{src:ia,alt:"Gordon Kuckluck - CEO & Founder von AdsHero",className:"w-full max-w-md mx-auto rounded-2xl"}),e.jsx("div",{className:"absolute bottom-4 left-4 right-4",children:e.jsx("div",{className:"bg-background/95 backdrop-blur-sm rounded-xl p-4 border border-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-bold text-foreground",children:"Gordon Kuckluck"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"CEO & Founder"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("a",{href:"https://www.linkedin.com/in/gordon-kuckluck",target:"_blank",rel:"noopener noreferrer",className:"p-2 rounded-lg bg-secondary hover:bg-cta/10 hover:border-cta/30 border border-transparent transition-colors icon-gold-hover",children:e.jsx(Bn,{className:"w-5 h-5 text-muted-foreground"})}),e.jsx("a",{href:"https://www.youtube.com/@AdsHero",target:"_blank",rel:"noopener noreferrer",className:"p-2 rounded-lg bg-secondary hover:bg-cta/10 hover:border-cta/30 border border-transparent transition-colors icon-gold-hover",children:e.jsx(wg,{className:"w-5 h-5 text-muted-foreground"})})]})]})})})]}),e.jsx("div",{className:"absolute -top-4 -right-4 bg-background rounded-xl p-3 shadow-lg border border-border",children:e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-16 object-contain"})})]}),e.jsxs("div",{children:[e.jsx(cr,{variant:"secondary",className:"mb-6 text-sm font-semibold px-4 py-2",children:"Wer steckt dahinter?"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-bold text-foreground mb-6 leading-tight",children:["Spezialisiert auf ",e.jsx("span",{className:"text-cta",children:"E-Commerce Profitabilität"})]}),e.jsxs("p",{className:"text-lg text-muted-foreground mb-8 leading-relaxed",children:["Gordon gründete AdsHero mit einer klaren Mission: E-Commerce Shops dabei zu helfen, nicht nur mehr Umsatz zu generieren, sondern ",e.jsx("strong",{className:"text-foreground",children:"mehr Gewinn"}),". Nachdem er gesehen hat, wie viele Shops hohe ROAS-Zahlen feiern, aber am Ende des Monats kein Geld übrig haben, entwickelte er das POAS-Framework."]}),e.jsx("div",{className:"space-y-3 mb-8",children:t.map((n,r)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Zt,{className:"h-5 w-5 text-cta flex-shrink-0"}),e.jsx("span",{className:"text-foreground font-medium",children:n})]},r))}),e.jsxs("blockquote",{className:"border-l-4 border-cta pl-6 italic text-muted-foreground",children:['"Die meisten Agenturen optimieren auf Metriken, die gut aussehen. Wir optimieren auf das, was auf deinem Konto ankommt."',e.jsx("footer",{className:"mt-2 text-sm font-semibold text-foreground not-italic",children:"â Gordon Kuckluck"})]})]})]})})})},aR=()=>{const t=[{name:"Eric Hüther",company:"Fashion E-Commerce",image:Qg,headline:"+67% Gewinn in 3 Monaten",text:"Vorher habe ich nur auf ROAS geschaut und mich gefragt, warum am Ende nichts übrig bleibt. Das POAS-Framework hat mir die Augen geöffnet. Jetzt weià ich genau, welche Produkte mir wirklich Geld bringen.",metrics:{before:"3,2x ROAS",after:"2,8x ROAS, aber +67% Gewinn"}},{name:"Andrei Anissimov",company:"Home & Living Shop",image:yc,headline:"Endlich Durchblick bei PMax",text:"Performance Max war für mich eine Blackbox. AdsHero hat mir gezeigt, wie ich die Kontrolle zurückbekomme und Google auf meine profitablen Produkte fokussiere. Game Changer!",metrics:{before:"Chaos-Kampagnen",after:"Strukturierter Profit"}}];return e.jsx("section",{className:"py-20 md:py-28 bg-background",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsx("span",{className:"inline-block text-cta font-semibold text-sm uppercase tracking-wider mb-4",children:"Was Kunden sagen"}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Echte Ergebnisse, ",e.jsx("span",{className:"text-cta",children:"echte Stimmen"})]})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-8",children:t.map((n,r)=>e.jsx(ce,{className:"bg-gradient-to-br from-secondary/50 to-background border-border
574card-gold-hover transition-colors overflow-hidden",children:e.jsxs(Vs,{className:"p-8",children:[e.jsx(V2,{className:"w-10 h-10 text-cta/20 mb-4"}),e.jsx("p",{className:"text-xl font-bold text-cta mb-4",children:n.headline}),e.jsxs("p",{className:"text-muted-foreground leading-relaxed mb-6",children:['"',n.text,'"']}),e.jsx("div",{className:"bg-background/50 rounded-xl p-4 mb-6 border border-border",children:e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground mb-1",children:"Vorher"}),e.jsx("p",{className:"font-semibold text-foreground",children:n.metrics.before})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground mb-1",children:"Nachher"}),e.jsx("p",{className:"font-semibold text-success",children:n.metrics.after})]})]})}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("img",{src:n.image,alt:n.name,className:"w-14 h-14 rounded-full object-cover border-2 border-cta/20"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-foreground",children:n.name}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n.company})]}),e.jsx("div",{className:"ml-auto flex gap-0.5",children:[...Array(5)].map((s,i)=>e.jsx($2,{className:"w-4 h-4 fill-cta text-cta"},i))})]})]})},r))})]})})},lR=()=>{const t=[{question:"Ist die Profit-Analyse wirklich kostenlos?",answer:"Ja, zu 100%. Wir bieten die Analyse kostenlos an, weil wir wissen, dass die meisten Shops, die ihre Zahlen sehen, verstehen, wie viel Potenzial sie haben. Es ist unser Weg, dir zu zeigen, was möglich ist â ohne Risiko für dich."},{question:"Wie lange dauert die Analyse?",answer:"Das Gespräch dauert ca. 30 Minuten. In dieser Zeit gehen wir gemeinsam durch deine Kampagnen, analysieren deine Produktprofitabilität und zeigen dir konkrete Optimierungspotenziale."},{question:"Was braucht ihr von mir?",answer:"Idealerweise Lesezugriff auf dein Google Ads Konto. Optional auch Zugang zu deinem Shop-Backend für Margendaten. Keine Sorge â wir erklären dir alles Schritt für Schritt im Gespräch."},{question:"Was ist POAS und wie unterscheidet es sich von ROAS?",answer:"ROAS (Return on Ad Spend) zeigt dir nur, wie viel Umsatz du pro Werbe-Euro machst. POAS (Profit on Ad Spend) zeigt dir, wie viel Gewinn. Der Unterschied: Ein Produkt mit 10x ROAS aber 5% Marge bringt dir weniger als ein Produkt mit 3x ROAS und 40% Marge."},{question:"Funktioniert das auch für kleine Shops?",answer:"Ja, besonders für kleine Shops ist POAS wichtig. Mit begrenztem Budget musst du jeden Euro optimal einsetzen. Wir arbeiten mit Shops ab ca. â¬2.000 monatlichem Werbebudget."},{question:"Muss ich meine aktuelle Agentur wechseln?",answer:"Nein, die Analyse ist unabhängig davon, wer deine Kampagnen betreut. Du bekommst objektive Insights, die du mit jeder Agentur umsetzen kannst. Natürlich helfen wir auch gerne direkt, wenn du das möchtest."},{question:"Wie schnell sehe ich Ergebnisse?",answer:"Erste Quick-Wins wie das Stoppen von unprofitablen Produkten wirken sofort. Die volle Wirkung des POAS-Frameworks siehst du typischerweise nach 4-8 Wochen, wenn Google auf die neuen Signale optimiert hat."}];return e.jsx("section",{className:"py-20 md:py-28 bg-secondary/30",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-4xl",children:[e.jsxs("div",{className:"text-center mb-14",children:[e.jsx("span",{className:"inline-block text-cta font-semibold text-sm uppercase tracking-wider mb-4",children:"Häufige Fragen"}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Noch ",e.jsx("span",{className:"text-cta",children:"Fragen?"})]})]}),e.jsx(ip,{type:"single",collapsible:!0,className:"space-y-4",children:t.map((n,r)=>e.jsxs(Jn,{value:`item-${r}`,className:"bg-background border border-border rounded-xl px-6 card-gold-hover data-[state=open]:border-cta/50 transition-colors",children:[e.jsx(Qn,{className:"text-left text-lg font-semibold hover:text-cta py-6",children:n.question}),e.jsx(Xn,{className:"text-muted-foreground pb-6 leading-relaxed",children:n.answer})]},r))})]})})},oR=()=>e.jsxs("section",{className:"py-20 md:py-28 bg-gradient-to-b from-background to-primary/5 relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_bottom,_var(--tw-gradient-stops))] from-primary/10 via-trans
574parent to-transparent"}),e.jsx("div",{className:"container mx-auto px-4 max-w-4xl relative z-10",children:e.jsxs("div",{className:"text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-destructive/10 text-destructive mb-8",children:[e.jsx($i,{className:"w-5 h-5"}),e.jsx("span",{className:"font-semibold text-sm",children:"Nur 5 Plätze pro Woche verfügbar"})]}),e.jsxs("h2",{className:"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6 leading-tight",children:["Bereit, deinen ",e.jsx("span",{className:"text-cta",children:"echten Gewinn"})," zu sehen?"]}),e.jsxs("p",{className:"text-lg md:text-xl text-muted-foreground mb-10 max-w-2xl mx-auto",children:["In 30 Minuten weiÃt du, welche Produkte dein Budget verbrennen â und wie du das ändern kannst.",e.jsx("strong",{className:"text-foreground",children:" Kostenlos. Ohne Verpflichtung."})]}),e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"text-lg px-10 py-7 h-auto group mb-10",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"PAFinalCTA"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:["Jetzt kostenlose Analyse sichern",e.jsx(dt,{className:"ml-2 h-6 w-6 group-hover:translate-x-1 transition-transform"})]})}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-8 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(P2,{className:"h-5 w-5 text-cta"}),e.jsx("span",{children:"30 Min. Analyse-Call"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A0,{className:"h-5 w-5 text-cta"}),e.jsx("span",{children:"100+ zufriedene Kunden"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx($i,{className:"h-5 w-5 text-cta"}),e.jsx("span",{children:"Ergebnisse in unter 48h"})]})]})]})})]}),dR=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Kostenlose Profit-Analyse für Google Ads | AdsHero"}),e.jsx("meta",{name:"description",content:"Finde heraus, welche Produkte wirklich Gewinn bringen. Kostenlose 30-Min Analyse deiner Google Ads mit konkreten Handlungsempfehlungen. Jetzt Termin sichern!"}),e.jsx("meta",{name:"robots",content:"index, follow"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/profit-analyse"}),e.jsx("meta",{property:"og:title",content:"Kostenlose Profit-Analyse für Google Ads | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Finde heraus, welche Produkte wirklich Gewinn bringen. Kostenlose 30-Min Analyse mit konkreten Handlungsempfehlungen."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/profit-analyse"})]}),e.jsxs("main",{children:[e.jsx(eR,{}),e.jsx(tR,{}),e.jsx(nR,{}),e.jsx(rR,{}),e.jsx(sR,{}),e.jsx(iR,{}),e.jsx(aR,{}),e.jsx(lR,{}),e.jsx(oR,{})]}),e.jsx(Ac,{})]}),vl=y.forwardRef(({className:t,type:n,...r},s)=>e.jsx("input",{type:n,className:de("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:s,...r}));vl.displayName="Input";const wb="/assets/provenexpert-badge-BLuyCdiw.png",cR="/assets/profit-audit-report-mockup-CAclCMne.png",uR=()=>{const[t,n]=y.useState(""),[r,s]=y.useState(""),[i,a]=y.useState(!1),l=Ml(),{toast:o}=pg(),d=async u=>{var g,m,j;if(u.preventDefault(),!t||!t.trim()){o({title:"E-Mail erforderlich",description:"Bitte gib deine E-Mail-Adresse ein.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.trim())){o({title:"Ungültige E-Mail",description:"Bitte gib eine gültige E-Mail-Adresse ein.",variant:"destructive"});return}a(!0);try{const{data:p,error:b}=await gp.functions.invoke("quentn-subscribe",{body:{email:t.trim(),firstName:r.trim()||void 0}});if(b)throw console.error("Supabase function error:",b),new Error(b.message||"Subscription failed");if(p&&!p.success)throw new Error(p.error||"Subscription failed");console.log("Subscription successful:",p),se("lead_form_submit",{form:"gratis-report"}),l("/danke")}catch(p){console.error("Subscription error:",p);let b="Es gab ein Problem bei der Anmeldung. Bitte versuche es erneut.";(g=p.message)!=null&&g.includes("DNS")||(m=p.message)!=null&&m.includes("dns")?b="Verbindungsproblem. Bitte versuche es in ein paar Minuten erneut.":(j=p.message)!=null&&j.includes("configuration")&&(b="Technisches Problem. Bitte kontaktiere den Support."),o({title:"Fehler bei der Anmeldung",description:b,variant:"destructive"})}finally{a(!1)}},c=({ctaText:u="Ja, zeig mir welche Produkte Geld verbrennen â"})=>e.jsx(ce,{className:"p-6 md:p-8 bg-card shadow-strong border-2 border-primary/10",children:e.jsxs("form",{onSubmit:d,className:"space-y-4",children:[e.jsx("div",{children:e.jsx(vl,{type:"email",placeholder:"Deine E-Mail-Adresse",value:t,onChange:h=>n(h.target.value),className:"h-12 text-base",required:!0,autoComplete:"email",name:"email"})}),e.jsx("div",{children:e.jsx(vl,{type:"text",placeholder:"Dein Vorname (optional)",value:r,onChange:h=>s(h.target.value),className:"h-12 text-base",autoComplete:"given-name",name:"firstName"})}),e.jsx(q,{type:"submit",variant:"cta",size:"lg",className:"w-full h-12 text-base md:text-lg",disabled:i,children:i?"Wird gesendet...":u}),e.jsxs("p",{className:"text-sm text-muted-foreground text-center flex items-center justify-center gap-2",children:[e.jsx(yd,{className:"w-4 h-4"}),"100% kostenlos. Kein Spam. Jederzeit abmeldbar."]})]})});return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Gratis Profit-Audit Report | AdsHero"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),e.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-background via-background to-muted",children:[e.jsx("section",{className:"container mx-auto px-4 pt-8 pb-12 md:pt-16 md:pb-20",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-10 md:h-12 mx-auto mb-6 md:mb-8"}),e.jsx("div",{className:"text-center mb-4 md:mb-6 space-y-3",children:e.jsxs(cr,{className:"bg-destructive/10 text-destructive hover:bg-destructive/15 text-xs md:text-sm px-3 md:px-4 py-1.5 md:py-2 inline-flex items-center gap-1.5",children:[e.jsx($i,{className:"w-3 h-3 md:w-4 md:h-4"}),"Nur diese Woche: Bonus-Checkliste inklusive"]})}),e.jsxs("h1",{className:"text-3xl md:text-5xl lg:text-6xl font-bold leading-tight text-center mb-4 md:mb-6 px-2",children:["Finde in 5 Minuten heraus, welche Produkte"," ",e.jsx("span",{className:"text-cta font-extrabold",children:"echten Gewinn"})," ","machen â und welche dein Budget verbrennen"]}),e.jsx("p",{className:"text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto text-center mb-6 md:mb-10 px-2",children:"Der POAS-Report für E-Commerce Shops mit 3.000â¬+ Werbebudget. 7 Kapitel. 30 Min Lesezeit. Sofort umsetzbar."}),e.jsxs("div",{className:"grid lg:grid-cols-2 gap-8 md:gap-12 items-center max-w-6xl mx-auto mb-6 md:mb-10",children:[e.jsx("div",{className:"order-2 lg:order-1 flex justify-center",children:e.jsxs("div",{className:"relative w-full max-w-sm md:max-w-md",children:[e.jsx("img",{src:cR,alt:"Profit-Audit Report Mockup",className:"w-full mx-auto drop-shadow-2xl transform hover:scale-105 transition-transform duration-300"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-cta/20 to-transparent blur-3xl -z-10 transform scale-110"})]})}),e.jsxs("div",{className:"order-1 lg:order-2 space-y-4",children:[e.jsx(c,{}),e.jsxs(ce,{className:"p-4 bg-success/5 border-success/20 text-center",children:[e.jsxs("div",{className:"flex items-center justify-center gap-2 mb-1",children:[e.jsx(Gh,{className:"w-5 h-5 text-success"}),e.jsx("p",{className:"font-semibold text-sm md:text-base",children:"100% Kostenlos. Kein Haken."})]}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground",children:"Keine Kreditkarte. Kein Abo. Kein Spam. Versprochen."})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 md:gap-6 text-center",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-10 md:h-12 opacity-80"}),e.jsxs("div",{className:"text-xs md:text-sm text-muted-foreground",children:[e.jsx("div",{className:"font-semibold",children:"Ãber 13 Mio. â¬"}),e.jsx("div",{children:"Werbebudget verwaltet"})]}),e.jsx("img",{src:wb,alt:"ProvenExpert",className:"h-10 md:h-12 opacity-80"})]})]})}),e.jsx("section",{className:"bg-muted/50 py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-8 md:mb-12",children:"Kommt dir das bekannt vor?"}),e.jsx("div",{className:"space-y-3 md:space-y-4",children:["Dein ROAS sieht gut aus, aber dein Kontostand wächst nicht","PMax verbrennt Budget bei Produkten mit 10% Marge","Du weiÃt nicht, welche deiner 500 Produkte wirklich profitabel sind","Deine Agentur feiert sich für Zahlen, die dir nichts bringen","Du skalierst Ads nach 'Bauchgefühl' statt nach echtem Gewinn"].map((u,h)=>e.jsx(ce,{className:"p-3 md:p-4 border-l-4 border-destructive",children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(N0,{className:"w-5 h-5 md:w-6 md:h-6 text-destructive flex-shrink-0 mt-0.5"}),e.jsx("p",{className:"text-base md:text-lg",children:u})]})},h))}),e.jsx("p",{className:"text-center text-base md:text-lg mt-6 md:mt-8 text-muted-foreground italic px-4",children:'"Wenn du bei 3 oder mehr Punkten genickt hast, wird dieser Report dein Google-Ads-Mindset für immer verändern."'})]})})}),e.jsx("section",{className:"py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-4",children:"Was du im Report entdeckst:"}),e.jsx("p",{className:"text-center text-muted-foreground mb-8 md:mb-12 text-base md:text-lg",children:"Jedes Kapitel ist ein Mikro-Versprechen für deinen E-Commerce-Erfolg"}),e.jsx("div",{className:"space-y-4 md:space-y-5",children:[{num:"1",title:"Die ROAS-Lüge entlarvt",description:"Warum ein ROAS von 4,0 = 0⬠Gewinn sein kann (mit Rechenbeispiel, das dich schockieren wird)"},{num:"2",title:"Das POAS-Framework",description:"Die einzige Kennzahl, auf die Top-Shops optimieren (und warum deine Agentur sie dir verschweigt)"},{num:"3",title:"Die Produkt-Matrix",description:"Wie du deine Produkte in Gewinner, Verlierer & Potenziale einteilst â in unter 10 Minuten"},{num:"4",title:"Case Study: Stahlia GmbH",description:"+85% Umsatz in 90 Tagen â die exakte Strategie, die wir angewandt haben"},{num:"5",title:"Budget-Intelligenz",description:"Warum 'mehr Budget' oft der falsche Hebel ist â und was du stattdessen tun solltest"},{num:"6",title:"Die Quick-Win Checkliste",description:"6 Fragen, die du dir heute stellen solltest (Wert: 97⬠â GRATIS dabei)"}
574,{num:"7",title:"Der 30-Tage-Plan",description:"Schritt-für-Schritt zur Profit-Optimierung â sofort umsetzbar, ohne Agentur"}].map((u,h)=>e.jsxs("div",{className:"flex items-start gap-4 p-4 md:p-5 rounded-xl bg-card border hover:shadow-medium transition-all duration-300",children:[e.jsx("div",{className:"w-10 h-10 md:w-12 md:h-12 rounded-full bg-cta/10 flex items-center justify-center flex-shrink-0",children:e.jsx("span",{className:"text-lg md:text-xl font-bold text-cta",children:u.num})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h3",{className:"font-bold text-base md:text-lg mb-1",children:u.title}),e.jsx("p",{className:"text-sm md:text-base text-muted-foreground",children:u.description})]})]},h))})]})})}),e.jsx("section",{className:"bg-muted/50 py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-4xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-8 md:mb-12",children:"Echte Ergebnisse. Echte Zahlen."}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-4 md:gap-8 mb-6 md:mb-8",children:[e.jsxs(ce,{className:"p-6 md:p-8 text-center",children:[e.jsx("div",{className:"text-xs md:text-sm text-muted-foreground mb-2",children:"JUNI 2024"}),e.jsx("div",{className:"text-3xl md:text-4xl font-bold mb-2",children:"45.000 â¬"}),e.jsx("div",{className:"text-sm md:text-base text-muted-foreground",children:"Umsatz"}),e.jsx("div",{className:"text-xl md:text-2xl font-semibold mt-3 md:mt-4",children:"9.800 â¬"}),e.jsx("div",{className:"text-xs md:text-sm text-muted-foreground",children:"Werbeausgaben"})]}),e.jsxs(ce,{className:"p-6 md:p-8 text-center border-2 border-success",children:[e.jsx("div",{className:"text-xs md:text-sm text-muted-foreground mb-2",children:"AUGUST 2024"}),e.jsx("div",{className:"text-3xl md:text-4xl font-bold mb-2 text-success",children:"74.000 â¬"}),e.jsx("div",{className:"text-sm md:text-base text-muted-foreground",children:"Umsatz"}),e.jsx("div",{className:"text-xl md:text-2xl font-semibold mt-3 md:mt-4",children:"11.300 â¬"}),e.jsx("div",{className:"text-xs md:text-sm text-muted-foreground",children:"Werbeausgaben"}),e.jsx(cr,{className:"mt-3 md:mt-4 bg-success text-success-foreground text-xs md:text-sm",children:"+85% â"})]})]}),e.jsx("p",{className:"text-center text-lg md:text-xl font-semibold px-4",children:"Stahlia GmbH: +85% Umsatz in 90 Tagen â bei nur 15% mehr Werbebudget"})]})})}),e.jsx("section",{className:"py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(ce,{className:"p-6 md:p-8 border-l-4 border-success bg-success/5",children:[e.jsx("p",{className:"text-lg md:text-xl italic mb-4",children:'"Nachdem wir auf POAS umgestellt haben, wussten wir endlich, welche 20% unserer Produkte 80% des Gewinns machen. Der Rest war reines Budget-Verbrennen."'}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-muted flex items-center justify-center",children:e.jsx("span",{className:"text-lg font-bold",children:"S"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold",children:"Simon W."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"E-Commerce Shop mit 500+ Produkten"})]})]})]})})})}),e.jsx("section",{className:"bg-muted/50 py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-2xl mx-auto text-center space-y-6 md:space-y-8",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold px-4",children:"Bereit, deine Google Ads endlich profitabel zu machen?"}),e.jsx("div",{className:"bg-destructive/10 rounded-lg p-4 text-center inline-block",children:e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsx(I2,{className:"w-5 h-5 text-destructive"}),e.jsx("p",{className:"font-semibold text-destructive",children:'Bonus nur diese Woche: Die "Quick-Win Profit-Checkliste" (Wert: 97â¬) gratis dazu'})]})}),e.jsx(c,{ctaText:"Report jetzt kostenlos herunterladen â"})]})})}),e.jsx("section",{className:"py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-8 md:mb-12 px-2",children:"Dieser Report ist perfekt für dich, wenn..."}),e.jsx("div",{className:"space-y-3 md:space-y-4 mb-6 md:mb-8",children:["Du einen E-Commerce Shop betreibst (Shopify, WooCommerce, etc.)","Du mindestens 3.000â¬/Monat in Google Ads investierst","Du wissen willst, welche Produkte wirklich Gewinn machen","Du keine Lust mehr auf 'schöne Zahlen' hast, die nichts bedeuten"].map((u,h)=>e.jsx(ce,{className:"p-3 md:p-4 border-l-4 border-success",children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(Zt,{className:"w-5 h-5 md:w-6 md:h-6 text-success flex-shrink-0 mt-0.5"}),e.jsx("p",{className:"text-base md:text-lg",children:u})]})},h))}),e.jsx(ce,{className:"p-4 md:p-6 bg-destructive/5 border-destructive/20",children:e.jsx("p",{className:"text-base md:text-lg font-semibold",children:"Dieser Report ist NICHT für dich, wenn du mit einem ROAS von 2,0 zufrieden bist und dich nicht für echte Profitabilität interessierst."})})]})})}),e.jsx(Jw,{}),e.jsx("section",{className:"py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-8 md:mb-12",children:"Häufige Fragen"}),e.jsxs("div",{className:"space-y-4 md:space-y-6",children:[e.jsxs(ce,{className:"p-4 md:p-6",children:[e.jsx("h3",{className:"font-bold text-lg md:text-xl mb-2 md:mb-3",children:"Warum ist der Report kostenlos?"}),e.jsx("p",{className:"text-sm md:text-base text-muted-foreground",children:"Weil wir wissen: Wenn du verstehst, wie POAS funktioniert, erkennst du auch, warum die meisten Shops Geld verbrennen. Und dann kommst du vielleicht zu uns, wenn du Hilfe brauchst. Fair Deal?"})]}),e.jsxs(ce,{className:"p-4 md:p-6",children:[e.jsx("h3",{className:"font-bold text-lg md:text-xl mb-2 md:mb-3",children:"Bekomme ich Spam?"}),e.jsx("p",{className:"text-sm md:text-base text-muted-foreground",children:"Nein. Du bekommst den Report + maximal 1-2 relevante E-Mails pro Monat. Jederzeit abmeldbar. Wir hassen Spam genauso wie du."})]}),e.jsxs(ce,{className:"p-4 md:p-6",children:[e.jsx("h3",{className:"font-bold text-lg md:text-xl mb-2 md:mb-3",children:"Funktioniert das auch für meinen Shop?"}),e.jsx("p",{className:"text-sm md:text-base text-muted-foreground",children:"Das Framework funktioniert für jeden E-Commerce Shop mit Google Ads â egal ob Mode, Elektronik, Nische oder Bestseller. Die Prinzipien sind universell."})]})]})]})})}),e.jsx("section",{className:"bg-muted/50 py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-4xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold text-center mb-4",children:"Wer steckt hinter diesem Report?"}),e.jsx("p",{className:"text-center text-muted-foreground text-lg mb-8 md:mb-12 max-w-2xl mx-auto",children:"Wir sind AdsHero â die Agentur für E-Commerce Shops, die echten Gewinn wollen."}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 md:gap-8 mb-8 md:mb-12",children:[e.jsxs(ce,{className:"p-6 text-center",children:[e.jsx("img",{src:ia,alt:"Gordon Kuckluck",className:"w-24 h-24 md:w-32 md:h-32 rounded-full mx-auto mb-4 object-cover border-4 border-primary/10"}),e.jsx("h3",{className:"font-bold text-xl mb-1",children:"Gordon Kuckluck"}),e.jsx("p",{className:"text-muted-foreground text-sm mb-3",children:"Founder & Google Ads Experte"}),e.jsxs("a",{href:"https://www.linkedin.com/in/gordon-kuckluck-ab4238220/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-primary hover:underline text-sm",children:[e.jsx(Bn,{className:"w-4 h-4"}),"LinkedIn"]})]}),e.jsxs(ce,{className:"p-6 text-center",children:[e.jsx("img",{src:wc,alt:"Christoph Bogner",className:"w-24 h-24 md:w-32 md:h-32 rounded-full mx-auto mb-4 object-cover border-4 border-primary/10"}),e.jsx("h3",{className:"font-bold text-xl mb-1",children:"Christoph Bogner"}),e.jsx("p",{className:"text-muted-foreground text-sm mb-3",children:"Founder & Growth Strategist"}),e.jsxs("a",{href:"https://www.linkedin.com/in/christoph-bogner-7aa388152/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-primary hover:underline text-sm",children:[e.jsx(Bn,{className:"w-4 h-4"}),"LinkedIn"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 md:gap-6 mb-8",children:[e.jsxs(ce,{className:"p-4 md:p-6 text-center",children:[e.jsx("div",{className:"text-2xl md:text-3xl font-bold text-primary mb-1",children:"13 Mio+ â¬"}),e.jsx("div",{className:"text-sm md:text-base text-muted-foreground",children:"verwaltetes Werbebudget"})]}),e.jsxs(ce,{className:"p-4 md:p-6 text-center",children:[e.jsx("div",{className:"text-2xl md:text-3xl font-bold text-primary mb-1",children:"7+ Jahre"}),e.jsx("div",{className:"text-sm md:text-base text-muted-foreground",children:"Google Ads Erfahrung"})]})]}),e.jsx(ce,{className:"p-4 md:p-6 bg-primary/5 border-primary/20",children:e.jsx("p",{className:"text-center text-base md:text-lg italic text-muted-foreground",children:`"Wir bieten langfristig gedachte Unterstützung und stellen uns klar gegen 'Schnellschüsse' und unseriöse Anbieter. Bei uns zählt echter Gewinn â nicht Vanity Metrics."`})})]})})}),e.jsx("section",{className:"bg-primary text-primary-foreground py-12 md:py-16",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-2xl mx-auto text-center space-y-6 md:space-y-8",children:[e.jsx("h2",{className:"text-2xl md:text-4xl font-bold px-2",children:"Hol dir jetzt den kostenlosen Profit-Audit Report"}),e.jsx("p",{className:"text-lg md:text-xl opacity-90 px-4",children:"7 Kapitel. 30+ Minuten Lesezeit. Unbezahlbare Erkenntnisse."}),e.jsx(ce,{className:"p-4 md:p-8 bg-background text-foreground",children:e.jsx(c,{ctaText:"Zeig mir die Profit-Wahrheit â"})}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-4 md:gap-6 pt-4 opacity-80",children:e.jsxs("div",{className:"flex items-center gap-2 text-xs md:text-sm px-4",children:[e.jsx(yd,{className:"w-3 h-3 md:w-4 md:h-4 flex-shrink-0"}),e.jsx("span",{children:"Deine Daten sind sicher. DSGVO-konform. Jederzeit abmeldbar."})]})}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 md:gap-6 pt-2 md:pt-4",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-8 md:h-10 opacity-70"}),e.jsx("img",{src:wb,alt:"ProvenExpert",className:"h-8 md:h-10 opacity-70"})]})]})})})]}),e.jsx(Ac,{})]})},hR=()=>{const[t,n]=y.useState(""),[r,s]=y.useState(""),[i,a]=y.useState(!1),l=Ml(),{toast:o}=pg(),d=y.useRef(null),c=()=>{d.current&&(d.current.playbackRate=.25)};y.useEffect(()=>{const p=setTimeout(c,500);return()=>clearTimeout(p)},[]);const u=async p=>{var x,f,v;if(p.preventDefault(),!r.trim()||r.trim().length<2){o({title:"Vorname erforderlich",description:"Bitte gib deinen Vornamen ein.",variant:"destructive"});return}if(!t||!t.trim()){o({title:"E-Mail erforderlich",description:"Bitte gib deine E-Mail-Adresse ein.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.trim())){o({title:"Ungültige E-Mail",description:"Bitte gib eine gültige E-Mail-Adresse ein.",variant:"destructive"});return}a(!0);try{const w=crypto.randomUUID(),k=((x=document.cookie.match(/(?:^|; )_fbc=([^;]*)/))==null?void 0:x[1])||"",N=((f=document.cookie.match(/(?:^|; )_fbp=([^;]*)/))==null?void 0:f[1])||"",{data:S,error:A}=await gp.functions.invoke("quentn-subscribe",{body:{email:t.trim(),firstName:r.trim(),metaEventId:w,sourceUrl:window.location.href,userAgent:navigator.userAgent,fbc:k,fbp:N}});if(A)throw new Error(A.message||"Subscription failed");if(S&&!S.success)throw new Error(S.error||"Subscription failed");(v=window.fbq)==null||v.call(window,"track","Lead",{},{eventID:w}),se("lead_form_submit",{form:"profit-report"}),l(`/poas-report-nur-ein-klick-fehlt-noch?eid=${w}`)}catch(w){console.error("Subscription error:",w),o({title:"Fehler bei der Anmeldung",description:"Es gab ein Problem. Bitte versuche es erneut.",variant:"destructive"})}finally{a(!1)}},h=["Warum dein ROAS von 5 in Wahrheit Verlust bedeuten kann (Seite 3)","Die eine Kennzahl, auf die profitable Shops heimlich umgestellt haben","Case Study: +94% mehr Gewinn bei nur 15% mehr Budget (mit echten Zahlen)","Interaktiver POAS-Rechner: Berechne in 30 Sekunden deinen echten Gewinn pro Werbe-Euro"],g=["Du betreibst einen E-Commerce Shop (Shopify, WooCommerce o.ä.)","Du investierst mindestens 10.000 ⬠pro Monat in Google Ads","Du willst profitabel skalieren â nicht nur mehr Umsatz, sondern mehr Gewinn","Du optimierst aktuell auf ROAS und fragst dich, ob das wirklich reicht"],m=["Shops mit weniger als 10.000 ⬠monatlichem Ad Spend","Unternehmen, die noch keinen laufenden Traffic haben"],j=[{author:"Geschäftsführung",role:"Stahlia GmbH",headline:"+94% Gewinn in 90 Tagen",text:"Die Zusammenarbeit mit AdsHero ist von Anfang an professionell und zielführend verlaufen â und läuft weiterhin sehr erfolgreich. Unsere Google-Ads-Kampagnen wurden effizient aufgesetzt und werden kontinuierlich optimiert. Besonders überzeugt uns die strategische Herangehensweise, die transparente Kommunikation und die schnelle Reaktionszeit bei Fragen oder Anpassungen. Wer eine kompetente Agentur für Google Ads sucht, ist bei AdsHero bestens aufgehoben. Klare Empfehlung!",image:rm,isLogo:!0},{author:"Eric Hüther",role:"Digitaler Solopreneur",headline:"Umsatz x10 in einem Jahr",text:"Wir bekommen sensationell günstige Leads und monatlich tausende Webinar-Teilnehmer. Me
574in Umsatz hat sich binnen eines Jahres mehr als verzehnfacht!",image:Qg},{author:"Andrei Anissimov",role:"Geschäftsführer, Trader IQ GmbH",headline:"293.706 ⬠Umsatz bei ROAS 768%",text:"Gordon und Christoph haben meine Leadkosten halbieren können. Ich hatte vorher schon mit vielen Agenturen gearbeitet â die Jungs haben alles übertroffen.",image:yc}];return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Gratis POAS-Report | AdsHero"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("section",{className:"container mx-auto px-4 pt-8 pb-6 md:pt-14 md:pb-10",children:e.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-10 md:h-12 mx-auto mb-8 md:mb-12"}),e.jsxs("h1",{className:"text-3xl md:text-5xl lg:text-6xl font-bold leading-tight mb-4 md:mb-6",children:["Du optimierst auf ROAS?"," ",e.jsx("span",{className:"text-cta",children:"Dann verschenkst du Gewinn."})]}),e.jsxs("p",{className:"text-lg md:text-xl text-muted-foreground leading-relaxed",children:[e.jsx("span",{className:"md:hidden",children:"Das Framework, mit dem E-Commerce-Shops ihren Gewinn um +94% steigern."}),e.jsx("span",{className:"hidden md:inline",children:"Das Framework, mit dem E-Commerce-Shops ihren Gewinn um +94% steigern â in unter 30 Minuten erklärt."})]})]})}),e.jsx("section",{className:"container mx-auto px-4 pb-8 md:pb-14",children:e.jsx("div",{className:"max-w-5xl mx-auto",children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-8 md:gap-10 items-start",children:[e.jsx("div",{className:"order-1",children:e.jsx("video",{ref:d,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,onLoadedMetadata:c,onPlay:c,className:"rounded-xl shadow-strong w-full",src:"/videos/poas-report-loop.mp4"})}),e.jsx("div",{className:"order-2",children:e.jsx(ce,{id:"optin-form",className:"p-6 md:p-8 bg-card shadow-strong border-2 border-primary/10",children:e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsx(vl,{type:"text",placeholder:"Dein Vorname",value:r,onChange:p=>s(p.target.value),className:"h-12 text-base",required:!0,autoComplete:"given-name",name:"firstName"}),e.jsx(vl,{type:"email",placeholder:"Deine E-Mail-Adresse",value:t,onChange:p=>n(p.target.value),className:"h-12 text-base",required:!0,autoComplete:"email",name:"email"}),e.jsx(q,{type:"submit",variant:"cta",size:"lg",className:"w-full h-auto min-h-14 py-3 text-sm md:text-base whitespace-normal btn-shimmer",disabled:i,children:i?"Wird gesendet...":"Gratis Report anfordern"}),e.jsxs("p",{className:"text-sm text-muted-foreground text-center flex items-center justify-center gap-2",children:[e.jsx(yd,{className:"w-4 h-4"}),"Kein Spam. Jederzeit abmeldbar."]})]})})})]})})}),e.jsx("section",{className:"container mx-auto px-4 pb-8 md:pb-10",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 md:gap-6",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-10 md:h-12 opacity-80"}),e.jsxs("div",{className:"text-xs md:text-sm text-muted-foreground",children:[e.jsx("div",{className:"font-semibold",children:"Ãber 13 Mio. â¬"}),e.jsx("div",{children:"Werbebudget verwaltet"})]})]})})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-14",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold text-center mb-6 md:mb-8",children:"Für wen ist dieser Report?"}),e.jsx("div",{className:"space-y-3 mb-6",children:g.map((p,b)=>
574e.jsxs("div",{className:"flex items-start gap-3 p-3 md:p-4 rounded-xl bg-card border",children:[e.jsx(Zt,{className:"w-5 h-5 md:w-6 md:h-6 text-cta flex-shrink-0 mt-0.5"}),e.jsx("p",{className:"text-base md:text-lg",children:p})]},b))}),e.jsx("div",{className:"space-y-2",children:m.map((p,b)=>e.jsxs("div",{className:"flex items-start gap-3 px-3 py-2",children:[e.jsx(N0,{className:"w-5 h-5 text-muted-foreground flex-shrink-0 mt-0.5"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:p})]},b))})]})}),e.jsx("section",{className:"bg-secondary/30 py-10 md:py-14",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold text-center mb-6 md:mb-8",children:"Was du erfährst"}),e.jsx("div",{className:"space-y-3 md:space-y-4",children:h.map((p,b)=>e.jsxs("div",{className:"flex items-start gap-3 p-4 rounded-xl bg-card border-l-4 border-cta/60 shadow-sm",children:[e.jsx("span",{className:"w-7 h-7 md:w-8 md:h-8 rounded-full bg-cta text-cta-foreground flex items-center justify-center text-sm md:text-base font-bold flex-shrink-0 mt-0.5",children:b+1}),e.jsx("p",{className:"text-base md:text-lg",children:p})]},b))})]})})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-14",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-6 md:mb-8",children:[e.jsx("p",{className:"text-sm font-semibold text-cta uppercase tracking-wider mb-2",children:"Case Study"}),e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Stahlia GmbH: +94% Gewinn in 90 Tagen"}),e.jsx("img",{src:rm,alt:"Stahlia GmbH",className:"h-8 md:h-10 mx-auto mt-4 opacity-70"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 md:gap-6 mb-6",children:[e.jsxs(ce,{className:"p-5 md:p-6 text-center border-2",children:[e.jsx("p",{className:"text-xs md:text-sm font-semibold text-muted-foreground uppercase tracking-wider mb-3",children:"Vorher (Juni)"}),e.jsx("p",{className:"text-2xl md:text-3xl font-bold mb-1",children:"12.339 â¬"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Gewinn"}),e.jsx("p",{className:"text-lg md:text-xl font-semibold",children:"9.800 â¬"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Ad-Spend"})]}),e.jsxs(ce,{className:"p-5 md:p-6 text-center border-2 border-cta/30 bg-cta/5",children:[e.jsx("p",{className:"text-xs md:text-sm font-semibold text-cta uppercase tracking-wider mb-3",children:"Nachher (August)"}),e.jsx("p",{className:"text-2xl md:text-3xl font-bold mb-1",children:"23.959 â¬"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Gewinn"}),e.jsx("p",{className:"text-lg md:text-xl font-semibold",children:"11.300 â¬"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Ad-Spend"})]})]}),e.jsxs("div",{className:"flex justify-center gap-6 md:gap-10",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-2xl md:text-4xl font-bold text-cta",children:"+85%"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"mehr Umsatz"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-2xl md:text-4xl font-bold text-cta",children:"+94%"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"mehr Gewinn"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-2xl md:text-4xl font-bold text-cta",children:"+15%"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"mehr Budget"})]})]})]})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-14",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsx(ce,{className:"p-6 md:p-10 border-2",children:e.jsxs("div",{className:"flex flex-col md:flex-row items-center md:items-start gap-6 md:gap-8",children:[e.jsx("img",{src:ia,alt:"Gordon Kuckluck",className:"w-32 h-32 md:w-40 md:h-40 rounded-full object-cover flex-shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("h2",{className:"text-xl md:text-2xl font-bold mb-1",children:"Gordon Kuckluck"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Geschäftsführer & Gründer, AdsHero GmbH"}),e.jsxs("p",{className:"text-base md:text-lg leading-relaxed mb-5",children:["Gordon berät und betreut E-Commerce-Unternehmen zu profitablem Performance Marketing. Er hat über ",e.jsx("strong",{children:"13 Mio. ⬠Werbebudget"})," verwaltet und hilft Shops dabei, von reinen Umsatzzielen auf echte Gewinnoptimierung umzustellen."]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center md:justify-start gap-4",children:[e.jsx("img",{src:Bs,alt:"Google Partner",className:"h-10 opacity-70"}),e.jsxs("div",{className:"text-sm text-muted-foreground",children:[e.jsx("span",{className:"font-semibold",children:"Google Partner"})," · Zertifiziert"]})]})]})]})})})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-14",children:e.jsxs("div",{className:"max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold text-center mb-6 md:mb-8",children:"Was unsere Kunden sagen"}),e.jsx("div",{className:"space-y-4",children:j.map((p,b)=>e.jsx(ce,{className:"p-5 md:p-6 border-l-4 border-cta bg-cta/5",children:e.jsxs("div",{className:"flex gap-4",children:[e.jsx("img",{src:p.image,alt:p.author,className:`w-14 h-14 md:w-16 md:h-16 rounded-full flex-shrink-0 ${"isLogo"in p&&p.isLogo?"object-contain p-2 bg-white border border-border":"object-cover"}`}),e.jsxs("div",{children:[e.jsx("p",{className:"font-bold text-cta text-sm md:text-base mb-1",children:p.headline}),e.jsxs("p",{className:"text-sm md:text-base italic leading-relaxed mb-2",children:["â",p.text,'"']}),e.jsx("p",{className:"text-sm font-semibold",children:p.author}),e.jsx("p",{className:"text-xs text-muted-foreground",children:p.role})]})]})},b))})]})}),e.jsx("section",{className:"container mx-auto px-4 pb-10 md:pb-14",children:e.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[e.jsx(q,{variant:"cta",size:"lg",className:"w-full max-w-md h-auto min-h-14 py-3 text-sm md:text-base whitespace-normal btn-shimmer",onClick:()=>{var p;return(p=document.getElementById("optin-form"))==null?void 0:p.scrollIntoView({behavior:"smooth"})},children:"Gratis Report anfordern"}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-3 flex items-center justify-center gap-2",children:[e.jsx(yd,{className:"w-4 h-4"}),"Kein Spam. Jederzeit abmeldbar."]})]})}),e.jsx("section",{className:"py-8 px-4",children:e.jsxs("div",{className:"max-w-2xl mx-auto text-center space-y-3 text-xs text-muted-foreground",children:[e.jsx("p",{children:"This site is not a part of the Facebook, Instagram website or Meta Platforms Inc. Additionally, this site is NOT endorsed by Meta Platforms in any way. FACEBOOK is a trademark of Meta Platforms, Inc."}),e.jsx("p",{children:"This website is not affiliated with, endorsed by, or operated by Google LLC. Google is a registered trademark of Google LLC."})]})}),e.jsx("footer",{className:"bg-primary text-primary-foreground py-6",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-3xl text-center space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-center gap-4 text-sm text-primary-foreground
574/80",children:[e.jsx(E,{to:"/impressum",className:"hover:text-cta transition-colors",children:"Impressum"}),e.jsx("span",{className:"text-primary-foreground/40",children:"|"}),e.jsx(E,{to:"/datenschutz",className:"hover:text-cta transition-colors",children:"Datenschutz"}),e.jsx("span",{className:"text-primary-foreground/40",children:"|"}),e.jsxs("button",{onClick:()=>window.dispatchEvent(new CustomEvent("openCookieBanner")),className:"flex items-center gap-1.5 hover:text-cta transition-colors",children:[e.jsx(rc,{className:"h-3.5 w-3.5"}),"Cookie-Einstellungen"]})]}),e.jsxs("p",{className:"text-xs text-primary-foreground/50",children:["© ",new Date().getFullYear()," AdsHero GmbH. Alle Rechte vorbehalten."]})]})})]})]})},mR=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Danke für deine Anmeldung | AdsHero"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),e.jsx("div",{className:"min-h-screen bg-gradient-to-br from-background via-background to-muted flex items-center justify-center p-6",children:e.jsx("div",{className:"max-w-2xl w-full",children:e.jsxs("div",{className:"text-center space-y-8",children:[e.jsx(E,{to:"/",className:"inline-block",children:e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-12 mx-auto hover:opacity-80 transition-opacity"})}),e.jsxs("div",{className:"relative inline-block",children:[e.jsx("div",{className:"w-24 h-24 mx-auto rounded-full bg-success/10 flex items-center justify-center",children:e.jsx(Zt,{className:"w-12 h-12 text-success"})}),e.jsx("div",{className:"absolute inset-0 blur-2xl opacity-20 bg-success -z-10"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h1",{className:"text-4xl md:text-5xl font-bold text-foreground",children:"Dein Report ist unterwegs! ð"}),e.jsx("p",{className:"text-xl text-muted-foreground max-w-lg mx-auto",children:"Wir haben dir den Profit-Audit Report per E-Mail geschickt."})]}),e.jsx(ce,{className:"p-6 text-left space-y-4 bg-muted/50",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(sc,{className:"w-5 h-5 text-primary"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"Check deinen Posteingang"}),e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Du solltest innerhalb der nächsten 5 Minuten eine E-Mail von uns erhalten. Falls nicht, schau auch in deinem ",e.jsx("strong",{children:"Spam-Ordner"})," nach."]})]})]})}),e.jsx(ce,{className:"p-6 border-2 border-success/20",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-success/10 flex items-center justify-center flex-shrink-0",children:e.jsx(M2,{className:"w-5 h-5 text-success"})}),e.jsxs("div",{className:"text-left flex-1",children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"Direkter Zugriff"}),e.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:"Möchtest du nicht warten? Hier ist der direkte Link zum Report:"}),e.jsx(q,{asChild:!0,variant:"success",size:"lg",className:"w-full",children:e.jsx(E,{to:"/resources/profit-audit-e7k2m",children:"Report jetzt lesen"})})]})]})}),e.jsx(ce,{className:"p-8 bg-gradient-to-br from-primary/5 to-accent/5 border-2 border-primary/10",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cta/10 flex items-center justify-center mx-auto",children:e.jsx(nc,{className:"w-6 h-6 text-cta"})}),e.jsx("h3",{className:"font-bold text-2xl",children:"Bereit für den nächsten Schritt?"}),e.jsx("p",{className:"text-muted-foreground",children:"Lass uns gemeinsam analysieren, wo dein Shop aktuell Geld verbrennt â kostenlos und unverbindlich."}),e.jsx(q,{asChild:!0,variant:"cta",size:"lg",className:"w-full",children:e.jsx("a",{onClick:()=>se("calendly_click",{calendly_target:we(oe.profitAudit),location:"LeadmagnetDanke"}),href:oe.profitAudit,target:"_blank",rel:"noopener noreferrer",children:"Kostenlosen Profit-Audit Call buchen"})})]})}),e.jsx("div",{className:"pt-4",children:e.jsx(q,{asChild:!0,variant:"ghost",children:e.jsx(E,{to:"/",children:"â Zurück zur Startseite"})})})]})})})]}),gR=()=>{const[t]=kT();return y.useEffect(()=>{var r;const n=t.get("eid")||crypto.randomUUID();(r=window.fbq)==null||r.call(window,"track","Lead",{},{eventID:n})},[t]),e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Nur noch ein Klick! | AdsHero"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/poas-report-nur-ein-klick-fehlt-noch"}),e.jsx("meta",{property:"og:title",content:"Nur noch ein Klick! | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Bestätige deine E-Mail-Adresse, um deinen POAS-Report freizuschalten."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/poas-report-nur-ein-klick-fehlt-noch"})]}),e.jsxs("div",{className:"min-h-screen bg-background flex flex-col",children:[e.jsx("main",{className:"flex-1 flex items-center justify-center px-4 py-12 md:py-20",children:e.jsxs("div",{className:"max-w-lg w-full text-center space-y-8",children:[e.jsx(E,{to:"/",children:e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-10 md:h-12 mx-auto"})}),e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-20 h-20 md:w-24 md:h-24 rounded-full bg-cta/10 flex items-center justify-center",children:e.jsx(sc,{className:"w-10 h-10 md:w-12 md:h-12 text-cta"})})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h1",{className:"text-3xl md:text-4xl font-bold",children:"Nur noch ein Klick!"}),e.jsx("p",{className:"text-base md:text-lg text-muted-foreground leading-relaxed",children:"Wir haben dir gerade eine E-Mail geschickt. Klicke auf den Bestätigungslink
574in der Mail, um deinen POAS-Report freizuschalten."})]}),e.jsxs(ce,{className:"p-6 text-left space-y-4",children:[e.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[e.jsx(K2,{className:"w-5 h-5 text-cta"}),"Checke dein E-Mail-Postfach"]}),e.jsxs("ul",{className:"space-y-3 text-sm text-muted-foreground",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(Gh,{className:"w-4 h-4 text-cta flex-shrink-0 mt-0.5"}),e.jsxs("span",{children:["Schau auch im ",e.jsx("strong",{className:"text-foreground",children:"Spam-Ordner"})," nach, falls du die Mail nicht sofort findest."]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(Gh,{className:"w-4 h-4 text-cta flex-shrink-0 mt-0.5"}),e.jsxs("span",{children:["Setze ",e.jsx("strong",{className:"text-foreground",children:"[email protected]"})," auf deine Whitelist, damit zukünftige Mails ankommen."]})]})]})]})]})}),e.jsx("footer",{className:"bg-primary text-primary-foreground py-6",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-3xl text-center space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-center gap-4 text-sm text-primary-foreground/80",children:[e.jsx(E,{to:"/impressum",className:"hover:text-cta transition-colors",children:"Impressum"}),e.jsx("span",{className:"text-primary-foreground/40",children:"|"}),e.jsx(E,{to:"/datenschutz",className:"hover:text-cta transition-colors",children:"Datenschutz"})]}),e.jsxs("p",{className:"text-xs text-primary-foreground/50",children:["© ",new Date().getFullYear()," AdsHero GmbH. Alle Rechte vorbehalten."]})]})})]})]})},pR=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Impressum | AdsHero"}),e.jsx("meta",{name:"robots",content:"index, follow"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/impressum"}),e.jsx("meta",{property:"og:title",content:"Impressum | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Impressum der AdsHero GmbH â Angaben gemäà § 5 TMG."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/impressum"})]}),e.jsx("div",{className:"min-h-screen bg-background pt-24 pb-20",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-4xl",children:[e.jsx("h1",{className:"text-4xl font-bold text-foreground mb-8",children:"Impressum"}),e.jsxs("div",{className:"prose prose-lg max-w-none text-foreground",children:[e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"Angaben gemäà § 5 TMG"}),e.jsxs("p",{children:["AdsHero GmbH",e.jsx("br",{}),"Rathausplatz 6",e.jsx("br",{}),"94065 Waldkirchen"]}),e.jsxs("p",{children:["Handelsregister: HRB 12603",e.jsx("br",{}),"Registergericht: Passau"]}),e.jsx("p",{className:"font-semibold",children:"Vertreten durch:"}),e.jsxs("p",{children:["Gordon Kuckluck",e.jsx("br",{}),"Christoph Bogner"]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"Kontakt"}),e.jsxs("p",{children:["Telefon: ",e.jsx("a",{onClick:()=>se("phone_click",{location:"Impressum"}),href:"tel:+4915204500499",className:"text-primary hover:underline",children:"+49 (0) 152 - 045 004 99"}),e.jsx("br",{}),"E-Mail: ",e.jsx("a",{onClick:()=>se("email_click",{location:"Impressum"}),href:"mailto:[email protected]",className:"text-primary hover:underline",children:"[email protected]"})]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"Umsatzsteuer-ID"}),e.jsxs("p",{children:["Umsatzsteuer-Identifikationsnummer gemäà § 27 a Umsatzsteuergesetz:",e.jsx("br",{}),"DE370237786"]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"Redaktionell verantwortlich"}),e.jsxs("p",{children:["AdsHero GmbH",e.jsx("br",{}),"Rathausplatz 6",e.jsx("br",{}),"94065 Waldkirchen"]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"EU-Streitschlichtung"}),e.jsxs("p",{children:["Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit:"," ",e.jsx("a",{href:"https://ec.europa.eu/consumers/odr/",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://ec.europa.eu/consumers/odr/"})]}),e.jsx("p",{children:"Unsere E-Mail-Adresse finden Sie oben im Impressum."}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"Verbraucherstreitbeilegung/Universalschlichtungsstelle"}),e.jsx("p",{children:"Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen."})]})]})})]}),fR=()=>e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Datenschutzerklärung | AdsHero"}),e.jsx("meta",{name:"robots",content:"index, follow"}),e.jsx("link",{rel:"canonical",href:"https://adshero.de/datenschutz"}),e.jsx("meta",{property:"og:title",content:"Datenschutzerklärung | AdsHero"}),e.jsx("meta",{property:"og:description",content:"Datenschutzerklärung der AdsHero GmbH â Informationen zur Datenverarbeitung gemäà DSGVO."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://adshero.de/datenschutz"})]}),e.jsx("div",{className:"min-h-screen bg-background pt-24 pb-20",children:e.jsxs("div",{className:"container mx-auto px-4 max-w-4xl",children:[e.jsx("h1",{className:"text-4xl font-bold text-foreground mb-8",children:"Datenschutzerklärung"}),e.jsxs("div",{className:"prose prose-lg max-w-none text-foreground",children:[e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"1. Datenschutz auf einen Blick"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Allgemeine Hinweise"}),e.jsx("p",{children:"Die folgenden Hinweise geben einen einfachen Ãberblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können."}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Datenerfassung auf dieser Website"}),e.jsx("p",{className:"font-semibold",children:"Wer ist verantwortlich für die Datenerfassung auf dieser Website?"}),e.jsx("p",{children:"Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Impressum dieser Website entnehmen."}),e.jsx("p",{className:"font-semibold mt-4",children:"Wie erfassen wir Ihre Daten?"}),e.jsx("p",{children:"Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen. Hierbei kann es sich z.B. um Daten handeln, die Sie in ein Kontaktformular eingeben. Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten (z.B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs)."}),e.jsx("p",{className:"font-semibold mt-4",children:"Wofür nutzen wir Ihre Daten?"}),e.jsx("p",{children:"Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten. Andere Daten können zur Analyse Ihres Nutzerverhaltens verwendet werden."}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"2. Hosting"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Exter
574nes Hosting"}),e.jsx("p",{children:"Diese Website wird bei einem externen Dienstleister gehostet (Hoster). Die personenbezogenen Daten, die auf dieser Website erfasst werden, werden auf den Servern des Hosters gespeichert. Hierbei kann es sich v.a. um IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten, Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine Website generiert werden, handeln."}),e.jsx("p",{className:"mt-4",children:e.jsx("strong",{children:"Anbieter:"})}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 mt-2",children:[e.jsx("li",{children:"Lovable (GPT Engineer AB), Schweden â für die Anwendungsbereitstellung"}),e.jsx("li",{children:"Vercel Inc., 340 S Lemon Ave #4133, Walnut, CA 91789, USA â für CDN und Edge-Funktionen"})]}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an einer effizienten und sicheren Bereitstellung unserer Website)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Datenübermittlung in Drittländer:"})," Lovable verarbeitet Daten innerhalb der EU (Schweden). Vercel ist unter dem EU-US Data Privacy Framework zertifiziert und gewährleistet damit ein angemessenes Datenschutzniveau für Daten, die in die USA übermittelt werden."]}),e.jsx("p",{children:"Wir haben einen Vertrag über Auftragsverarbeitung (AVV) mit dem Hosting-Anbieter geschlossen."}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"3. Allgemeine Hinweise und Pflichtinformationen"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Datenschutz"}),e.jsx("p",{children:"Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung."}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Hinweis zur verantwortlichen Stelle"}),e.jsx("p",{children:"Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:"}),e.jsxs("p",{children:["AdsHero GmbH",e.jsx("br",{}),"Rathausplatz 6",e.jsx("br",{}),"94065 Waldkirchen",e.jsx("br",{}),"Telefon: ",e.jsx("a",{onClick:()=>se("phone_click",{location:"Datenschutz"}),href:"tel:+4915204500499",className:"text-primary hover:underline",children:"+49 (0) 152 - 045 004 99"}),e.jsx("br",{}),"E-Mail: ",e.jsx("a",{onClick:()=>se("email_click",{location:"Datenschutz"}),href:"mailto:[email protected]",className:"text-primary hover:underline",children:"[email protected]"})]}),e.jsx("p",{className:"mt-4",children:"Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet."}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Speicherdauer"}),e.jsx("p",{children:"Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keine anderen rechtlich zulässigen Gründe für die Speicherung Ihrer personenbezogenen Daten haben."}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Ihre Rechte"}),e.jsx("p",{children:"Sie haben jederzeit das Recht:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Auskunft"})," über Ihre bei uns gespeicherten personenbezogenen Daten zu erhalten (Art. 15 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Berichtigung"})," unrichtiger Daten zu verlangen (Art. 16 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Löschung"})," Ihrer Daten zu verlangen (Art. 17 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Einschränkung"})," der Datenverarbeitung zu verlangen (Art. 18 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Datenübertragbarkeit"})," â Ihre Daten in einem gängigen Format zu erhalten (Art. 20 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Widerspruch"})," gegen die Datenverarbeitung einzulegen (Art. 21 DSGVO)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Beschwerde"})," bei einer Aufsichtsbehörde einzureichen (Art. 77 DSGVO)"]})]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Widerruf Ihrer Einwilligung"}),e.jsx("p",{children:"Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung jederzeit widerrufen. Die RechtmäÃigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt."}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"4. Datenerfassung auf dieser Website"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Cookies"}),e.jsx("p",{children:"Diese Website verwendet Cookies. Cookies sind kleine Textdateien, die auf Ihrem Endgerät gespeichert werden und die Ihr Browser speichert. Wir unterscheiden zwischen:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 mt-4",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Notwendige Cookies:"})," Diese sind für den Betrieb der Website erforderlich (z.B. Session-Cookies, Consent-Speicherung). Sie können nicht deaktiviert werden.",e.jsx("br",{}),e.jsx("em",{children:"Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse)"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Analyse-Cookies (Google Analytics):"}
574)," Helfen uns zu verstehen, wie Besucher mit der Website interagieren. Werden nur mit Ihrer Einwilligung gesetzt.",e.jsx("br",{}),e.jsx("em",{children:"Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)"})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Marketing-Cookies (Google Ads):"})," Werden verwendet, um Werbung relevanter zu gestalten und Conversion-Tracking durchzuführen. Werden nur mit Ihrer Einwilligung gesetzt.",e.jsx("br",{}),e.jsx("em",{children:"Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)"})]})]}),e.jsx("h4",{className:"text-lg font-semibold mt-6 mb-3",children:"Google Consent Mode V2"}),e.jsx("p",{children:"Wir verwenden Google Consent Mode V2, um Ihre Cookie-Einwilligung zu verwalten. StandardmäÃig werden keine Marketing- oder Analyse-Cookies gesetzt, bis Sie aktiv einwilligen. Der Consent Mode ermöglicht es Google-Diensten, auch ohne Cookies grundlegende, anonymisierte Messdaten zu erfassen (z.B. aggregierte Conversion-Modellierung), sofern Sie nicht zugestimmt haben."}),e.jsx("h4",{className:"text-lg font-semibold mt-6 mb-3",children:"Cookie-Einstellungen ändern"}),e.jsx("p",{children:'Sie können Ihre Cookie-Einstellungen jederzeit ändern, indem Sie auf "Cookie-Einstellungen" im Footer dieser Website klicken. Dort können Sie Ihre Einwilligung widerrufen oder erneut erteilen.'}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Server-Log-Dateien"}),e.jsx("p",{children:"Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 mt-4",children:[e.jsx("li",{children:"Browsertyp und Browserversion"}),e.jsx("li",{children:"Verwendetes Betriebssystem"}),e.jsx("li",{children:"Referrer URL"}),e.jsx("li",{children:"Hostname des zugreifenden Rechners"}),e.jsx("li",{children:"Uhrzeit der Serveranfrage"}),e.jsx("li",{children:"IP-Adresse (anonymisiert)"})]}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der technischen Bereitstellung und Sicherheit der Website)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," Die Daten werden nach 7 Tagen automatisch gelöscht."]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Kontaktformular"}),e.jsx("p",{children:"Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung) bzw. Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Beantwortung von Anfragen)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," Die Daten werden gelöscht, sobald die Anfrage abschlieÃend bearbeitet wurde, es sei denn, gesetzliche Aufbewahrungspflichten stehen dem entgegen."]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"5. Analyse-Tools und Werbung"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Google Tag Manager"}),e.jsx("p",{children:"Wir setzen den Google Tag Manager ein. Der Google Tag Manager ist eine Lösung, mit der wir sogenannte Website-Tags über eine Oberfläche verwalten können. Der Tag Manager selbst setzt keine Cookies und erfasst keine personenbezogenen Daten. Der Tag Manager löst andere Tags aus, die ihrerseits unter Umständen Daten erfassen."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Anbieter:"})," Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der effizienten Verwaltung von Website-Tags)."]}),e.jsxs("p",{children:["Weitere Informationen: ",e.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://policies.google.com/privacy"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Google Analytics 4"}),e.jsx("p",{children:"Diese Website nutzt Funktionen des Webanalysedie
574nstes Google Analytics 4. Google Analytics verwendet Cookies, die eine Analyse der Benutzung der Website durch Sie ermöglichen."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Anbieter:"})," Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Zweck:"})," Analyse des Nutzerverhaltens zur Verbesserung unserer Website und MarketingmaÃnahmen."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. a DSGVO (Einwilligung). Die Datenverarbeitung erfolgt nur, wenn Sie über unseren Cookie-Banner zugestimmt haben."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Erfasste Daten:"})," Seitenaufrufe, Verweildauer, Gerätetyp, ungefährer Standort (auf Basis der anonymisierten IP-Adresse), Referrer, Browser- und Geräteinformationen."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"IP-Anonymisierung:"})," Wir haben IP-Anonymisierung aktiviert. Ihre IP-Adresse wird von Google innerhalb von Mitgliedstaaten der EU vor der Ãbermittlung gekürzt."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," 14 Monate"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Auftragsverarbeitung:"})," Wir haben mit Google einen Vertrag zur Auftragsverarbeitung abgeschlossen."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Opt-out:"})," Sie können Ihre Einwilligung jederzeit über die Cookie-Einstellungen im Footer widerrufen. Alternativ können Sie das Browser-Add-on zur Deaktivierung von Google Analytics nutzen: ",e.jsx("a",{href:"https://tools.google.com/dlpage/gaoptout",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://tools.google.com/dlpage/gaoptout"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Google Ads Conversion-Tracking"}),e.jsx("p",{children:"Diese Website nutzt Google Ads Conversion-Tracking. Dabei wird von Google Ads ein Cookie auf Ihrem Rechner gesetzt, sofern Sie über eine Google-Anzeige auf unsere Website gelangt sind und Sie eingewilligt haben."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Anbieter:"})," Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Zweck:"})," Messung des Erfolgs unserer Werbeanzeigen (z.B. Formulareinsendungen, Seitenaufrufe nach Anzeigenklick)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. a DSGVO (Einwilligung). Die Datenverarbeitung erfolgt nur, wenn Sie über unseren Cookie-Banner zugestimmt haben."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Erfasste Daten:"})," Information, dass Sie auf eine Anzeige geklickt haben und bestimmte Aktionen auf unserer Website durchgeführt haben (ohne persönliche Identifikation)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," 90 Tage"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Opt-out:"})," Sie können Ihre Einwilligung jederzeit über die Cookie-Einstellungen im Footer widerrufen. Zusätzlich können Sie personalisierte Werbung in Ihren Google-Kontoeinstellungen deaktivieren: ",e.jsx("a",{href:"https://adssettings.google.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://adssettings.google.com"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Google Ads Remarketing"}),e.jsx("p",{children:"Diese Website nutzt die Remarketing-Funktion von Google Ads. Mit dieser Funktion können wir Besuchern unserer Website auf anderen Websites innerhalb des Google-Werbenetzwerks interessenbezogene Werbeanzeigen präsentieren."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Opt-out:"})," Sie können Remarketing dauerhaft deaktivieren unter:",e.jsx("a",{href:"https://adssettings.google.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://adssettings.google.com"})]}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Apollo.io Website Tracking"}),e.jsx("p",{children:"Diese Website verwendet Apollo.io Website Tracking, einen Dienst der Apollo.io Inc. Apollo.io ermöglicht es uns, Besucher unserer Website zu identifizieren, die zu Unternehmen gehören, um unsere Vertriebs- und Marketingaktivitäten zu optimieren."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Anbieter:"})," Apollo.io Inc., 535 Mission Street, Suite 1100, San Francisco, CA 94105, USA"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Zweck:"})," Identifizierung von Unternehmensbesuchern zur Unterstützung von B2B-Vertriebs- und Marketingaktivitäten."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Optimierung unserer Geschäftskontakte und Vertriebsaktivitäten)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Erfasste Daten:"})," IP-Adresse, Browsertyp, Betriebssystem, Referrer-URL, besuchte Seiten, Verweildauer und ggf. Unternehmenszugehörigkeit basierend auf der IP-Adresse."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," Die Daten werden gemäà den Datenschutzrichtlinien von Apollo.io gespeichert."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Datenübermittlung in Drittländer:"})," Apollo.io verarbeitet Daten in den USA. Apollo.io setzt geeignete Garantien ein, um ein angemessenes Datenschutz
574niveau zu gewährleisten."]}),e.jsxs("p",{children:["Weitere Informationen: ",e.jsx("a",{href:"https://www.apollo.io/privacy-policy",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://www.apollo.io/privacy-policy"})]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"6. Datenübermittlung in Drittländer"}),e.jsx("p",{children:"Im Rahmen der Nutzung von Google-Diensten (Google Analytics, Google Ads, Google Tag Manager) kann es zu einer Ãbermittlung Ihrer Daten in die USA kommen."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Rechtsgrundlage der Ãbermittlung:"})," Google LLC ist unter dem EU-US Data Privacy Framework zertifiziert. Das EU-US Data Privacy Framework ist ein Angemessenheitsbeschluss der Europäischen Kommission, der ein angemessenes Datenschutzniveau für Datenübermittlungen in die USA an zertifizierte Unternehmen gewährleistet."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Zertifizierung prüfen:"})," ",e.jsx("a",{href:"https://www.dataprivacyframework.gov/list",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://www.dataprivacyframework.gov/list"})]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"7. Newsletter"}),e.jsx("h3",{className:"text-xl font-semibold mt-6 mb-3",children:"Newsletter-Anmeldung"}),e.jsx("p",{children:"Wenn Sie den auf der Website angebotenen
574Newsletter oder andere E-Mail-Inhalte (z.B. Gratis-Reports) beziehen möchten, benötigen wir von Ihnen eine E-Mail-Adresse sowie optional Ihren Namen."}),e.jsxs("p",{className:"mt-4",children:[e.jsx("strong",{children:"Anbieter:"})," Quentn (Quentn.com GmbH, Am Fischmarkt 33, 99084 Erfurt, Deutschland)"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Rechtsgrundlage:"})," Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Erfasste Daten:"})," E-Mail-Adresse (Pflicht), Vorname (optional), Zeitpunkt der Anmeldung, IP-Adresse bei der Anmeldung."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Zweck:"})," Versand von Newsletter, Informationen zu unseren Leistungen, angeforderten Inhalten (z.B. E-Books, Reports)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Anmeldeverfahren:"})," Ihre Anmeldung wird durch die Eingabe Ihrer E-Mail-Adresse in das Anmeldeformular bestätigt. Sie können die Newsletter-Inhalte ab sofort erhalten."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Speicherdauer:"})," Ihre Daten werden gespeichert, solange Sie den Newsletter abonniert haben. Nach Abmeldung werden Ihre Daten gelöscht."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Abmeldung:"})," Sie können sich jederzeit vom Newsletter abmelden, indem Sie den Abmeldelink am Ende jedes Newsletters klicken oder uns eine E-Mail an"," ",e.jsx("a",{onClick:()=>se("email_click",{location:"Datenschutz"}),href:"mailto:[email protected]",className:"text-primary hover:underline",children:"[email protected]"})," senden."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Auftragsverarbeitung:"})," Wir haben mit Quentn einen Vertrag zur Auftragsverarbeitung abgeschlossen. Quentn ist ein deutsches Unternehmen und verarbeitet die Daten ausschlieÃlich auf Servern in der EU."]}),e.jsxs("p",{children:["Weitere Informationen zu Quentn: ",e.jsx("a",{href:"https://www.quentn.com/datenschutz/",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"https://www.quentn.com/datenschutz/"})]}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"8. Externe Links"}),e.jsx("p",{children:"Unsere Website enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Für diese fremden Inhalte können wir daher keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich."}),e.jsx("h2",{className:"text-2xl font-bold mt-8 mb-4",children:"9. Ãnderungen dieser Datenschutzerklärung"}),e.jsx("p",{children:"Wir behalten uns vor, diese Datenschutzerklärung anzupassen, damit sie stets den aktuellen rechtlichen Anforderungen entspricht oder um Ãnderungen unserer Leistungen umzusetzen. Für Ihren erneuten Besuch gilt dann die neue Datenschutzerklärung."}),e.jsx("p",{className:"mt-8 text-sm text-muted-foreground",children:"Stand: Dezember 2025"})]})]})})]}),xR=()=>{const t=hr();return y.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",t.pathname)},[t.pathname]),e.jsxs(e.Fragment,{children:[e.jsxs(fe,{children:[e.jsx("title",{children:"Seite nicht gefunden | AdsHero"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),e.jsx("div",{className:"min-h-screen bg-gradient-to-br from-background via-background to-muted flex items-center justify-center p-6",children:e.jsxs("div",{className:"max-w-2xl w-full text-center space-y-8",children:[e.jsx(E,{to:"/",className:"inline-block mb-4",children:e.jsx("img",{src:rs,alt:"AdsHero Logo",className:"h-12 mx-auto hover:opacity-80 transition-opacity"})}),e.jsxs("div",{className:"relative",children:[e.jsx("h1",{className:"text-[100px] md:text-[140px] font-bold text-transparent bg-clip-text bg-gradient-to-r from-primary via-accent to-primary/60 leading-none",children:"404"}),e.jsx("div",{className:"absolute inset-0 blur-3xl opacity-20 bg-gradient-to-r from-primary via-accent to-primary -z-10"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold text-foreground",children:"Ups, diese Seite gibt es nicht mehr"}),e.jsx("p",{className:"text-muted-foreground",children:"Die Seite, die du suchst, existiert leider nicht oder wurde verschoben."})]}),e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-6 md:p-8 space-y-5 shadow-lg",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Aber wir können dir trotzdem helfen! ð¯"}),e.jsx("p",{className:"text-muted-foreground",children:"Du bist E-Commerce Shop-Betreiber und willst mehr Gewinn aus deinen Google Ads? Lass uns sprechen."})]}),e.jsx(q,{asChild:!0,size:"lg",variant:"cta",className:"w-full sm:w-auto min-w-[280px]",children:e.jsxs("a",{onClick:()=>se("calendly_click",{calendly_target:we(Ut.calendlyLink),location:"NotFound"}),href:Ut.calendlyLink,target:"_blank",rel:"noopener noreferrer",children:[e.jsx(nc,{className:"mr-2 h-5 w-5"}),"Kostenloses Erstgespräch buchen"]})}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx($i,{className:"h-4 w-4"}),"15 Minuten"]}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(_f,{className:"h-4 w-4"}),"100% kostenlos"]}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(_f,{className:"h-4 w-4"}),"Keine Verpflichtung"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center items-center",children:[e.jsx(q,{asChild:!0,variant:"outline",size:"default",children:e.jsxs(E,{to:"/",children:[e.jsx(B2,{className:"mr-2 h-4 w-4"}),"Zur Startseite"]})}),e.jsxs(q,{variant:"ghost",size:"default",onClick:()=>window.history.back(),children:[e.jsx(vg,{className:"mr-2 h-4 w-4"}),"Zurück"]})]})]})})]})},Pc="adshero_cookie_consent";function bR(){var n,r;const t={analytics:!0,marketing:!0,timestamp:Date.now()};localStorage.setItem(Pc,JSON.stringify(t)),(n=window.gtag)==null||n.call(window,"consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}),(r=window.fbq)==null||r.call(window,"consent","grant")}function jR(){var n,r;const t={analytics:!1,marketing:!1,timestamp:Date.now()};localStorage.setItem(Pc,JSON.stringify(t)),(n=window.gtag)==null||n.call(window,"consent","update",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}),(r=window.fbq)==null||r.call(window,"consent","revoke")}function Xk(){try{const t=localStorage.getItem(Pc);return t?JSON.parse(t):null}catch{return null}}function vR(){return Xk()!==null}function yR(){localStorage.removeItem(Pc)}function wR(){var n,r;const t=Xk();t&&t.analytics&&t.marketing&&((n=window.gtag)==null||n.call(window,"consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}),(r=window.fbq)==null||r.call(window,"consent","grant"))}const kR=()=>{const[t,n]=y.useState(!1);y.useEffect(()=>{if(wR(),!vR()){const i=setTimeout(()=>n(!0),500);return()=>clearTimeout(i)}},[]),y.useEffect(()=>{const i=()=>{yR(),n(!0)};
574return window.addEventListener("openCookieBanner",i),()=>window.removeEventListener("openCookieBanner",i)},[]);const r=()=>{bR(),n(!1)},s=()=>{jR(),n(!1)};return t?e.jsx("div",{className:"fixed bottom-0 left-0 right-0 z-50 p-4 md:p-6 animate-in slide-in-from-bottom-4 duration-300",children:e.jsx("div",{className:"container mx-auto max-w-4xl",children:e.jsxs("div",{className:"bg-card border border-border rounded-xl shadow-2xl p-6 md:p-8 relative",children:[e.jsx("button",{onClick:s,className:"absolute top-4 right-4 text-muted-foreground hover:text-foreground transition-colors","aria-label":"SchlieÃen",children:e.jsx(Hi,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center gap-6",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx(rc,{className:"h-6 w-6 text-mustard"}),e.jsx("h3",{className:"text-lg font-semibold text-foreground",children:"Diese Website verwendet Cookies"})]}),e.jsx("p",{className:"text-muted-foreground text-sm md:text-base",children:"Wir verwenden Cookies, um dir die beste Erfahrung zu bieten und unsere Werbeanzeigen zu optimieren. Du kannst deine Einstellungen jederzeit ändern."}),e.jsxs("div",{className:"flex gap-4 mt-3 text-sm",children:[e.jsx(E,{to:"/datenschutz",className:"text-primary hover:underline",children:"Datenschutz"}),e.jsx("span",{className:"text-muted-foreground",children:"â¢"}),e.jsx("a",{href:"https://business.safety.google/privacy/",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Google Datenschutz"})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 md:flex-col lg:flex-row",children:[e.jsx(q,{variant:"outline",onClick:s,className:"px-6 py-2.5 text-sm border-border text-muted-foreground hover:text-foreground order-2 sm:order-1 md:order-2 lg:order-1",children:"Nur Notwendige"}),e.jsx(q,{variant:"cta",onClick:r,className:"px-8 py-3 text-base font-semibold shadow-lg order-1 sm:order-2 md:order-1 lg:order-2",children:"Alle akzeptieren"})]})]})]})})}):null},NR=()=>{const t=hr();if(t.pathname.length>1&&t.pathname.endsWith("/")){const n=t.pathname.slice(0,-1);return e.jsx(Ey,{to:n+t.search+t.hash,replace:!0})}return null},SR=new vE,AR=()=>{const t=hr();return["/gratis-report","/danke","/profit-analyse","/poas-fallstudie","/resources/profit-audit-e7k2m","/profit-report","/poas-report-nur-ein-klick-fehlt-noch"].includes(t.pathname)?null:e.jsx(g3,{})},CR=()=>e.jsx(wE,{client:SR,children:e.jsx(Ry,{children:e.jsxs(YP,{children:[e.jsx(z1,{}),e.jsx(dC,{}),e.jsxs(jT,{children:[e.jsx(NR,{}),e.jsx(AR,{}),e.jsx("main",{children:e.jsxs(uT,{children:[e.jsx(pe,{path:"/performance-max-kampagnen-ultimativer-leitfaden",element:e.jsx(Ey,{to:"/performance-max-kampagnen",replace:!0})}),e.jsx(pe,{path:"/",element:e.jsx(RD,{})}),e.jsx(pe,{path:"/blog",element:e.jsx(GD,{})}),e.jsx(pe,{path:"/youtube-ads-kosten",element:e.jsx(VD,{})}),e.jsx(pe,{path:"/google-ads-conversion-shopify",element:e.jsx(qD,{})}),e.jsx(pe,{path:"/demand-gen-google-ads",element:e.jsx(n_,{})}),e.jsx(pe,{path:"/google-ads-tutorial",element:e.jsx(v_,{})}),e.jsx(pe,{path:"/performance-max-kampagnen",element:e.jsx(pM,{})}),e.jsx(pe,{path:"/google-ads-enhanced-conversions-einrichten",element:e.jsx(fM,{})}),e.jsx(pe,{path:"/google-ads-google-tag-manager",element:e.jsx(xM,{})}),e.jsx(pe,{path:"/google-ads-portfolio-gebotsstrategie",element:e.jsx(bM,{})}),e.jsx(pe,{path:"/youtube-werbung-schalten",element:e.jsx(jM,{})}),e.jsx(pe,{path:"/youtube-shorts-ads-ultimativer-leitfaden",element:e.jsx(vM,{})}),e.jsx(pe,{path:"/google-ads-black-friday",element:e.jsx(yM,{})}),e.jsx(pe,{path:"/google-ads-fehler",element:e.jsx(wM,{})}),e.jsx(pe,{path:"/google-ads-conversion-wordpress",element:e.jsx(kM,{})}),e.jsx(pe,{path:"/warum-roas-luegt",element:e.jsx(SM,{})}),e.jsx(pe,{path:"/feed-only-performance-max",element:e.jsx(AM,{})}),e.jsx(pe,{path:"/google-ads-optimieren",element:e.jsx(CM,{})}),e.jsx(pe,{path:"/google-ads-agentur",element:e.jsx(PM,{})}),e.jsx(pe,{path:"/poas-fallstudie",element:e.jsx(EM,{})}),e.jsx(pe,{path:"/resources/profit-audit-e7k2m",element:e.jsx(X4,{})}),e.jsx(pe,{path:"/profit-analyse",element:e.jsx(dR,{})}),e.jsx(pe,{path:"/profit-report",element:e.jsx(hR,{})}),e.jsx(pe,{path:"/gratis-report",element:e.jsx(uR,{})}),e.jsx(pe,{path:"/danke",element:e.jsx(mR,{})}),e.jsx(pe,{path:"/poas-report-nur-ein-klick-fehlt-noch",element:e.jsx(gR,{})}),e.jsx(pe,{path:"/impressum",element:e.jsx(pR,{})}),e.jsx(pe,{path:"/datenschutz",element:e.jsx(fR,{})}),e.jsx(pe,{path:"*",element:e.jsx(xR,{})})]})}),e.jsx(kR,{})]})]})})});Uv(document.getElementById("root")).render(e.jsx(CR,{}));
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.