diff --git a/hifi-src/src/components/PublicLayout.jsx b/hifi-src/src/components/PublicLayout.jsx index db0b3ab..68ddbb9 100644 --- a/hifi-src/src/components/PublicLayout.jsx +++ b/hifi-src/src/components/PublicLayout.jsx @@ -27,6 +27,7 @@ const DEFAULT_SITE_SETTINGS = { ga_measurement_id: null, package_card_theme: 'graphite', package_card_layout: 'strip', + package_wheel_hint_interval: 8, }; // Das Impressum (und die anderen rechtlichen Pflichtseiten) müssen laut § 5 DDG diff --git a/hifi-src/src/pages/admin/settings/WebsiteSettings.jsx b/hifi-src/src/pages/admin/settings/WebsiteSettings.jsx index 0e7dc4e..e3f77c8 100644 --- a/hifi-src/src/pages/admin/settings/WebsiteSettings.jsx +++ b/hifi-src/src/pages/admin/settings/WebsiteSettings.jsx @@ -10,6 +10,7 @@ const emptyForm = { ga_measurement_id: '', package_card_theme: 'graphite', package_card_layout: 'strip', + package_wheel_hint_interval: 8, }; const PACKAGE_CARD_THEMES = [ @@ -59,6 +60,7 @@ export default function WebsiteSettings() { ga_measurement_id: res.ga_measurement_id || '', package_card_theme: res.package_card_theme || 'graphite', package_card_layout: res.package_card_layout || 'strip', + package_wheel_hint_interval: res.package_wheel_hint_interval || 8, }) ) .finally(() => setLoading(false)); @@ -267,6 +269,23 @@ export default function WebsiteSettings() { ))} +
+ Nur bei Scroll-Band/3D-Coverflow: Solange ein Besucher noch auf der ersten Kachel steht, wird der + "mit dem Mausrad blättern"-Hinweis in diesem Abstand wiederholt. +
+s(Xt,Ne)?(_[U]=Xt,_[de]=z,U=de):(_[U]=Ne,_[ee]=z,U=ee);else if(des(Xt,z))_[U]=Xt,_[de]=z,U=de;else break e}}return D}function s(_,D){var z=_.sortIndex-D.sortIndex;return z!==0?z:_.id-D.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,o=l.now();e.unstable_now=function(){return l.now()-o}}var u=[],c=[],d=1,h=null,m=3,f=!1,b=!1,y=!1,w=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,p=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(_){for(var D=n(c);D!==null;){if(D.callback===null)r(c);else if(D.startTime<=_)r(c),D.sortIndex=D.expirationTime,t(u,D);else break;D=n(c)}}function k(_){if(y=!1,v(_),!b)if(n(u)!==null)b=!0,R(j);else{var D=n(c);D!==null&&K(k,D.startTime-_)}}function j(_,D){b=!1,y&&(y=!1,x(P),P=-1),f=!0;var z=m;try{for(v(D),h=n(u);h!==null&&(!(h.expirationTime>D)||_&&!E());){var U=h.callback;if(typeof U=="function"){h.callback=null,m=h.priorityLevel;var q=U(h.expirationTime<=D);D=e.unstable_now(),typeof q=="function"?h.callback=q:h===n(u)&&r(u),v(D)}else r(u);h=n(u)}if(h!==null)var X=!0;else{var ee=n(c);ee!==null&&K(k,ee.startTime-D),X=!1}return X}finally{h=null,m=z,f=!1}}var C=!1,S=null,P=-1,M=5,N=-1;function E(){return!(e.unstable_now()-N_||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<_?Math.floor(1e3/_):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return n(u)},e.unstable_next=function(_){switch(m){case 1:case 2:case 3:var D=3;break;default:D=m}var z=m;m=D;try{return _()}finally{m=z}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(_,D){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var z=m;m=_;try{return D()}finally{m=z}},e.unstable_scheduleCallback=function(_,D,z){var U=e.unstable_now();switch(typeof z=="object"&&z!==null?(z=z.delay,z=typeof z=="number"&&0 U?(_.sortIndex=z,t(c,_),n(u)===null&&_===n(c)&&(y?(x(P),P=-1):y=!0,K(k,z-U))):(_.sortIndex=q,t(u,_),b||f||(b=!0,R(j))),_},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(_){var D=m;return function(){var z=m;m=D;try{return _.apply(this,arguments)}finally{m=z}}}})(Jf);Qf.exports=Jf;var Jb=Qf.exports;/** + */(function(e){function t(_,B){var F=_.length;_.push(B);e:for(;0 >>1,X=_[O];if(0 >>1;Os(ne,F))te s(qe,ne)?(_[O]=qe,_[te]=F,O=te):(_[O]=ne,_[Y]=F,O=Y);else if(te s(qe,F))_[O]=qe,_[te]=F,O=te;else break e}}return B}function s(_,B){var F=_.sortIndex-B.sortIndex;return F!==0?F:_.id-B.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,o=l.now();e.unstable_now=function(){return l.now()-o}}var u=[],c=[],d=1,h=null,m=3,f=!1,b=!1,y=!1,w=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,p=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(_){for(var B=n(c);B!==null;){if(B.callback===null)r(c);else if(B.startTime<=_)r(c),B.sortIndex=B.expirationTime,t(u,B);else break;B=n(c)}}function k(_){if(y=!1,v(_),!b)if(n(u)!==null)b=!0,z(j);else{var B=n(c);B!==null&&$(k,B.startTime-_)}}function j(_,B){b=!1,y&&(y=!1,x(P),P=-1),f=!0;var F=m;try{for(v(B),h=n(u);h!==null&&(!(h.expirationTime>B)||_&&!N());){var O=h.callback;if(typeof O=="function"){h.callback=null,m=h.priorityLevel;var X=O(h.expirationTime<=B);B=e.unstable_now(),typeof X=="function"?h.callback=X:h===n(u)&&r(u),v(B)}else r(u);h=n(u)}if(h!==null)var fe=!0;else{var Y=n(c);Y!==null&&$(k,Y.startTime-B),fe=!1}return fe}finally{h=null,m=F,f=!1}}var C=!1,S=null,P=-1,M=5,E=-1;function N(){return!(e.unstable_now()-E _||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<_?Math.floor(1e3/_):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return n(u)},e.unstable_next=function(_){switch(m){case 1:case 2:case 3:var B=3;break;default:B=m}var F=m;m=B;try{return _()}finally{m=F}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(_,B){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var F=m;m=_;try{return B()}finally{m=F}},e.unstable_scheduleCallback=function(_,B,F){var O=e.unstable_now();switch(typeof F=="object"&&F!==null?(F=F.delay,F=typeof F=="number"&&0 O?(_.sortIndex=F,t(c,_),n(u)===null&&_===n(c)&&(y?(x(P),P=-1):y=!0,$(k,F-O))):(_.sortIndex=X,t(u,_),b||f||(b=!0,z(j))),_},e.unstable_shouldYield=N,e.unstable_wrapCallback=function(_){var B=m;return function(){var F=m;m=B;try{return _.apply(this,arguments)}finally{m=F}}}})(Jf);Qf.exports=Jf;var Jb=Qf.exports;/** * @license React * react-dom.production.min.js * @@ -22,14 +22,14 @@ import{r as g,R as Db,D as Bb,C as zb,M as Rb,a as Ib,P as Fb,U as Vb,b as Ld,c * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var ev=g,Je=Jb;function L(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n "u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Co=Object.prototype.hasOwnProperty,tv=/^[: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]*$/,Bd={},zd={};function nv(e){return Co.call(zd,e)?!0:Co.call(Bd,e)?!1:tv.test(e)?zd[e]=!0:(Bd[e]=!0,!1)}function rv(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function sv(e,t,n,r){if(t===null||typeof t>"u"||rv(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ie(e,t,n,r,s,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var Ee={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ee[e]=new Ie(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ee[t]=new Ie(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ee[e]=new Ie(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ee[e]=new Ie(e,2,!1,e,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(e){Ee[e]=new Ie(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ee[e]=new Ie(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ee[e]=new Ie(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ee[e]=new Ie(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ee[e]=new Ie(e,5,!1,e.toLowerCase(),null,!1,!1)});var nc=/[\-:]([a-z])/g;function rc(e){return e[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(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ee[e]=new Ie(e,1,!1,e.toLowerCase(),null,!1,!1)});Ee.xlinkHref=new Ie("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ee[e]=new Ie(e,1,!1,e.toLowerCase(),null,!0,!0)});function sc(e,t,n,r){var s=Ee.hasOwnProperty(t)?Ee[t]:null;(s!==null?s.type!==0:r||!(2 "u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Co=Object.prototype.hasOwnProperty,tv=/^[: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]*$/,Bd={},zd={};function nv(e){return Co.call(zd,e)?!0:Co.call(Bd,e)?!1:tv.test(e)?zd[e]=!0:(Bd[e]=!0,!1)}function rv(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function sv(e,t,n,r){if(t===null||typeof t>"u"||rv(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ie(e,t,n,r,s,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var Ee={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ee[e]=new Ie(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ee[t]=new Ie(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ee[e]=new Ie(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ee[e]=new Ie(e,2,!1,e,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(e){Ee[e]=new Ie(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ee[e]=new Ie(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ee[e]=new Ie(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ee[e]=new Ie(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ee[e]=new Ie(e,5,!1,e.toLowerCase(),null,!1,!1)});var nc=/[\-:]([a-z])/g;function rc(e){return e[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(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(nc,rc);Ee[t]=new Ie(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ee[e]=new Ie(e,1,!1,e.toLowerCase(),null,!1,!1)});Ee.xlinkHref=new Ie("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ee[e]=new Ie(e,1,!1,e.toLowerCase(),null,!0,!0)});function sc(e,t,n,r){var s=Ee.hasOwnProperty(t)?Ee[t]:null;(s!==null?s.type!==0:r||!(2 o||s[l]!==i[o]){var u=` -`+s[l].replace(" at new "," at ");return e.displayName&&u.includes(" ")&&(u=u.replace(" ",e.displayName)),u}while(1<=l&&0<=o);break}}}finally{Cl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?as(e):""}function av(e){switch(e.tag){case 5:return as(e.type);case 16:return as("Lazy");case 13:return as("Suspense");case 19:return as("SuspenseList");case 0:case 2:case 15:return e=Pl(e.type,!1),e;case 11:return e=Pl(e.type.render,!1),e;case 1:return e=Pl(e.type,!0),e;default:return""}}function Ao(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case er:return"Fragment";case Jn:return"Portal";case Po:return"Profiler";case ac:return"StrictMode";case Eo:return"Suspense";case To:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case np:return(e.displayName||"Context")+".Consumer";case tp:return(e._context.displayName||"Context")+".Provider";case ic:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case lc:return t=e.displayName||null,t!==null?t:Ao(e.type)||"Memo";case en:t=e._payload,e=e._init;try{return Ao(e(t))}catch{}}return null}function iv(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ao(t);case 8:return t===ac?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function sp(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function lv(e){var t=sp(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ga(e){e._valueTracker||(e._valueTracker=lv(e))}function ap(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=sp(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function oi(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mo(e,t){var n=t.checked;return ce({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Id(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=yn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ip(e,t){t=t.checked,t!=null&&sc(e,"checked",t,!1)}function _o(e,t){ip(e,t);var n=yn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Lo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Lo(e,t.type,yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Fd(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Lo(e,t,n){(t!=="number"||oi(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var is=Array.isArray;function pr(e,t,n,r){if(e=e.options,t){t={};for(var s=0;s "+t.valueOf().toString()+"",t=xa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Es(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ds={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},ov=["Webkit","ms","Moz","O"];Object.keys(ds).forEach(function(e){ov.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ds[t]=ds[e]})});function cp(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ds.hasOwnProperty(e)&&ds[e]?(""+t).trim():t+"px"}function dp(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,s=cp(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,s):e[n]=s}}var uv=ce({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 zo(e,t){if(t){if(uv[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(L(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(L(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(L(61))}if(t.style!=null&&typeof t.style!="object")throw Error(L(62))}}function Ro(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){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 Io=null;function oc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Fo=null,gr=null,xr=null;function Ud(e){if(e=ta(e)){if(typeof Fo!="function")throw Error(L(280));var t=e.stateNode;t&&(t=Qi(t),Fo(e.stateNode,e.type,t))}}function hp(e){gr?xr?xr.push(e):xr=[e]:gr=e}function mp(){if(gr){var e=gr,t=xr;if(xr=gr=null,Ud(e),t)for(e=0;e >>=0,e===0?32:31-(yv(e)/kv|0)|0}var ba=64,va=4194304;function ls(e){switch(e&-e){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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function hi(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,s=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var o=l&~s;o!==0?r=ls(o):(i&=l,i!==0&&(r=ls(i)))}else l=n&~s,l!==0?r=ls(l):i!==0&&(r=ls(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&s)&&(s=r&-r,i=t&-t,s>=i||s===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0 n;n++)t.push(e);return t}function Js(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-yt(t),e[t]=n}function Sv(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0 =ms),Zd=" ",Qd=!1;function Lp(e,t){switch(e){case"keyup":return Jv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var tr=!1;function ty(e,t){switch(e){case"compositionend":return Dp(t);case"keypress":return t.which!==32?null:(Qd=!0,Zd);case"textInput":return e=t.data,e===Zd&&Qd?null:e;default:return null}}function ny(e,t){if(tr)return e==="compositionend"||!gc&&Lp(e,t)?(e=Mp(),Ha=mc=an=null,tr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1 =t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=nh(n)}}function Ip(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ip(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fp(){for(var e=window,t=oi();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=oi(e.document)}return t}function xc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function dy(e){var t=Fp(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ip(n.ownerDocument.documentElement,n)){if(r!==null&&xc(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,i=Math.min(r.start,s);r=r.end===void 0?i:Math.min(r.end,s),!e.extend&&i>r&&(s=r,r=i,i=s),s=rh(n,i);var l=rh(n,r);s&&l&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n =document.documentMode,nr=null,$o=null,ps=null,Go=!1;function sh(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Go||nr==null||nr!==oi(r)||(r=nr,"selectionStart"in r&&xc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ps&&Ds(ps,r)||(ps=r,r=pi($o,"onSelect"),0 ar||(e.current=Qo[ar],Qo[ar]=null,ar--)}function re(e,t){ar++,Qo[ar]=e.current,e.current=t}var kn={},Le=Sn(kn),He=Sn(!1),Un=kn;function wr(e,t){var n=e.type.contextTypes;if(!n)return kn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var s={},i;for(i in n)s[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function $e(e){return e=e.childContextTypes,e!=null}function xi(){ae(He),ae(Le)}function dh(e,t,n){if(Le.current!==kn)throw Error(L(168));re(Le,t),re(He,n)}function qp(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var s in r)if(!(s in t))throw Error(L(108,iv(e)||"Unknown",s));return ce({},n,r)}function bi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||kn,Un=Le.current,re(Le,e),re(He,He.current),!0}function hh(e,t,n){var r=e.stateNode;if(!r)throw Error(L(169));n?(e=qp(e,t,Un),r.__reactInternalMemoizedMergedChildContext=e,ae(He),ae(Le),re(Le,e)):ae(He),re(He,n)}var Ft=null,Ji=!1,Ol=!1;function Yp(e){Ft===null?Ft=[e]:Ft.push(e)}function jy(e){Ji=!0,Yp(e)}function Cn(){if(!Ol&&Ft!==null){Ol=!0;var e=0,t=te;try{var n=Ft;for(te=1;e >=l,s-=l,Vt=1<<32-yt(t)+s|n< P?(M=S,S=null):M=S.sibling;var N=m(x,S,v[P],k);if(N===null){S===null&&(S=M);break}e&&S&&N.alternate===null&&t(x,S),p=i(N,p,P),C===null?j=N:C.sibling=N,C=N,S=M}if(P===v.length)return n(x,S),ie&&An(x,P),j;if(S===null){for(;PP?(M=S,S=null):M=S.sibling;var E=m(x,S,N.value,k);if(E===null){S===null&&(S=M);break}e&&S&&E.alternate===null&&t(x,S),p=i(E,p,P),C===null?j=E:C.sibling=E,C=E,S=M}if(N.done)return n(x,S),ie&&An(x,P),j;if(S===null){for(;!N.done;P++,N=v.next())N=h(x,N.value,k),N!==null&&(p=i(N,p,P),C===null?j=N:C.sibling=N,C=N);return ie&&An(x,P),j}for(S=r(x,S);!N.done;P++,N=v.next())N=f(S,x,P,N.value,k),N!==null&&(e&&N.alternate!==null&&S.delete(N.key===null?P:N.key),p=i(N,p,P),C===null?j=N:C.sibling=N,C=N);return e&&S.forEach(function(B){return t(x,B)}),ie&&An(x,P),j}function w(x,p,v,k){if(typeof v=="object"&&v!==null&&v.type===er&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case pa:e:{for(var j=v.key,C=p;C!==null;){if(C.key===j){if(j=v.type,j===er){if(C.tag===7){n(x,C.sibling),p=s(C,v.props.children),p.return=x,x=p;break e}}else if(C.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===en&&ph(j)===C.type){n(x,C.sibling),p=s(C,v.props),p.ref=Jr(x,C,v),p.return=x,x=p;break e}n(x,C);break}else t(x,C);C=C.sibling}v.type===er?(p=Fn(v.props.children,x.mode,k,v.key),p.return=x,x=p):(k=Qa(v.type,v.key,v.props,null,x.mode,k),k.ref=Jr(x,p,v),k.return=x,x=k)}return l(x);case Jn:e:{for(C=v.key;p!==null;){if(p.key===C)if(p.tag===4&&p.stateNode.containerInfo===v.containerInfo&&p.stateNode.implementation===v.implementation){n(x,p.sibling),p=s(p,v.children||[]),p.return=x,x=p;break e}else{n(x,p);break}else t(x,p);p=p.sibling}p=Yl(v,x.mode,k),p.return=x,x=p}return l(x);case en:return C=v._init,w(x,p,C(v._payload),k)}if(is(v))return b(x,p,v,k);if(qr(v))return y(x,p,v,k);Ca(x,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,p!==null&&p.tag===6?(n(x,p.sibling),p=s(p,v),p.return=x,x=p):(n(x,p),p=ql(v,x.mode,k),p.return=x,x=p),l(x)):n(x,p)}return w}var Nr=Jp(!0),e0=Jp(!1),ki=Sn(null),wi=null,or=null,kc=null;function wc(){kc=or=wi=null}function jc(e){var t=ki.current;ae(ki),e._currentValue=t}function tu(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function vr(e,t){wi=e,kc=or=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ue=!0),e.firstContext=null)}function ut(e){var t=e._currentValue;if(kc!==e)if(e={context:e,memoizedValue:t,next:null},or===null){if(wi===null)throw Error(L(308));or=e,wi.dependencies={lanes:0,firstContext:e}}else or=or.next=e;return t}var Dn=null;function Nc(e){Dn===null?Dn=[e]:Dn.push(e)}function t0(e,t,n,r){var s=t.interleaved;return s===null?(n.next=n,Nc(t)):(n.next=s.next,s.next=n),t.interleaved=n,Gt(e,r)}function Gt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var tn=!1;function Sc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function n0(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Wt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function pn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,J&2){var s=r.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),r.pending=t,Gt(e,n)}return s=r.interleaved,s===null?(t.next=t,Nc(r)):(t.next=s.next,s.next=t),r.interleaved=t,Gt(e,n)}function Ga(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cc(e,n)}}function gh(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var s=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?s=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?s=i=t:i=i.next=t}else s=i=t;n={baseState:r.baseState,firstBaseUpdate:s,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ji(e,t,n,r){var s=e.updateQueue;tn=!1;var i=s.firstBaseUpdate,l=s.lastBaseUpdate,o=s.shared.pending;if(o!==null){s.shared.pending=null;var u=o,c=u.next;u.next=null,l===null?i=c:l.next=c,l=u;var d=e.alternate;d!==null&&(d=d.updateQueue,o=d.lastBaseUpdate,o!==l&&(o===null?d.firstBaseUpdate=c:o.next=c,d.lastBaseUpdate=u))}if(i!==null){var h=s.baseState;l=0,d=c=u=null,o=i;do{var m=o.lane,f=o.eventTime;if((r&m)===m){d!==null&&(d=d.next={eventTime:f,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var b=e,y=o;switch(m=t,f=n,y.tag){case 1:if(b=y.payload,typeof b=="function"){h=b.call(f,h,m);break e}h=b;break e;case 3:b.flags=b.flags&-65537|128;case 0:if(b=y.payload,m=typeof b=="function"?b.call(f,h,m):b,m==null)break e;h=ce({},h,m);break e;case 2:tn=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,m=s.effects,m===null?s.effects=[o]:m.push(o))}else f={eventTime:f,lane:m,tag:o.tag,payload:o.payload,callback:o.callback,next:null},d===null?(c=d=f,u=h):d=d.next=f,l|=m;if(o=o.next,o===null){if(o=s.shared.pending,o===null)break;m=o,o=m.next,m.next=null,s.lastBaseUpdate=m,s.shared.pending=null}}while(!0);if(d===null&&(u=h),s.baseState=u,s.firstBaseUpdate=c,s.lastBaseUpdate=d,t=s.shared.interleaved,t!==null){s=t;do l|=s.lane,s=s.next;while(s!==t)}else i===null&&(s.shared.lanes=0);$n|=l,e.lanes=l,e.memoizedState=h}}function xh(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t n?n:4,e(!0);var r=Wl.transition;Wl.transition={};try{e(!1),t()}finally{te=n,Wl.transition=r}}function v0(){return ct().memoizedState}function Py(e,t,n){var r=xn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},y0(e))k0(t,n);else if(n=t0(e,t,n,r),n!==null){var s=Re();kt(n,e,r,s),w0(n,t,r)}}function Ey(e,t,n){var r=xn(e),s={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(y0(e))k0(t,s);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,o=i(l,n);if(s.hasEagerState=!0,s.eagerState=o,jt(o,l)){var u=t.interleaved;u===null?(s.next=s,Nc(t)):(s.next=u.next,u.next=s),t.interleaved=s;return}}catch{}finally{}n=t0(e,t,s,r),n!==null&&(s=Re(),kt(n,e,r,s),w0(n,t,r))}}function y0(e){var t=e.alternate;return e===oe||t!==null&&t===oe}function k0(e,t){gs=Si=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function w0(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cc(e,n)}}var Ci={readContext:ut,useCallback:Ae,useContext:Ae,useEffect:Ae,useImperativeHandle:Ae,useInsertionEffect:Ae,useLayoutEffect:Ae,useMemo:Ae,useReducer:Ae,useRef:Ae,useState:Ae,useDebugValue:Ae,useDeferredValue:Ae,useTransition:Ae,useMutableSource:Ae,useSyncExternalStore:Ae,useId:Ae,unstable_isNewReconciler:!1},Ty={readContext:ut,useCallback:function(e,t){return Ct().memoizedState=[e,t===void 0?null:t],e},useContext:ut,useEffect:vh,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,qa(4194308,4,f0.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qa(4194308,4,e,t)},useInsertionEffect:function(e,t){return qa(4,2,e,t)},useMemo:function(e,t){var n=Ct();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ct();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Py.bind(null,oe,e),[r.memoizedState,e]},useRef:function(e){var t=Ct();return e={current:e},t.memoizedState=e},useState:bh,useDebugValue:Lc,useDeferredValue:function(e){return Ct().memoizedState=e},useTransition:function(){var e=bh(!1),t=e[0];return e=Cy.bind(null,e[1]),Ct().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=oe,s=Ct();if(ie){if(n===void 0)throw Error(L(407));n=n()}else{if(n=t(),je===null)throw Error(L(349));Hn&30||i0(r,t,n)}s.memoizedState=n;var i={value:n,getSnapshot:t};return s.queue=i,vh(o0.bind(null,r,i,e),[e]),r.flags|=2048,Us(9,l0.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ct(),t=je.identifierPrefix;if(ie){var n=Ot,r=Vt;n=(r&~(1<<32-yt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Vs++,0 ")&&(u=u.replace(" ",e.displayName)),u}while(1<=l&&0<=o);break}}}finally{Cl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?as(e):""}function av(e){switch(e.tag){case 5:return as(e.type);case 16:return as("Lazy");case 13:return as("Suspense");case 19:return as("SuspenseList");case 0:case 2:case 15:return e=Pl(e.type,!1),e;case 11:return e=Pl(e.type.render,!1),e;case 1:return e=Pl(e.type,!0),e;default:return""}}function Ao(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case er:return"Fragment";case Jn:return"Portal";case Po:return"Profiler";case ac:return"StrictMode";case Eo:return"Suspense";case To:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case np:return(e.displayName||"Context")+".Consumer";case tp:return(e._context.displayName||"Context")+".Provider";case ic:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case lc:return t=e.displayName||null,t!==null?t:Ao(e.type)||"Memo";case en:t=e._payload,e=e._init;try{return Ao(e(t))}catch{}}return null}function iv(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ao(t);case 8:return t===ac?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function sp(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function lv(e){var t=sp(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ga(e){e._valueTracker||(e._valueTracker=lv(e))}function ap(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=sp(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function oi(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mo(e,t){var n=t.checked;return de({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Id(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=yn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ip(e,t){t=t.checked,t!=null&&sc(e,"checked",t,!1)}function _o(e,t){ip(e,t);var n=yn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Lo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Lo(e,t.type,yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Fd(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Lo(e,t,n){(t!=="number"||oi(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var is=Array.isArray;function pr(e,t,n,r){if(e=e.options,t){t={};for(var s=0;s "+t.valueOf().toString()+"",t=xa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Es(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ds={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},ov=["Webkit","ms","Moz","O"];Object.keys(ds).forEach(function(e){ov.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ds[t]=ds[e]})});function cp(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ds.hasOwnProperty(e)&&ds[e]?(""+t).trim():t+"px"}function dp(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,s=cp(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,s):e[n]=s}}var uv=de({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 zo(e,t){if(t){if(uv[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(D(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(D(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(D(61))}if(t.style!=null&&typeof t.style!="object")throw Error(D(62))}}function Ro(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){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 Io=null;function oc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Fo=null,gr=null,xr=null;function Ud(e){if(e=ta(e)){if(typeof Fo!="function")throw Error(D(280));var t=e.stateNode;t&&(t=Qi(t),Fo(e.stateNode,e.type,t))}}function hp(e){gr?xr?xr.push(e):xr=[e]:gr=e}function mp(){if(gr){var e=gr,t=xr;if(xr=gr=null,Ud(e),t)for(e=0;e >>=0,e===0?32:31-(yv(e)/kv|0)|0}var ba=64,va=4194304;function ls(e){switch(e&-e){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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function hi(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,s=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var o=l&~s;o!==0?r=ls(o):(i&=l,i!==0&&(r=ls(i)))}else l=n&~s,l!==0?r=ls(l):i!==0&&(r=ls(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&s)&&(s=r&-r,i=t&-t,s>=i||s===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0 n;n++)t.push(e);return t}function Js(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-kt(t),e[t]=n}function Sv(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0 =ms),Zd=" ",Qd=!1;function Lp(e,t){switch(e){case"keyup":return Jv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var tr=!1;function ty(e,t){switch(e){case"compositionend":return Dp(t);case"keypress":return t.which!==32?null:(Qd=!0,Zd);case"textInput":return e=t.data,e===Zd&&Qd?null:e;default:return null}}function ny(e,t){if(tr)return e==="compositionend"||!gc&&Lp(e,t)?(e=Mp(),Ha=mc=an=null,tr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1 =t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=nh(n)}}function Ip(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ip(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fp(){for(var e=window,t=oi();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=oi(e.document)}return t}function xc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function dy(e){var t=Fp(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ip(n.ownerDocument.documentElement,n)){if(r!==null&&xc(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,i=Math.min(r.start,s);r=r.end===void 0?i:Math.min(r.end,s),!e.extend&&i>r&&(s=r,r=i,i=s),s=rh(n,i);var l=rh(n,r);s&&l&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n =document.documentMode,nr=null,$o=null,ps=null,Go=!1;function sh(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Go||nr==null||nr!==oi(r)||(r=nr,"selectionStart"in r&&xc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ps&&Ds(ps,r)||(ps=r,r=pi($o,"onSelect"),0 ar||(e.current=Qo[ar],Qo[ar]=null,ar--)}function se(e,t){ar++,Qo[ar]=e.current,e.current=t}var kn={},Le=Sn(kn),He=Sn(!1),Un=kn;function wr(e,t){var n=e.type.contextTypes;if(!n)return kn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var s={},i;for(i in n)s[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function $e(e){return e=e.childContextTypes,e!=null}function xi(){ie(He),ie(Le)}function dh(e,t,n){if(Le.current!==kn)throw Error(D(168));se(Le,t),se(He,n)}function qp(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var s in r)if(!(s in t))throw Error(D(108,iv(e)||"Unknown",s));return de({},n,r)}function bi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||kn,Un=Le.current,se(Le,e),se(He,He.current),!0}function hh(e,t,n){var r=e.stateNode;if(!r)throw Error(D(169));n?(e=qp(e,t,Un),r.__reactInternalMemoizedMergedChildContext=e,ie(He),ie(Le),se(Le,e)):ie(He),se(He,n)}var Vt=null,Ji=!1,Ol=!1;function Yp(e){Vt===null?Vt=[e]:Vt.push(e)}function jy(e){Ji=!0,Yp(e)}function Cn(){if(!Ol&&Vt!==null){Ol=!0;var e=0,t=ee;try{var n=Vt;for(ee=1;e >=l,s-=l,Ot=1<<32-kt(t)+s|n< P?(M=S,S=null):M=S.sibling;var E=m(x,S,v[P],k);if(E===null){S===null&&(S=M);break}e&&S&&E.alternate===null&&t(x,S),p=i(E,p,P),C===null?j=E:C.sibling=E,C=E,S=M}if(P===v.length)return n(x,S),le&&An(x,P),j;if(S===null){for(;PP?(M=S,S=null):M=S.sibling;var N=m(x,S,E.value,k);if(N===null){S===null&&(S=M);break}e&&S&&N.alternate===null&&t(x,S),p=i(N,p,P),C===null?j=N:C.sibling=N,C=N,S=M}if(E.done)return n(x,S),le&&An(x,P),j;if(S===null){for(;!E.done;P++,E=v.next())E=h(x,E.value,k),E!==null&&(p=i(E,p,P),C===null?j=E:C.sibling=E,C=E);return le&&An(x,P),j}for(S=r(x,S);!E.done;P++,E=v.next())E=f(S,x,P,E.value,k),E!==null&&(e&&E.alternate!==null&&S.delete(E.key===null?P:E.key),p=i(E,p,P),C===null?j=E:C.sibling=E,C=E);return e&&S.forEach(function(L){return t(x,L)}),le&&An(x,P),j}function w(x,p,v,k){if(typeof v=="object"&&v!==null&&v.type===er&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case pa:e:{for(var j=v.key,C=p;C!==null;){if(C.key===j){if(j=v.type,j===er){if(C.tag===7){n(x,C.sibling),p=s(C,v.props.children),p.return=x,x=p;break e}}else if(C.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===en&&ph(j)===C.type){n(x,C.sibling),p=s(C,v.props),p.ref=Jr(x,C,v),p.return=x,x=p;break e}n(x,C);break}else t(x,C);C=C.sibling}v.type===er?(p=Fn(v.props.children,x.mode,k,v.key),p.return=x,x=p):(k=Qa(v.type,v.key,v.props,null,x.mode,k),k.ref=Jr(x,p,v),k.return=x,x=k)}return l(x);case Jn:e:{for(C=v.key;p!==null;){if(p.key===C)if(p.tag===4&&p.stateNode.containerInfo===v.containerInfo&&p.stateNode.implementation===v.implementation){n(x,p.sibling),p=s(p,v.children||[]),p.return=x,x=p;break e}else{n(x,p);break}else t(x,p);p=p.sibling}p=Yl(v,x.mode,k),p.return=x,x=p}return l(x);case en:return C=v._init,w(x,p,C(v._payload),k)}if(is(v))return b(x,p,v,k);if(qr(v))return y(x,p,v,k);Ca(x,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,p!==null&&p.tag===6?(n(x,p.sibling),p=s(p,v),p.return=x,x=p):(n(x,p),p=ql(v,x.mode,k),p.return=x,x=p),l(x)):n(x,p)}return w}var Nr=Jp(!0),e0=Jp(!1),ki=Sn(null),wi=null,or=null,kc=null;function wc(){kc=or=wi=null}function jc(e){var t=ki.current;ie(ki),e._currentValue=t}function tu(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function vr(e,t){wi=e,kc=or=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ue=!0),e.firstContext=null)}function ct(e){var t=e._currentValue;if(kc!==e)if(e={context:e,memoizedValue:t,next:null},or===null){if(wi===null)throw Error(D(308));or=e,wi.dependencies={lanes:0,firstContext:e}}else or=or.next=e;return t}var Dn=null;function Nc(e){Dn===null?Dn=[e]:Dn.push(e)}function t0(e,t,n,r){var s=t.interleaved;return s===null?(n.next=n,Nc(t)):(n.next=s.next,s.next=n),t.interleaved=n,Kt(e,r)}function Kt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var tn=!1;function Sc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function n0(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ht(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function pn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,J&2){var s=r.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),r.pending=t,Kt(e,n)}return s=r.interleaved,s===null?(t.next=t,Nc(r)):(t.next=s.next,s.next=t),r.interleaved=t,Kt(e,n)}function Ga(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cc(e,n)}}function gh(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var s=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?s=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?s=i=t:i=i.next=t}else s=i=t;n={baseState:r.baseState,firstBaseUpdate:s,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ji(e,t,n,r){var s=e.updateQueue;tn=!1;var i=s.firstBaseUpdate,l=s.lastBaseUpdate,o=s.shared.pending;if(o!==null){s.shared.pending=null;var u=o,c=u.next;u.next=null,l===null?i=c:l.next=c,l=u;var d=e.alternate;d!==null&&(d=d.updateQueue,o=d.lastBaseUpdate,o!==l&&(o===null?d.firstBaseUpdate=c:o.next=c,d.lastBaseUpdate=u))}if(i!==null){var h=s.baseState;l=0,d=c=u=null,o=i;do{var m=o.lane,f=o.eventTime;if((r&m)===m){d!==null&&(d=d.next={eventTime:f,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var b=e,y=o;switch(m=t,f=n,y.tag){case 1:if(b=y.payload,typeof b=="function"){h=b.call(f,h,m);break e}h=b;break e;case 3:b.flags=b.flags&-65537|128;case 0:if(b=y.payload,m=typeof b=="function"?b.call(f,h,m):b,m==null)break e;h=de({},h,m);break e;case 2:tn=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,m=s.effects,m===null?s.effects=[o]:m.push(o))}else f={eventTime:f,lane:m,tag:o.tag,payload:o.payload,callback:o.callback,next:null},d===null?(c=d=f,u=h):d=d.next=f,l|=m;if(o=o.next,o===null){if(o=s.shared.pending,o===null)break;m=o,o=m.next,m.next=null,s.lastBaseUpdate=m,s.shared.pending=null}}while(!0);if(d===null&&(u=h),s.baseState=u,s.firstBaseUpdate=c,s.lastBaseUpdate=d,t=s.shared.interleaved,t!==null){s=t;do l|=s.lane,s=s.next;while(s!==t)}else i===null&&(s.shared.lanes=0);$n|=l,e.lanes=l,e.memoizedState=h}}function xh(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t n?n:4,e(!0);var r=Wl.transition;Wl.transition={};try{e(!1),t()}finally{ee=n,Wl.transition=r}}function v0(){return dt().memoizedState}function Py(e,t,n){var r=xn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},y0(e))k0(t,n);else if(n=t0(e,t,n,r),n!==null){var s=Re();wt(n,e,r,s),w0(n,t,r)}}function Ey(e,t,n){var r=xn(e),s={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(y0(e))k0(t,s);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,o=i(l,n);if(s.hasEagerState=!0,s.eagerState=o,Nt(o,l)){var u=t.interleaved;u===null?(s.next=s,Nc(t)):(s.next=u.next,u.next=s),t.interleaved=s;return}}catch{}finally{}n=t0(e,t,s,r),n!==null&&(s=Re(),wt(n,e,r,s),w0(n,t,r))}}function y0(e){var t=e.alternate;return e===ue||t!==null&&t===ue}function k0(e,t){gs=Si=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function w0(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cc(e,n)}}var Ci={readContext:ct,useCallback:Ae,useContext:Ae,useEffect:Ae,useImperativeHandle:Ae,useInsertionEffect:Ae,useLayoutEffect:Ae,useMemo:Ae,useReducer:Ae,useRef:Ae,useState:Ae,useDebugValue:Ae,useDeferredValue:Ae,useTransition:Ae,useMutableSource:Ae,useSyncExternalStore:Ae,useId:Ae,unstable_isNewReconciler:!1},Ty={readContext:ct,useCallback:function(e,t){return Pt().memoizedState=[e,t===void 0?null:t],e},useContext:ct,useEffect:vh,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,qa(4194308,4,f0.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qa(4194308,4,e,t)},useInsertionEffect:function(e,t){return qa(4,2,e,t)},useMemo:function(e,t){var n=Pt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Pt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Py.bind(null,ue,e),[r.memoizedState,e]},useRef:function(e){var t=Pt();return e={current:e},t.memoizedState=e},useState:bh,useDebugValue:Lc,useDeferredValue:function(e){return Pt().memoizedState=e},useTransition:function(){var e=bh(!1),t=e[0];return e=Cy.bind(null,e[1]),Pt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ue,s=Pt();if(le){if(n===void 0)throw Error(D(407));n=n()}else{if(n=t(),Ne===null)throw Error(D(349));Hn&30||i0(r,t,n)}s.memoizedState=n;var i={value:n,getSnapshot:t};return s.queue=i,vh(o0.bind(null,r,i,e),[e]),r.flags|=2048,Us(9,l0.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Pt(),t=Ne.identifierPrefix;if(le){var n=Ut,r=Ot;n=(r&~(1<<32-kt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Vs++,0 <\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[Tt]=t,e[Rs]=r,_0(e,t,!1,!1),t.stateNode=e;e:{switch(l=Ro(n,r),n){case"dialog":se("cancel",e),se("close",e),s=r;break;case"iframe":case"object":case"embed":se("load",e),s=r;break;case"video":case"audio":for(s=0;s Pr&&(t.flags|=128,r=!0,es(i,!1),t.lanes=4194304)}else{if(!r)if(e=Ni(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),es(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!ie)return Me(t),null}else 2*fe()-i.renderingStartTime>Pr&&n!==1073741824&&(t.flags|=128,r=!0,es(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=fe(),t.sibling=null,n=le.current,re(le,r?n&1|2:n&1),t):(Me(t),null);case 22:case 23:return Fc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ye&1073741824&&(Me(t),t.subtreeFlags&6&&(t.flags|=8192)):Me(t),null;case 24:return null;case 25:return null}throw Error(L(156,t.tag))}function Ry(e,t){switch(vc(t),t.tag){case 1:return $e(t.type)&&xi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Sr(),ae(He),ae(Le),Ec(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Pc(t),null;case 13:if(ae(le),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(L(340));jr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ae(le),null;case 4:return Sr(),null;case 10:return jc(t.type._context),null;case 22:case 23:return Fc(),null;case 24:return null;default:return null}}var Ea=!1,_e=!1,Iy=typeof WeakSet=="function"?WeakSet:Set,I=null;function ur(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){me(e,t,r)}else n.current=null}function cu(e,t,n){try{n()}catch(r){me(e,t,r)}}var Ah=!1;function Fy(e,t){if(Ko=mi,e=Fp(),xc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var s=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,o=-1,u=-1,c=0,d=0,h=e,m=null;t:for(;;){for(var f;h!==n||s!==0&&h.nodeType!==3||(o=l+s),h!==i||r!==0&&h.nodeType!==3||(u=l+r),h.nodeType===3&&(l+=h.nodeValue.length),(f=h.firstChild)!==null;)m=h,h=f;for(;;){if(h===e)break t;if(m===n&&++c===s&&(o=l),m===i&&++d===r&&(u=l),(f=h.nextSibling)!==null)break;h=m,m=h.parentNode}h=f}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(qo={focusedElem:e,selectionRange:n},mi=!1,I=t;I!==null;)if(t=I,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,I=e;else for(;I!==null;){t=I;try{var b=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(b!==null){var y=b.memoizedProps,w=b.memoizedState,x=t.stateNode,p=x.getSnapshotBeforeUpdate(t.elementType===t.type?y:gt(t.type,y),w);x.__reactInternalSnapshotBeforeUpdate=p}break;case 3:var v=t.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(L(163))}}catch(k){me(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,I=e;break}I=t.return}return b=Ah,Ah=!1,b}function xs(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&cu(t,n,i)}s=s.next}while(s!==r)}}function nl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function du(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function B0(e){var t=e.alternate;t!==null&&(e.alternate=null,B0(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Tt],delete t[Rs],delete t[Zo],delete t[ky],delete t[wy])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function z0(e){return e.tag===5||e.tag===3||e.tag===4}function Mh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||z0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function hu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=gi));else if(r!==4&&(e=e.child,e!==null))for(hu(e,t,n),e=e.sibling;e!==null;)hu(e,t,n),e=e.sibling}function mu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(mu(e,t,n),e=e.sibling;e!==null;)mu(e,t,n),e=e.sibling}var Ce=null,xt=!1;function Qt(e,t,n){for(n=n.child;n!==null;)R0(e,t,n),n=n.sibling}function R0(e,t,n){if(At&&typeof At.onCommitFiberUnmount=="function")try{At.onCommitFiberUnmount(qi,n)}catch{}switch(n.tag){case 5:_e||ur(n,t);case 6:var r=Ce,s=xt;Ce=null,Qt(e,t,n),Ce=r,xt=s,Ce!==null&&(xt?(e=Ce,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ce.removeChild(n.stateNode));break;case 18:Ce!==null&&(xt?(e=Ce,n=n.stateNode,e.nodeType===8?Vl(e.parentNode,n):e.nodeType===1&&Vl(e,n),_s(e)):Vl(Ce,n.stateNode));break;case 4:r=Ce,s=xt,Ce=n.stateNode.containerInfo,xt=!0,Qt(e,t,n),Ce=r,xt=s;break;case 0:case 11:case 14:case 15:if(!_e&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){s=r=r.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&cu(n,t,l),s=s.next}while(s!==r)}Qt(e,t,n);break;case 1:if(!_e&&(ur(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(o){me(n,t,o)}Qt(e,t,n);break;case 21:Qt(e,t,n);break;case 22:n.mode&1?(_e=(r=_e)||n.memoizedState!==null,Qt(e,t,n),_e=r):Qt(e,t,n);break;default:Qt(e,t,n)}}function _h(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Iy),t.forEach(function(r){var s=qy.bind(null,e,r);n.has(r)||(n.add(r),r.then(s,s))})}}function mt(e,t){var n=t.deletions;if(n!==null)for(var r=0;r s&&(s=l),r&=~i}if(r=s,r=fe()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Oy(r/1960))-r,10 e?16:e,ln===null)var r=!1;else{if(e=ln,ln=null,Ti=0,J&6)throw Error(L(331));var s=J;for(J|=4,I=e.current;I!==null;){var i=I,l=i.child;if(I.flags&16){var o=i.deletions;if(o!==null){for(var u=0;u fe()-Rc?In(e,0):zc|=n),Ge(e,t)}function $0(e,t){t===0&&(e.mode&1?(t=va,va<<=1,!(va&130023424)&&(va=4194304)):t=1);var n=Re();e=Gt(e,t),e!==null&&(Js(e,t,n),Ge(e,n))}function Ky(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),$0(e,n)}function qy(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(L(314))}r!==null&&r.delete(t),$0(e,n)}var G0;G0=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||He.current)Ue=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ue=!1,By(e,t,n);Ue=!!(e.flags&131072)}else Ue=!1,ie&&t.flags&1048576&&Xp(t,yi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ya(e,t),e=t.pendingProps;var s=wr(t,Le.current);vr(t,n),s=Ac(null,t,r,e,s,n);var i=Mc();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,$e(r)?(i=!0,bi(t)):i=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Sc(t),s.updater=tl,t.stateNode=s,s._reactInternals=t,ru(t,r,e,n),t=iu(null,t,r,!0,i,n)):(t.tag=0,ie&&i&&bc(t),De(null,t,s,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ya(e,t),e=t.pendingProps,s=r._init,r=s(r._payload),t.type=r,s=t.tag=Xy(r),e=gt(r,e),s){case 0:t=au(null,t,r,e,n);break e;case 1:t=Ph(null,t,r,e,n);break e;case 11:t=Sh(null,t,r,e,n);break e;case 14:t=Ch(null,t,r,gt(r.type,e),n);break e}throw Error(L(306,r,""))}return t;case 0:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:gt(r,s),au(e,t,r,s,n);case 1:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:gt(r,s),Ph(e,t,r,s,n);case 3:e:{if(T0(t),e===null)throw Error(L(387));r=t.pendingProps,i=t.memoizedState,s=i.element,n0(e,t),ji(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){s=Cr(Error(L(423)),t),t=Eh(e,t,r,n,s);break e}else if(r!==s){s=Cr(Error(L(424)),t),t=Eh(e,t,r,n,s);break e}else for(Xe=fn(t.stateNode.containerInfo.firstChild),Ze=t,ie=!0,bt=null,n=e0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(jr(),r===s){t=Kt(e,t,n);break e}De(e,t,r,n)}t=t.child}return t;case 5:return r0(t),e===null&&eu(t),r=t.type,s=t.pendingProps,i=e!==null?e.memoizedProps:null,l=s.children,Yo(r,s)?l=null:i!==null&&Yo(r,i)&&(t.flags|=32),E0(e,t),De(e,t,l,n),t.child;case 6:return e===null&&eu(t),null;case 13:return A0(e,t,n);case 4:return Cc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Nr(t,null,r,n):De(e,t,r,n),t.child;case 11:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:gt(r,s),Sh(e,t,r,s,n);case 7:return De(e,t,t.pendingProps,n),t.child;case 8:return De(e,t,t.pendingProps.children,n),t.child;case 12:return De(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,s=t.pendingProps,i=t.memoizedProps,l=s.value,re(ki,r._currentValue),r._currentValue=l,i!==null)if(jt(i.value,l)){if(i.children===s.children&&!He.current){t=Kt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var u=o.firstContext;u!==null;){if(u.context===r){if(i.tag===1){u=Wt(-1,n&-n),u.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),tu(i.return,n,t),o.lanes|=n;break}u=u.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(L(341));l.lanes|=n,o=l.alternate,o!==null&&(o.lanes|=n),tu(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}De(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,r=t.pendingProps.children,vr(t,n),s=ut(s),r=r(s),t.flags|=1,De(e,t,r,n),t.child;case 14:return r=t.type,s=gt(r,t.pendingProps),s=gt(r.type,s),Ch(e,t,r,s,n);case 15:return C0(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:gt(r,s),Ya(e,t),t.tag=1,$e(r)?(e=!0,bi(t)):e=!1,vr(t,n),j0(t,r,s),ru(t,r,s,n),iu(null,t,r,!0,e,n);case 19:return M0(e,t,n);case 22:return P0(e,t,n)}throw Error(L(156,t.tag))};function K0(e,t){return yp(e,t)}function Yy(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function it(e,t,n,r){return new Yy(e,t,n,r)}function Oc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Xy(e){if(typeof e=="function")return Oc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ic)return 11;if(e===lc)return 14}return 2}function bn(e,t){var n=e.alternate;return n===null?(n=it(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Qa(e,t,n,r,s,i){var l=2;if(r=e,typeof e=="function")Oc(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case er:return Fn(n.children,s,i,t);case ac:l=8,s|=8;break;case Po:return e=it(12,n,t,s|2),e.elementType=Po,e.lanes=i,e;case Eo:return e=it(13,n,t,s),e.elementType=Eo,e.lanes=i,e;case To:return e=it(19,n,t,s),e.elementType=To,e.lanes=i,e;case rp:return sl(n,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case tp:l=10;break e;case np:l=9;break e;case ic:l=11;break e;case lc:l=14;break e;case en:l=16,r=null;break e}throw Error(L(130,e==null?e:typeof e,""))}return t=it(l,n,t,s),t.elementType=e,t.type=r,t.lanes=i,t}function Fn(e,t,n,r){return e=it(7,e,r,t),e.lanes=n,e}function sl(e,t,n,r){return e=it(22,e,r,t),e.elementType=rp,e.lanes=n,e.stateNode={isHidden:!1},e}function ql(e,t,n){return e=it(6,e,null,t),e.lanes=n,e}function Yl(e,t,n){return t=it(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zy(e,t,n,r,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Tl(0),this.expirationTimes=Tl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Tl(0),this.identifierPrefix=r,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Uc(e,t,n,r,s,i,l,o,u){return e=new Zy(e,t,n,o,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=it(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Sc(i),e}function Qy(e,t,n){var r=3 "u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Z0)}catch(e){console.error(e)}}Z0(),Zf.exports=et;var Gc=Zf.exports,Vh=Gc;So.createRoot=Vh.createRoot,So.hydrateRoot=Vh.hydrateRoot;/** +`+i.stack}return{value:e,source:t,stack:s,digest:null}}function Gl(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function su(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var _y=typeof WeakMap=="function"?WeakMap:Map;function N0(e,t,n){n=Ht(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ei||(Ei=!0,fu=r),su(e,t)},n}function S0(e,t,n){n=Ht(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var s=t.value;n.payload=function(){return r(s)},n.callback=function(){su(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){su(e,t),typeof r!="function"&&(gn===null?gn=new Set([this]):gn.add(this));var l=t.stack;this.componentDidCatch(t.value,{componentStack:l!==null?l:""})}),n}function wh(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new _y;var s=new Set;r.set(t,s)}else s=r.get(t),s===void 0&&(s=new Set,r.set(t,s));s.has(n)||(s.add(n),e=Gy.bind(null,e,t,n),t.then(e,e))}function jh(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Nh(e,t,n,r,s){return e.mode&1?(e.flags|=65536,e.lanes=s,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Ht(-1,1),t.tag=2,pn(n,t,1))),n.lanes|=1),e)}var Ly=Yt.ReactCurrentOwner,Ue=!1;function De(e,t,n,r){t.child=e===null?e0(t,null,n,r):Nr(t,e.child,n,r)}function Sh(e,t,n,r,s){n=n.render;var i=t.ref;return vr(t,s),r=Ac(e,t,n,r,i,s),n=Mc(),e!==null&&!Ue?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,qt(e,t,s)):(le&&n&&bc(t),t.flags|=1,De(e,t,r,s),t.child)}function Ch(e,t,n,r,s){if(e===null){var i=n.type;return typeof i=="function"&&!Oc(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,C0(e,t,i,r,s)):(e=Qa(n.type,null,r,t,t.mode,s),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&s)){var l=i.memoizedProps;if(n=n.compare,n=n!==null?n:Ds,n(l,r)&&e.ref===t.ref)return qt(e,t,s)}return t.flags|=1,e=bn(i,r),e.ref=t.ref,e.return=t,t.child=e}function C0(e,t,n,r,s){if(e!==null){var i=e.memoizedProps;if(Ds(i,r)&&e.ref===t.ref)if(Ue=!1,t.pendingProps=r=i,(e.lanes&s)!==0)e.flags&131072&&(Ue=!0);else return t.lanes=e.lanes,qt(e,t,s)}return au(e,t,n,r,s)}function P0(e,t,n){var r=t.pendingProps,s=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},se(cr,Xe),Xe|=n;else{if(!(n&1073741824))return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,se(cr,Xe),Xe|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,se(cr,Xe),Xe|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,se(cr,Xe),Xe|=r;return De(e,t,s,n),t.child}function E0(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function au(e,t,n,r,s){var i=$e(n)?Un:Le.current;return i=wr(t,i),vr(t,s),n=Ac(e,t,n,r,i,s),r=Mc(),e!==null&&!Ue?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,qt(e,t,s)):(le&&r&&bc(t),t.flags|=1,De(e,t,n,s),t.child)}function Ph(e,t,n,r,s){if($e(n)){var i=!0;bi(t)}else i=!1;if(vr(t,s),t.stateNode===null)Ya(e,t),j0(t,n,r),ru(t,n,r,s),r=!0;else if(e===null){var l=t.stateNode,o=t.memoizedProps;l.props=o;var u=l.context,c=n.contextType;typeof c=="object"&&c!==null?c=ct(c):(c=$e(n)?Un:Le.current,c=wr(t,c));var d=n.getDerivedStateFromProps,h=typeof d=="function"||typeof l.getSnapshotBeforeUpdate=="function";h||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==r||u!==c)&&kh(t,l,r,c),tn=!1;var m=t.memoizedState;l.state=m,ji(t,r,l,s),u=t.memoizedState,o!==r||m!==u||He.current||tn?(typeof d=="function"&&(nu(t,n,d,r),u=t.memoizedState),(o=tn||yh(t,n,o,r,m,u,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"&&(t.flags|=4194308)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),l.props=r,l.state=u,l.context=c,r=o):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{l=t.stateNode,n0(e,t),o=t.memoizedProps,c=t.type===t.elementType?o:xt(t.type,o),l.props=c,h=t.pendingProps,m=l.context,u=n.contextType,typeof u=="object"&&u!==null?u=ct(u):(u=$e(n)?Un:Le.current,u=wr(t,u));var f=n.getDerivedStateFromProps;(d=typeof f=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==h||m!==u)&&kh(t,l,r,u),tn=!1,m=t.memoizedState,l.state=m,ji(t,r,l,s);var b=t.memoizedState;o!==h||m!==b||He.current||tn?(typeof f=="function"&&(nu(t,n,f,r),b=t.memoizedState),(c=tn||yh(t,n,c,r,m,b,u)||!1)?(d||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(r,b,u),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(r,b,u)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=b),l.props=r,l.state=b,l.context=u,r=c):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(t.flags|=1024),r=!1)}return iu(e,t,n,r,i,s)}function iu(e,t,n,r,s,i){E0(e,t);var l=(t.flags&128)!==0;if(!r&&!l)return s&&hh(t,n,!1),qt(e,t,i);r=t.stateNode,Ly.current=t;var o=l&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&l?(t.child=Nr(t,e.child,null,i),t.child=Nr(t,null,o,i)):De(e,t,o,i),t.memoizedState=r.state,s&&hh(t,n,!0),t.child}function T0(e){var t=e.stateNode;t.pendingContext?dh(e,t.pendingContext,t.pendingContext!==t.context):t.context&&dh(e,t.context,!1),Cc(e,t.containerInfo)}function Eh(e,t,n,r,s){return jr(),yc(s),t.flags|=256,De(e,t,n,r),t.child}var lu={dehydrated:null,treeContext:null,retryLane:0};function ou(e){return{baseLanes:e,cachePool:null,transitions:null}}function A0(e,t,n){var r=t.pendingProps,s=oe.current,i=!1,l=(t.flags&128)!==0,o;if((o=l)||(o=e!==null&&e.memoizedState===null?!1:(s&2)!==0),o?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(s|=1),se(oe,s&1),e===null)return eu(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=r.children,e=r.fallback,i?(r=t.mode,i=t.child,l={mode:"hidden",children:l},!(r&1)&&i!==null?(i.childLanes=0,i.pendingProps=l):i=sl(l,r,0,null),e=Fn(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=ou(n),t.memoizedState=lu,e):Dc(t,l));if(s=e.memoizedState,s!==null&&(o=s.dehydrated,o!==null))return Dy(e,t,l,r,o,s,n);if(i){i=r.fallback,l=t.mode,s=e.child,o=s.sibling;var u={mode:"hidden",children:r.children};return!(l&1)&&t.child!==s?(r=t.child,r.childLanes=0,r.pendingProps=u,t.deletions=null):(r=bn(s,u),r.subtreeFlags=s.subtreeFlags&14680064),o!==null?i=bn(o,i):(i=Fn(i,l,n,null),i.flags|=2),i.return=t,r.return=t,r.sibling=i,t.child=r,r=i,i=t.child,l=e.child.memoizedState,l=l===null?ou(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},i.memoizedState=l,i.childLanes=e.childLanes&~n,t.memoizedState=lu,r}return i=e.child,e=i.sibling,r=bn(i,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Dc(e,t){return t=sl({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Pa(e,t,n,r){return r!==null&&yc(r),Nr(t,e.child,null,n),e=Dc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Dy(e,t,n,r,s,i,l){if(n)return t.flags&256?(t.flags&=-257,r=Gl(Error(D(422))),Pa(e,t,l,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,s=t.mode,r=sl({mode:"visible",children:r.children},s,0,null),i=Fn(i,s,l,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,t.mode&1&&Nr(t,e.child,null,l),t.child.memoizedState=ou(l),t.memoizedState=lu,i);if(!(t.mode&1))return Pa(e,t,l,null);if(s.data==="$!"){if(r=s.nextSibling&&s.nextSibling.dataset,r)var o=r.dgst;return r=o,i=Error(D(419)),r=Gl(i,r,void 0),Pa(e,t,l,r)}if(o=(l&e.childLanes)!==0,Ue||o){if(r=Ne,r!==null){switch(l&-l){case 4:s=2;break;case 16:s=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:s=32;break;case 536870912:s=268435456;break;default:s=0}s=s&(r.suspendedLanes|l)?0:s,s!==0&&s!==i.retryLane&&(i.retryLane=s,Kt(e,s),wt(r,e,s,-1))}return Vc(),r=Gl(Error(D(421))),Pa(e,t,l,r)}return s.data==="$?"?(t.flags|=128,t.child=e.child,t=Ky.bind(null,e),s._reactRetry=t,null):(e=i.treeContext,Ze=fn(s.nextSibling),Qe=t,le=!0,vt=null,e!==null&&(at[it++]=Ot,at[it++]=Ut,at[it++]=Wn,Ot=e.id,Ut=e.overflow,Wn=t),t=Dc(t,r.children),t.flags|=4096,t)}function Th(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),tu(e.return,t,n)}function Kl(e,t,n,r,s){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:s}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=s)}function M0(e,t,n){var r=t.pendingProps,s=r.revealOrder,i=r.tail;if(De(e,t,r.children,n),r=oe.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Th(e,n,t);else if(e.tag===19)Th(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(se(oe,r),!(t.mode&1))t.memoizedState=null;else switch(s){case"forwards":for(n=t.child,s=null;n!==null;)e=n.alternate,e!==null&&Ni(e)===null&&(s=n),n=n.sibling;n=s,n===null?(s=t.child,t.child=null):(s=n.sibling,n.sibling=null),Kl(t,!1,s,n,i);break;case"backwards":for(n=null,s=t.child,t.child=null;s!==null;){if(e=s.alternate,e!==null&&Ni(e)===null){t.child=s;break}e=s.sibling,s.sibling=n,n=s,s=e}Kl(t,!0,n,null,i);break;case"together":Kl(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Ya(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function qt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),$n|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(D(153));if(t.child!==null){for(e=t.child,n=bn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=bn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function By(e,t,n){switch(t.tag){case 3:T0(t),jr();break;case 5:r0(t);break;case 1:$e(t.type)&&bi(t);break;case 4:Cc(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,s=t.memoizedProps.value;se(ki,r._currentValue),r._currentValue=s;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(se(oe,oe.current&1),t.flags|=128,null):n&t.child.childLanes?A0(e,t,n):(se(oe,oe.current&1),e=qt(e,t,n),e!==null?e.sibling:null);se(oe,oe.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return M0(e,t,n);t.flags|=128}if(s=t.memoizedState,s!==null&&(s.rendering=null,s.tail=null,s.lastEffect=null),se(oe,oe.current),r)break;return null;case 22:case 23:return t.lanes=0,P0(e,t,n)}return qt(e,t,n)}var _0,uu,L0,D0;_0=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&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;n=n.return}n.sibling.return=n.return,n=n.sibling}};uu=function(){};L0=function(e,t,n,r){var s=e.memoizedProps;if(s!==r){e=t.stateNode,Bn(_t.current);var i=null;switch(n){case"input":s=Mo(e,s),r=Mo(e,r),i=[];break;case"select":s=de({},s,{value:void 0}),r=de({},r,{value:void 0}),i=[];break;case"textarea":s=Do(e,s),r=Do(e,r),i=[];break;default:typeof s.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=gi)}zo(n,r);var l;n=null;for(c in s)if(!r.hasOwnProperty(c)&&s.hasOwnProperty(c)&&s[c]!=null)if(c==="style"){var o=s[c];for(l in o)o.hasOwnProperty(l)&&(n||(n={}),n[l]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(Ps.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(o=s!=null?s[c]:void 0,r.hasOwnProperty(c)&&u!==o&&(u!=null||o!=null))if(c==="style")if(o){for(l in o)!o.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&o[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(i||(i=[]),i.push(c,n)),n=u;else c==="dangerouslySetInnerHTML"?(u=u?u.__html:void 0,o=o?o.__html:void 0,u!=null&&o!==u&&(i=i||[]).push(c,u)):c==="children"?typeof u!="string"&&typeof u!="number"||(i=i||[]).push(c,""+u):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(Ps.hasOwnProperty(c)?(u!=null&&c==="onScroll"&&ae("scroll",e),i||o===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};D0=function(e,t,n,r){n!==r&&(t.flags|=4)};function es(e,t){if(!le)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Me(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var s=e.child;s!==null;)n|=s.lanes|s.childLanes,r|=s.subtreeFlags&14680064,r|=s.flags&14680064,s.return=e,s=s.sibling;else for(s=e.child;s!==null;)n|=s.lanes|s.childLanes,r|=s.subtreeFlags,r|=s.flags,s.return=e,s=s.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function zy(e,t,n){var r=t.pendingProps;switch(vc(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Me(t),null;case 1:return $e(t.type)&&xi(),Me(t),null;case 3:return r=t.stateNode,Sr(),ie(He),ie(Le),Ec(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(Sa(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,vt!==null&&(xu(vt),vt=null))),uu(e,t),Me(t),null;case 5:Pc(t);var s=Bn(Fs.current);if(n=t.type,e!==null&&t.stateNode!=null)L0(e,t,n,r,s),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(D(166));return Me(t),null}if(e=Bn(_t.current),Sa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[At]=t,r[Rs]=i,e=(t.mode&1)!==0,n){case"dialog":ae("cancel",r),ae("close",r);break;case"iframe":case"object":case"embed":ae("load",r);break;case"video":case"audio":for(s=0;s <\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[At]=t,e[Rs]=r,_0(e,t,!1,!1),t.stateNode=e;e:{switch(l=Ro(n,r),n){case"dialog":ae("cancel",e),ae("close",e),s=r;break;case"iframe":case"object":case"embed":ae("load",e),s=r;break;case"video":case"audio":for(s=0;s Pr&&(t.flags|=128,r=!0,es(i,!1),t.lanes=4194304)}else{if(!r)if(e=Ni(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),es(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!le)return Me(t),null}else 2*pe()-i.renderingStartTime>Pr&&n!==1073741824&&(t.flags|=128,r=!0,es(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=pe(),t.sibling=null,n=oe.current,se(oe,r?n&1|2:n&1),t):(Me(t),null);case 22:case 23:return Fc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Xe&1073741824&&(Me(t),t.subtreeFlags&6&&(t.flags|=8192)):Me(t),null;case 24:return null;case 25:return null}throw Error(D(156,t.tag))}function Ry(e,t){switch(vc(t),t.tag){case 1:return $e(t.type)&&xi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Sr(),ie(He),ie(Le),Ec(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Pc(t),null;case 13:if(ie(oe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(D(340));jr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ie(oe),null;case 4:return Sr(),null;case 10:return jc(t.type._context),null;case 22:case 23:return Fc(),null;case 24:return null;default:return null}}var Ea=!1,_e=!1,Iy=typeof WeakSet=="function"?WeakSet:Set,I=null;function ur(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){me(e,t,r)}else n.current=null}function cu(e,t,n){try{n()}catch(r){me(e,t,r)}}var Ah=!1;function Fy(e,t){if(Ko=mi,e=Fp(),xc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var s=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,o=-1,u=-1,c=0,d=0,h=e,m=null;t:for(;;){for(var f;h!==n||s!==0&&h.nodeType!==3||(o=l+s),h!==i||r!==0&&h.nodeType!==3||(u=l+r),h.nodeType===3&&(l+=h.nodeValue.length),(f=h.firstChild)!==null;)m=h,h=f;for(;;){if(h===e)break t;if(m===n&&++c===s&&(o=l),m===i&&++d===r&&(u=l),(f=h.nextSibling)!==null)break;h=m,m=h.parentNode}h=f}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(qo={focusedElem:e,selectionRange:n},mi=!1,I=t;I!==null;)if(t=I,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,I=e;else for(;I!==null;){t=I;try{var b=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(b!==null){var y=b.memoizedProps,w=b.memoizedState,x=t.stateNode,p=x.getSnapshotBeforeUpdate(t.elementType===t.type?y:xt(t.type,y),w);x.__reactInternalSnapshotBeforeUpdate=p}break;case 3:var v=t.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(D(163))}}catch(k){me(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,I=e;break}I=t.return}return b=Ah,Ah=!1,b}function xs(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&cu(t,n,i)}s=s.next}while(s!==r)}}function nl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function du(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function B0(e){var t=e.alternate;t!==null&&(e.alternate=null,B0(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[At],delete t[Rs],delete t[Zo],delete t[ky],delete t[wy])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function z0(e){return e.tag===5||e.tag===3||e.tag===4}function Mh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||z0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function hu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=gi));else if(r!==4&&(e=e.child,e!==null))for(hu(e,t,n),e=e.sibling;e!==null;)hu(e,t,n),e=e.sibling}function mu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(mu(e,t,n),e=e.sibling;e!==null;)mu(e,t,n),e=e.sibling}var Ce=null,bt=!1;function Qt(e,t,n){for(n=n.child;n!==null;)R0(e,t,n),n=n.sibling}function R0(e,t,n){if(Mt&&typeof Mt.onCommitFiberUnmount=="function")try{Mt.onCommitFiberUnmount(qi,n)}catch{}switch(n.tag){case 5:_e||ur(n,t);case 6:var r=Ce,s=bt;Ce=null,Qt(e,t,n),Ce=r,bt=s,Ce!==null&&(bt?(e=Ce,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ce.removeChild(n.stateNode));break;case 18:Ce!==null&&(bt?(e=Ce,n=n.stateNode,e.nodeType===8?Vl(e.parentNode,n):e.nodeType===1&&Vl(e,n),_s(e)):Vl(Ce,n.stateNode));break;case 4:r=Ce,s=bt,Ce=n.stateNode.containerInfo,bt=!0,Qt(e,t,n),Ce=r,bt=s;break;case 0:case 11:case 14:case 15:if(!_e&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){s=r=r.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&cu(n,t,l),s=s.next}while(s!==r)}Qt(e,t,n);break;case 1:if(!_e&&(ur(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(o){me(n,t,o)}Qt(e,t,n);break;case 21:Qt(e,t,n);break;case 22:n.mode&1?(_e=(r=_e)||n.memoizedState!==null,Qt(e,t,n),_e=r):Qt(e,t,n);break;default:Qt(e,t,n)}}function _h(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Iy),t.forEach(function(r){var s=qy.bind(null,e,r);n.has(r)||(n.add(r),r.then(s,s))})}}function ft(e,t){var n=t.deletions;if(n!==null)for(var r=0;r s&&(s=l),r&=~i}if(r=s,r=pe()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Oy(r/1960))-r,10 e?16:e,ln===null)var r=!1;else{if(e=ln,ln=null,Ti=0,J&6)throw Error(D(331));var s=J;for(J|=4,I=e.current;I!==null;){var i=I,l=i.child;if(I.flags&16){var o=i.deletions;if(o!==null){for(var u=0;u pe()-Rc?In(e,0):zc|=n),Ge(e,t)}function $0(e,t){t===0&&(e.mode&1?(t=va,va<<=1,!(va&130023424)&&(va=4194304)):t=1);var n=Re();e=Kt(e,t),e!==null&&(Js(e,t,n),Ge(e,n))}function Ky(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),$0(e,n)}function qy(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(D(314))}r!==null&&r.delete(t),$0(e,n)}var G0;G0=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||He.current)Ue=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ue=!1,By(e,t,n);Ue=!!(e.flags&131072)}else Ue=!1,le&&t.flags&1048576&&Xp(t,yi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ya(e,t),e=t.pendingProps;var s=wr(t,Le.current);vr(t,n),s=Ac(null,t,r,e,s,n);var i=Mc();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,$e(r)?(i=!0,bi(t)):i=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Sc(t),s.updater=tl,t.stateNode=s,s._reactInternals=t,ru(t,r,e,n),t=iu(null,t,r,!0,i,n)):(t.tag=0,le&&i&&bc(t),De(null,t,s,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ya(e,t),e=t.pendingProps,s=r._init,r=s(r._payload),t.type=r,s=t.tag=Xy(r),e=xt(r,e),s){case 0:t=au(null,t,r,e,n);break e;case 1:t=Ph(null,t,r,e,n);break e;case 11:t=Sh(null,t,r,e,n);break e;case 14:t=Ch(null,t,r,xt(r.type,e),n);break e}throw Error(D(306,r,""))}return t;case 0:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:xt(r,s),au(e,t,r,s,n);case 1:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:xt(r,s),Ph(e,t,r,s,n);case 3:e:{if(T0(t),e===null)throw Error(D(387));r=t.pendingProps,i=t.memoizedState,s=i.element,n0(e,t),ji(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){s=Cr(Error(D(423)),t),t=Eh(e,t,r,n,s);break e}else if(r!==s){s=Cr(Error(D(424)),t),t=Eh(e,t,r,n,s);break e}else for(Ze=fn(t.stateNode.containerInfo.firstChild),Qe=t,le=!0,vt=null,n=e0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(jr(),r===s){t=qt(e,t,n);break e}De(e,t,r,n)}t=t.child}return t;case 5:return r0(t),e===null&&eu(t),r=t.type,s=t.pendingProps,i=e!==null?e.memoizedProps:null,l=s.children,Yo(r,s)?l=null:i!==null&&Yo(r,i)&&(t.flags|=32),E0(e,t),De(e,t,l,n),t.child;case 6:return e===null&&eu(t),null;case 13:return A0(e,t,n);case 4:return Cc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Nr(t,null,r,n):De(e,t,r,n),t.child;case 11:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:xt(r,s),Sh(e,t,r,s,n);case 7:return De(e,t,t.pendingProps,n),t.child;case 8:return De(e,t,t.pendingProps.children,n),t.child;case 12:return De(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,s=t.pendingProps,i=t.memoizedProps,l=s.value,se(ki,r._currentValue),r._currentValue=l,i!==null)if(Nt(i.value,l)){if(i.children===s.children&&!He.current){t=qt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var u=o.firstContext;u!==null;){if(u.context===r){if(i.tag===1){u=Ht(-1,n&-n),u.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),tu(i.return,n,t),o.lanes|=n;break}u=u.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(D(341));l.lanes|=n,o=l.alternate,o!==null&&(o.lanes|=n),tu(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}De(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,r=t.pendingProps.children,vr(t,n),s=ct(s),r=r(s),t.flags|=1,De(e,t,r,n),t.child;case 14:return r=t.type,s=xt(r,t.pendingProps),s=xt(r.type,s),Ch(e,t,r,s,n);case 15:return C0(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:xt(r,s),Ya(e,t),t.tag=1,$e(r)?(e=!0,bi(t)):e=!1,vr(t,n),j0(t,r,s),ru(t,r,s,n),iu(null,t,r,!0,e,n);case 19:return M0(e,t,n);case 22:return P0(e,t,n)}throw Error(D(156,t.tag))};function K0(e,t){return yp(e,t)}function Yy(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function lt(e,t,n,r){return new Yy(e,t,n,r)}function Oc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Xy(e){if(typeof e=="function")return Oc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ic)return 11;if(e===lc)return 14}return 2}function bn(e,t){var n=e.alternate;return n===null?(n=lt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Qa(e,t,n,r,s,i){var l=2;if(r=e,typeof e=="function")Oc(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case er:return Fn(n.children,s,i,t);case ac:l=8,s|=8;break;case Po:return e=lt(12,n,t,s|2),e.elementType=Po,e.lanes=i,e;case Eo:return e=lt(13,n,t,s),e.elementType=Eo,e.lanes=i,e;case To:return e=lt(19,n,t,s),e.elementType=To,e.lanes=i,e;case rp:return sl(n,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case tp:l=10;break e;case np:l=9;break e;case ic:l=11;break e;case lc:l=14;break e;case en:l=16,r=null;break e}throw Error(D(130,e==null?e:typeof e,""))}return t=lt(l,n,t,s),t.elementType=e,t.type=r,t.lanes=i,t}function Fn(e,t,n,r){return e=lt(7,e,r,t),e.lanes=n,e}function sl(e,t,n,r){return e=lt(22,e,r,t),e.elementType=rp,e.lanes=n,e.stateNode={isHidden:!1},e}function ql(e,t,n){return e=lt(6,e,null,t),e.lanes=n,e}function Yl(e,t,n){return t=lt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zy(e,t,n,r,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Tl(0),this.expirationTimes=Tl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Tl(0),this.identifierPrefix=r,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Uc(e,t,n,r,s,i,l,o,u){return e=new Zy(e,t,n,o,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=lt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Sc(i),e}function Qy(e,t,n){var r=3 "u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Z0)}catch(e){console.error(e)}}Z0(),Zf.exports=tt;var Gc=Zf.exports,Vh=Gc;So.createRoot=Vh.createRoot,So.hydrateRoot=Vh.hydrateRoot;/** * @remix-run/router v1.23.3 * * Copyright (c) Remix Software Inc. @@ -38,7 +38,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Hs(){return Hs=Object.assign?Object.assign.bind():function(e){for(var t=1;t "u")throw new Error(t)}function Kc(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function sk(){return Math.random().toString(36).substr(2,8)}function Uh(e,t){return{usr:e.state,key:e.key,idx:t}}function bu(e,t,n,r){return n===void 0&&(n=null),Hs({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Ir(t):t,{state:n,key:t&&t.key||r||sk()})}function _i(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Ir(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function ak(e,t,n,r){r===void 0&&(r={});let{window:s=document.defaultView,v5Compat:i=!1}=r,l=s.history,o=on.Pop,u=null,c=d();c==null&&(c=0,l.replaceState(Hs({},l.state,{idx:c}),""));function d(){return(l.state||{idx:null}).idx}function h(){o=on.Pop;let w=d(),x=w==null?null:w-c;c=w,u&&u({action:o,location:y.location,delta:x})}function m(w,x){o=on.Push;let p=bu(y.location,w,x);c=d()+1;let v=Uh(p,c),k=y.createHref(p);try{l.pushState(v,"",k)}catch(j){if(j instanceof DOMException&&j.name==="DataCloneError")throw j;s.location.assign(k)}i&&u&&u({action:o,location:y.location,delta:1})}function f(w,x){o=on.Replace;let p=bu(y.location,w,x);c=d();let v=Uh(p,c),k=y.createHref(p);l.replaceState(v,"",k),i&&u&&u({action:o,location:y.location,delta:0})}function b(w){let x=s.location.origin!=="null"?s.location.origin:s.location.href,p=typeof w=="string"?w:_i(w);return p=p.replace(/ $/,"%20"),ue(x,"No window.location.(origin|href) available to create URL for href: "+p),new URL(p,x)}let y={get action(){return o},get location(){return e(s,l)},listen(w){if(u)throw new Error("A history only accepts one active listener");return s.addEventListener(Oh,h),u=w,()=>{s.removeEventListener(Oh,h),u=null}},createHref(w){return t(s,w)},createURL:b,encodeLocation(w){let x=b(w);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:m,replace:f,go(w){return l.go(w)}};return y}var Wh;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Wh||(Wh={}));function ik(e,t,n){return n===void 0&&(n="/"),lk(e,t,n)}function lk(e,t,n,r){let s=typeof t=="string"?Ir(t):t,i=Er(s.pathname||"/",n);if(i==null)return null;let l=Q0(e);ok(l);let o=null,u=vk(i);for(let c=0;o==null&&c {let u={relativePath:o===void 0?i.path||"":o,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};u.relativePath.startsWith("/")&&(ue(u.relativePath.startsWith(r),'Absolute route path "'+u.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),u.relativePath=u.relativePath.slice(r.length));let c=vn([r,u.relativePath]),d=n.concat(u);i.children&&i.children.length>0&&(ue(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),Q0(i.children,t,d,c)),!(i.path==null&&!i.index)&&t.push({path:c,score:pk(c,i.index),routesMeta:d})};return e.forEach((i,l)=>{var o;if(i.path===""||!((o=i.path)!=null&&o.includes("?")))s(i,l);else for(let u of J0(i.path))s(i,l,u)}),t}function J0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,s=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return s?[i,""]:[i];let l=J0(r.join("/")),o=[];return o.push(...l.map(u=>u===""?i:[i,u].join("/"))),s&&o.push(...l),o.map(u=>e.startsWith("/")&&u===""?"/":u)}function ok(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:gk(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const uk=/^:[\w-]+$/,ck=3,dk=2,hk=1,mk=10,fk=-2,Hh=e=>e==="*";function pk(e,t){let n=e.split("/"),r=n.length;return n.some(Hh)&&(r+=fk),t&&(r+=dk),n.filter(s=>!Hh(s)).reduce((s,i)=>s+(uk.test(i)?ck:i===""?hk:mk),r)}function gk(e,t){return e.length===t.length&&e.slice(0,-1).every((r,s)=>r===t[s])?e[e.length-1]-t[t.length-1]:0}function xk(e,t,n){let{routesMeta:r}=e,s={},i="/",l=[];for(let o=0;o {let{paramName:m,isOptional:f}=d;if(m==="*"){let y=o[h]||"";l=i.slice(0,i.length-y.length).replace(/(.)\/+$/,"$1")}const b=o[h];return f&&!b?c[m]=void 0:c[m]=(b||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:l,pattern:e}}function bk(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Kc(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,o,u)=>(r.push({paramName:o,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),r]}function vk(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Kc(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Er(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}const yk=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,kk=e=>yk.test(e);function wk(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:s=""}=typeof e=="string"?Ir(e):e,i;if(n)if(kk(n))i=n;else{if(n.includes("//")){let l=n;n=eg(n),Kc(!1,"Pathnames cannot have embedded double slashes - normalizing "+(l+" -> "+n))}n.startsWith("/")?i=$h(n.substring(1),"/"):i=$h(n,t)}else i=t;return{pathname:i,search:Sk(r),hash:Ck(s)}}function $h(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Xl(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function jk(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function qc(e,t){let n=jk(e);return t?n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Yc(e,t,n,r){r===void 0&&(r=!1);let s;typeof e=="string"?s=Ir(e):(s=Hs({},e),ue(!s.pathname||!s.pathname.includes("?"),Xl("?","pathname","search",s)),ue(!s.pathname||!s.pathname.includes("#"),Xl("#","pathname","hash",s)),ue(!s.search||!s.search.includes("#"),Xl("#","search","hash",s)));let i=e===""||s.pathname==="",l=i?"/":s.pathname,o;if(l==null)o=n;else{let h=t.length-1;if(!r&&l.startsWith("..")){let m=l.split("/");for(;m[0]==="..";)m.shift(),h-=1;s.pathname=m.join("/")}o=h>=0?t[h]:"/"}let u=wk(s,o),c=l&&l!=="/"&&l.endsWith("/"),d=(i||l===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(c||d)&&(u.pathname+="/"),u}const eg=e=>e.replace(/\/\/+/g,"/"),vn=e=>eg(e.join("/")),Nk=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Sk=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Ck=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function Pk(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const tg=["post","put","patch","delete"];new Set(tg);const Ek=["get",...tg];new Set(Ek);/** + */function Hs(){return Hs=Object.assign?Object.assign.bind():function(e){for(var t=1;t "u")throw new Error(t)}function Kc(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function sk(){return Math.random().toString(36).substr(2,8)}function Uh(e,t){return{usr:e.state,key:e.key,idx:t}}function bu(e,t,n,r){return n===void 0&&(n=null),Hs({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Ir(t):t,{state:n,key:t&&t.key||r||sk()})}function _i(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Ir(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function ak(e,t,n,r){r===void 0&&(r={});let{window:s=document.defaultView,v5Compat:i=!1}=r,l=s.history,o=on.Pop,u=null,c=d();c==null&&(c=0,l.replaceState(Hs({},l.state,{idx:c}),""));function d(){return(l.state||{idx:null}).idx}function h(){o=on.Pop;let w=d(),x=w==null?null:w-c;c=w,u&&u({action:o,location:y.location,delta:x})}function m(w,x){o=on.Push;let p=bu(y.location,w,x);c=d()+1;let v=Uh(p,c),k=y.createHref(p);try{l.pushState(v,"",k)}catch(j){if(j instanceof DOMException&&j.name==="DataCloneError")throw j;s.location.assign(k)}i&&u&&u({action:o,location:y.location,delta:1})}function f(w,x){o=on.Replace;let p=bu(y.location,w,x);c=d();let v=Uh(p,c),k=y.createHref(p);l.replaceState(v,"",k),i&&u&&u({action:o,location:y.location,delta:0})}function b(w){let x=s.location.origin!=="null"?s.location.origin:s.location.href,p=typeof w=="string"?w:_i(w);return p=p.replace(/ $/,"%20"),ce(x,"No window.location.(origin|href) available to create URL for href: "+p),new URL(p,x)}let y={get action(){return o},get location(){return e(s,l)},listen(w){if(u)throw new Error("A history only accepts one active listener");return s.addEventListener(Oh,h),u=w,()=>{s.removeEventListener(Oh,h),u=null}},createHref(w){return t(s,w)},createURL:b,encodeLocation(w){let x=b(w);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:m,replace:f,go(w){return l.go(w)}};return y}var Wh;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Wh||(Wh={}));function ik(e,t,n){return n===void 0&&(n="/"),lk(e,t,n)}function lk(e,t,n,r){let s=typeof t=="string"?Ir(t):t,i=Er(s.pathname||"/",n);if(i==null)return null;let l=Q0(e);ok(l);let o=null,u=vk(i);for(let c=0;o==null&&c {let u={relativePath:o===void 0?i.path||"":o,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};u.relativePath.startsWith("/")&&(ce(u.relativePath.startsWith(r),'Absolute route path "'+u.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),u.relativePath=u.relativePath.slice(r.length));let c=vn([r,u.relativePath]),d=n.concat(u);i.children&&i.children.length>0&&(ce(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),Q0(i.children,t,d,c)),!(i.path==null&&!i.index)&&t.push({path:c,score:pk(c,i.index),routesMeta:d})};return e.forEach((i,l)=>{var o;if(i.path===""||!((o=i.path)!=null&&o.includes("?")))s(i,l);else for(let u of J0(i.path))s(i,l,u)}),t}function J0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,s=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return s?[i,""]:[i];let l=J0(r.join("/")),o=[];return o.push(...l.map(u=>u===""?i:[i,u].join("/"))),s&&o.push(...l),o.map(u=>e.startsWith("/")&&u===""?"/":u)}function ok(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:gk(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const uk=/^:[\w-]+$/,ck=3,dk=2,hk=1,mk=10,fk=-2,Hh=e=>e==="*";function pk(e,t){let n=e.split("/"),r=n.length;return n.some(Hh)&&(r+=fk),t&&(r+=dk),n.filter(s=>!Hh(s)).reduce((s,i)=>s+(uk.test(i)?ck:i===""?hk:mk),r)}function gk(e,t){return e.length===t.length&&e.slice(0,-1).every((r,s)=>r===t[s])?e[e.length-1]-t[t.length-1]:0}function xk(e,t,n){let{routesMeta:r}=e,s={},i="/",l=[];for(let o=0;o {let{paramName:m,isOptional:f}=d;if(m==="*"){let y=o[h]||"";l=i.slice(0,i.length-y.length).replace(/(.)\/+$/,"$1")}const b=o[h];return f&&!b?c[m]=void 0:c[m]=(b||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:l,pattern:e}}function bk(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Kc(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,o,u)=>(r.push({paramName:o,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),r]}function vk(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Kc(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Er(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}const yk=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,kk=e=>yk.test(e);function wk(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:s=""}=typeof e=="string"?Ir(e):e,i;if(n)if(kk(n))i=n;else{if(n.includes("//")){let l=n;n=eg(n),Kc(!1,"Pathnames cannot have embedded double slashes - normalizing "+(l+" -> "+n))}n.startsWith("/")?i=$h(n.substring(1),"/"):i=$h(n,t)}else i=t;return{pathname:i,search:Sk(r),hash:Ck(s)}}function $h(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Xl(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function jk(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function qc(e,t){let n=jk(e);return t?n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Yc(e,t,n,r){r===void 0&&(r=!1);let s;typeof e=="string"?s=Ir(e):(s=Hs({},e),ce(!s.pathname||!s.pathname.includes("?"),Xl("?","pathname","search",s)),ce(!s.pathname||!s.pathname.includes("#"),Xl("#","pathname","hash",s)),ce(!s.search||!s.search.includes("#"),Xl("#","search","hash",s)));let i=e===""||s.pathname==="",l=i?"/":s.pathname,o;if(l==null)o=n;else{let h=t.length-1;if(!r&&l.startsWith("..")){let m=l.split("/");for(;m[0]==="..";)m.shift(),h-=1;s.pathname=m.join("/")}o=h>=0?t[h]:"/"}let u=wk(s,o),c=l&&l!=="/"&&l.endsWith("/"),d=(i||l===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(c||d)&&(u.pathname+="/"),u}const eg=e=>e.replace(/\/\/+/g,"/"),vn=e=>eg(e.join("/")),Nk=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Sk=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Ck=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function Pk(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const tg=["post","put","patch","delete"];new Set(tg);const Ek=["get",...tg];new Set(Ek);/** * React Router v6.30.4 * * Copyright (c) Remix Software Inc. @@ -47,7 +47,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function $s(){return $s=Object.assign?Object.assign.bind():function(e){for(var t=1;t {o.current=!0}),g.useCallback(function(c,d){if(d===void 0&&(d={}),!o.current)return;if(typeof c=="number"){r.go(c);return}let h=Yc(c,JSON.parse(l),i,d.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:vn([t,h.pathname])),(d.replace?r.replace:r.push)(h,d.state,d)},[t,r,l,i,e])}const Mk=g.createContext(null);function _k(e){let t=g.useContext(Lt).outlet;return t&&g.createElement(Mk.Provider,{value:e},t)}function Yn(){let{matches:e}=g.useContext(Lt),t=e[e.length-1];return t?t.params:{}}function dl(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=g.useContext(Yt),{matches:s}=g.useContext(Lt),{pathname:i}=ht(),l=JSON.stringify(qc(s,r.v7_relativeSplatPath));return g.useMemo(()=>Yc(e,JSON.parse(l),i,n==="path"),[e,l,i,n])}function Lk(e,t){return Dk(e,t)}function Dk(e,t,n,r){Fr()||ue(!1);let{navigator:s}=g.useContext(Yt),{matches:i}=g.useContext(Lt),l=i[i.length-1],o=l?l.params:{};l&&l.pathname;let u=l?l.pathnameBase:"/";l&&l.route;let c=ht(),d;if(t){var h;let w=typeof t=="string"?Ir(t):t;u==="/"||(h=w.pathname)!=null&&h.startsWith(u)||ue(!1),d=w}else d=c;let m=d.pathname||"/",f=m;if(u!=="/"){let w=u.replace(/^\//,"").split("/");f="/"+m.replace(/^\//,"").split("/").slice(w.length).join("/")}let b=ik(e,{pathname:f}),y=Fk(b&&b.map(w=>Object.assign({},w,{params:Object.assign({},o,w.params),pathname:vn([u,s.encodeLocation?s.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?u:vn([u,s.encodeLocation?s.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&y?g.createElement(cl.Provider,{value:{location:$s({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:on.Pop}},y):y}function Bk(){let e=Wk(),t=Pk(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return g.createElement(g.Fragment,null,g.createElement("h2",null,"Unexpected Application Error!"),g.createElement("h3",{style:{fontStyle:"italic"}},t),n?g.createElement("pre",{style:s},n):null,null)}const zk=g.createElement(Bk,null);class Rk extends g.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?g.createElement(Lt.Provider,{value:this.props.routeContext},g.createElement(rg.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Ik(e){let{routeContext:t,match:n,children:r}=e,s=g.useContext(ul);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),g.createElement(Lt.Provider,{value:t},r)}function Fk(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if(!n)return null;if(n.errors)e=n.matches;else if((i=r)!=null&&i.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let l=e,o=(s=n)==null?void 0:s.errors;if(o!=null){let d=l.findIndex(h=>h.route.id&&(o==null?void 0:o[h.route.id])!==void 0);d>=0||ue(!1),l=l.slice(0,Math.min(l.length,d+1))}let u=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d =0?l=l.slice(0,c+1):l=[l[0]];break}}}return l.reduceRight((d,h,m)=>{let f,b=!1,y=null,w=null;n&&(f=o&&h.route.id?o[h.route.id]:void 0,y=h.route.errorElement||zk,u&&(c<0&&m===0?($k("route-fallback"),b=!0,w=null):c===m&&(b=!0,w=h.route.hydrateFallbackElement||null)));let x=t.concat(l.slice(0,m+1)),p=()=>{let v;return f?v=y:b?v=w:h.route.Component?v=g.createElement(h.route.Component,null):h.route.element?v=h.route.element:v=d,g.createElement(Ik,{match:h,routeContext:{outlet:d,matches:x,isDataRoute:n!=null},children:v})};return n&&(h.route.ErrorBoundary||h.route.errorElement||m===0)?g.createElement(Rk,{location:n.location,revalidation:n.revalidation,component:y,error:f,children:p(),routeContext:{outlet:null,matches:x,isDataRoute:!0}}):p()},null)}var ag=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(ag||{}),ig=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(ig||{});function Vk(e){let t=g.useContext(ul);return t||ue(!1),t}function Ok(e){let t=g.useContext(ng);return t||ue(!1),t}function Uk(e){let t=g.useContext(Lt);return t||ue(!1),t}function lg(e){let t=Uk(),n=t.matches[t.matches.length-1];return n.route.id||ue(!1),n.route.id}function Wk(){var e;let t=g.useContext(rg),n=Ok(),r=lg();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function Hk(){let{router:e}=Vk(ag.UseNavigateStable),t=lg(ig.UseNavigateStable),n=g.useRef(!1);return sg(()=>{n.current=!0}),g.useCallback(function(s,i){i===void 0&&(i={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,$s({fromRouteId:t},i)))},[e,t])}const Gh={};function $k(e,t,n){Gh[e]||(Gh[e]=!0)}function Gk(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function Gs(e){let{to:t,replace:n,state:r,relative:s}=e;Fr()||ue(!1);let{future:i,static:l}=g.useContext(Yt),{matches:o}=g.useContext(Lt),{pathname:u}=ht(),c=ra(),d=Yc(t,qc(o,i.v7_relativeSplatPath),u,s==="path"),h=JSON.stringify(d);return g.useEffect(()=>c(JSON.parse(h),{replace:n,state:r,relative:s}),[c,h,s,n,r]),null}function hl(e){return _k(e.context)}function G(e){ue(!1)}function Kk(e){let{basename:t="/",children:n=null,location:r,navigationType:s=on.Pop,navigator:i,static:l=!1,future:o}=e;Fr()&&ue(!1);let u=t.replace(/^\/*/,"/"),c=g.useMemo(()=>({basename:u,navigator:i,static:l,future:$s({v7_relativeSplatPath:!1},o)}),[u,o,i,l]);typeof r=="string"&&(r=Ir(r));let{pathname:d="/",search:h="",hash:m="",state:f=null,key:b="default"}=r,y=g.useMemo(()=>{let w=Er(d,u);return w==null?null:{location:{pathname:w,search:h,hash:m,state:f,key:b},navigationType:s}},[u,d,h,m,f,b,s]);return y==null?null:g.createElement(Yt.Provider,{value:c},g.createElement(cl.Provider,{children:n,value:y}))}function qk(e){let{children:t,location:n}=e;return Lk(yu(t),n)}new Promise(()=>{});function yu(e,t){t===void 0&&(t=[]);let n=[];return g.Children.forEach(e,(r,s)=>{if(!g.isValidElement(r))return;let i=[...t,s];if(r.type===g.Fragment){n.push.apply(n,yu(r.props.children,i));return}r.type!==G&&ue(!1),!r.props.index||!r.props.children||ue(!1);let l={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(l.children=yu(r.props.children,i)),n.push(l)}),n}/** + */function $s(){return $s=Object.assign?Object.assign.bind():function(e){for(var t=1;t {o.current=!0}),g.useCallback(function(c,d){if(d===void 0&&(d={}),!o.current)return;if(typeof c=="number"){r.go(c);return}let h=Yc(c,JSON.parse(l),i,d.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:vn([t,h.pathname])),(d.replace?r.replace:r.push)(h,d.state,d)},[t,r,l,i,e])}const Mk=g.createContext(null);function _k(e){let t=g.useContext(Dt).outlet;return t&&g.createElement(Mk.Provider,{value:e},t)}function Yn(){let{matches:e}=g.useContext(Dt),t=e[e.length-1];return t?t.params:{}}function dl(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=g.useContext(Xt),{matches:s}=g.useContext(Dt),{pathname:i}=mt(),l=JSON.stringify(qc(s,r.v7_relativeSplatPath));return g.useMemo(()=>Yc(e,JSON.parse(l),i,n==="path"),[e,l,i,n])}function Lk(e,t){return Dk(e,t)}function Dk(e,t,n,r){Fr()||ce(!1);let{navigator:s}=g.useContext(Xt),{matches:i}=g.useContext(Dt),l=i[i.length-1],o=l?l.params:{};l&&l.pathname;let u=l?l.pathnameBase:"/";l&&l.route;let c=mt(),d;if(t){var h;let w=typeof t=="string"?Ir(t):t;u==="/"||(h=w.pathname)!=null&&h.startsWith(u)||ce(!1),d=w}else d=c;let m=d.pathname||"/",f=m;if(u!=="/"){let w=u.replace(/^\//,"").split("/");f="/"+m.replace(/^\//,"").split("/").slice(w.length).join("/")}let b=ik(e,{pathname:f}),y=Fk(b&&b.map(w=>Object.assign({},w,{params:Object.assign({},o,w.params),pathname:vn([u,s.encodeLocation?s.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?u:vn([u,s.encodeLocation?s.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&y?g.createElement(cl.Provider,{value:{location:$s({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:on.Pop}},y):y}function Bk(){let e=Wk(),t=Pk(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return g.createElement(g.Fragment,null,g.createElement("h2",null,"Unexpected Application Error!"),g.createElement("h3",{style:{fontStyle:"italic"}},t),n?g.createElement("pre",{style:s},n):null,null)}const zk=g.createElement(Bk,null);class Rk extends g.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?g.createElement(Dt.Provider,{value:this.props.routeContext},g.createElement(rg.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Ik(e){let{routeContext:t,match:n,children:r}=e,s=g.useContext(ul);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),g.createElement(Dt.Provider,{value:t},r)}function Fk(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if(!n)return null;if(n.errors)e=n.matches;else if((i=r)!=null&&i.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let l=e,o=(s=n)==null?void 0:s.errors;if(o!=null){let d=l.findIndex(h=>h.route.id&&(o==null?void 0:o[h.route.id])!==void 0);d>=0||ce(!1),l=l.slice(0,Math.min(l.length,d+1))}let u=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d =0?l=l.slice(0,c+1):l=[l[0]];break}}}return l.reduceRight((d,h,m)=>{let f,b=!1,y=null,w=null;n&&(f=o&&h.route.id?o[h.route.id]:void 0,y=h.route.errorElement||zk,u&&(c<0&&m===0?($k("route-fallback"),b=!0,w=null):c===m&&(b=!0,w=h.route.hydrateFallbackElement||null)));let x=t.concat(l.slice(0,m+1)),p=()=>{let v;return f?v=y:b?v=w:h.route.Component?v=g.createElement(h.route.Component,null):h.route.element?v=h.route.element:v=d,g.createElement(Ik,{match:h,routeContext:{outlet:d,matches:x,isDataRoute:n!=null},children:v})};return n&&(h.route.ErrorBoundary||h.route.errorElement||m===0)?g.createElement(Rk,{location:n.location,revalidation:n.revalidation,component:y,error:f,children:p(),routeContext:{outlet:null,matches:x,isDataRoute:!0}}):p()},null)}var ag=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(ag||{}),ig=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(ig||{});function Vk(e){let t=g.useContext(ul);return t||ce(!1),t}function Ok(e){let t=g.useContext(ng);return t||ce(!1),t}function Uk(e){let t=g.useContext(Dt);return t||ce(!1),t}function lg(e){let t=Uk(),n=t.matches[t.matches.length-1];return n.route.id||ce(!1),n.route.id}function Wk(){var e;let t=g.useContext(rg),n=Ok(),r=lg();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function Hk(){let{router:e}=Vk(ag.UseNavigateStable),t=lg(ig.UseNavigateStable),n=g.useRef(!1);return sg(()=>{n.current=!0}),g.useCallback(function(s,i){i===void 0&&(i={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,$s({fromRouteId:t},i)))},[e,t])}const Gh={};function $k(e,t,n){Gh[e]||(Gh[e]=!0)}function Gk(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function Gs(e){let{to:t,replace:n,state:r,relative:s}=e;Fr()||ce(!1);let{future:i,static:l}=g.useContext(Xt),{matches:o}=g.useContext(Dt),{pathname:u}=mt(),c=ra(),d=Yc(t,qc(o,i.v7_relativeSplatPath),u,s==="path"),h=JSON.stringify(d);return g.useEffect(()=>c(JSON.parse(h),{replace:n,state:r,relative:s}),[c,h,s,n,r]),null}function hl(e){return _k(e.context)}function K(e){ce(!1)}function Kk(e){let{basename:t="/",children:n=null,location:r,navigationType:s=on.Pop,navigator:i,static:l=!1,future:o}=e;Fr()&&ce(!1);let u=t.replace(/^\/*/,"/"),c=g.useMemo(()=>({basename:u,navigator:i,static:l,future:$s({v7_relativeSplatPath:!1},o)}),[u,o,i,l]);typeof r=="string"&&(r=Ir(r));let{pathname:d="/",search:h="",hash:m="",state:f=null,key:b="default"}=r,y=g.useMemo(()=>{let w=Er(d,u);return w==null?null:{location:{pathname:w,search:h,hash:m,state:f,key:b},navigationType:s}},[u,d,h,m,f,b,s]);return y==null?null:g.createElement(Xt.Provider,{value:c},g.createElement(cl.Provider,{children:n,value:y}))}function qk(e){let{children:t,location:n}=e;return Lk(yu(t),n)}new Promise(()=>{});function yu(e,t){t===void 0&&(t=[]);let n=[];return g.Children.forEach(e,(r,s)=>{if(!g.isValidElement(r))return;let i=[...t,s];if(r.type===g.Fragment){n.push.apply(n,yu(r.props.children,i));return}r.type!==K&&ce(!1),!r.props.index||!r.props.children||ce(!1);let l={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(l.children=yu(r.props.children,i)),n.push(l)}),n}/** * React Router DOM v6.30.4 * * Copyright (c) Remix Software Inc. @@ -56,7 +56,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t {let r=e[n];return t.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function Zk(e,t){let n=ku(e);return t&&t.forEach((r,s)=>{n.has(s)||t.getAll(s).forEach(i=>{n.append(s,i)})}),n}const Qk=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Jk=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],ew="6";try{window.__reactRouterVersion=ew}catch{}const tw=g.createContext({isTransitioning:!1}),nw="startTransition",Kh=Db[nw];function rw(e){let{basename:t,children:n,future:r,window:s}=e,i=g.useRef();i.current==null&&(i.current=rk({window:s,v5Compat:!0}));let l=i.current,[o,u]=g.useState({action:l.action,location:l.location}),{v7_startTransition:c}=r||{},d=g.useCallback(h=>{c&&Kh?Kh(()=>u(h)):u(h)},[u,c]);return g.useLayoutEffect(()=>l.listen(d),[l,d]),g.useEffect(()=>Gk(r),[r]),g.createElement(Kk,{basename:t,children:n,location:o.location,navigationType:o.action,navigator:l,future:r})}const sw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",aw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,W=g.forwardRef(function(t,n){let{onClick:r,relative:s,reloadDocument:i,replace:l,state:o,target:u,to:c,preventScrollReset:d,viewTransition:h}=t,m=og(t,Qk),{basename:f}=g.useContext(Yt),b,y=!1;if(typeof c=="string"&&aw.test(c)&&(b=c,sw))try{let v=new URL(window.location.href),k=c.startsWith("//")?new URL(v.protocol+c):new URL(c),j=Er(k.pathname,f);k.origin===v.origin&&j!=null?c=j+k.search+k.hash:y=!0}catch{}let w=Tk(c,{relative:s}),x=lw(c,{replace:l,state:o,target:u,preventScrollReset:d,relative:s,viewTransition:h});function p(v){r&&r(v),v.defaultPrevented||x(v)}return g.createElement("a",Li({},m,{href:b||w,onClick:y||i?r:p,ref:n,target:u}))}),ug=g.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:s=!1,className:i="",end:l=!1,style:o,to:u,viewTransition:c,children:d}=t,h=og(t,Jk),m=dl(u,{relative:h.relative}),f=ht(),b=g.useContext(ng),{navigator:y,basename:w}=g.useContext(Yt),x=b!=null&&uw(m)&&c===!0,p=y.encodeLocation?y.encodeLocation(m).pathname:m.pathname,v=f.pathname,k=b&&b.navigation&&b.navigation.location?b.navigation.location.pathname:null;s||(v=v.toLowerCase(),k=k?k.toLowerCase():null,p=p.toLowerCase()),k&&w&&(k=Er(k,w)||k);const j=p!=="/"&&p.endsWith("/")?p.length-1:p.length;let C=v===p||!l&&v.startsWith(p)&&v.charAt(j)==="/",S=k!=null&&(k===p||!l&&k.startsWith(p)&&k.charAt(p.length)==="/"),P={isActive:C,isPending:S,isTransitioning:x},M=C?r:void 0,N;typeof i=="function"?N=i(P):N=[i,C?"active":null,S?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let E=typeof o=="function"?o(P):o;return g.createElement(W,Li({},h,{"aria-current":M,className:N,ref:n,style:E,to:u,viewTransition:c}),typeof d=="function"?d(P):d)});var wu;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(wu||(wu={}));var qh;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(qh||(qh={}));function iw(e){let t=g.useContext(ul);return t||ue(!1),t}function lw(e,t){let{target:n,replace:r,state:s,preventScrollReset:i,relative:l,viewTransition:o}=t===void 0?{}:t,u=ra(),c=ht(),d=dl(e,{relative:l});return g.useCallback(h=>{if(Xk(h,n)){h.preventDefault();let m=r!==void 0?r:_i(c)===_i(d);u(e,{replace:m,state:s,preventScrollReset:i,relative:l,viewTransition:o})}},[c,u,d,r,s,n,e,i,l,o])}function ow(e){let t=g.useRef(ku(e)),n=g.useRef(!1),r=ht(),s=g.useMemo(()=>Zk(r.search,n.current?null:t.current),[r.search]),i=ra(),l=g.useCallback((o,u)=>{const c=ku(typeof o=="function"?o(s):o);n.current=!0,i("?"+c,u)},[i,s]);return[s,l]}function uw(e,t){t===void 0&&(t={});let n=g.useContext(tw);n==null&&ue(!1);let{basename:r}=iw(wu.useViewTransitionState),s=dl(e,{relative:t.relative});if(!n.isTransitioning)return!1;let i=Er(n.currentLocation.pathname,r)||n.currentLocation.pathname,l=Er(n.nextLocation.pathname,r)||n.nextLocation.pathname;return vu(s.pathname,l)!=null||vu(s.pathname,i)!=null}function cw(){const{pathname:e}=ht();return g.useEffect(()=>{window.scrollTo({top:0,left:0,behavior:"instant"})},[e]),null}const dw='a, button, [role="button"], label, select, summary, [data-cursor="hover"], .cursor-pointer',hw='input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="button"]):not([type="file"]), textarea, [contenteditable="true"]';function mw(){const e=g.useRef(null),t=g.useRef(null),n=g.useRef(null),r=g.useRef(null),s=g.useRef(null);return g.useEffect(()=>{const i=window.matchMedia("(pointer: fine)"),l=window.matchMedia("(prefers-reduced-motion: reduce)");if(!i.matches||l.matches)return;const o=e.current,u=t.current,c=n.current,d=r.current,h=s.current;if(!o||!u||!c||!d||!h)return;document.documentElement.classList.add("hifi-cursor-on");const m=-24*Math.PI/180,f=Math.cos(m),b=Math.sin(m);let y=-100,w=-100,x=0,p=2.4,v=2.4,k=16,j=6.5,C=16,S=6.5,P=!1,M,N=performance.now();const E=_=>{const D=Math.min((_-N)/1e3,.05);N=_,p+=(v-p)*Math.min(1,D*8),k+=(C-k)*Math.min(1,D*10),j+=(S-j)*Math.min(1,D*10),x+=p*D,u.style.transform=`translate3d(${y}px, ${w}px, 0)`,c.style.transform=`translate3d(${y}px, ${w}px, 0)`;const z=Math.cos(x)*k,U=Math.sin(x)*j;d.style.transform=`translate(${z*f-U*b}px, ${z*b+U*f}px)`,M=requestAnimationFrame(E)},B=_=>{o.dataset.state=_;const D=_==="hover";v=D?7:2.4,C=D?23:16,S=D?9.5:6.5},O=_=>{y=_.clientX,w=_.clientY,P||(P=!0,o.dataset.hidden="false")},$=_=>{const D=_.target;D instanceof Element&&(D.closest(hw)?B("text"):D.closest(dw)?B("hover"):B("default"))},Y=()=>{o.dataset.down="true",h.style.left=`${y}px`,h.style.top=`${w}px`,h.classList.remove("is-live"),h.offsetWidth,h.classList.add("is-live")},R=()=>{o.dataset.down="false"},K=()=>{P=!1,o.dataset.hidden="true"};return document.addEventListener("mousemove",O,{passive:!0}),document.addEventListener("mouseover",$,{passive:!0}),document.addEventListener("mousedown",Y,{passive:!0}),document.addEventListener("mouseup",R,{passive:!0}),document.documentElement.addEventListener("mouseleave",K),window.addEventListener("blur",K),M=requestAnimationFrame(E),()=>{cancelAnimationFrame(M),document.removeEventListener("mousemove",O),document.removeEventListener("mouseover",$),document.removeEventListener("mousedown",Y),document.removeEventListener("mouseup",R),document.documentElement.removeEventListener("mouseleave",K),window.removeEventListener("blur",K),document.documentElement.classList.remove("hifi-cursor-on")}},[]),a.jsxs("div",{ref:e,className:"hifi-cursor","data-state":"default","data-hidden":"true","data-down":"false","aria-hidden":"true",children:[a.jsxs("div",{ref:n,className:"hifi-cursor__orbit",children:[a.jsx("div",{className:"hifi-cursor__ring"}),a.jsx("div",{ref:r,className:"hifi-cursor__sat"})]}),a.jsx("div",{ref:t,className:"hifi-cursor__core"}),a.jsx("div",{ref:s,className:"hifi-cursor__pulse"})]})}const cg=`${"/".replace(/\/$/,"")}/api`;async function ns(e,t={}){const n=await fetch(`${cg}${e}`,{credentials:"include",headers:t.body instanceof FormData?{}:{"Content-Type":"application/json"},...t}),r=await n.text();let s=null;if(r)try{s=JSON.parse(r)}catch{}if(!n.ok)throw new Error((s==null?void 0:s.error)||`Fehler ${n.status}`);if(s===null&&r)throw new Error("Unerwartete Server-Antwort (kein gültiges JSON)");return s}const A={get:e=>ns(e),post:(e,t)=>ns(e,{method:"POST",body:t instanceof FormData?t:JSON.stringify(t)}),put:(e,t)=>ns(e,{method:"PUT",body:JSON.stringify(t)}),patch:(e,t)=>ns(e,{method:"PATCH",body:JSON.stringify(t)}),delete:e=>ns(e,{method:"DELETE"})};function fw({children:e}){const[t,n]=g.useState({pathname:null,needsSetup:null}),r=ht();return g.useEffect(()=>{let s=!1;return A.get("/setup/status").then(i=>{s||n({pathname:r.pathname,needsSetup:i.needs_setup})}).catch(()=>{s||n({pathname:r.pathname,needsSetup:!1})}),()=>{s=!0}},[r.pathname]),t.pathname!==r.pathname||t.needsSetup===null?a.jsx("div",{className:"min-h-screen bg-white dark:bg-neutral-950"}):t.needsSetup&&r.pathname!=="/setup"?a.jsx(Gs,{to:"/setup",replace:!0}):!t.needsSetup&&r.pathname==="/setup"?a.jsx(Gs,{to:"/",replace:!0}):e}const dg=g.createContext(null);function pw(){const e=new Date,t=e.getHours()+e.getMinutes()/60;return t>=6.5&&t<21?"light":"dark"}function gw({children:e}){const[t,n]=g.useState(()=>{const s=localStorage.getItem("hifi-theme");return s==="light"||s==="dark"?s:pw()});g.useEffect(()=>{document.documentElement.classList.toggle("dark",t==="dark"),localStorage.setItem("hifi-theme",t)},[t]);const r=()=>n(s=>s==="dark"?"light":"dark");return a.jsx(dg.Provider,{value:{theme:t,toggleTheme:r},children:e})}function xw(){return g.useContext(dg)}const bw={nav:{openMenu:"Menü öffnen",closeMenu:"Menü schließen",close:"Schließen",adminPanel:"Zum Admin-Panel",vehicles:"Fahrzeuge",services:"Leistungen",gallery:"Galerie",contact:"Kontakt",whatsapp:"WhatsApp",shop:"Zum Shop"},themeToggle:{label:"Theme umschalten"},languageToggle:{label:"Sprache auswählen"},footer:{routePlan:"Route planen",contactHeading:"Kontakt",contactForm:"Kontaktformular",hoursHeading:"Öffnungszeiten",open:"Geöffnet",closed:"Geschlossen",days:{monFri:"Montag – Freitag",sat:"Samstag",sun:"Sonntag"},copyright:e=>`© ${e} HifiPlanet. Alle Angaben ohne Gewähr.`,imprint:"Impressum",privacy:"Datenschutz",terms:"AGB",cookieSettings:"Cookie-Einstellungen"},cookieConsent:{bannerText:"Wir verwenden nur technisch notwendige Cookies. Für Google Maps, YouTube-Videos und Statistik-Cookies benötigen wir zusätzlich deine Zustimmung, da dabei Daten an Google übertragen werden.",moreInfo:"Mehr dazu in unserer",privacyPolicy:"Datenschutzerklärung",settings:"Einstellungen",onlyNecessary:"Nur notwendige",acceptAll:"Alle akzeptieren",modalTitle:"Cookie-Einstellungen",modalIntro:"Lege fest, welche Kategorien du zulassen möchtest. Mehr dazu in unserer",necessaryTitle:"Notwendig",necessaryDesc:"Für den Betrieb der Website erforderlich (z. B. Login-Session, Theme- und Cookie-Einstellung). Kann nicht deaktiviert werden.",externalTitle:"Externe Medien",externalDesc:"Google Maps und YouTube-Videos. Beim Laden werden Daten (u. a. deine IP-Adresse) an Google übertragen.",analyticsTitle:"Statistik",analyticsDesc:"Google Analytics hilft uns zu verstehen, wie die Website genutzt wird. Dabei werden Daten an Google übertragen.",cancel:"Abbrechen",saveSelection:"Auswahl speichern"},maintenance:{title:"Wartungsarbeiten",defaultMessage:"Dieser Bereich wird gerade aktualisiert. Bitte schau in Kürze wieder vorbei."},lightbox:{close:"Schließen",previous:"Vorheriges Bild",next:"Nächstes Bild"},home:{metaTitle:"Car-Hifi Umbauten nach Maß",metaDescription:"HifiPlanet – dein Car-Hifi Spezialist in Amorbach. Marke und Modell wählen, passende Sound-Pakete entdecken und unverbindlich anfragen.",stickyCta:"Bereit für deinen Sound-Umbau?",selectVehicle:"Fahrzeug auswählen",getInTouch:"Kontakt aufnehmen",welcome:"Willkommen bei HifiPlanet",heroTitle:"Home of pure Sound",heroSubtitle:"Dein Car-Hifi Spezialist für individuelle Sound-Umbauten. Wähle dein Fahrzeug, entdecke passende Pakete und frag unverbindlich an – wir kümmern uns um den Rest.",stats:[{value:"20+",label:"Jahre Erfahrung"},{value:"Riesige",label:"3D-Druckfarm im eigenen Haus"},{value:"Eigene",label:"CNC- & Laserwerkstatt"},{value:"International",label:"anerkannter Car-Hifi-Spezialist"}],brandsHeading:"Marken, mit denen wir arbeiten",youtubeBadge:"HifiPlanet präsentiert",youtubeTitle:"Das Handwerk hinter deinem Sound",youtubeText:"Entdecke die Handwerkskunst hinter unserer Arbeit",youtubeCta:"Jetzt ansehen",heroImageAlt:"Ground Zero Subwoofer und Endstufen mit violetter Ambiente-Beleuchtung",craftImageAlt:"Individueller Subwoofer-Bau",adviceImageAlt:"Endstufen-Einbau mit Ambiente-Beleuchtung",moreImageAlt:"Hochwertige Endstufe und Subwoofer, Studioaufnahme",craftEyebrow:"Handwerk",craftTitle:"Präzisionsarbeit in jedem Detail",craftText:"Ob eigens gefertigte Subwoofer-Gehäuse, integrierte Beleuchtung oder unsichtbar verlegte Kabelwege – dank eigener CNC-, Laser- und 3D-Druck-Fertigung entstehen bei uns Lösungen, die es von der Stange nicht gibt.",adviceEyebrow:"Beratung",adviceTitle:"Von der ersten Idee bis zum letzten Schliff",adviceText:"Jedes Fahrzeug und jeder Anspruch ist anders. Deshalb beraten wir dich persönlich und unverbindlich – vom dezenten Upgrade bis zum kompromisslosen High-End-System.",insightsTitle:"Einblicke in unsere Umbauten",insightsText:"Vom unauffälligen Sound-Upgrade bis zum aufwendigen Komplettumbau – Handarbeit aus unserer Werkstatt in Amorbach.",galleryAlts:["Individueller Subwoofer-Bau mit Ground Zero Bässen","Endstufen-Einbau mit violetter Ambiente-Beleuchtung","Hochtöner- und Mitteltöner-Einbau von Focal Utopia","Sony Navigationssystem mit Apple CarPlay im Cockpit","Verbauter Hochtöner im Kofferraum","Individueller Subwoofer-Einbau mit LED-Beleuchtung im Kofferraum"],reviewsRating:"5,0 von 181 Kunden bewertet",reviewsRatingDynamic:(e,t)=>`${e.toFixed(1).replace(".",",")} von ${t} Kunden bewertet`,reviewsText:"Das sagen unsere Kunden über uns.",reviewsLink:"Alle Bewertungen auf Google ansehen →",testimonials:[{name:"Thomas K.",text:"Über YouTube auf dieses Klang-Juwel gestoßen. Beratung und Empfehlungen sind erstklassig – der Tesla-Vorführwagen hat meine Leidenschaft für guten Sound neu entfacht."},{name:"Andreas I.",text:"Sehr professionelle Beratung und Service. Obwohl ich von VAG zu Mercedes gewechselt bin, wurde alles reibungslos angepasst. Die 3-Wege-Lautsprecher und zwei Subwoofer liefern außergewöhnliche Leistung."},{name:"Thomas F.",text:"Kompletter Audi A4 B9 Umbau hat meine Erwartungen übertroffen. Von Anfang bis Ende professionell, mit tadelloser Verarbeitung und Klangqualität."},{name:"Drago G.",text:"Beeindruckt von der CNC-Arbeit, die auf YouTube gezeigt wird. Angefangen mit 3D-gedruckten Lautsprecherringen für meinen Ford Mustang – daraus wurde ein viel größeres Projekt."},{name:"Leonardo B.",text:"Toller Service und meisterhafte Handwerkskunst. Saubere Installation, Leidenschaft in jedem Detail erkennbar."},{name:"Marcel S.",text:"Unschlagbares Preis-Leistungs-Verhältnis. Das Team hat sich viel Zeit genommen, um genau die Lösung für mein Budget zu finden."},{name:"Julia W.",text:"Endlich ein Betrieb, der auch Wohnmobile ernst nimmt. Die Soundanlage in unserem Camper klingt jetzt wie im Wohnzimmer."},{name:"Kevin R.",text:"Dashcam und Alarmanlage in einem Termin sauber verbaut, keine sichtbaren Kabel. Absolute Empfehlung für alle, die Wert auf Verarbeitung legen."},{name:"Sabrina H.",text:"Mein Oldtimer hat jetzt modernen Sound, ohne dass es dem Original-Look geschadet hätte. Genau das habe ich gesucht."},{name:"Niklas P.",text:"Von der ersten Anfrage bis zum fertigen Umbau lief alles reibungslos. Ehrliche Beratung ohne Verkaufsdruck."}],moreTitle:"Mehr als nur Car-Hifi",moreText:"Neben individuellen Sound-Umbauten bieten wir CNC-Zerspanung, Lasertechnik, 3D-Druck und mehr – alles aus einer Hand in unserer eigenen Werkstatt.",moreCta:"Alle Leistungen entdecken",faqHeading:"Häufig gestellte Fragen"},vehicleSelect:{metaTitle:"Fahrzeug auswählen",metaDescription:"Wähle deine Fahrzeugmarke und dein Modell und entdecke passende Car-Hifi Sound-Pakete von HifiPlanet.",title:"Fahrzeug auswählen",intro:"Wähle zuerst deine Marke, dann dein Modell – wir zeigen dir direkt die passenden Sound-Pakete.",empty:"Es sind noch keine Marken hinterlegt."},brandPage:{metaTitleFallback:"Modell auswählen",metaDescription:e=>`Wähle dein ${e} Modell und entdecke passende Car-Hifi Sound-Pakete von HifiPlanet.`,loading:"Lädt…",breadcrumbVehicles:"Fahrzeuge",titleSuffix:"Modell wählen",empty:"Für diese Marke sind noch keine Modelle hinterlegt."},modelPage:{metaTitleFallback:"Sound-Pakete",metaTitle:(e,t)=>`${e} ${t} Sound-Pakete`,metaDescription:(e,t)=>`Car-Hifi Sound-Pakete für ${e} ${t} inkl. aktueller Preise – von HifiPlanet unverbindlich anfragen.`,loading:"Lädt…",breadcrumbVehicles:"Fahrzeuge",titleSuffix:"Sound-Pakete",empty:"Für dieses Modell sind noch keine Pakete hinterlegt.",totalPrice:"ab ca.",productLoading:"Produkt wird geladen…",requestContact:"Kontakt anfragen",featuredBadge:"Empfohlen",moreBullets:e=>e===1?"+ 1 weitere Leistung":`+ ${e} weitere Leistungen`,lessBullets:"Weniger anzeigen",wheelHint:"Mit dem Mausrad blättern"},leistungen:{metaTitle:"Leistungen",metaDescription:"Car-Hifi, Wohnmobil & Caravan, Oldtimer, CNC-Zerspanung, Lasertechnik, 3D-Druck, Alarmanlagen und Dash Cams – alles aus einer Hand bei HifiPlanet in Amorbach.",title:"Unsere Leistungen",intro:"Von individuellen Sound-Umbauten bis zur eigenen CNC- und 3D-Druck-Fertigung – alles aus einer Hand in unserer Werkstatt in Amorbach.",notListedTitle:"Dein Projekt ist nicht dabei?",notListedText:"Sprich uns einfach an – wir finden gemeinsam die passende Lösung.",contact:"Kontakt aufnehmen"},contactPage:{metaTitle:"Kontakt",metaDescription:"Kontaktiere HifiPlanet in Amorbach für dein individuelles Car-Hifi Projekt – wir beraten dich gerne unverbindlich.",title:"Kontakt aufnehmen",heroEyebrow:"Kontakt",heroTitlePre:"Sprich",heroTitleAccent:"mit",heroTitlePost:"uns.",heroSubtitle:"Ob Anlage, Einbau oder Klang-Tuning für dein Fahrzeug — schreib uns, wir melden uns schnellstmöglich zurück.",packageBoxTitle:"Deine Anfrage bezieht sich auf",formTitle:"Anfrage senden",sentTitle:"Anfrage gesendet ✓",sentText:"Danke! Wir melden uns innerhalb eines Werktags bei dir.",contextIntro:"Deine Anfrage bezieht sich auf:",contextBrand:"Marke",contextModel:"Modell",contextPackage:"Paket",contextProduct:"Produkt",packagePrice:"Paketpreis",upgrades:"Upgrades",optionalUpgrades:"Optionale Upgrades",totalWithUpgrades:"Gesamt inkl. Upgrades",nameLabel:"Name *",namePlaceholder:"Max Mustermann",emailLabel:"E-Mail *",emailPlaceholder:"max@mail.de",phoneLabel:"Telefon",phonePlaceholder:"Optional",vinLabel:"Fahrgestellnummer (FIN)",vinPlaceholder:"Optional – hilft bei der Einschätzung",messageLabel:"Nachricht",messagePlaceholder:"Erzähl uns von deinem Projekt – Fahrzeug, Wunschklang, Budget …",requiredHint:"* Pflichtfelder",sending:"Wird gesendet…",submit:"Anfrage senden",cardTitle:"HiFi Planet Amorbach",address:"Adresse",phone:"Telefon",email:"E-Mail",hours:"Öffnungszeiten",hoursWeek:"Mo–Fr: 9:00–18:00 Uhr",hoursSat:"Sa: 10:00–13:00 Uhr",hoursWeekDays:"Mo–Fr",hoursWeekTime:"9:00 – 18:00 Uhr",hoursSatDay:"Sa",hoursSatTime:"10:00 – 13:00 Uhr",directionsTitle:"Anfahrt",mapEmbedName:"Die Google-Maps-Karte",mapOpenChip:"In Maps öffnen",routePlan:"Route planen",featurePremiumTitle:"Premium Klang",featurePremiumSub:"Höchste Qualität",featureGermanyTitle:"Made in Germany",featureGermanySub:"Präzise Handarbeit",featureIndividualTitle:"Individuell",featureIndividualSub:"Maßgeschneiderte Lösungen",featureExpertsTitle:"Experten Team",featureExpertsSub:"Leidenschaft & Know-how"},galleryOverview:{metaTitle:"Bildergalerie",metaDescription:"Einblicke in unsere Car-Hifi Umbauten – nach Marke sortiert. Wähle eine Marke und entdecke die Projekte.",title:"Bildergalerie",intro:"Wähle eine Marke und entdecke unsere Umbauten im Detail.",loading:"Lädt…",empty:"Es sind noch keine Galerie-Marken hinterlegt."},galleryBrandPage:{metaTitleFallback:"Bildergalerie",metaTitle:e=>`${e} Umbauten`,metaDescription:e=>`Einblicke in unsere ${e} Car-Hifi Umbauten.`,loading:"Lädt…",breadcrumbGallery:"Galerie",titleSuffix:"Projekt wählen",empty:"Für diese Marke sind noch keine Projekte hinterlegt."},galleryProjectPage:{metaTitleFallback:"Bildergalerie",metaDescription:e=>`Fotos unseres ${e} Umbaus.`,loading:"Lädt…",breadcrumbGallery:"Galerie",empty:"Für dieses Projekt sind noch keine Fotos hinterlegt.",enlargeImage:"Bild vergrößern"}},vw={nav:{openMenu:"Open menu",closeMenu:"Close menu",close:"Close",adminPanel:"Go to admin panel",vehicles:"Vehicles",services:"Services",gallery:"Gallery",contact:"Contact",whatsapp:"WhatsApp",shop:"Visit shop"},themeToggle:{label:"Toggle theme"},languageToggle:{label:"Select language"},footer:{routePlan:"Get directions",contactHeading:"Contact",contactForm:"Contact form",hoursHeading:"Opening hours",open:"Open",closed:"Closed",days:{monFri:"Monday – Friday",sat:"Saturday",sun:"Sunday"},copyright:e=>`© ${e} HifiPlanet. All information without guarantee.`,imprint:"Legal notice",privacy:"Privacy",terms:"Terms",cookieSettings:"Cookie settings"},cookieConsent:{bannerText:"We only use technically necessary cookies. For Google Maps, YouTube videos and analytics cookies we need your additional consent, since data is transferred to Google in that case.",moreInfo:"More details in our",privacyPolicy:"privacy policy",settings:"Settings",onlyNecessary:"Necessary only",acceptAll:"Accept all",modalTitle:"Cookie settings",modalIntro:"Choose which categories you want to allow. More details in our",necessaryTitle:"Necessary",necessaryDesc:"Required to operate the website (e.g. login session, theme and cookie preference). Cannot be disabled.",externalTitle:"External media",externalDesc:"Google Maps and YouTube videos. Loading them transfers data (including your IP address) to Google.",analyticsTitle:"Analytics",analyticsDesc:"Google Analytics helps us understand how the website is used. This transfers data to Google.",cancel:"Cancel",saveSelection:"Save selection"},maintenance:{title:"Under maintenance",defaultMessage:"This area is currently being updated. Please check back shortly."},lightbox:{close:"Close",previous:"Previous image",next:"Next image"},home:{metaTitle:"Custom Car-Hifi Installations",metaDescription:"HifiPlanet – your car-hifi specialist in Amorbach, Germany. Choose your make and model, discover matching sound packages and get in touch, no obligation.",stickyCta:"Ready for your sound upgrade?",selectVehicle:"Select vehicle",getInTouch:"Get in touch",welcome:"Welcome to HifiPlanet",heroTitle:"Home of pure Sound",heroSubtitle:"Your car-hifi specialist for custom sound installations. Choose your vehicle, discover the right package and get in touch, no obligation – we take care of the rest.",stats:[{value:"20+",label:"years of experience"},{value:"Huge",label:"in-house 3D print farm"},{value:"In-house",label:"CNC & laser workshop"},{value:"International",label:"recognized car-hifi specialist"}],brandsHeading:"Brands we work with",youtubeBadge:"HifiPlanet presents",youtubeTitle:"The craft behind your sound",youtubeText:"Discover the artistry behind our work",youtubeCta:"Watch now",heroImageAlt:"Ground Zero subwoofer and amplifiers with purple ambient lighting",craftImageAlt:"Custom subwoofer build",adviceImageAlt:"Amplifier installation with ambient lighting",moreImageAlt:"High-end amplifier and subwoofer, studio shot",craftEyebrow:"Craftsmanship",craftTitle:"Precision work in every detail",craftText:"Whether custom-built subwoofer enclosures, integrated lighting or invisibly routed cabling – our own CNC, laser and 3D-printing production means we can build solutions you simply can't buy off the shelf.",adviceEyebrow:"Consultation",adviceTitle:"From the first idea to the final touch",adviceText:"Every vehicle and every requirement is different. That's why we advise you personally and without obligation – from a subtle upgrade to an uncompromising high-end system.",insightsTitle:"A look at our installations",insightsText:"From subtle sound upgrades to elaborate full installations – handcrafted in our workshop in Amorbach.",galleryAlts:["Custom subwoofer build with Ground Zero bass drivers","Amplifier installation with purple ambient lighting","Tweeter and midrange installation by Focal Utopia","Sony navigation system with Apple CarPlay in the cockpit","Installed tweeter in the trunk","Custom subwoofer installation with LED lighting in the trunk"],reviewsRating:"Rated 5.0 by 181 customers",reviewsRatingDynamic:(e,t)=>`Rated ${e.toFixed(1)} by ${t} customers`,reviewsText:"Here's what our customers say about us.",reviewsLink:"See all reviews on Google →",testimonials:[{name:"Thomas K.",text:"Found this gem through YouTube. Advice and recommendations are top-notch – the Tesla demo car reignited my passion for great sound."},{name:"Andreas I.",text:"Very professional advice and service. Even though I switched from VAG to Mercedes, everything was adapted smoothly. The 3-way speakers and two subwoofers deliver outstanding performance."},{name:"Thomas F.",text:"The complete Audi A4 B9 build exceeded my expectations. Professional from start to finish, with flawless workmanship and sound quality."},{name:"Drago G.",text:"Impressed by the CNC work shown on YouTube. Started with 3D-printed speaker rings for my Ford Mustang – it turned into a much bigger project."},{name:"Leonardo B.",text:"Great service and masterful craftsmanship. Clean installation, passion visible in every detail."},{name:"Marcel S.",text:"Unbeatable value for money. The team took a lot of time to find the exact solution for my budget."},{name:"Julia W.",text:"Finally a shop that takes motorhomes seriously too. The sound system in our camper now sounds like a living room."},{name:"Kevin R.",text:"Dash cam and alarm system installed cleanly in a single appointment, no visible cables. Highly recommended for anyone who values quality workmanship."},{name:"Sabrina H.",text:"My classic car now has modern sound without compromising the original look. Exactly what I was looking for."},{name:"Niklas P.",text:"From the first inquiry to the finished build, everything went smoothly. Honest advice with no sales pressure."}],moreTitle:"More than just car-hifi",moreText:"Besides custom sound installations, we also offer CNC machining, laser technology, 3D printing and more – all from a single source in our own workshop.",moreCta:"Discover all our services",faqHeading:"Frequently asked questions"},vehicleSelect:{metaTitle:"Select your vehicle",metaDescription:"Choose your vehicle make and model and discover matching car-hifi sound packages from HifiPlanet.",title:"Select your vehicle",intro:"Choose your make first, then your model – we'll show you the matching sound packages right away.",empty:"No brands have been added yet."},brandPage:{metaTitleFallback:"Select a model",metaDescription:e=>`Choose your ${e} model and discover matching car-hifi sound packages from HifiPlanet.`,loading:"Loading…",breadcrumbVehicles:"Vehicles",titleSuffix:"Select a model",empty:"No models have been added for this brand yet."},modelPage:{metaTitleFallback:"Sound packages",metaTitle:(e,t)=>`${e} ${t} sound packages`,metaDescription:(e,t)=>`Car-hifi sound packages for the ${e} ${t} including current prices – get in touch with HifiPlanet, no obligation.`,loading:"Loading…",breadcrumbVehicles:"Vehicles",titleSuffix:"Sound packages",empty:"No packages have been added for this model yet.",totalPrice:"from approx.",productLoading:"Loading product…",requestContact:"Request contact",featuredBadge:"Recommended",moreBullets:e=>e===1?"+ 1 more feature":`+ ${e} more features`,lessBullets:"Show less",wheelHint:"Scroll to browse"},leistungen:{metaTitle:"Services",metaDescription:"Car-hifi, motorhomes & caravans, classic cars, CNC machining, laser technology, 3D printing, alarm systems and dash cams – all from a single source at HifiPlanet in Amorbach.",title:"Our services",intro:"From custom sound installations to our own CNC and 3D-printing production – all from a single source in our workshop in Amorbach.",notListedTitle:"Don't see your project?",notListedText:"Just get in touch – we'll find the right solution together.",contact:"Get in touch"},contactPage:{metaTitle:"Contact",metaDescription:"Get in touch with HifiPlanet in Amorbach for your custom car-hifi project – we're happy to advise you, no obligation.",title:"Get in touch",heroEyebrow:"Contact",heroTitlePre:"Talk",heroTitleAccent:"to",heroTitlePost:"us.",heroSubtitle:"Whether it's a system, installation, or sound tuning for your car — write to us, we'll get back to you as soon as possible.",packageBoxTitle:"Your inquiry relates to",formTitle:"Send inquiry",sentTitle:"Inquiry sent ✓",sentText:"Thanks! We'll get back to you within one business day.",contextIntro:"Your inquiry relates to:",contextBrand:"Brand",contextModel:"Model",contextPackage:"Package",contextProduct:"Product",packagePrice:"Package price",upgrades:"Upgrades",optionalUpgrades:"Optional upgrades",totalWithUpgrades:"Total incl. upgrades",nameLabel:"Name *",namePlaceholder:"Max Mustermann",emailLabel:"Email *",emailPlaceholder:"max@mail.de",phoneLabel:"Phone",phonePlaceholder:"Optional",vinLabel:"Vehicle identification number (VIN)",vinPlaceholder:"Optional – helps us assess your vehicle",messageLabel:"Message",messagePlaceholder:"Tell us about your project – vehicle, desired sound, budget …",requiredHint:"* Required fields",sending:"Sending…",submit:"Send inquiry",cardTitle:"HiFi Planet Amorbach",address:"Address",phone:"Phone",email:"Email",hours:"Opening hours",hoursWeek:"Mon–Fri: 9:00 AM–6:00 PM",hoursSat:"Sat: 10:00 AM–1:00 PM",hoursWeekDays:"Mon–Fri",hoursWeekTime:"9:00 AM – 6:00 PM",hoursSatDay:"Sat",hoursSatTime:"10:00 AM – 1:00 PM",directionsTitle:"Directions",mapEmbedName:"The Google Maps map",mapOpenChip:"Open in Maps",routePlan:"Get directions",featurePremiumTitle:"Premium Sound",featurePremiumSub:"Highest quality",featureGermanyTitle:"Made in Germany",featureGermanySub:"Precision craftsmanship",featureIndividualTitle:"Custom-built",featureIndividualSub:"Tailored solutions",featureExpertsTitle:"Expert Team",featureExpertsSub:"Passion & know-how"},galleryOverview:{metaTitle:"Photo gallery",metaDescription:"A look at our car-hifi installations – sorted by brand. Choose a brand and explore the projects.",title:"Photo gallery",intro:"Choose a brand and explore our installations in detail.",loading:"Loading…",empty:"No gallery brands have been added yet."},galleryBrandPage:{metaTitleFallback:"Photo gallery",metaTitle:e=>`${e} installations`,metaDescription:e=>`A look at our ${e} car-hifi installations.`,loading:"Loading…",breadcrumbGallery:"Gallery",titleSuffix:"Select a project",empty:"No projects have been added for this brand yet."},galleryProjectPage:{metaTitleFallback:"Photo gallery",metaDescription:e=>`Photos of our ${e} installation.`,loading:"Loading…",breadcrumbGallery:"Gallery",empty:"No photos have been added for this project yet.",enlargeImage:"Enlarge image"}},Ja={de:bw,en:vw};function yw(){const e=localStorage.getItem("hifi-lang");return e==="de"||e==="en"?e:(navigator.language||"de").toLowerCase().startsWith("de")?"de":"en"}function ju(e,t){return t.split(".").reduce((n,r)=>n==null?void 0:n[r],e)}const hg=g.createContext({language:"de",setLanguage:()=>{},toggleLanguage:()=>{},t:e=>{const t=ju(Ja.de,e);return t!==void 0?t:e}});function Yh({children:e}){const[t,n]=g.useState(yw);g.useEffect(()=>{document.documentElement.setAttribute("lang",t),localStorage.setItem("hifi-lang",t)},[t]);const r=()=>n(i=>i==="de"?"en":"de"),s=i=>{const l=Ja[t]||Ja.de,o=ju(l,i);if(o!==void 0)return o;const u=ju(Ja.de,i);return u!==void 0?u:i};return a.jsx(hg.Provider,{value:{language:t,setLanguage:n,toggleLanguage:r,t:s},children:e})}function Te(){return g.useContext(hg)}function mg({overHero:e=!1}){const{theme:t,toggleTheme:n}=xw(),{t:r}=Te();return a.jsx("button",{onClick:n,"aria-label":r("themeToggle.label"),className:`rounded-full p-2 transition ${e?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:t==="dark"?a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"h-5 w-5",children:a.jsx("path",{d:"M12 3a1 1 0 011 1v1a1 1 0 11-2 0V4a1 1 0 011-1zm0 15a5 5 0 100-10 5 5 0 000 10zm9-6a1 1 0 010 2h-1a1 1 0 110-2h1zM4 12a1 1 0 010 2H3a1 1 0 110-2h1zm14.36-7.36a1 1 0 011.42 1.42l-.71.7a1 1 0 11-1.41-1.4l.7-.72zM5.64 18.36a1 1 0 011.41 1.41l-.7.71a1 1 0 11-1.42-1.41l.71-.71zm12.72 0l.71.7a1 1 0 11-1.41 1.42l-.71-.71a1 1 0 011.41-1.41zM6.34 5.64l-.7-.7A1 1 0 117.05 3.5l.7.71A1 1 0 016.34 5.64zM12 6a1 1 0 011-1v0a1 1 0 01-1 1zm0 12a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1z"})}):a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"h-5 w-5",children:a.jsx("path",{fillRule:"evenodd",d:"M9.53 2.25a.75.75 0 01.19.82 8.25 8.25 0 0011.03 11.03.75.75 0 011.01.99A10.5 10.5 0 1112.9 2.1a.75.75 0 011.63-.85z",clipRule:"evenodd"})})})}function We({name:e,className:t="h-6 w-6",...n}){return e?a.jsx(Bb,{name:e,className:t,...n}):null}const fg=g.createContext(null);function kw({children:e}){const[t,n]=g.useState(null),[r,s]=g.useState(!0);g.useEffect(()=>{A.get("/auth/me").then(d=>n(d.authenticated===!1?null:d)).catch(()=>n(null)).finally(()=>s(!1))},[]);const i=async(d,h)=>{const m=await A.post("/auth/login",{username:d,password:h});return m.requires_2fa?{requires2fa:!0}:(n(m),{requires2fa:!1})},l=async d=>{const h=await A.post("/auth/verify-2fa",{code:d});n(h)},o=async()=>{await A.post("/auth/logout",{}),n(null)},u=async()=>{const d=await A.get("/auth/me");n(d.authenticated===!1?null:d)},c=d=>{var h;return!!t&&(t.is_super_admin||((h=t.permissions)==null?void 0:h.includes(d)))};return a.jsx(fg.Provider,{value:{user:t,loading:r,login:i,verifyTwoFactor:l,logout:o,refreshUser:u,hasPermission:c},children:e})}function Dt(){return g.useContext(fg)}const pg=g.createContext({phone:"09373 20 62 390",whatsapp:null,contact_email:"info@hifi-planet-amorbach.de",hero_image_path:null,ga_measurement_id:null}),ww=pg.Provider;function Vr(){return g.useContext(pg)}const Ks="/assets/logo-BNfZDkmN.png",Di="/assets/logo-dark-R-ckaBhx.png",jw="https://www.audio4cars.de/",Xh=e=>(e||"").replace(/[^\d+]/g,""),Zh=70,Nw=500;function Sw({className:e}){return a.jsxs("svg",{viewBox:"0 0 3 2",className:e,"aria-hidden":"true",children:[a.jsx("rect",{width:"3",height:"0.667",y:"0",fill:"#000"}),a.jsx("rect",{width:"3",height:"0.667",y:"0.667",fill:"#D00"}),a.jsx("rect",{width:"3",height:"0.666",y:"1.334",fill:"#FFCE00"})]})}function Cw({className:e}){return a.jsxs("svg",{viewBox:"0 0 60 30",className:e,"aria-hidden":"true",children:[a.jsx("clipPath",{id:"fgb-t",children:a.jsx("path",{d:"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"})}),a.jsx("path",{d:"M0,0 v30 h60 v-30 z",fill:"#00247d"}),a.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",stroke:"#fff",strokeWidth:"6"}),a.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",clipPath:"url(#fgb-t)",stroke:"#cf142b",strokeWidth:"4"}),a.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#fff",strokeWidth:"10"}),a.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#cf142b",strokeWidth:"6"})]})}const Zl=[{code:"de",label:"Deutsch",Flag:Sw},{code:"en",label:"English",Flag:Cw}];function Pw({overHero:e=!1}){const{language:t,setLanguage:n,t:r}=Te(),[s,i]=g.useState(!1),l=g.useRef(null),o=Zl.find(u=>u.code===t)||Zl[0];return g.useEffect(()=>{if(!s)return;const u=d=>{l.current&&!l.current.contains(d.target)&&i(!1)},c=d=>{d.key==="Escape"&&i(!1)};return document.addEventListener("mousedown",u),document.addEventListener("keydown",c),()=>{document.removeEventListener("mousedown",u),document.removeEventListener("keydown",c)}},[s]),a.jsxs("div",{className:"relative",ref:l,children:[a.jsxs("button",{type:"button",onClick:()=>i(u=>!u),"aria-haspopup":"listbox","aria-expanded":s,"aria-label":r("languageToggle.label"),className:`flex items-center gap-1 rounded-full p-1.5 transition ${e?"hover:bg-white/10":"hover:bg-neutral-100 dark:hover:bg-neutral-800"}`,children:[a.jsx("span",{className:`block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] ring-1 ${e?"ring-white/50":"ring-neutral-300 dark:ring-neutral-600"}`,children:a.jsx(o.Flag,{className:"h-full w-full"})}),a.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",className:`h-3 w-3 transition-transform ${e?"text-white/70":"text-neutral-400"} ${s?"rotate-180":""}`,children:a.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"})})]}),s&&a.jsx("div",{role:"listbox",className:"absolute right-0 z-50 mt-2 min-w-[9rem] overflow-hidden rounded-lg border border-neutral-200 bg-white py-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900",children:Zl.map(u=>a.jsxs("button",{type:"button",role:"option","aria-selected":u.code===t,onClick:()=>{n(u.code),i(!1)},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm transition hover:bg-neutral-100 dark:hover:bg-neutral-800 ${u.code===t?"font-semibold text-brand-600 dark:text-brand-400":"text-neutral-700 dark:text-neutral-200"}`,children:[a.jsx("span",{className:"block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] ring-1 ring-neutral-300 dark:ring-neutral-600",children:a.jsx(u.Flag,{className:"h-full w-full"})}),u.label]},u.code))})]})}function Ew(){const[e,t]=g.useState(!1),[n,r]=g.useState(!1),[s,i]=g.useState(!1),{user:l}=Dt(),{phone:o,whatsapp:u}=Vr(),{t:c}=Te(),d=u?8:7,m=ht().pathname==="/",[f,b]=g.useState(!m);g.useEffect(()=>{if(!m){b(!0);return}const v=()=>b(window.scrollY>24);return v(),window.addEventListener("scroll",v,{passive:!0}),()=>window.removeEventListener("scroll",v)},[m]);const y=m&&!f;g.useEffect(()=>{if(e){r(!0);let j;const C=requestAnimationFrame(()=>{j=requestAnimationFrame(()=>i(!0))});return()=>{cancelAnimationFrame(C),j&&cancelAnimationFrame(j)}}i(!1);const v=Nw+(d-1)*Zh,k=setTimeout(()=>r(!1),v);return()=>clearTimeout(k)},[e,d]);const w=()=>`transition-all duration-500 ease-out ${s?"opacity-100":"opacity-0"}`,x=v=>({transitionDelay:`${(s?v:d-1-v)*Zh}ms`,transform:s?"translateY(0)":"translateY(-140px)"}),p=l&&a.jsx(W,{to:"/admin","aria-label":c("nav.adminPanel"),title:c("nav.adminPanel"),className:`rounded-full p-2 transition ${y?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx(We,{name:"layout-dashboard",className:"h-5 w-5"})});return a.jsxs("header",{className:`sticky top-0 z-30 border-b transition-colors duration-300 ${y?"border-transparent bg-transparent":"border-neutral-200 bg-white/90 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/90"}`,children:[a.jsxs("div",{className:"mx-auto grid max-w-6xl grid-cols-[1fr_auto_1fr] items-center gap-3 px-4 py-3 sm:px-6",children:[a.jsx("div",{className:"flex items-center justify-self-start",children:a.jsx("button",{onClick:()=>t(!0),"aria-label":c("nav.openMenu"),className:`rounded-md p-2 transition ${y?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})})}),a.jsxs(W,{to:"/",className:"flex items-center justify-self-center rounded-lg px-2 py-1",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-14 w-auto dark:hidden sm:h-16"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-14 w-auto dark:block sm:h-16"})]}),a.jsxs("div",{className:"flex items-center justify-self-end gap-1",children:[p,!e&&a.jsx(Pw,{overHero:y}),a.jsx(mg,{overHero:y})]})]}),n&&Gc.createPortal(a.jsx("div",{className:"fixed inset-0 z-[100] overflow-y-auto text-left backdrop-blur-xl",style:{background:"linear-gradient(135deg, rgba(241,245,249,0.55) 0%, rgba(227,240,207,0.55) 50%, rgba(248,250,252,0.55) 100%)"},children:a.jsxs("div",{className:"relative mx-auto flex min-h-full max-w-6xl flex-col items-start justify-center gap-5 py-24 pl-6 pr-8 sm:pl-8",children:[a.jsxs("button",{onClick:()=>t(!1),"aria-label":c("nav.closeMenu"),className:"absolute left-6 top-8 flex items-center gap-2 text-neutral-600 hover:text-brand-600 sm:left-8 sm:top-[65px]",children:[a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6l12 12M18 6 6 18"})}),a.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide",children:c("nav.close")})]}),a.jsx(W,{to:"/fahrzeuge",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(0),children:c("nav.vehicles")}),a.jsx(W,{to:"/leistungen",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(1),children:c("nav.services")}),a.jsx(W,{to:"/galerie",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(2),children:c("nav.gallery")}),a.jsx(W,{to:"/kontakt",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(3),children:c("nav.contact")}),a.jsx("div",{className:`h-px w-16 bg-brand-500/60 ${w()}`,style:x(4)}),o&&a.jsxs("a",{href:`tel:${Xh(o)}`,className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(5),children:[a.jsx(We,{name:"phone",className:"h-4 w-4"}),o]}),u&&a.jsxs("a",{href:`https://wa.me/${Xh(u).replace(/^0/,"49").replace("+","")}`,target:"_blank",rel:"noopener noreferrer",className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(6),children:[a.jsx(We,{name:"message-circle",className:"h-4 w-4"}),c("nav.whatsapp")]}),a.jsxs("a",{href:jw,target:"_blank",rel:"noopener noreferrer",className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(u?7:6),children:[a.jsx(We,{name:"shopping-bag",className:"h-4 w-4"}),c("nav.shop")]})]})}),document.body)]})}const Qh="hifiplanet-cookie-consent",gg={necessary:!0,external:!1,analytics:!1},xg=g.createContext({consent:gg,decided:!1,settingsOpen:!1,acceptAll:()=>{},rejectNonEssential:()=>{},saveCustom:()=>{},openSettings:()=>{},closeSettings:()=>{}});function Tw({children:e}){const[t,n]=g.useState(gg),[r,s]=g.useState(!1),[i,l]=g.useState(!1);g.useEffect(()=>{try{const f=localStorage.getItem(Qh);if(f){const b=JSON.parse(f);n({necessary:!0,external:!!b.external,analytics:!!b.analytics}),s(!0)}}catch{}},[]);const o=g.useCallback(f=>{n(f),s(!0),l(!1),localStorage.setItem(Qh,JSON.stringify({...f,decidedAt:new Date().toISOString()}))},[]),u=g.useCallback(()=>o({necessary:!0,external:!0,analytics:!0}),[o]),c=g.useCallback(()=>o({necessary:!0,external:!1,analytics:!1}),[o]),d=g.useCallback(f=>o({necessary:!0,external:!!f.external,analytics:!!f.analytics}),[o]),h=g.useCallback(()=>l(!0),[]),m=g.useCallback(()=>l(!1),[]);return a.jsx(xg.Provider,{value:{consent:t,decided:r,settingsOpen:i,acceptAll:u,rejectNonEssential:c,saveCustom:d,openSettings:h,closeSettings:m},children:e})}function Or(){return g.useContext(xg)}const Aw=e=>(e||"").replace(/[^\d+]/g,""),Mw=encodeURIComponent("Boxbrunner Str. 20a, 63916 Amorbach"),_w=`https://www.google.com/maps/dir/?api=1&destination=${Mw}`;function Lw(){const e=new Date,t=e.getHours()*60+e.getMinutes(),n=e.getDay();return n===0?!1:n===6?t>=10*60&&t<13*60:t>=9*60&&t<18*60}function Dw(){const e=Lw(),{openSettings:t}=Or(),{pathname:n}=ht(),r=n==="/",{phone:s,contact_email:i}=Vr(),{t:l}=Te(),o=[{key:"monFri",days:l("footer.days.monFri"),label:l("contactPage.hoursWeek")},{key:"sat",days:l("footer.days.sat"),label:l("contactPage.hoursSat")},{key:"sun",days:l("footer.days.sun"),label:l("footer.closed")}];return a.jsxs("footer",{className:`border-t border-neutral-200 bg-neutral-50 py-10 text-sm text-neutral-600 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-300 ${r?"pb-24":""}`,children:[a.jsxs("div",{className:"mx-auto grid max-w-6xl gap-4 px-4 sm:grid-cols-3 sm:px-6",children:[a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[a.jsx(We,{name:"map-pin",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:"HifiPlanet"})]}),a.jsx("p",{children:"Boxbrunner Str. 20a"}),a.jsx("p",{children:"63916 Amorbach"}),a.jsxs("a",{href:_w,target:"_blank",rel:"noopener noreferrer",className:"mt-4 flex items-center justify-center gap-1.5 rounded-md bg-brand-500 px-3 py-2 text-xs font-semibold text-white hover:bg-brand-600",children:[a.jsx(We,{name:"navigation",className:"h-3.5 w-3.5"}),l("footer.routePlan")]})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[a.jsx(We,{name:"phone",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:l("footer.contactHeading")})]}),a.jsx("p",{children:a.jsx("a",{href:`tel:${Aw(s)}`,className:"inline-block py-1 hover:text-brand-500",children:s})}),a.jsx("p",{children:a.jsx("a",{href:`mailto:${i}`,className:"inline-block py-1 hover:text-brand-500",children:i})}),a.jsx(W,{to:"/kontakt",className:"mt-4 flex items-center justify-center gap-1.5 rounded-md border border-neutral-300 px-3 py-2 text-xs font-semibold text-neutral-700 hover:border-brand-500 hover:text-brand-600 dark:border-neutral-700 dark:text-neutral-200",children:l("footer.contactForm")})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center justify-between gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(We,{name:"clock",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:l("footer.hoursHeading")})]}),a.jsxs("span",{className:`flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[11px] font-semibold ${e?"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"}`,children:[a.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${e?"bg-green-500":"bg-neutral-400"}`}),l(e?"footer.open":"footer.closed")]})]}),a.jsx("dl",{className:"space-y-1.5",children:o.map(u=>a.jsxs("div",{className:"flex items-center justify-between gap-3",children:[a.jsx("dt",{className:"text-neutral-500 dark:text-neutral-400",children:u.days}),a.jsx("dd",{className:"font-medium text-neutral-700 dark:text-neutral-200",children:u.label})]},u.key))})]})]}),a.jsx("div",{className:"mx-auto mt-8 max-w-6xl border-t border-neutral-200 px-4 pt-6 text-center text-xs text-neutral-500 dark:border-neutral-800 dark:text-neutral-400 sm:px-6",children:a.jsxs("p",{className:"flex flex-wrap items-center justify-center gap-x-2 gap-y-1",children:[a.jsx("span",{children:l("footer.copyright")(new Date().getFullYear())}),a.jsx("span",{children:"·"}),a.jsx(W,{to:"/impressum",className:"hover:text-brand-500",children:l("footer.imprint")}),a.jsx("span",{children:"·"}),a.jsx(W,{to:"/datenschutz",className:"hover:text-brand-500",children:l("footer.privacy")}),a.jsx("span",{children:"·"}),a.jsx(W,{to:"/agb",className:"hover:text-brand-500",children:l("footer.terms")}),a.jsx("span",{children:"·"}),a.jsx("button",{type:"button",onClick:t,className:"hover:text-brand-500",children:l("footer.cookieSettings")})]})})]})}const Xc=g.createContext({});function wn(e){const t=g.useRef(null);return t.current===null&&(t.current=e()),t.current}const Bw=typeof window<"u",sa=Bw?g.useLayoutEffect:g.useEffect,ml=g.createContext(null);function Zc(e,t){e.indexOf(t)===-1&&e.push(t)}function Bi(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const Nt=(e,t,n)=>n>t?t:n {};const jn={},bg=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),vg=e=>typeof e=="object"&&e!==null,yg=e=>/^0[^.\s]+$/u.test(e);function kg(e){let t;return()=>(t===void 0&&(t=e()),t)}const Ke=e=>e,aa=(...e)=>e.reduce((t,n)=>r=>n(t(r))),Tr=(e,t,n)=>{const r=t-e;return r?(n-e)/r:1};class Jc{constructor(){this.subscriptions=[]}add(t){return Zc(this.subscriptions,t),()=>Bi(this.subscriptions,t)}notify(t,n,r){const s=this.subscriptions.length;if(s)if(s===1)this.subscriptions[0](t,n,r);else for(let i=0;i e*1e3,lt=e=>e/1e3,ed=(e,t)=>t?e*(1e3/t):0,wg=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,zw=1e-7,Rw=12;function Iw(e,t,n,r,s){let i,l,o=0;do l=t+(n-t)/2,i=wg(l,r,s)-e,i>0?n=l:t=l;while(Math.abs(i)>zw&&++oIw(i,0,1,e,n);return i=>i===0||i===1?i:wg(s(i),t,r)}const jg=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Ng=e=>t=>1-e(1-t),Sg=ia(.33,1.53,.69,.99),td=Ng(Sg),Cg=jg(td),Pg=e=>e>=1?1:(e*=2)<1?.5*td(e):.5*(2-Math.pow(2,-10*(e-1))),nd=e=>1-Math.sin(Math.acos(e)),Eg=Ng(nd),Tg=jg(nd),Fw=ia(.42,0,1,1),Vw=ia(0,0,.58,1),Ag=ia(.42,0,.58,1),Ow=e=>Array.isArray(e)&&typeof e[0]!="number",Mg=e=>Array.isArray(e)&&typeof e[0]=="number",Uw={linear:Ke,easeIn:Fw,easeInOut:Ag,easeOut:Vw,circIn:nd,circInOut:Tg,circOut:Eg,backIn:td,backInOut:Cg,backOut:Sg,anticipate:Pg},Ww=e=>typeof e=="string",Jh=e=>{if(Mg(e)){Qc(e.length===4);const[t,n,r,s]=e;return ia(t,n,r,s)}else if(Ww(e))return Uw[e];return e},Ma=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Hw(e){let t=new Set,n=new Set,r=!1,s=!1;const i=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function o(c){i.has(c)&&(u.schedule(c),e()),c(l)}const u={schedule:(c,d=!1,h=!1)=>{const f=h&&r?t:n;return d&&i.add(c),f.add(c),c},cancel:c=>{n.delete(c),i.delete(c)},process:c=>{if(l=c,r){s=!0;return}r=!0;const d=t;t=n,n=d,t.forEach(o),t.clear(),r=!1,s&&(s=!1,u.process(c))}};return u}const $w=40;function _g(e,t){let n=!1,r=!0;const s={delta:0,timestamp:0,isProcessing:!1},i=()=>n=!0,l=Ma.reduce((v,k)=>(v[k]=Hw(i),v),{}),{setup:o,read:u,resolveKeyframes:c,preUpdate:d,update:h,preRender:m,render:f,postRender:b}=l,y=()=>{const v=jn.useManualTiming,k=v?s.timestamp:performance.now();n=!1,v||(s.delta=r?1e3/60:Math.max(Math.min(k-s.timestamp,$w),1)),s.timestamp=k,s.isProcessing=!0,o.process(s),u.process(s),c.process(s),d.process(s),h.process(s),m.process(s),f.process(s),b.process(s),s.isProcessing=!1,n&&t&&(r=!1,e(y))},w=()=>{n=!0,r=!0,s.isProcessing||e(y)};return{schedule:Ma.reduce((v,k)=>{const j=l[k];return v[k]=(C,S=!1,P=!1)=>(n||w(),j.schedule(C,S,P)),v},{}),cancel:v=>{for(let k=0;k (ei===void 0&&Be.set(ke.isProcessing||jn.useManualTiming?ke.timestamp:performance.now()),ei),set:e=>{ei=e,queueMicrotask(Gw)}},Lg=e=>t=>typeof t=="string"&&t.startsWith(e),Dg=Lg("--"),Kw=Lg("var(--"),rd=e=>Kw(e)?qw.test(e.split("/*")[0].trim()):!1,qw=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function em(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const Ur={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},qs={...Ur,transform:e=>Nt(0,1,e)},_a={...Ur,default:1},ys=e=>Math.round(e*1e5)/1e5,sd=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function Yw(e){return e==null}const Xw=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ad=(e,t)=>n=>!!(typeof n=="string"&&Xw.test(n)&&n.startsWith(e)||t&&!Yw(n)&&Object.prototype.hasOwnProperty.call(n,t)),Bg=(e,t,n)=>r=>{if(typeof r!="string")return r;const[s,i,l,o]=r.match(sd);return{[e]:parseFloat(s),[t]:parseFloat(i),[n]:parseFloat(l),alpha:o!==void 0?parseFloat(o):1}},Zw=e=>Nt(0,255,e),Jl={...Ur,transform:e=>Math.round(Zw(e))},zn={test:ad("rgb","red"),parse:Bg("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Jl.transform(e)+", "+Jl.transform(t)+", "+Jl.transform(n)+", "+ys(qs.transform(r))+")"};function Qw(e){let t="",n="",r="",s="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),s=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),s=e.substring(4,5),t+=t,n+=n,r+=r,s+=s),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:s?parseInt(s,16)/255:1}}const Nu={test:ad("#"),parse:Qw,transform:zn.transform},la=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),Rt=la("deg"),_t=la("%"),V=la("px"),Jw=la("vh"),e1=la("vw"),tm={..._t,parse:e=>_t.parse(e)/100,transform:e=>_t.transform(e*100)},dr={test:ad("hsl","hue"),parse:Bg("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+_t.transform(ys(t))+", "+_t.transform(ys(n))+", "+ys(qs.transform(r))+")"},pe={test:e=>zn.test(e)||Nu.test(e)||dr.test(e),parse:e=>zn.test(e)?zn.parse(e):dr.test(e)?dr.parse(e):Nu.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?zn.transform(e):dr.transform(e),getAnimatableNone:e=>{const t=pe.parse(e);return t.alpha=0,pe.transform(t)}},t1=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function n1(e){var t,n;return isNaN(e)&&typeof e=="string"&&(((t=e.match(sd))==null?void 0:t.length)||0)+(((n=e.match(t1))==null?void 0:n.length)||0)>0}const zg="number",Rg="color",r1="var",s1="var(",nm="${}",a1=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Ar(e){const t=e.toString(),n=[],r={color:[],number:[],var:[]},s=[];let i=0;const o=t.replace(a1,u=>(pe.test(u)?(r.color.push(i),s.push(Rg),n.push(pe.parse(u))):u.startsWith(s1)?(r.var.push(i),s.push(r1),n.push(u)):(r.number.push(i),s.push(zg),n.push(parseFloat(u))),++i,nm)).split(nm);return{values:n,split:o,indexes:r,types:s}}function i1(e){return Ar(e).values}function Ig({split:e,types:t}){const n=e.length;return r=>{let s="";for(let i=0;i typeof e=="number"?0:pe.test(e)?pe.getAnimatableNone(e):e,u1=(e,t)=>typeof e=="number"?t!=null&&t.trim().endsWith("/")?e:0:o1(e);function c1(e){const t=Ar(e);return Ig(t)(t.values.map((r,s)=>u1(r,t.split[s])))}const wt={test:n1,parse:i1,createTransformer:l1,getAnimatableNone:c1};function eo(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function d1({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let s=0,i=0,l=0;if(!t)s=i=l=n;else{const o=n<.5?n*(1+t):n+t-n*t,u=2*n-o;s=eo(u,o,e+1/3),i=eo(u,o,e),l=eo(u,o,e-1/3)}return{red:Math.round(s*255),green:Math.round(i*255),blue:Math.round(l*255),alpha:r}}function zi(e,t){return n=>n>0?t:e}const ne=(e,t,n)=>e+(t-e)*n,to=(e,t,n)=>{const r=e*e,s=n*(t*t-r)+r;return s<0?0:Math.sqrt(s)},h1=[Nu,zn,dr],m1=e=>h1.find(t=>t.test(e));function rm(e){const t=m1(e);if(!t)return!1;let n=t.parse(e);return t===dr&&(n=d1(n)),n}const sm=(e,t)=>{const n=rm(e),r=rm(t);if(!n||!r)return zi(e,t);const s={...n};return i=>(s.red=to(n.red,r.red,i),s.green=to(n.green,r.green,i),s.blue=to(n.blue,r.blue,i),s.alpha=ne(n.alpha,r.alpha,i),zn.transform(s))},Su=new Set(["none","hidden"]);function f1(e,t){return Su.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function p1(e,t){return n=>ne(e,t,n)}function id(e){return typeof e=="number"?p1:typeof e=="string"?rd(e)?zi:pe.test(e)?sm:b1:Array.isArray(e)?Fg:typeof e=="object"?pe.test(e)?sm:g1:zi}function Fg(e,t){const n=[...e],r=n.length,s=e.map((i,l)=>id(i)(i,t[l]));return i=>{for(let l=0;l {for(const i in r)n[i]=r[i](s);return n}}function x1(e,t){const n=[],r={color:0,var:0,number:0};for(let s=0;s {const n=wt.createTransformer(t),r=Ar(e),s=Ar(t);return r.indexes.var.length===s.indexes.var.length&&r.indexes.color.length===s.indexes.color.length&&r.indexes.number.length>=s.indexes.number.length?Su.has(e)&&!s.values.length||Su.has(t)&&!r.values.length?f1(e,t):aa(Fg(x1(r,s),s.values),n):zi(e,t)};function Vg(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?ne(e,t,n):id(e)(e,t)}const v1=e=>{const t=({timestamp:n})=>e(n);return{start:(n=!0)=>Q.update(t,n),stop:()=>dt(t),now:()=>ke.isProcessing?ke.timestamp:Be.now()}},Og=(e,t,n=10)=>{let r="";const s=Math.max(Math.round(t/n),2);for(let i=0;i =Ri?1/0:t}function y1(e,t=100,n){const r=n({...e,keyframes:[0,t]}),s=Math.min(ld(r),Ri);return{type:"keyframes",ease:i=>r.next(s*i).value/t,duration:lt(s)}}const he={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Cu(e,t){return e*Math.sqrt(1-t*t)}const k1=12;function w1(e,t,n){let r=n;for(let s=1;s{const d=c*l,h=d*e,m=d-n,f=Cu(c,l),b=Math.exp(-h);return no-m/f*b},i=c=>{const h=c*l*e,m=h*n+n,f=Math.pow(l,2)*Math.pow(c,2)*e,b=Math.exp(-h),y=Cu(Math.pow(c,2),l);return(-s(c)+no>0?-1:1)*((m-f)*b)/y}):(s=c=>{const d=Math.exp(-c*e),h=(c-n)*e+1;return-no+d*h},i=c=>{const d=Math.exp(-c*e),h=(n-c)*(e*e);return d*h});const o=5/e,u=w1(s,i,o);if(e=Qe(e),isNaN(u))return{stiffness:he.stiffness,damping:he.damping,duration:e};{const c=Math.pow(u,2)*r;return{stiffness:c,damping:l*2*Math.sqrt(r*c),duration:e}}}const N1=["duration","bounce"],S1=["stiffness","damping","mass"];function am(e,t){return t.some(n=>e[n]!==void 0)}function C1(e){let t={velocity:he.velocity,stiffness:he.stiffness,damping:he.damping,mass:he.mass,isResolvedFromDuration:!1,...e};if(!am(e,S1)&&am(e,N1))if(t.velocity=0,e.visualDuration){const n=e.visualDuration,r=2*Math.PI/(n*1.2),s=r*r,i=2*Nt(.05,1,1-(e.bounce||0))*Math.sqrt(s);t={...t,mass:he.mass,stiffness:s,damping:i}}else{const n=j1({...e,velocity:0});t={...t,...n,mass:he.mass},t.isResolvedFromDuration=!0}return t}function Ii(e=he.visualDuration,t=he.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:r,restDelta:s}=n;const i=n.keyframes[0],l=n.keyframes[n.keyframes.length-1],o={done:!1,value:i},{stiffness:u,damping:c,mass:d,duration:h,velocity:m,isResolvedFromDuration:f}=C1({...n,velocity:-lt(n.velocity||0)}),b=m||0,y=c/(2*Math.sqrt(u*d)),w=l-i,x=lt(Math.sqrt(u/d)),p=Math.abs(w)<5;r||(r=p?he.restSpeed.granular:he.restSpeed.default),s||(s=p?he.restDelta.granular:he.restDelta.default);let v,k,j,C,S,P;if(y<1)j=Cu(x,y),C=(b+y*x*w)/j,v=N=>{const E=Math.exp(-y*x*N);return l-E*(C*Math.sin(j*N)+w*Math.cos(j*N))},S=y*x*C+w*j,P=y*x*w-C*j,k=N=>Math.exp(-y*x*N)*(S*Math.sin(j*N)+P*Math.cos(j*N));else if(y===1){v=E=>l-Math.exp(-x*E)*(w+(b+x*w)*E);const N=b+x*w;k=E=>Math.exp(-x*E)*(x*N*E-b)}else{const N=x*Math.sqrt(y*y-1);v=$=>{const Y=Math.exp(-y*x*$),R=Math.min(N*$,300);return l-Y*((b+y*x*w)*Math.sinh(R)+N*w*Math.cosh(R))/N};const E=(b+y*x*w)/N,B=y*x*E-w*N,O=y*x*w-E*N;k=$=>{const Y=Math.exp(-y*x*$),R=Math.min(N*$,300);return Y*(B*Math.sinh(R)+O*Math.cosh(R))}}const M={calculatedDuration:f&&h||null,velocity:N=>Qe(k(N)),next:N=>{if(!f&&y<1){const B=Math.exp(-y*x*N),O=Math.sin(j*N),$=Math.cos(j*N),Y=l-B*(C*O+w*$),R=Qe(B*(S*O+P*$));return o.done=Math.abs(R)<=r&&Math.abs(l-Y)<=s,o.value=o.done?l:Y,o}const E=v(N);if(f)o.done=N>=h;else{const B=Qe(k(N));o.done=Math.abs(B)<=r&&Math.abs(l-E)<=s}return o.value=o.done?l:E,o},toString:()=>{const N=Math.min(ld(M),Ri),E=Og(B=>M.next(N*B).value,N,30);return N+"ms "+E},toTransition:()=>{}};return M}Ii.applyToOptions=e=>{const t=y1(e,100,Ii);return e.ease=t.ease,e.duration=Qe(t.duration),e.type="keyframes",e};const P1=5;function Ug(e,t,n){const r=Math.max(t-P1,0);return ed(n-e(r),t-r)}function Pu({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:s=10,bounceStiffness:i=500,modifyTarget:l,min:o,max:u,restDelta:c=.5,restSpeed:d}){const h=e[0],m={done:!1,value:h},f=P=>o!==void 0&&P u,b=P=>o===void 0?u:u===void 0||Math.abs(o-P) -y*Math.exp(-P/r),v=P=>x+p(P),k=P=>{const M=p(P),N=v(P);m.done=Math.abs(M)<=c,m.value=m.done?x:N};let j,C;const S=P=>{f(m.value)&&(j=P,C=Ii({keyframes:[m.value,b(m.value)],velocity:Ug(v,P,m.value),damping:s,stiffness:i,restDelta:c,restSpeed:d}))};return S(0),{calculatedDuration:null,next:P=>{let M=!1;return!C&&j===void 0&&(M=!0,k(P),S(P)),j!==void 0&&P>=j?C.next(P-j):(!M&&k(P),m)}}}function E1(e,t,n){const r=[],s=n||jn.mix||Vg,i=e.length-1;for(let l=0;lt[0];if(i===2&&t[0]===t[1])return()=>t[1];const l=e[0]===e[1];e[0]>e[i-1]&&(e=[...e].reverse(),t=[...t].reverse());const o=E1(t,r,s),u=o.length,c=d=>{if(l&&d 1)for(;h c(Nt(e[0],e[i-1],d)):c}function T1(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const s=Tr(0,t,r);e.push(ne(n,1,s))}}function Wg(e){const t=[0];return T1(t,e.length-1),t}function A1(e,t){return e.map(n=>n*t)}function M1(e,t){return e.map(()=>t||Ag).splice(0,e.length-1)}function ks({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const s=Ow(r)?r.map(Jh):Jh(r),i={done:!1,value:t[0]},l=A1(n&&n.length===t.length?n:Wg(t),e),o=od(l,t,{ease:Array.isArray(s)?s:M1(t,s)});return{calculatedDuration:e,next:u=>(i.value=o(u),i.done=u>=e,i)}}const _1=e=>e!==null;function fl(e,{repeat:t,repeatType:n="loop"},r,s=1){const i=e.filter(_1),o=s<0||t&&n!=="loop"&&t%2===1?0:i.length-1;return!o||r===void 0?i[o]:r}const L1={decay:Pu,inertia:Pu,tween:ks,keyframes:ks,spring:Ii};function Hg(e){typeof e.type=="string"&&(e.type=L1[e.type])}class ud{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,n){return this.finished.then(t,n)}}const D1=e=>e/100;class Ys extends ud{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{var r,s;const{motionValue:n}=this.options;n&&n.updatedAt!==Be.now()&&this.tick(Be.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(s=(r=this.options).onStop)==null||s.call(r))},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;Hg(t);const{type:n=ks,repeat:r=0,repeatDelay:s=0,repeatType:i,velocity:l=0}=t;let{keyframes:o}=t;const u=n||ks;u!==ks&&typeof o[0]!="number"&&(this.mixKeyframes=aa(D1,Vg(o[0],o[1])),o=[0,100]);const c=u({...t,keyframes:o});i==="mirror"&&(this.mirroredGenerator=u({...t,keyframes:[...o].reverse(),velocity:-l})),c.calculatedDuration===null&&(c.calculatedDuration=ld(c));const{calculatedDuration:d}=c;this.calculatedDuration=d,this.resolvedDuration=d+s,this.totalDuration=this.resolvedDuration*(r+1)-s,this.generator=c}updateTime(t){const n=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(t,n=!1){const{generator:r,totalDuration:s,mixKeyframes:i,mirroredGenerator:l,resolvedDuration:o,calculatedDuration:u}=this;if(this.startTime===null)return r.next(0);const{delay:c=0,keyframes:d,repeat:h,repeatType:m,repeatDelay:f,type:b,onUpdate:y,finalKeyframe:w}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-s/this.speed,this.startTime)),n?this.currentTime=t:this.updateTime(t);const x=this.currentTime-c*(this.playbackSpeed>=0?1:-1),p=this.playbackSpeed>=0?x<0:x>s;this.currentTime=Math.max(x,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=s);let v=this.currentTime,k=r;if(h){const P=Math.min(this.currentTime,s)/o;let M=Math.floor(P),N=P%1;!N&&P>=1&&(N=1),N===1&&M--,M=Math.min(M,h+1),!!(M%2)&&(m==="reverse"?(N=1-N,f&&(N-=f/o)):m==="mirror"&&(k=l)),v=Nt(0,1,N)*o}let j;p?(this.delayState.value=d[0],j=this.delayState):j=k.next(v),i&&!p&&(j.value=i(j.value));let{done:C}=j;!p&&u!==null&&(C=this.playbackSpeed>=0?this.currentTime>=s:this.currentTime<=0);const S=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&C);return S&&b!==Pu&&(j.value=fl(d,this.options,w,this.speed)),y&&y(j.value),S&&this.finish(),j}then(t,n){return this.finished.then(t,n)}get duration(){return lt(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+lt(t)}get time(){return lt(this.currentTime)}set time(t){t=Qe(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const n=this.generator.next(t).value;return Ug(r=>this.generator.next(r).value,t,n)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;n&&this.driver&&this.updateTime(Be.now()),this.playbackSpeed=t,n&&this.driver&&(this.time=lt(this.currentTime))}play(){var s,i;if(this.isStopped)return;const{driver:t=v1,startTime:n}=this.options;this.driver||(this.driver=t(l=>this.tick(l))),(i=(s=this.options).onPlay)==null||i.call(s);const r=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=r):this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime||(this.startTime=n??r),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(Be.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var t,n;this.notifyFinished(),this.teardown(),this.state="finished",(n=(t=this.options).onComplete)==null||n.call(t)}cancel(){var t,n;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(n=(t=this.options).onCancel)==null||n.call(t)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){var n;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(n=this.driver)==null||n.stop(),t.observe(this)}}function B1(e){for(let t=1;t e*180/Math.PI,Eu=e=>{const t=Rn(Math.atan2(e[1],e[0]));return Tu(t)},z1={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:Eu,rotateZ:Eu,skewX:e=>Rn(Math.atan(e[1])),skewY:e=>Rn(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Tu=e=>(e=e%360,e<0&&(e+=360),e),im=Eu,lm=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),om=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),R1={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:lm,scaleY:om,scale:e=>(lm(e)+om(e))/2,rotateX:e=>Tu(Rn(Math.atan2(e[6],e[5]))),rotateY:e=>Tu(Rn(Math.atan2(-e[2],e[0]))),rotateZ:im,rotate:im,skewX:e=>Rn(Math.atan(e[4])),skewY:e=>Rn(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function Au(e){return e.includes("scale")?1:0}function Mu(e,t){if(!e||e==="none")return Au(t);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let r,s;if(n)r=R1,s=n;else{const o=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);r=z1,s=o}if(!s)return Au(t);const i=r[t],l=s[1].split(",").map(F1);return typeof i=="function"?i(l):l[i]}const I1=(e,t)=>{const{transform:n="none"}=getComputedStyle(e);return Mu(n,t)};function F1(e){return parseFloat(e.trim())}const Wr=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Hr=new Set([...Wr,"pathRotation"]),um=e=>e===Ur||e===V,V1=new Set(["x","y","z"]),O1=Wr.filter(e=>!V1.has(e));function U1(e){const t=[];return O1.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t}const un={width:({x:e},{paddingLeft:t="0",paddingRight:n="0",boxSizing:r})=>{const s=e.max-e.min;return r==="border-box"?s:s-parseFloat(t)-parseFloat(n)},height:({y:e},{paddingTop:t="0",paddingBottom:n="0",boxSizing:r})=>{const s=e.max-e.min;return r==="border-box"?s:s-parseFloat(t)-parseFloat(n)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>Mu(t,"x"),y:(e,{transform:t})=>Mu(t,"y")};un.translateX=un.x;un.translateY=un.y;const Vn=new Set;let _u=!1,Lu=!1,Du=!1;function $g(){if(Lu){const e=Array.from(Vn).filter(r=>r.needsMeasurement),t=new Set(e.map(r=>r.element)),n=new Map;t.forEach(r=>{const s=U1(r);s.length&&(n.set(r,s),r.render())}),e.forEach(r=>r.measureInitialState()),t.forEach(r=>{r.render();const s=n.get(r);s&&s.forEach(([i,l])=>{var o;(o=r.getValue(i))==null||o.set(l)})}),e.forEach(r=>r.measureEndState()),e.forEach(r=>{r.suspendedScrollY!==void 0&&window.scrollTo(0,r.suspendedScrollY)})}Lu=!1,_u=!1,Vn.forEach(e=>e.complete(Du)),Vn.clear()}function Gg(){Vn.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Lu=!0)})}function W1(){Du=!0,Gg(),$g(),Du=!1}class cd{constructor(t,n,r,s,i,l=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=r,this.motionValue=s,this.element=i,this.isAsync=l}scheduleResolve(){this.state="scheduled",this.isAsync?(Vn.add(this),_u||(_u=!0,Q.read(Gg),Q.resolveKeyframes($g))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:r,motionValue:s}=this;if(t[0]===null){const i=s==null?void 0:s.get(),l=t[t.length-1];if(i!==void 0)t[0]=i;else if(r&&n){const o=r.readValue(n,l);o!=null&&(t[0]=o)}t[0]===void 0&&(t[0]=l),s&&i===void 0&&s.set(t[0])}B1(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),Vn.delete(this)}cancel(){this.state==="scheduled"&&(Vn.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const H1=e=>e.startsWith("--");function Kg(e,t,n){H1(t)?e.style.setProperty(t,n):e.style[t]=n}const $1={};function dd(e,t){const n=kg(e);return()=>$1[t]??n()}const hd=dd(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),qg=dd(()=>window.ViewTimeline!==void 0,"viewTimeline"),Yg=dd(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),us=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,cm={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:us([0,.65,.55,1]),circOut:us([.55,0,1,.45]),backIn:us([.31,.01,.66,-.59]),backOut:us([.33,1.53,.69,.99])};function Xg(e,t){if(e)return typeof e=="function"?Yg()?Og(e,t):"ease-out":Mg(e)?us(e):Array.isArray(e)?e.map(n=>Xg(n,t)||cm.easeOut):cm[e]}function G1(e,t,n,{delay:r=0,duration:s=300,repeat:i=0,repeatType:l="loop",ease:o="easeOut",times:u}={},c=void 0){const d={[t]:n};u&&(d.offset=u);const h=Xg(o,s);Array.isArray(h)&&(d.easing=h);const m={delay:r,duration:s,easing:Array.isArray(h)?"linear":h,fill:"both",iterations:i+1,direction:l==="reverse"?"alternate":"normal"};return c&&(m.pseudoElement=c),e.animate(d,m)}function Zg(e){return typeof e=="function"&&"applyToOptions"in e}function K1({type:e,...t}){return Zg(e)&&Yg()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class Qg extends ud{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:n,name:r,keyframes:s,pseudoElement:i,allowFlatten:l=!1,finalKeyframe:o,onComplete:u}=t;this.isPseudoElement=!!i,this.allowFlatten=l,this.options=t,Qc(typeof t.type!="string");const c=K1(t);this.animation=G1(n,r,s,c,i),c.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!i){const d=fl(s,this.options,o,this.speed);this.updateMotionValue&&this.updateMotionValue(d),Kg(n,r,d),this.animation.cancel()}u==null||u(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var t,n;(n=(t=this.animation).finish)==null||n.call(t)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var n,r,s;const t=(n=this.options)==null?void 0:n.element;!this.isPseudoElement&&(t!=null&&t.isConnected)&&((s=(r=this.animation).commitStyles)==null||s.call(r))}get duration(){var n,r;const t=((r=(n=this.animation.effect)==null?void 0:n.getComputedTiming)==null?void 0:r.call(n).duration)||0;return lt(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+lt(t)}get time(){return lt(Number(this.animation.currentTime)||0)}set time(t){const n=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Qe(t),n&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:n,rangeEnd:r,observe:s}){var i;return this.allowFlatten&&((i=this.animation.effect)==null||i.updateTiming({easing:"linear"})),this.animation.onfinish=null,t&&hd()?(this.animation.timeline=t,n&&(this.animation.rangeStart=n),r&&(this.animation.rangeEnd=r),Ke):s(this)}}const Jg={anticipate:Pg,backInOut:Cg,circInOut:Tg};function q1(e){return e in Jg}function Y1(e){typeof e.ease=="string"&&q1(e.ease)&&(e.ease=Jg[e.ease])}const ro=10;class X1 extends Qg{constructor(t){Y1(t),Hg(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:n,onUpdate:r,onComplete:s,element:i,...l}=this.options;if(!n)return;if(t!==void 0){n.set(t);return}const o=new Ys({...l,autoplay:!1}),u=Math.max(ro,Be.now()-this.startTime),c=Nt(0,ro,u-ro),d=o.sample(u).value,{name:h}=this.options;i&&h&&Kg(i,h,d),n.setWithVelocity(o.sample(Math.max(0,u-c)).value,d,c),o.stop()}}const dm=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(wt.test(e)||e==="0")&&!e.startsWith("url("));function Z1(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n Object.hasOwnProperty.call(Element.prototype,"animate"));function rj(e){var h;const{motionValue:t,name:n,repeatDelay:r,repeatType:s,damping:i,type:l,keyframes:o}=e;if(!(((h=t==null?void 0:t.owner)==null?void 0:h.current)instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:d}=t.owner.getProps();return nj()&&n&&(ex.has(n)||tj.has(n)&&ej(o))&&(n!=="transform"||!d)&&!c&&!r&&s!=="mirror"&&i!==0&&l!=="inertia"}const sj=40;class aj extends ud{constructor({autoplay:t=!0,delay:n=0,type:r="keyframes",repeat:s=0,repeatDelay:i=0,repeatType:l="loop",keyframes:o,name:u,motionValue:c,element:d,...h}){var b;super(),this.stop=()=>{var y,w;this._animation&&(this._animation.stop(),(y=this.stopTimeline)==null||y.call(this)),(w=this.keyframeResolver)==null||w.cancel()},this.createdAt=Be.now();const m={autoplay:t,delay:n,type:r,repeat:s,repeatDelay:i,repeatType:l,name:u,motionValue:c,element:d,...h},f=(d==null?void 0:d.KeyframeResolver)||cd;this.keyframeResolver=new f(o,(y,w,x)=>this.onKeyframesResolved(y,w,m,!x),u,c,d),(b=this.keyframeResolver)==null||b.scheduleResolve()}onKeyframesResolved(t,n,r,s){var x,p;this.keyframeResolver=void 0;const{name:i,type:l,velocity:o,delay:u,isHandoff:c,onUpdate:d}=r;this.resolvedAt=Be.now();let h=!0;Q1(t,i,l,o)||(h=!1,(jn.instantAnimations||!u)&&(d==null||d(fl(t,r,n))),t[0]=t[t.length-1],Bu(r),r.repeat=0);const f={startTime:s?this.resolvedAt?this.resolvedAt-this.createdAt>sj?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...r,keyframes:t},b=h&&!c&&rj(f),y=(p=(x=f.motionValue)==null?void 0:x.owner)==null?void 0:p.current;let w;if(b)try{w=new X1({...f,element:y})}catch{w=new Ys(f)}else w=new Ys(f);w.finished.then(()=>{this.notifyFinished()}).catch(Ke),this.pendingTimeline&&(this.stopTimeline=w.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=w}get finished(){return this._animation?this.animation.finished:this._finished}then(t,n){return this.finished.finally(t).then(()=>{})}get animation(){var t;return this._animation||((t=this.keyframeResolver)==null||t.resume(),W1()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var t;this._animation&&this.animation.cancel(),(t=this.keyframeResolver)==null||t.cancel()}}function tx(e,t,n,r=0,s=1){const i=Array.from(e).sort((c,d)=>c.sortNodePosition(d)).indexOf(t),l=e.size,o=(l-1)*r;return typeof n=="function"?n(i,l):s===1?i*r:o-i*r}const hm=30,ij=e=>!isNaN(parseFloat(e)),ws={current:void 0};class lj{constructor(t,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=r=>{var i;const s=Be.now();if(this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(r),this.current!==this.prev&&((i=this.events.change)==null||i.notify(this.current),this.dependents))for(const l of this.dependents)l.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=Be.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=ij(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new Jc);const r=this.events[t].add(n);return t==="change"?()=>{r(),Q.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,n,r){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-r}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var t;(t=this.events.change)==null||t.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return ws.current&&ws.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const t=Be.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>hm)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,hm);return ed(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var t,n;(t=this.dependents)==null||t.clear(),(n=this.events.destroy)==null||n.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function vt(e,t){return new lj(e,t)}function nx(e,t){if(e!=null&&e.inherit&&t){const{inherit:n,...r}=e;return{...t,...r}}return e}function md(e,t){const n=(e==null?void 0:e[t])??(e==null?void 0:e.default)??e;return n!==e?nx(n,e):n}const oj={type:"spring",stiffness:500,damping:25,restSpeed:10},uj=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),cj={type:"keyframes",duration:.8},dj={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},hj=(e,{keyframes:t})=>t.length>2?cj:Hr.has(e)?e.startsWith("scale")?uj(t[1]):oj:dj,mj=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function fj(e){for(const t in e)if(!mj.has(t))return!0;return!1}const fd=(e,t,n,r={},s,i)=>l=>{const o=md(r,e)||{},u=o.delay||r.delay||0;let{elapsed:c=0}=r;c=c-Qe(u);const d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...o,delay:-c,onUpdate:m=>{t.set(m),o.onUpdate&&o.onUpdate(m)},onComplete:()=>{l(),o.onComplete&&o.onComplete()},name:e,motionValue:t,element:i?void 0:s};fj(o)||Object.assign(d,hj(e,d)),d.duration&&(d.duration=Qe(d.duration)),d.repeatDelay&&(d.repeatDelay=Qe(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let h=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(Bu(d),d.delay===0&&(h=!0)),(jn.instantAnimations||jn.skipAnimations||s!=null&&s.shouldSkipAnimations||o.skipAnimations)&&(h=!0,Bu(d),d.delay=0),d.allowFlatten=!o.type&&!o.ease,h&&!i&&t.get()!==void 0){const m=fl(d.keyframes,o);if(m!==void 0){Q.update(()=>{d.onUpdate(m),d.onComplete()});return}}return o.isSync?new Ys(d):new aj(d)},pj=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function gj(e){const t=pj.exec(e);if(!t)return[,];const[,n,r,s]=t;return[`--${n??r}`,s]}function rx(e,t,n=1){const[r,s]=gj(e);if(!r)return;const i=window.getComputedStyle(t).getPropertyValue(r);if(i){const l=i.trim();return bg(l)?parseFloat(l):l}return rd(s)?rx(s,t,n+1):s}function mm(e){const t=[{},{}];return e==null||e.values.forEach((n,r)=>{t[0][r]=n.get(),t[1][r]=n.getVelocity()}),t}function pd(e,t,n,r){if(typeof t=="function"){const[s,i]=mm(r);t=t(n!==void 0?n:e.custom,s,i)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[s,i]=mm(r);t=t(n!==void 0?n:e.custom,s,i)}return t}function On(e,t,n){const r=e.getProps();return pd(r,t,n!==void 0?n:r.custom,e)}const sx=new Set(["width","height","top","left","right","bottom",...Wr]),zu=e=>Array.isArray(e);function xj(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,vt(n))}function bj(e){return zu(e)?e[e.length-1]||0:e}function vj(e,t){const n=On(e,t);let{transitionEnd:r={},transition:s={},...i}=n||{};i={...i,...r};for(const l in i){const o=bj(i[l]);xj(e,l,o)}}const ye=e=>!!(e&&e.getVelocity);function yj(e){return!!(ye(e)&&e.add)}function Ru(e,t){const n=e.getValue("willChange");if(yj(n))return n.add(t);if(!n&&jn.WillChange){const r=new jn.WillChange("auto");e.addValue("willChange",r),r.add(t)}}function gd(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const kj="framerAppearId",ax="data-"+gd(kj);function ix(e){return e.props[ax]}function wj({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,r}function lx(e,t,{delay:n=0,transitionOverride:r,type:s}={}){let{transition:i,transitionEnd:l,...o}=t;const u=e.getDefaultTransition();i=i?nx(i,u):u;const c=i==null?void 0:i.reduceMotion,d=i==null?void 0:i.skipAnimations;r&&(i=r);const h=[],m=s&&e.animationState&&e.animationState.getState()[s],f=i==null?void 0:i.path;f&&f.animateVisualElement(e,o,i,n,h);for(const b in o){const y=e.getValue(b,e.latestValues[b]??null),w=o[b];if(w===void 0||m&&wj(m,b))continue;const x={delay:n,...md(i||{},b)};d&&(x.skipAnimations=!0);const p=y.get();if(p!==void 0&&!y.isAnimating()&&!Array.isArray(w)&&w===p&&!x.velocity){Q.update(()=>y.set(w));continue}let v=!1;if(window.MotionHandoffAnimation){const C=ix(e);if(C){const S=window.MotionHandoffAnimation(C,b,Q);S!==null&&(x.startTime=S,v=!0)}}Ru(e,b);const k=c??e.shouldReduceMotion;y.start(fd(b,y,w,k&&sx.has(b)?{type:!1}:x,e,v));const j=y.animation;j&&h.push(j)}if(l){const b=()=>Q.update(()=>{l&&vj(e,l)});h.length?Promise.all(h).then(b):b()}return h}function Iu(e,t,n={}){var u;const r=On(e,t,n.type==="exit"?(u=e.presenceContext)==null?void 0:u.custom:void 0);let{transition:s=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(s=n.transitionOverride);const i=r?()=>Promise.all(lx(e,r,n)):()=>Promise.resolve(),l=e.variantChildren&&e.variantChildren.size?(c=0)=>{const{delayChildren:d=0,staggerChildren:h,staggerDirection:m}=s;return jj(e,t,c,d,h,m,n)}:()=>Promise.resolve(),{when:o}=s;if(o){const[c,d]=o==="beforeChildren"?[i,l]:[l,i];return c().then(()=>d())}else return Promise.all([i(),l(n.delay)])}function jj(e,t,n=0,r=0,s=0,i=1,l){const o=[];for(const u of e.variantChildren)u.notify("AnimationStart",t),o.push(Iu(u,t,{...l,delay:n+(typeof r=="function"?0:r)+tx(e.variantChildren,u,r,s,i)}).then(()=>u.notify("AnimationComplete",t)));return Promise.all(o)}function Nj(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const s=t.map(i=>Iu(e,i,n));r=Promise.all(s)}else if(typeof t=="string")r=Iu(e,t,n);else{const s=typeof t=="function"?On(e,t,n.custom):t;r=Promise.all(lx(e,s,n))}return r.then(()=>{e.notify("AnimationComplete",t)})}const Sj={test:e=>e==="auto",parse:e=>e},ox=e=>t=>t.test(e),ux=[Ur,V,_t,Rt,e1,Jw,Sj],fm=e=>ux.find(ox(e));function Cj(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||yg(e):!0}const Pj=new Set(["brightness","contrast","saturate","opacity"]);function Ej(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(sd)||[];if(!r)return e;const s=n.replace(r,"");let i=Pj.has(t)?1:0;return r!==n&&(i*=100),t+"("+i+s+")"}const Tj=/\b([a-z-]*)\(.*?\)/gu,Fu={...wt,getAnimatableNone:e=>{const t=e.match(Tj);return t?t.map(Ej).join(" "):e}},Vu={...wt,getAnimatableNone:e=>{const t=wt.parse(e);return wt.createTransformer(e)(t.map(r=>typeof r=="number"?0:typeof r=="object"?{...r,alpha:1}:r))}},pm={...Ur,transform:Math.round},Aj={rotate:Rt,pathRotation:Rt,rotateX:Rt,rotateY:Rt,rotateZ:Rt,scale:_a,scaleX:_a,scaleY:_a,scaleZ:_a,skew:Rt,skewX:Rt,skewY:Rt,distance:V,translateX:V,translateY:V,translateZ:V,x:V,y:V,z:V,perspective:V,transformPerspective:V,opacity:qs,originX:tm,originY:tm,originZ:V},Fi={borderWidth:V,borderTopWidth:V,borderRightWidth:V,borderBottomWidth:V,borderLeftWidth:V,borderRadius:V,borderTopLeftRadius:V,borderTopRightRadius:V,borderBottomRightRadius:V,borderBottomLeftRadius:V,width:V,maxWidth:V,height:V,maxHeight:V,top:V,right:V,bottom:V,left:V,inset:V,insetBlock:V,insetBlockStart:V,insetBlockEnd:V,insetInline:V,insetInlineStart:V,insetInlineEnd:V,padding:V,paddingTop:V,paddingRight:V,paddingBottom:V,paddingLeft:V,paddingBlock:V,paddingBlockStart:V,paddingBlockEnd:V,paddingInline:V,paddingInlineStart:V,paddingInlineEnd:V,margin:V,marginTop:V,marginRight:V,marginBottom:V,marginLeft:V,marginBlock:V,marginBlockStart:V,marginBlockEnd:V,marginInline:V,marginInlineStart:V,marginInlineEnd:V,fontSize:V,backgroundPositionX:V,backgroundPositionY:V,...Aj,zIndex:pm,fillOpacity:qs,strokeOpacity:qs,numOctaves:pm},Mj={...Fi,color:pe,backgroundColor:pe,outlineColor:pe,fill:pe,stroke:pe,borderColor:pe,borderTopColor:pe,borderRightColor:pe,borderBottomColor:pe,borderLeftColor:pe,filter:Fu,WebkitFilter:Fu,mask:Vu,WebkitMask:Vu},cx=e=>Mj[e],_j=new Set([Fu,Vu]);function dx(e,t){let n=cx(e);return _j.has(n)||(n=wt),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const Lj=new Set(["auto","none","0"]);function Dj(e,t,n){let r=0,s;for(;r {t.getValue(u).set(c)}),this.resolveNoneKeyframes()}}const xd=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"];function hx(e,t,n){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){const s=document.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e).filter(r=>r!=null)}const Ou=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function js(e){return vg(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:Mr,cancel:mx}=_g(queueMicrotask,!1),pt={x:!1,y:!1};function fx(){return pt.x||pt.y}function zj(e){return e==="x"||e==="y"?pt[e]?null:(pt[e]=!0,()=>{pt[e]=!1}):pt.x||pt.y?null:(pt.x=pt.y=!0,()=>{pt.x=pt.y=!1})}function px(e,t){const n=hx(e),r=new AbortController,s={passive:!0,...t,signal:r.signal};return[n,s,()=>r.abort()]}function Rj(e){return!(e.pointerType==="touch"||fx())}function Ij(e,t,n={}){const[r,s,i]=px(e,n);return r.forEach(l=>{let o=!1,u=!1,c;const d=()=>{l.removeEventListener("pointerleave",b)},h=w=>{c&&(c(w),c=void 0),d()},m=w=>{o=!1,window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),u&&(u=!1,h(w))},f=()=>{o=!0,window.addEventListener("pointerup",m,s),window.addEventListener("pointercancel",m,s)},b=w=>{if(w.pointerType!=="touch"){if(o){u=!0;return}h(w)}},y=w=>{if(!Rj(w))return;u=!1;const x=t(l,w);typeof x=="function"&&(c=x,l.addEventListener("pointerleave",b,s))};l.addEventListener("pointerenter",y,s),l.addEventListener("pointerdown",f,s)}),i}const gx=(e,t)=>t?e===t?!0:gx(e,t.parentElement):!1,bd=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,Fj=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function Vj(e){return Fj.has(e.tagName)||e.isContentEditable===!0}const Oj=new Set(["INPUT","SELECT","TEXTAREA"]);function Uj(e){return Oj.has(e.tagName)||e.isContentEditable===!0}const ti=new WeakSet;function gm(e){return t=>{t.key==="Enter"&&e(t)}}function so(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const Wj=(e,t)=>{const n=e.currentTarget;if(!n)return;const r=gm(()=>{if(ti.has(n))return;so(n,"down");const s=gm(()=>{so(n,"up")}),i=()=>so(n,"cancel");n.addEventListener("keyup",s,t),n.addEventListener("blur",i,t)});n.addEventListener("keydown",r,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",r),t)};function xm(e){return bd(e)&&!fx()}const bm=new WeakSet;function Hj(e,t,n={}){const[r,s,i]=px(e,n),l=o=>{const u=o.currentTarget;if(!xm(o)||bm.has(o))return;ti.add(u),n.stopPropagation&&bm.add(o);const c=t(u,o),d={...s,capture:!0},h=(b,y)=>{window.removeEventListener("pointerup",m,d),window.removeEventListener("pointercancel",f,d),ti.has(u)&&ti.delete(u),xm(b)&&typeof c=="function"&&c(b,{success:y})},m=b=>{h(b,u===window||u===document||n.useGlobalTarget||gx(u,b.target))},f=b=>{h(b,!1)};window.addEventListener("pointerup",m,d),window.addEventListener("pointercancel",f,d)};return r.forEach(o=>{(n.useGlobalTarget?window:o).addEventListener("pointerdown",l,s),js(o)&&(o.addEventListener("focus",c=>Wj(c,s)),!Vj(o)&&!o.hasAttribute("tabindex")&&(o.tabIndex=0))}),i}function vd(e){return vg(e)&&"ownerSVGElement"in e}const ni=new WeakMap;let Jt;const xx=(e,t,n)=>(r,s)=>s&&s[0]?s[0][e+"Size"]:vd(r)&&"getBBox"in r?r.getBBox()[t]:r[n],$j=xx("inline","width","offsetWidth"),Gj=xx("block","height","offsetHeight");function Kj({target:e,borderBoxSize:t}){var n;(n=ni.get(e))==null||n.forEach(r=>{r(e,{get width(){return $j(e,t)},get height(){return Gj(e,t)}})})}function qj(e){e.forEach(Kj)}function Yj(){typeof ResizeObserver>"u"||(Jt=new ResizeObserver(qj))}function Xj(e,t){Jt||Yj();const n=hx(e);return n.forEach(r=>{let s=ni.get(r);s||(s=new Set,ni.set(r,s)),s.add(t),Jt==null||Jt.observe(r)}),()=>{n.forEach(r=>{const s=ni.get(r);s==null||s.delete(t),s!=null&&s.size||Jt==null||Jt.unobserve(r)})}}const ri=new Set;let hr;function Zj(){hr=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};ri.forEach(t=>t(e))},window.addEventListener("resize",hr)}function Qj(e){return ri.add(e),hr||Zj(),()=>{ri.delete(e),!ri.size&&typeof hr=="function"&&(window.removeEventListener("resize",hr),hr=void 0)}}function Uu(e,t){return typeof e=="function"?Qj(e):Xj(e,t)}function bx(e,t){let n;const r=()=>{const{currentTime:s}=t,l=(s===null?0:s.value)/100;n!==l&&e(l),n=l};return Q.preUpdate(r,!0),()=>dt(r)}function Jj(e){return vd(e)&&e.tagName==="svg"}function eN(...e){const t=!Array.isArray(e[0]),n=t?0:-1,r=e[0+n],s=e[1+n],i=e[2+n],l=e[3+n],o=od(s,i,l);return t?o(r):o}function tN(e,t,n={}){const r=e.get();let s=null,i=r,l;const o=typeof r=="string"?r.replace(/[\d.-]/g,""):void 0,u=()=>{s&&(s.stop(),s=null),e.animation=void 0},c=()=>{const h=vm(e.get()),m=vm(i);if(h===m){u();return}const f=s?s.getGeneratorVelocity():e.getVelocity();u(),s=new Ys({keyframes:[h,m],velocity:f,type:"spring",restDelta:.001,restSpeed:.01,...n,onUpdate:l})},d=()=>{var h;c(),e.animation=s??void 0,(h=e.events.animationStart)==null||h.notify(),s==null||s.then(()=>{var m;e.animation=void 0,(m=e.events.animationComplete)==null||m.notify()})};if(e.attach((h,m)=>{i=h,l=f=>m(ao(f,o)),Q.postRender(d)},u),ye(t)){let h=n.skipInitialAnimation===!0;const m=t.on("change",b=>{h?(h=!1,e.jump(ao(b,o),!1)):e.set(ao(b,o))}),f=e.on("destroy",m);return()=>{m(),f()}}return u}function ao(e,t){return t?e+t:e}function vm(e){return typeof e=="number"?e:parseFloat(e)}const nN=[...ux,pe,wt],rN=e=>nN.find(ox(e)),ym=()=>({translate:0,scale:1,origin:0,originPoint:0}),mr=()=>({x:ym(),y:ym()}),km=()=>({min:0,max:0}),xe=()=>({x:km(),y:km()}),sN=new WeakMap;function pl(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Xs(e){return typeof e=="string"||Array.isArray(e)}const yd=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],kd=["initial",...yd];function gl(e){return pl(e.animate)||kd.some(t=>Xs(e[t]))}function vx(e){return!!(gl(e)||e.variants)}function aN(e,t,n){for(const r in t){const s=t[r],i=n[r];if(ye(s))e.addValue(r,s);else if(ye(i))e.addValue(r,vt(s,{owner:e}));else if(i!==s)if(e.hasValue(r)){const l=e.getValue(r);l.liveStyle===!0?l.jump(s):l.hasAnimated||l.set(s)}else{const l=e.getStaticValue(r);e.addValue(r,vt(l!==void 0?l:s,{owner:e}))}}for(const r in n)t[r]===void 0&&e.removeValue(r);return t}const Wu={current:null},yx={current:!1},iN=typeof window<"u";function lN(){if(yx.current=!0,!!iN)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Wu.current=e.matches;e.addEventListener("change",t),t()}else Wu.current=!1}const wm=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let Vi={};function kx(e){Vi=e}function oN(){return Vi}class uN{scrapeMotionValuesFromProps(t,n,r){return{}}constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:s,skipAnimations:i,blockInitialAnimation:l,visualState:o},u={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=cd,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const f=Be.now();this.renderScheduledAt this.bindToMotionValue(i,s)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(yx.current||lN(),this.shouldReduceMotion=Wu.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(r=this.parent)==null||r.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var t;this.projection&&this.projection.unmount(),dt(this.notifyUpdate),dt(this.render),this.valueSubscriptions.forEach(n=>n()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(t=this.parent)==null||t.removeChild(this);for(const n in this.events)this.events[n].clear();for(const n in this.features){const r=this.features[n];r&&(r.unmount(),r.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,n){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),n.accelerate&&ex.has(t)&&this.current instanceof HTMLElement){const{factory:l,keyframes:o,times:u,ease:c,duration:d}=n.accelerate,h=new Qg({element:this.current,name:t,keyframes:o,times:u,ease:c,duration:Qe(d)}),m=l(h);this.valueSubscriptions.set(t,()=>{m(),h.cancel()});return}const r=Hr.has(t);r&&this.onBindTransform&&this.onBindTransform();const s=n.on("change",l=>{this.latestValues[t]=l,this.props.onUpdate&&Q.preRender(this.notifyUpdate),r&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let i;typeof window<"u"&&window.MotionCheckAppearSync&&(i=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{s(),i&&i()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in Vi){const n=Vi[t];if(!n)continue;const{isEnabled:r,Feature:s}=n;if(!this.features[t]&&s&&r(this.props)&&(this.features[t]=new s(this)),this.features[t]){const i=this.features[t];i.isMounted?i.update():(i.mount(),i.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):xe()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;r n.variantChildren.delete(t)}addValue(t,n){const r=this.values.get(t);n!==r&&(r&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let r=this.values.get(t);return r===void 0&&n!==void 0&&(r=vt(n===null?void 0:n,{owner:this}),this.addValue(t,r)),r}readValue(t,n){let r=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return r!=null&&(typeof r=="string"&&(bg(r)||yg(r))?r=parseFloat(r):!rN(r)&&wt.test(n)&&(r=dx(t,n)),this.setBaseTarget(t,ye(r)?r.get():r)),ye(r)?r.get():r}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var i;const{initial:n}=this.props;let r;if(typeof n=="string"||typeof n=="object"){const l=pd(this.props,n,(i=this.presenceContext)==null?void 0:i.custom);l&&(r=l[t])}if(n&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,t);return s!==void 0&&!ye(s)?s:this.initialValues[t]!==void 0&&r===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Jc),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}scheduleRenderMicrotask(){Mr.render(this.render)}}class wx extends uN{constructor(){super(...arguments),this.KeyframeResolver=Bj}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){const r=t.style;return r?r[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;ye(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}class Pn{constructor(t){this.isMounted=!1,this.node=t}update(){}}function jx({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function cN({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function dN(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function io(e){return e===void 0||e===1}function Hu({scale:e,scaleX:t,scaleY:n}){return!io(e)||!io(t)||!io(n)}function _n(e){return Hu(e)||Nx(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function Nx(e){return jm(e.x)||jm(e.y)}function jm(e){return e&&e!=="0%"}function Oi(e,t,n){const r=e-n,s=t*r;return n+s}function Nm(e,t,n,r,s){return s!==void 0&&(e=Oi(e,s,r)),Oi(e,n,r)+t}function $u(e,t=0,n=1,r,s){e.min=Nm(e.min,t,n,r,s),e.max=Nm(e.max,t,n,r,s)}function Sx(e,{x:t,y:n}){$u(e.x,t.translate,t.scale,t.originPoint),$u(e.y,n.translate,n.scale,n.originPoint)}const Sm=.999999999999,Cm=1.0000000000001;function hN(e,t,n,r=!1){var o;const s=n.length;if(!s)return;t.x=t.y=1;let i,l;for(let u=0;u Sm&&(t.x=1),t.ySm&&(t.y=1)}function Et(e,t){e.min+=t,e.max+=t}function Pm(e,t,n,r,s=.5){const i=ne(e.min,e.max,s);$u(e,t,n,i,r)}function Em(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function si(e,t,n){const r=n??e;Pm(e.x,Em(t.x,r.x),t.scaleX,t.scale,t.originX),Pm(e.y,Em(t.y,r.y),t.scaleY,t.scale,t.originY)}function Cx(e,t){return jx(dN(e.getBoundingClientRect(),t))}function mN(e,t,n){const r=Cx(e,n),{scroll:s}=t;return s&&(Et(r.x,s.offset.x),Et(r.y,s.offset.y)),r}const fN={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},pN=Wr.length;function gN(e,t,n){let r="",s=!0;for(let l=0;l {if(!t.target)return e;if(typeof e=="string")if(V.test(e))e=parseFloat(e);else return e;const n=Tm(e,t.target.x),r=Tm(e,t.target.y);return`${n}% ${r}%`}},xN={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,s=wt.parse(e);if(s.length>5)return r;const i=wt.createTransformer(e),l=typeof s[0]!="number"?1:0,o=n.x.scale*t.x,u=n.y.scale*t.y;s[0+l]/=o,s[1+l]/=u;const c=ne(o,u,.5);return typeof s[2+l]=="number"&&(s[2+l]/=c),typeof s[3+l]=="number"&&(s[3+l]/=c),i(s)}},Gu={borderRadius:{...rs,applyTo:[...xd]},borderTopLeftRadius:rs,borderTopRightRadius:rs,borderBottomLeftRadius:rs,borderBottomRightRadius:rs,boxShadow:xN};function Ex(e,{layout:t,layoutId:n}){return Hr.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!Gu[e]||e==="opacity")}function jd(e,t,n){var l;const r=e.style,s=t==null?void 0:t.style,i={};if(!r)return i;for(const o in r)(ye(r[o])||s&&ye(s[o])||Ex(o,e)||((l=n==null?void 0:n.getValue(o))==null?void 0:l.liveStyle)!==void 0)&&(i[o]=r[o]);return i}function bN(e){return window.getComputedStyle(e)}class vN extends wx{constructor(){super(...arguments),this.type="html",this.renderInstance=Px}readValueFromInstance(t,n){var r;if(Hr.has(n))return(r=this.projection)!=null&&r.isProjecting?Au(n):I1(t,n);{const s=bN(t),i=(Dg(n)?s.getPropertyValue(n):s[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Cx(t,n)}build(t,n,r){wd(t,n,r.transformTemplate)}scrapeMotionValuesFromProps(t,n,r){return jd(t,n,r)}}const yN={offset:"stroke-dashoffset",array:"stroke-dasharray"},kN={offset:"strokeDashoffset",array:"strokeDasharray"};function wN(e,t,n=1,r=0,s=!0){e.pathLength=1;const i=s?yN:kN;e[i.offset]=`${-r}`,e[i.array]=`${t} ${n}`}const jN=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function Tx(e,{attrX:t,attrY:n,attrScale:r,pathLength:s,pathSpacing:i=1,pathOffset:l=0,...o},u,c,d){if(wd(e,o,c),u){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:m}=e;h.transform&&(m.transform=h.transform,delete h.transform),(m.transform||h.transformOrigin)&&(m.transformOrigin=h.transformOrigin??"50% 50%",delete h.transformOrigin),m.transform&&(m.transformBox=(d==null?void 0:d.transformBox)??"fill-box",delete h.transformBox);for(const f of jN)h[f]!==void 0&&(m[f]=h[f],delete h[f]);t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),r!==void 0&&(h.scale=r),s!==void 0&&wN(h,s,i,l,!1)}const Ax=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),Mx=e=>typeof e=="string"&&e.toLowerCase()==="svg";function NN(e,t,n,r){Px(e,t,void 0,r);for(const s in t.attrs)e.setAttribute(Ax.has(s)?s:gd(s),t.attrs[s])}function _x(e,t,n){const r=jd(e,t,n);for(const s in e)if(ye(e[s])||ye(t[s])){const i=Wr.indexOf(s)!==-1?"attr"+s.charAt(0).toUpperCase()+s.substring(1):s;r[i]=e[s]}return r}class SN extends wx{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=xe}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Hr.has(n)){const r=cx(n);return r&&r.default||0}return n=Ax.has(n)?n:gd(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,r){return _x(t,n,r)}build(t,n,r){Tx(t,n,this.isSVGTag,r.transformTemplate,r.style)}renderInstance(t,n,r,s){NN(t,n,r,s)}mount(t){this.isSVGTag=Mx(t.tagName),super.mount(t)}}const CN=kd.length;function Lx(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?Lx(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n Promise.all(t.map(({animation:n,options:r})=>Nj(e,n,r)))}function AN(e){let t=TN(e),n=Am(),r=!0,s=!1;const i=c=>(d,h)=>{var f;const m=On(e,h,c==="exit"?(f=e.presenceContext)==null?void 0:f.custom:void 0);if(m){const{transition:b,transitionEnd:y,...w}=m;d={...d,...w,...y}}return d};function l(c){t=c(e)}function o(c){const{props:d}=e,h=Lx(e.parent)||{},m=[],f=new Set;let b={},y=1/0;for(let x=0;x y&&j,N=!1;const E=Array.isArray(k)?k:[k];let B=E.reduce(i(p),{});C===!1&&(B={});const{prevResolvedValues:O={}}=v,$={...O,...B},Y=_=>{M=!0,f.has(_)&&(N=!0,f.delete(_)),v.needsAnimating[_]=!0;const D=e.getValue(_);D&&(D.liveStyle=!1)};for(const _ in $){const D=B[_],z=O[_];if(b.hasOwnProperty(_))continue;let U=!1;zu(D)&&zu(z)?U=!Dx(D,z)||P:U=D!==z,U?D!=null?Y(_):f.add(_):D!==void 0&&f.has(_)?Y(_):v.protectedKeys[_]=!0}v.prevProp=k,v.prevResolvedValues=B,v.isActive&&(b={...b,...B}),(r||s)&&e.blockInitialAnimation&&(M=!1);const R=S&&P;M&&(!R||N)&&m.push(...E.map(_=>{const D={type:p};if(typeof _=="string"&&(r||s)&&!R&&e.manuallyAnimateOnMount&&e.parent){const{parent:z}=e,U=On(z,_);if(z.enteringChildren&&U){const{delayChildren:q}=U.transition||{};D.delay=tx(z.enteringChildren,e,q)}}return{animation:_,options:D}}))}if(f.size){const x={};if(typeof d.initial!="boolean"){const p=On(e,Array.isArray(d.initial)?d.initial[0]:d.initial);p&&p.transition&&(x.transition=p.transition)}f.forEach(p=>{const v=e.getBaseTarget(p),k=e.getValue(p);k&&(k.liveStyle=!0),x[p]=v??null}),m.push({animation:x})}let w=!!m.length;return r&&(d.initial===!1||d.initial===d.animate)&&!e.manuallyAnimateOnMount&&(w=!1),r=!1,s=!1,w?t(m):Promise.resolve()}function u(c,d){var m;if(n[c].isActive===d)return Promise.resolve();(m=e.variantChildren)==null||m.forEach(f=>{var b;return(b=f.animationState)==null?void 0:b.setActive(c,d)}),n[c].isActive=d;const h=o(c);for(const f in n)n[f].protectedKeys={};return h}return{animateChanges:o,setActive:u,setAnimateFunction:l,getState:()=>n,reset:()=>{n=Am(),s=!0}}}function MN(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!Dx(t,e):!1}function Tn(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Am(){return{animate:Tn(!0),whileInView:Tn(),whileHover:Tn(),whileTap:Tn(),whileDrag:Tn(),whileFocus:Tn(),exit:Tn()}}function Ku(e,t){e.min=t.min,e.max=t.max}function ft(e,t){Ku(e.x,t.x),Ku(e.y,t.y)}function Mm(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const Bx=1e-4,_N=1-Bx,LN=1+Bx,zx=.01,DN=0-zx,BN=0+zx;function ze(e){return e.max-e.min}function zN(e,t,n){return Math.abs(e-t)<=n}function _m(e,t,n,r=.5){e.origin=r,e.originPoint=ne(t.min,t.max,e.origin),e.scale=ze(n)/ze(t),e.translate=ne(n.min,n.max,e.origin)-e.originPoint,(e.scale>=_N&&e.scale<=LN||isNaN(e.scale))&&(e.scale=1),(e.translate>=DN&&e.translate<=BN||isNaN(e.translate))&&(e.translate=0)}function Ns(e,t,n,r){_m(e.x,t.x,n.x,r?r.originX:void 0),_m(e.y,t.y,n.y,r?r.originY:void 0)}function Lm(e,t,n,r=0){const s=r?ne(n.min,n.max,r):n.min;e.min=s+t.min,e.max=e.min+ze(t)}function RN(e,t,n,r){Lm(e.x,t.x,n.x,r==null?void 0:r.x),Lm(e.y,t.y,n.y,r==null?void 0:r.y)}function Dm(e,t,n,r=0){const s=r?ne(n.min,n.max,r):n.min;e.min=t.min-s,e.max=e.min+ze(t)}function Ui(e,t,n,r){Dm(e.x,t.x,n.x,r==null?void 0:r.x),Dm(e.y,t.y,n.y,r==null?void 0:r.y)}function Bm(e,t,n,r,s){return e-=t,e=Oi(e,1/n,r),s!==void 0&&(e=Oi(e,1/s,r)),e}function IN(e,t=0,n=1,r=.5,s,i=e,l=e){if(_t.test(t)&&(t=parseFloat(t),t=ne(l.min,l.max,t/100)-l.min),typeof t!="number")return;let o=ne(i.min,i.max,r);e===i&&(o-=t),e.min=Bm(e.min,t,n,o,s),e.max=Bm(e.max,t,n,o,s)}function zm(e,t,[n,r,s],i,l){IN(e,t[n],t[r],t[s],t.scale,i,l)}const FN=["x","scaleX","originX"],VN=["y","scaleY","originY"];function Rm(e,t,n,r){zm(e.x,t,FN,n?n.x:void 0,r?r.x:void 0),zm(e.y,t,VN,n?n.y:void 0,r?r.y:void 0)}function Im(e){return e.translate===0&&e.scale===1}function Rx(e){return Im(e.x)&&Im(e.y)}function Fm(e,t){return e.min===t.min&&e.max===t.max}function ON(e,t){return Fm(e.x,t.x)&&Fm(e.y,t.y)}function Vm(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function Ix(e,t){return Vm(e.x,t.x)&&Vm(e.y,t.y)}function Om(e){return ze(e.x)/ze(e.y)}function Um(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function Pt(e){return[e("x"),e("y")]}function UN(e,t,n){let r="";const s=e.x.translate/t.x,i=e.y.translate/t.y,l=(n==null?void 0:n.z)||0;if((s||i||l)&&(r=`translate3d(${s}px, ${i}px, ${l}px) `),(t.x!==1||t.y!==1)&&(r+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:c,rotate:d,pathRotation:h,rotateX:m,rotateY:f,skewX:b,skewY:y}=n;c&&(r=`perspective(${c}px) ${r}`),d&&(r+=`rotate(${d}deg) `),h&&(r+=`rotate(${h}deg) `),m&&(r+=`rotateX(${m}deg) `),f&&(r+=`rotateY(${f}deg) `),b&&(r+=`skewX(${b}deg) `),y&&(r+=`skewY(${y}deg) `)}const o=e.x.scale*t.x,u=e.y.scale*t.y;return(o!==1||u!==1)&&(r+=`scale(${o}, ${u})`),r||"none"}const WN=xd.length,Wm=e=>typeof e=="string"?parseFloat(e):e,Hm=e=>typeof e=="number"||V.test(e);function HN(e,t,n,r,s,i){s?(e.opacity=ne(0,n.opacity??1,$N(r)),e.opacityExit=ne(t.opacity??1,0,GN(r))):i&&(e.opacity=ne(t.opacity??1,n.opacity??1,r));for(let l=0;l r t?1:n(Tr(e,t,r))}function KN(e,t,n){const r=ye(e)?e:vt(e);return r.start(fd("",r,t,n)),r.animation}function Zs(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const qN=(e,t)=>e.depth-t.depth;class YN{constructor(){this.children=[],this.isDirty=!1}add(t){Zc(this.children,t),this.isDirty=!0}remove(t){Bi(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(qN),this.isDirty=!1,this.children.forEach(t)}}function XN(e,t){const n=Be.now(),r=({timestamp:s})=>{const i=s-n;i>=t&&(dt(r),e(i-t))};return Q.setup(r,!0),()=>dt(r)}function ai(e){return ye(e)?e.get():e}class ZN{constructor(){this.members=[]}add(t){Zc(this.members,t);for(let n=this.members.length-1;n>=0;n--){const r=this.members[n];if(r===t||r===this.lead||r===this.prevLead)continue;const s=r.instance;(!s||s.isConnected===!1)&&!r.snapshot&&(Bi(this.members,r),r.unmount())}t.scheduleRender()}remove(t){if(Bi(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){var n;for(let r=this.members.indexOf(t)-1;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1&&((n=s.instance)==null?void 0:n.isConnected)!==!1)return this.promote(s),!0}return!1}promote(t,n){var s;const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.updateSnapshot(),t.scheduleRender();const{layoutDependency:i}=r.options,{layoutDependency:l}=t.options;(i===void 0||i!==l)&&(t.resumeFrom=r,n&&(r.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),(s=t.root)!=null&&s.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var n,r,s,i,l;(r=(n=t.options).onExitComplete)==null||r.call(n),(l=(s=t.resumingFrom)==null?void 0:(i=s.options).onExitComplete)==null||l.call(i)})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){var t;(t=this.lead)!=null&&t.snapshot&&(this.lead.snapshot=void 0)}}const ii={hasAnimatedSinceResize:!0,hasEverUpdated:!1},lo=["","X","Y","Z"],QN=1e3;let JN=0;function oo(e,t,n,r){const{latestValues:s}=t;s[e]&&(n[e]=s[e],t.setStaticValue(e,0),r&&(r[e]=0))}function Vx(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=ix(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:s,layoutId:i}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",Q,!(s||i))}const{parent:r}=e;r&&!r.hasCheckedOptimisedAppear&&Vx(r)}function Ox({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:s}){return class{constructor(l={},o=t==null?void 0:t()){this.id=JN++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(nS),this.nodes.forEach(oS),this.nodes.forEach(uS),this.nodes.forEach(rS)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=l,this.root=o?o.root||o:this,this.path=o?[...o.path,o]:[],this.parent=o,this.depth=o?o.depth+1:0;for(let u=0;u this.root.updateBlockedByResize=!1;Q.read(()=>{h=window.innerWidth}),e(l,()=>{const f=window.innerWidth;f!==h&&(h=f,this.root.updateBlockedByResize=!0,d&&d(),d=XN(m,250),ii.hasAnimatedSinceResize&&(ii.hasAnimatedSinceResize=!1,this.nodes.forEach(qm)))})}o&&this.root.registerSharedNode(o,this),this.options.animate!==!1&&c&&(o||u)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:h,hasRelativeLayoutChanged:m,layout:f})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||c.getDefaultTransition()||fS,{onLayoutAnimationStart:y,onLayoutAnimationComplete:w}=c.getProps(),x=!this.targetLayout||!Ix(this.targetLayout,f),p=!h&&m;if(this.options.layoutRoot||this.resumeFrom||p||h&&(x||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const v={...md(b,"layout"),onPlay:y,onComplete:w};(c.shouldReduceMotion||this.options.layoutRoot)&&(v.delay=0,v.type=!1),this.startAnimation(v),this.setAnimationOrigin(d,p,v.path)}else h||qm(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=f})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const l=this.getStack();l&&l.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),dt(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(cS),this.animationId++)}getTransformTemplate(){const{visualElement:l}=this.options;return l&&l.getProps().transformTemplate}willUpdate(l=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&Vx(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d {this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!ze(this.snapshot.measuredBox.x)&&!ze(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let u=0;u {const S=C/1e3,P=j==null?void 0:j(S);P?(m.x.translate=P.x,m.x.scale=ne(l.x.scale,1,S),m.x.origin=l.x.origin,m.x.originPoint=l.x.originPoint,m.y.translate=P.y,m.y.scale=ne(l.y.scale,1,S),m.y.origin=l.y.origin,m.y.originPoint=l.y.originPoint):(Ym(m.x,l.x,S),Ym(m.y,l.y,S)),this.setTargetDelta(m),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Ui(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),hS(this.relativeTarget,this.relativeTargetOrigin,f,S),k&&ON(this.relativeTarget,k)&&(this.isProjectionDirty=!1),k||(k=xe()),ft(k,this.relativeTarget)),w&&(this.animationValues=h,HN(h,d,this.latestValues,S,v,p)),P&&P.rotate!==void 0&&(this.animationValues||(this.animationValues=h),this.animationValues.pathRotation=P.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(l){var o,u,c;this.notifyListeners("animationStart"),(o=this.currentAnimation)==null||o.stop(),(c=(u=this.resumingFrom)==null?void 0:u.currentAnimation)==null||c.stop(),this.pendingAnimation&&(dt(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Q.update(()=>{ii.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=vt(0)),this.motionValue.jump(0,!1),this.currentAnimation=KN(this.motionValue,[0,1e3],{...l,velocity:0,isSync:!0,onUpdate:d=>{this.mixTargetDelta(d),l.onUpdate&&l.onUpdate(d)},onComplete:()=>{l.onComplete&&l.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const l=this.getStack();l&&l.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(QN),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const l=this.getLead();let{targetWithTransforms:o,target:u,layout:c,latestValues:d}=l;if(!(!o||!u||!c)){if(this!==l&&this.layout&&c&&Ux(this.options.animationType,this.layout.layoutBox,c.layoutBox)){u=this.target||xe();const h=ze(this.layout.layoutBox.x);u.x.min=l.target.x.min,u.x.max=u.x.min+h;const m=ze(this.layout.layoutBox.y);u.y.min=l.target.y.min,u.y.max=u.y.min+m}ft(o,u),si(o,d),Ns(this.projectionDeltaWithTransform,this.layoutCorrected,o,d)}}registerSharedNode(l,o){this.sharedNodes.has(l)||this.sharedNodes.set(l,new ZN),this.sharedNodes.get(l).add(o);const c=o.options.initialPromotionConfig;o.promote({transition:c?c.transition:void 0,preserveFollowOpacity:c&&c.shouldPreserveFollowOpacity?c.shouldPreserveFollowOpacity(o):void 0})}isLead(){const l=this.getStack();return l?l.lead===this:!0}getLead(){var o;const{layoutId:l}=this.options;return l?((o=this.getStack())==null?void 0:o.lead)||this:this}getPrevLead(){var o;const{layoutId:l}=this.options;return l?(o=this.getStack())==null?void 0:o.prevLead:void 0}getStack(){const{layoutId:l}=this.options;if(l)return this.root.sharedNodes.get(l)}promote({needsReset:l,transition:o,preserveFollowOpacity:u}={}){const c=this.getStack();c&&c.promote(this,u),l&&(this.projectionDelta=void 0,this.needsReset=!0),o&&this.setOptions({transition:o})}relegate(){const l=this.getStack();return l?l.relegate(this):!1}resetSkewAndRotation(){const{visualElement:l}=this.options;if(!l)return;let o=!1;const{latestValues:u}=l;if((u.z||u.rotate||u.rotateX||u.rotateY||u.rotateZ||u.skewX||u.skewY)&&(o=!0),!o)return;const c={};u.z&&oo("z",l,c,this.animationValues);for(let d=0;d {var o;return(o=l.currentAnimation)==null?void 0:o.stop()}),this.root.nodes.forEach(Gm),this.root.sharedNodes.clear()}}}function eS(e){e.updateLayout()}function tS(e){var n;const t=((n=e.resumeFrom)==null?void 0:n.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:s}=e.layout,{animationType:i}=e.options,l=t.source!==e.layout.source;if(i==="size")Pt(h=>{const m=l?t.measuredBox[h]:t.layoutBox[h],f=ze(m);m.min=r[h].min,m.max=m.min+f});else if(i==="x"||i==="y"){const h=i==="x"?"y":"x";Ku(l?t.measuredBox[h]:t.layoutBox[h],r[h])}else Ux(i,t.layoutBox,r)&&Pt(h=>{const m=l?t.measuredBox[h]:t.layoutBox[h],f=ze(r[h]);m.max=m.min+f,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[h].max=e.relativeTarget[h].min+f)});const o=mr();Ns(o,r,t.layoutBox);const u=mr();l?Ns(u,e.applyTransform(s,!0),t.measuredBox):Ns(u,r,t.layoutBox);const c=!Rx(o);let d=!1;if(!e.resumeFrom){const h=e.getClosestProjectingParent();if(h&&!h.resumeFrom){const{snapshot:m,layout:f}=h;if(m&&f){const b=e.options.layoutAnchor||void 0,y=xe();Ui(y,t.layoutBox,m.layoutBox,b);const w=xe();Ui(w,r,f.layoutBox,b),Ix(y,w)||(d=!0),h.options.layoutRoot&&(e.relativeTarget=w,e.relativeTargetOrigin=y,e.relativeParent=h)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:t,delta:u,layoutDelta:o,hasLayoutChanged:c,hasRelativeLayoutChanged:d})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function nS(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function rS(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function sS(e){e.clearSnapshot()}function Gm(e){e.clearMeasurements()}function aS(e){e.isLayoutDirty=!0,e.updateLayout()}function Km(e){e.isLayoutDirty=!1}function iS(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function lS(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function qm(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function oS(e){e.resolveTargetDelta()}function uS(e){e.calcProjection()}function cS(e){e.resetSkewAndRotation()}function dS(e){e.removeLeadSnapshot()}function Ym(e,t,n){e.translate=ne(t.translate,0,n),e.scale=ne(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function Xm(e,t,n,r){e.min=ne(t.min,n.min,r),e.max=ne(t.max,n.max,r)}function hS(e,t,n,r){Xm(e.x,t.x,n.x,r),Xm(e.y,t.y,n.y,r)}function mS(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const fS={duration:.45,ease:[.4,0,.1,1]},Zm=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),Qm=Zm("applewebkit/")&&!Zm("chrome/")?Math.round:Ke;function Jm(e){e.min=Qm(e.min),e.max=Qm(e.max)}function pS(e){Jm(e.x),Jm(e.y)}function Ux(e,t,n){return e==="position"||e==="preserve-aspect"&&!zN(Om(t),Om(n),.2)}function gS(e){var t;return e!==e.root&&((t=e.scroll)==null?void 0:t.wasRoot)}const xS=Ox({attachResizeListener:(e,t)=>Zs(e,"resize",t),measureScroll:()=>{var e,t;return{x:document.documentElement.scrollLeft||((e=document.body)==null?void 0:e.scrollLeft)||0,y:document.documentElement.scrollTop||((t=document.body)==null?void 0:t.scrollTop)||0}},checkIsScrollRoot:()=>!0}),uo={current:void 0},Wx=Ox({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!uo.current){const e=new xS({});e.mount(window),e.setOptions({layoutScroll:!0}),uo.current=e}return uo.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),oa=g.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function ef(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function bS(...e){return t=>{let n=!1;const r=e.map(s=>{const i=ef(s,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let s=0;s {const{width:f,height:b,top:y,left:w,right:x,bottom:p,direction:v}=u.current;if(t||i===!1||!o.current||!f||!b)return;const k=v==="rtl",j=n==="left"?k?`right: ${x}`:`left: ${w}`:k?`left: ${w}`:`right: ${x}`,C=r==="bottom"?`bottom: ${p}`:`top: ${y}`;o.current.dataset.motionPopId=l;const S=document.createElement("style");c&&(S.nonce=c);const P=s??document.head;return P.appendChild(S),S.sheet&&S.sheet.insertRule(` + */function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t {let r=e[n];return t.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function Zk(e,t){let n=ku(e);return t&&t.forEach((r,s)=>{n.has(s)||t.getAll(s).forEach(i=>{n.append(s,i)})}),n}const Qk=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Jk=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],ew="6";try{window.__reactRouterVersion=ew}catch{}const tw=g.createContext({isTransitioning:!1}),nw="startTransition",Kh=Db[nw];function rw(e){let{basename:t,children:n,future:r,window:s}=e,i=g.useRef();i.current==null&&(i.current=rk({window:s,v5Compat:!0}));let l=i.current,[o,u]=g.useState({action:l.action,location:l.location}),{v7_startTransition:c}=r||{},d=g.useCallback(h=>{c&&Kh?Kh(()=>u(h)):u(h)},[u,c]);return g.useLayoutEffect(()=>l.listen(d),[l,d]),g.useEffect(()=>Gk(r),[r]),g.createElement(Kk,{basename:t,children:n,location:o.location,navigationType:o.action,navigator:l,future:r})}const sw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",aw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,H=g.forwardRef(function(t,n){let{onClick:r,relative:s,reloadDocument:i,replace:l,state:o,target:u,to:c,preventScrollReset:d,viewTransition:h}=t,m=og(t,Qk),{basename:f}=g.useContext(Xt),b,y=!1;if(typeof c=="string"&&aw.test(c)&&(b=c,sw))try{let v=new URL(window.location.href),k=c.startsWith("//")?new URL(v.protocol+c):new URL(c),j=Er(k.pathname,f);k.origin===v.origin&&j!=null?c=j+k.search+k.hash:y=!0}catch{}let w=Tk(c,{relative:s}),x=lw(c,{replace:l,state:o,target:u,preventScrollReset:d,relative:s,viewTransition:h});function p(v){r&&r(v),v.defaultPrevented||x(v)}return g.createElement("a",Li({},m,{href:b||w,onClick:y||i?r:p,ref:n,target:u}))}),ug=g.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:s=!1,className:i="",end:l=!1,style:o,to:u,viewTransition:c,children:d}=t,h=og(t,Jk),m=dl(u,{relative:h.relative}),f=mt(),b=g.useContext(ng),{navigator:y,basename:w}=g.useContext(Xt),x=b!=null&&uw(m)&&c===!0,p=y.encodeLocation?y.encodeLocation(m).pathname:m.pathname,v=f.pathname,k=b&&b.navigation&&b.navigation.location?b.navigation.location.pathname:null;s||(v=v.toLowerCase(),k=k?k.toLowerCase():null,p=p.toLowerCase()),k&&w&&(k=Er(k,w)||k);const j=p!=="/"&&p.endsWith("/")?p.length-1:p.length;let C=v===p||!l&&v.startsWith(p)&&v.charAt(j)==="/",S=k!=null&&(k===p||!l&&k.startsWith(p)&&k.charAt(p.length)==="/"),P={isActive:C,isPending:S,isTransitioning:x},M=C?r:void 0,E;typeof i=="function"?E=i(P):E=[i,C?"active":null,S?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let N=typeof o=="function"?o(P):o;return g.createElement(H,Li({},h,{"aria-current":M,className:E,ref:n,style:N,to:u,viewTransition:c}),typeof d=="function"?d(P):d)});var wu;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(wu||(wu={}));var qh;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(qh||(qh={}));function iw(e){let t=g.useContext(ul);return t||ce(!1),t}function lw(e,t){let{target:n,replace:r,state:s,preventScrollReset:i,relative:l,viewTransition:o}=t===void 0?{}:t,u=ra(),c=mt(),d=dl(e,{relative:l});return g.useCallback(h=>{if(Xk(h,n)){h.preventDefault();let m=r!==void 0?r:_i(c)===_i(d);u(e,{replace:m,state:s,preventScrollReset:i,relative:l,viewTransition:o})}},[c,u,d,r,s,n,e,i,l,o])}function ow(e){let t=g.useRef(ku(e)),n=g.useRef(!1),r=mt(),s=g.useMemo(()=>Zk(r.search,n.current?null:t.current),[r.search]),i=ra(),l=g.useCallback((o,u)=>{const c=ku(typeof o=="function"?o(s):o);n.current=!0,i("?"+c,u)},[i,s]);return[s,l]}function uw(e,t){t===void 0&&(t={});let n=g.useContext(tw);n==null&&ce(!1);let{basename:r}=iw(wu.useViewTransitionState),s=dl(e,{relative:t.relative});if(!n.isTransitioning)return!1;let i=Er(n.currentLocation.pathname,r)||n.currentLocation.pathname,l=Er(n.nextLocation.pathname,r)||n.nextLocation.pathname;return vu(s.pathname,l)!=null||vu(s.pathname,i)!=null}function cw(){const{pathname:e}=mt();return g.useEffect(()=>{window.scrollTo({top:0,left:0,behavior:"instant"})},[e]),null}const dw='a, button, [role="button"], label, select, summary, [data-cursor="hover"], .cursor-pointer',hw='input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="button"]):not([type="file"]), textarea, [contenteditable="true"]';function mw(){const e=g.useRef(null),t=g.useRef(null),n=g.useRef(null),r=g.useRef(null),s=g.useRef(null);return g.useEffect(()=>{const i=window.matchMedia("(pointer: fine)"),l=window.matchMedia("(prefers-reduced-motion: reduce)");if(!i.matches||l.matches)return;const o=e.current,u=t.current,c=n.current,d=r.current,h=s.current;if(!o||!u||!c||!d||!h)return;document.documentElement.classList.add("hifi-cursor-on");const m=-24*Math.PI/180,f=Math.cos(m),b=Math.sin(m);let y=-100,w=-100,x=0,p=2.4,v=2.4,k=16,j=6.5,C=16,S=6.5,P=!1,M,E=performance.now();const N=_=>{const B=Math.min((_-E)/1e3,.05);E=_,p+=(v-p)*Math.min(1,B*8),k+=(C-k)*Math.min(1,B*10),j+=(S-j)*Math.min(1,B*10),x+=p*B,u.style.transform=`translate3d(${y}px, ${w}px, 0)`,c.style.transform=`translate3d(${y}px, ${w}px, 0)`;const F=Math.cos(x)*k,O=Math.sin(x)*j;d.style.transform=`translate(${F*f-O*b}px, ${F*b+O*f}px)`,M=requestAnimationFrame(N)},L=_=>{o.dataset.state=_;const B=_==="hover";v=B?7:2.4,C=B?23:16,S=B?9.5:6.5},U=_=>{y=_.clientX,w=_.clientY,P||(P=!0,o.dataset.hidden="false")},W=_=>{const B=_.target;B instanceof Element&&(B.closest(hw)?L("text"):B.closest(dw)?L("hover"):L("default"))},q=()=>{o.dataset.down="true",h.style.left=`${y}px`,h.style.top=`${w}px`,h.classList.remove("is-live"),h.offsetWidth,h.classList.add("is-live")},z=()=>{o.dataset.down="false"},$=()=>{P=!1,o.dataset.hidden="true"};return document.addEventListener("mousemove",U,{passive:!0}),document.addEventListener("mouseover",W,{passive:!0}),document.addEventListener("mousedown",q,{passive:!0}),document.addEventListener("mouseup",z,{passive:!0}),document.documentElement.addEventListener("mouseleave",$),window.addEventListener("blur",$),M=requestAnimationFrame(N),()=>{cancelAnimationFrame(M),document.removeEventListener("mousemove",U),document.removeEventListener("mouseover",W),document.removeEventListener("mousedown",q),document.removeEventListener("mouseup",z),document.documentElement.removeEventListener("mouseleave",$),window.removeEventListener("blur",$),document.documentElement.classList.remove("hifi-cursor-on")}},[]),a.jsxs("div",{ref:e,className:"hifi-cursor","data-state":"default","data-hidden":"true","data-down":"false","aria-hidden":"true",children:[a.jsxs("div",{ref:n,className:"hifi-cursor__orbit",children:[a.jsx("div",{className:"hifi-cursor__ring"}),a.jsx("div",{ref:r,className:"hifi-cursor__sat"})]}),a.jsx("div",{ref:t,className:"hifi-cursor__core"}),a.jsx("div",{ref:s,className:"hifi-cursor__pulse"})]})}const cg=`${"/".replace(/\/$/,"")}/api`;async function ns(e,t={}){const n=await fetch(`${cg}${e}`,{credentials:"include",headers:t.body instanceof FormData?{}:{"Content-Type":"application/json"},...t}),r=await n.text();let s=null;if(r)try{s=JSON.parse(r)}catch{}if(!n.ok)throw new Error((s==null?void 0:s.error)||`Fehler ${n.status}`);if(s===null&&r)throw new Error("Unerwartete Server-Antwort (kein gültiges JSON)");return s}const A={get:e=>ns(e),post:(e,t)=>ns(e,{method:"POST",body:t instanceof FormData?t:JSON.stringify(t)}),put:(e,t)=>ns(e,{method:"PUT",body:JSON.stringify(t)}),patch:(e,t)=>ns(e,{method:"PATCH",body:JSON.stringify(t)}),delete:e=>ns(e,{method:"DELETE"})};function fw({children:e}){const[t,n]=g.useState({pathname:null,needsSetup:null}),r=mt();return g.useEffect(()=>{let s=!1;return A.get("/setup/status").then(i=>{s||n({pathname:r.pathname,needsSetup:i.needs_setup})}).catch(()=>{s||n({pathname:r.pathname,needsSetup:!1})}),()=>{s=!0}},[r.pathname]),t.pathname!==r.pathname||t.needsSetup===null?a.jsx("div",{className:"min-h-screen bg-white dark:bg-neutral-950"}):t.needsSetup&&r.pathname!=="/setup"?a.jsx(Gs,{to:"/setup",replace:!0}):!t.needsSetup&&r.pathname==="/setup"?a.jsx(Gs,{to:"/",replace:!0}):e}const dg=g.createContext(null);function pw(){const e=new Date,t=e.getHours()+e.getMinutes()/60;return t>=6.5&&t<21?"light":"dark"}function gw({children:e}){const[t,n]=g.useState(()=>{const s=localStorage.getItem("hifi-theme");return s==="light"||s==="dark"?s:pw()});g.useEffect(()=>{document.documentElement.classList.toggle("dark",t==="dark"),localStorage.setItem("hifi-theme",t)},[t]);const r=()=>n(s=>s==="dark"?"light":"dark");return a.jsx(dg.Provider,{value:{theme:t,toggleTheme:r},children:e})}function xw(){return g.useContext(dg)}const bw={nav:{openMenu:"Menü öffnen",closeMenu:"Menü schließen",close:"Schließen",adminPanel:"Zum Admin-Panel",vehicles:"Fahrzeuge",services:"Leistungen",gallery:"Galerie",contact:"Kontakt",whatsapp:"WhatsApp",shop:"Zum Shop"},themeToggle:{label:"Theme umschalten"},languageToggle:{label:"Sprache auswählen"},footer:{routePlan:"Route planen",contactHeading:"Kontakt",contactForm:"Kontaktformular",hoursHeading:"Öffnungszeiten",open:"Geöffnet",closed:"Geschlossen",days:{monFri:"Montag – Freitag",sat:"Samstag",sun:"Sonntag"},copyright:e=>`© ${e} HifiPlanet. Alle Angaben ohne Gewähr.`,imprint:"Impressum",privacy:"Datenschutz",terms:"AGB",cookieSettings:"Cookie-Einstellungen"},cookieConsent:{bannerText:"Wir verwenden nur technisch notwendige Cookies. Für Google Maps, YouTube-Videos und Statistik-Cookies benötigen wir zusätzlich deine Zustimmung, da dabei Daten an Google übertragen werden.",moreInfo:"Mehr dazu in unserer",privacyPolicy:"Datenschutzerklärung",settings:"Einstellungen",onlyNecessary:"Nur notwendige",acceptAll:"Alle akzeptieren",modalTitle:"Cookie-Einstellungen",modalIntro:"Lege fest, welche Kategorien du zulassen möchtest. Mehr dazu in unserer",necessaryTitle:"Notwendig",necessaryDesc:"Für den Betrieb der Website erforderlich (z. B. Login-Session, Theme- und Cookie-Einstellung). Kann nicht deaktiviert werden.",externalTitle:"Externe Medien",externalDesc:"Google Maps und YouTube-Videos. Beim Laden werden Daten (u. a. deine IP-Adresse) an Google übertragen.",analyticsTitle:"Statistik",analyticsDesc:"Google Analytics hilft uns zu verstehen, wie die Website genutzt wird. Dabei werden Daten an Google übertragen.",cancel:"Abbrechen",saveSelection:"Auswahl speichern"},maintenance:{title:"Wartungsarbeiten",defaultMessage:"Dieser Bereich wird gerade aktualisiert. Bitte schau in Kürze wieder vorbei."},lightbox:{close:"Schließen",previous:"Vorheriges Bild",next:"Nächstes Bild"},home:{metaTitle:"Car-Hifi Umbauten nach Maß",metaDescription:"HifiPlanet – dein Car-Hifi Spezialist in Amorbach. Marke und Modell wählen, passende Sound-Pakete entdecken und unverbindlich anfragen.",stickyCta:"Bereit für deinen Sound-Umbau?",selectVehicle:"Fahrzeug auswählen",getInTouch:"Kontakt aufnehmen",welcome:"Willkommen bei HifiPlanet",heroTitle:"Home of pure Sound",heroSubtitle:"Dein Car-Hifi Spezialist für individuelle Sound-Umbauten. Wähle dein Fahrzeug, entdecke passende Pakete und frag unverbindlich an – wir kümmern uns um den Rest.",stats:[{value:"20+",label:"Jahre Erfahrung"},{value:"Riesige",label:"3D-Druckfarm im eigenen Haus"},{value:"Eigene",label:"CNC- & Laserwerkstatt"},{value:"International",label:"anerkannter Car-Hifi-Spezialist"}],brandsHeading:"Marken, mit denen wir arbeiten",youtubeBadge:"HifiPlanet präsentiert",youtubeTitle:"Das Handwerk hinter deinem Sound",youtubeText:"Entdecke die Handwerkskunst hinter unserer Arbeit",youtubeCta:"Jetzt ansehen",heroImageAlt:"Ground Zero Subwoofer und Endstufen mit violetter Ambiente-Beleuchtung",craftImageAlt:"Individueller Subwoofer-Bau",adviceImageAlt:"Endstufen-Einbau mit Ambiente-Beleuchtung",moreImageAlt:"Hochwertige Endstufe und Subwoofer, Studioaufnahme",craftEyebrow:"Handwerk",craftTitle:"Präzisionsarbeit in jedem Detail",craftText:"Ob eigens gefertigte Subwoofer-Gehäuse, integrierte Beleuchtung oder unsichtbar verlegte Kabelwege – dank eigener CNC-, Laser- und 3D-Druck-Fertigung entstehen bei uns Lösungen, die es von der Stange nicht gibt.",adviceEyebrow:"Beratung",adviceTitle:"Von der ersten Idee bis zum letzten Schliff",adviceText:"Jedes Fahrzeug und jeder Anspruch ist anders. Deshalb beraten wir dich persönlich und unverbindlich – vom dezenten Upgrade bis zum kompromisslosen High-End-System.",insightsTitle:"Einblicke in unsere Umbauten",insightsText:"Vom unauffälligen Sound-Upgrade bis zum aufwendigen Komplettumbau – Handarbeit aus unserer Werkstatt in Amorbach.",galleryAlts:["Individueller Subwoofer-Bau mit Ground Zero Bässen","Endstufen-Einbau mit violetter Ambiente-Beleuchtung","Hochtöner- und Mitteltöner-Einbau von Focal Utopia","Sony Navigationssystem mit Apple CarPlay im Cockpit","Verbauter Hochtöner im Kofferraum","Individueller Subwoofer-Einbau mit LED-Beleuchtung im Kofferraum"],reviewsRating:"5,0 von 181 Kunden bewertet",reviewsRatingDynamic:(e,t)=>`${e.toFixed(1).replace(".",",")} von ${t} Kunden bewertet`,reviewsText:"Das sagen unsere Kunden über uns.",reviewsLink:"Alle Bewertungen auf Google ansehen →",testimonials:[{name:"Thomas K.",text:"Über YouTube auf dieses Klang-Juwel gestoßen. Beratung und Empfehlungen sind erstklassig – der Tesla-Vorführwagen hat meine Leidenschaft für guten Sound neu entfacht."},{name:"Andreas I.",text:"Sehr professionelle Beratung und Service. Obwohl ich von VAG zu Mercedes gewechselt bin, wurde alles reibungslos angepasst. Die 3-Wege-Lautsprecher und zwei Subwoofer liefern außergewöhnliche Leistung."},{name:"Thomas F.",text:"Kompletter Audi A4 B9 Umbau hat meine Erwartungen übertroffen. Von Anfang bis Ende professionell, mit tadelloser Verarbeitung und Klangqualität."},{name:"Drago G.",text:"Beeindruckt von der CNC-Arbeit, die auf YouTube gezeigt wird. Angefangen mit 3D-gedruckten Lautsprecherringen für meinen Ford Mustang – daraus wurde ein viel größeres Projekt."},{name:"Leonardo B.",text:"Toller Service und meisterhafte Handwerkskunst. Saubere Installation, Leidenschaft in jedem Detail erkennbar."},{name:"Marcel S.",text:"Unschlagbares Preis-Leistungs-Verhältnis. Das Team hat sich viel Zeit genommen, um genau die Lösung für mein Budget zu finden."},{name:"Julia W.",text:"Endlich ein Betrieb, der auch Wohnmobile ernst nimmt. Die Soundanlage in unserem Camper klingt jetzt wie im Wohnzimmer."},{name:"Kevin R.",text:"Dashcam und Alarmanlage in einem Termin sauber verbaut, keine sichtbaren Kabel. Absolute Empfehlung für alle, die Wert auf Verarbeitung legen."},{name:"Sabrina H.",text:"Mein Oldtimer hat jetzt modernen Sound, ohne dass es dem Original-Look geschadet hätte. Genau das habe ich gesucht."},{name:"Niklas P.",text:"Von der ersten Anfrage bis zum fertigen Umbau lief alles reibungslos. Ehrliche Beratung ohne Verkaufsdruck."}],moreTitle:"Mehr als nur Car-Hifi",moreText:"Neben individuellen Sound-Umbauten bieten wir CNC-Zerspanung, Lasertechnik, 3D-Druck und mehr – alles aus einer Hand in unserer eigenen Werkstatt.",moreCta:"Alle Leistungen entdecken",faqHeading:"Häufig gestellte Fragen"},vehicleSelect:{metaTitle:"Fahrzeug auswählen",metaDescription:"Wähle deine Fahrzeugmarke und dein Modell und entdecke passende Car-Hifi Sound-Pakete von HifiPlanet.",title:"Fahrzeug auswählen",intro:"Wähle zuerst deine Marke, dann dein Modell – wir zeigen dir direkt die passenden Sound-Pakete.",empty:"Es sind noch keine Marken hinterlegt."},brandPage:{metaTitleFallback:"Modell auswählen",metaDescription:e=>`Wähle dein ${e} Modell und entdecke passende Car-Hifi Sound-Pakete von HifiPlanet.`,loading:"Lädt…",breadcrumbVehicles:"Fahrzeuge",titleSuffix:"Modell wählen",empty:"Für diese Marke sind noch keine Modelle hinterlegt."},modelPage:{metaTitleFallback:"Sound-Pakete",metaTitle:(e,t)=>`${e} ${t} Sound-Pakete`,metaDescription:(e,t)=>`Car-Hifi Sound-Pakete für ${e} ${t} inkl. aktueller Preise – von HifiPlanet unverbindlich anfragen.`,loading:"Lädt…",breadcrumbVehicles:"Fahrzeuge",titleSuffix:"Sound-Pakete",empty:"Für dieses Modell sind noch keine Pakete hinterlegt.",totalPrice:"ab ca.",productLoading:"Produkt wird geladen…",requestContact:"Kontakt anfragen",featuredBadge:"Empfohlen",moreBullets:e=>e===1?"+ 1 weitere Leistung":`+ ${e} weitere Leistungen`,lessBullets:"Weniger anzeigen",wheelHint:"Mit dem Mausrad blättern"},leistungen:{metaTitle:"Leistungen",metaDescription:"Car-Hifi, Wohnmobil & Caravan, Oldtimer, CNC-Zerspanung, Lasertechnik, 3D-Druck, Alarmanlagen und Dash Cams – alles aus einer Hand bei HifiPlanet in Amorbach.",title:"Unsere Leistungen",intro:"Von individuellen Sound-Umbauten bis zur eigenen CNC- und 3D-Druck-Fertigung – alles aus einer Hand in unserer Werkstatt in Amorbach.",notListedTitle:"Dein Projekt ist nicht dabei?",notListedText:"Sprich uns einfach an – wir finden gemeinsam die passende Lösung.",contact:"Kontakt aufnehmen"},contactPage:{metaTitle:"Kontakt",metaDescription:"Kontaktiere HifiPlanet in Amorbach für dein individuelles Car-Hifi Projekt – wir beraten dich gerne unverbindlich.",title:"Kontakt aufnehmen",heroEyebrow:"Kontakt",heroTitlePre:"Sprich",heroTitleAccent:"mit",heroTitlePost:"uns.",heroSubtitle:"Ob Anlage, Einbau oder Klang-Tuning für dein Fahrzeug — schreib uns, wir melden uns schnellstmöglich zurück.",packageBoxTitle:"Deine Anfrage bezieht sich auf",formTitle:"Anfrage senden",sentTitle:"Anfrage gesendet ✓",sentText:"Danke! Wir melden uns innerhalb eines Werktags bei dir.",contextIntro:"Deine Anfrage bezieht sich auf:",contextBrand:"Marke",contextModel:"Modell",contextPackage:"Paket",contextProduct:"Produkt",packagePrice:"Paketpreis",upgrades:"Upgrades",optionalUpgrades:"Optionale Upgrades",totalWithUpgrades:"Gesamt inkl. Upgrades",nameLabel:"Name *",namePlaceholder:"Max Mustermann",emailLabel:"E-Mail *",emailPlaceholder:"max@mail.de",phoneLabel:"Telefon",phonePlaceholder:"Optional",vinLabel:"Fahrgestellnummer (FIN)",vinPlaceholder:"Optional – hilft bei der Einschätzung",messageLabel:"Nachricht",messagePlaceholder:"Erzähl uns von deinem Projekt – Fahrzeug, Wunschklang, Budget …",requiredHint:"* Pflichtfelder",sending:"Wird gesendet…",submit:"Anfrage senden",cardTitle:"HiFi Planet Amorbach",address:"Adresse",phone:"Telefon",email:"E-Mail",hours:"Öffnungszeiten",hoursWeek:"Mo–Fr: 9:00–18:00 Uhr",hoursSat:"Sa: 10:00–13:00 Uhr",hoursWeekDays:"Mo–Fr",hoursWeekTime:"9:00 – 18:00 Uhr",hoursSatDay:"Sa",hoursSatTime:"10:00 – 13:00 Uhr",directionsTitle:"Anfahrt",mapEmbedName:"Die Google-Maps-Karte",mapOpenChip:"In Maps öffnen",routePlan:"Route planen",featurePremiumTitle:"Premium Klang",featurePremiumSub:"Höchste Qualität",featureGermanyTitle:"Made in Germany",featureGermanySub:"Präzise Handarbeit",featureIndividualTitle:"Individuell",featureIndividualSub:"Maßgeschneiderte Lösungen",featureExpertsTitle:"Experten Team",featureExpertsSub:"Leidenschaft & Know-how"},galleryOverview:{metaTitle:"Bildergalerie",metaDescription:"Einblicke in unsere Car-Hifi Umbauten – nach Marke sortiert. Wähle eine Marke und entdecke die Projekte.",title:"Bildergalerie",intro:"Wähle eine Marke und entdecke unsere Umbauten im Detail.",loading:"Lädt…",empty:"Es sind noch keine Galerie-Marken hinterlegt."},galleryBrandPage:{metaTitleFallback:"Bildergalerie",metaTitle:e=>`${e} Umbauten`,metaDescription:e=>`Einblicke in unsere ${e} Car-Hifi Umbauten.`,loading:"Lädt…",breadcrumbGallery:"Galerie",titleSuffix:"Projekt wählen",empty:"Für diese Marke sind noch keine Projekte hinterlegt."},galleryProjectPage:{metaTitleFallback:"Bildergalerie",metaDescription:e=>`Fotos unseres ${e} Umbaus.`,loading:"Lädt…",breadcrumbGallery:"Galerie",empty:"Für dieses Projekt sind noch keine Fotos hinterlegt.",enlargeImage:"Bild vergrößern"}},vw={nav:{openMenu:"Open menu",closeMenu:"Close menu",close:"Close",adminPanel:"Go to admin panel",vehicles:"Vehicles",services:"Services",gallery:"Gallery",contact:"Contact",whatsapp:"WhatsApp",shop:"Visit shop"},themeToggle:{label:"Toggle theme"},languageToggle:{label:"Select language"},footer:{routePlan:"Get directions",contactHeading:"Contact",contactForm:"Contact form",hoursHeading:"Opening hours",open:"Open",closed:"Closed",days:{monFri:"Monday – Friday",sat:"Saturday",sun:"Sunday"},copyright:e=>`© ${e} HifiPlanet. All information without guarantee.`,imprint:"Legal notice",privacy:"Privacy",terms:"Terms",cookieSettings:"Cookie settings"},cookieConsent:{bannerText:"We only use technically necessary cookies. For Google Maps, YouTube videos and analytics cookies we need your additional consent, since data is transferred to Google in that case.",moreInfo:"More details in our",privacyPolicy:"privacy policy",settings:"Settings",onlyNecessary:"Necessary only",acceptAll:"Accept all",modalTitle:"Cookie settings",modalIntro:"Choose which categories you want to allow. More details in our",necessaryTitle:"Necessary",necessaryDesc:"Required to operate the website (e.g. login session, theme and cookie preference). Cannot be disabled.",externalTitle:"External media",externalDesc:"Google Maps and YouTube videos. Loading them transfers data (including your IP address) to Google.",analyticsTitle:"Analytics",analyticsDesc:"Google Analytics helps us understand how the website is used. This transfers data to Google.",cancel:"Cancel",saveSelection:"Save selection"},maintenance:{title:"Under maintenance",defaultMessage:"This area is currently being updated. Please check back shortly."},lightbox:{close:"Close",previous:"Previous image",next:"Next image"},home:{metaTitle:"Custom Car-Hifi Installations",metaDescription:"HifiPlanet – your car-hifi specialist in Amorbach, Germany. Choose your make and model, discover matching sound packages and get in touch, no obligation.",stickyCta:"Ready for your sound upgrade?",selectVehicle:"Select vehicle",getInTouch:"Get in touch",welcome:"Welcome to HifiPlanet",heroTitle:"Home of pure Sound",heroSubtitle:"Your car-hifi specialist for custom sound installations. Choose your vehicle, discover the right package and get in touch, no obligation – we take care of the rest.",stats:[{value:"20+",label:"years of experience"},{value:"Huge",label:"in-house 3D print farm"},{value:"In-house",label:"CNC & laser workshop"},{value:"International",label:"recognized car-hifi specialist"}],brandsHeading:"Brands we work with",youtubeBadge:"HifiPlanet presents",youtubeTitle:"The craft behind your sound",youtubeText:"Discover the artistry behind our work",youtubeCta:"Watch now",heroImageAlt:"Ground Zero subwoofer and amplifiers with purple ambient lighting",craftImageAlt:"Custom subwoofer build",adviceImageAlt:"Amplifier installation with ambient lighting",moreImageAlt:"High-end amplifier and subwoofer, studio shot",craftEyebrow:"Craftsmanship",craftTitle:"Precision work in every detail",craftText:"Whether custom-built subwoofer enclosures, integrated lighting or invisibly routed cabling – our own CNC, laser and 3D-printing production means we can build solutions you simply can't buy off the shelf.",adviceEyebrow:"Consultation",adviceTitle:"From the first idea to the final touch",adviceText:"Every vehicle and every requirement is different. That's why we advise you personally and without obligation – from a subtle upgrade to an uncompromising high-end system.",insightsTitle:"A look at our installations",insightsText:"From subtle sound upgrades to elaborate full installations – handcrafted in our workshop in Amorbach.",galleryAlts:["Custom subwoofer build with Ground Zero bass drivers","Amplifier installation with purple ambient lighting","Tweeter and midrange installation by Focal Utopia","Sony navigation system with Apple CarPlay in the cockpit","Installed tweeter in the trunk","Custom subwoofer installation with LED lighting in the trunk"],reviewsRating:"Rated 5.0 by 181 customers",reviewsRatingDynamic:(e,t)=>`Rated ${e.toFixed(1)} by ${t} customers`,reviewsText:"Here's what our customers say about us.",reviewsLink:"See all reviews on Google →",testimonials:[{name:"Thomas K.",text:"Found this gem through YouTube. Advice and recommendations are top-notch – the Tesla demo car reignited my passion for great sound."},{name:"Andreas I.",text:"Very professional advice and service. Even though I switched from VAG to Mercedes, everything was adapted smoothly. The 3-way speakers and two subwoofers deliver outstanding performance."},{name:"Thomas F.",text:"The complete Audi A4 B9 build exceeded my expectations. Professional from start to finish, with flawless workmanship and sound quality."},{name:"Drago G.",text:"Impressed by the CNC work shown on YouTube. Started with 3D-printed speaker rings for my Ford Mustang – it turned into a much bigger project."},{name:"Leonardo B.",text:"Great service and masterful craftsmanship. Clean installation, passion visible in every detail."},{name:"Marcel S.",text:"Unbeatable value for money. The team took a lot of time to find the exact solution for my budget."},{name:"Julia W.",text:"Finally a shop that takes motorhomes seriously too. The sound system in our camper now sounds like a living room."},{name:"Kevin R.",text:"Dash cam and alarm system installed cleanly in a single appointment, no visible cables. Highly recommended for anyone who values quality workmanship."},{name:"Sabrina H.",text:"My classic car now has modern sound without compromising the original look. Exactly what I was looking for."},{name:"Niklas P.",text:"From the first inquiry to the finished build, everything went smoothly. Honest advice with no sales pressure."}],moreTitle:"More than just car-hifi",moreText:"Besides custom sound installations, we also offer CNC machining, laser technology, 3D printing and more – all from a single source in our own workshop.",moreCta:"Discover all our services",faqHeading:"Frequently asked questions"},vehicleSelect:{metaTitle:"Select your vehicle",metaDescription:"Choose your vehicle make and model and discover matching car-hifi sound packages from HifiPlanet.",title:"Select your vehicle",intro:"Choose your make first, then your model – we'll show you the matching sound packages right away.",empty:"No brands have been added yet."},brandPage:{metaTitleFallback:"Select a model",metaDescription:e=>`Choose your ${e} model and discover matching car-hifi sound packages from HifiPlanet.`,loading:"Loading…",breadcrumbVehicles:"Vehicles",titleSuffix:"Select a model",empty:"No models have been added for this brand yet."},modelPage:{metaTitleFallback:"Sound packages",metaTitle:(e,t)=>`${e} ${t} sound packages`,metaDescription:(e,t)=>`Car-hifi sound packages for the ${e} ${t} including current prices – get in touch with HifiPlanet, no obligation.`,loading:"Loading…",breadcrumbVehicles:"Vehicles",titleSuffix:"Sound packages",empty:"No packages have been added for this model yet.",totalPrice:"from approx.",productLoading:"Loading product…",requestContact:"Request contact",featuredBadge:"Recommended",moreBullets:e=>e===1?"+ 1 more feature":`+ ${e} more features`,lessBullets:"Show less",wheelHint:"Scroll to browse"},leistungen:{metaTitle:"Services",metaDescription:"Car-hifi, motorhomes & caravans, classic cars, CNC machining, laser technology, 3D printing, alarm systems and dash cams – all from a single source at HifiPlanet in Amorbach.",title:"Our services",intro:"From custom sound installations to our own CNC and 3D-printing production – all from a single source in our workshop in Amorbach.",notListedTitle:"Don't see your project?",notListedText:"Just get in touch – we'll find the right solution together.",contact:"Get in touch"},contactPage:{metaTitle:"Contact",metaDescription:"Get in touch with HifiPlanet in Amorbach for your custom car-hifi project – we're happy to advise you, no obligation.",title:"Get in touch",heroEyebrow:"Contact",heroTitlePre:"Talk",heroTitleAccent:"to",heroTitlePost:"us.",heroSubtitle:"Whether it's a system, installation, or sound tuning for your car — write to us, we'll get back to you as soon as possible.",packageBoxTitle:"Your inquiry relates to",formTitle:"Send inquiry",sentTitle:"Inquiry sent ✓",sentText:"Thanks! We'll get back to you within one business day.",contextIntro:"Your inquiry relates to:",contextBrand:"Brand",contextModel:"Model",contextPackage:"Package",contextProduct:"Product",packagePrice:"Package price",upgrades:"Upgrades",optionalUpgrades:"Optional upgrades",totalWithUpgrades:"Total incl. upgrades",nameLabel:"Name *",namePlaceholder:"Max Mustermann",emailLabel:"Email *",emailPlaceholder:"max@mail.de",phoneLabel:"Phone",phonePlaceholder:"Optional",vinLabel:"Vehicle identification number (VIN)",vinPlaceholder:"Optional – helps us assess your vehicle",messageLabel:"Message",messagePlaceholder:"Tell us about your project – vehicle, desired sound, budget …",requiredHint:"* Required fields",sending:"Sending…",submit:"Send inquiry",cardTitle:"HiFi Planet Amorbach",address:"Address",phone:"Phone",email:"Email",hours:"Opening hours",hoursWeek:"Mon–Fri: 9:00 AM–6:00 PM",hoursSat:"Sat: 10:00 AM–1:00 PM",hoursWeekDays:"Mon–Fri",hoursWeekTime:"9:00 AM – 6:00 PM",hoursSatDay:"Sat",hoursSatTime:"10:00 AM – 1:00 PM",directionsTitle:"Directions",mapEmbedName:"The Google Maps map",mapOpenChip:"Open in Maps",routePlan:"Get directions",featurePremiumTitle:"Premium Sound",featurePremiumSub:"Highest quality",featureGermanyTitle:"Made in Germany",featureGermanySub:"Precision craftsmanship",featureIndividualTitle:"Custom-built",featureIndividualSub:"Tailored solutions",featureExpertsTitle:"Expert Team",featureExpertsSub:"Passion & know-how"},galleryOverview:{metaTitle:"Photo gallery",metaDescription:"A look at our car-hifi installations – sorted by brand. Choose a brand and explore the projects.",title:"Photo gallery",intro:"Choose a brand and explore our installations in detail.",loading:"Loading…",empty:"No gallery brands have been added yet."},galleryBrandPage:{metaTitleFallback:"Photo gallery",metaTitle:e=>`${e} installations`,metaDescription:e=>`A look at our ${e} car-hifi installations.`,loading:"Loading…",breadcrumbGallery:"Gallery",titleSuffix:"Select a project",empty:"No projects have been added for this brand yet."},galleryProjectPage:{metaTitleFallback:"Photo gallery",metaDescription:e=>`Photos of our ${e} installation.`,loading:"Loading…",breadcrumbGallery:"Gallery",empty:"No photos have been added for this project yet.",enlargeImage:"Enlarge image"}},Ja={de:bw,en:vw};function yw(){const e=localStorage.getItem("hifi-lang");return e==="de"||e==="en"?e:(navigator.language||"de").toLowerCase().startsWith("de")?"de":"en"}function ju(e,t){return t.split(".").reduce((n,r)=>n==null?void 0:n[r],e)}const hg=g.createContext({language:"de",setLanguage:()=>{},toggleLanguage:()=>{},t:e=>{const t=ju(Ja.de,e);return t!==void 0?t:e}});function Yh({children:e}){const[t,n]=g.useState(yw);g.useEffect(()=>{document.documentElement.setAttribute("lang",t),localStorage.setItem("hifi-lang",t)},[t]);const r=()=>n(i=>i==="de"?"en":"de"),s=i=>{const l=Ja[t]||Ja.de,o=ju(l,i);if(o!==void 0)return o;const u=ju(Ja.de,i);return u!==void 0?u:i};return a.jsx(hg.Provider,{value:{language:t,setLanguage:n,toggleLanguage:r,t:s},children:e})}function Te(){return g.useContext(hg)}function mg({overHero:e=!1}){const{theme:t,toggleTheme:n}=xw(),{t:r}=Te();return a.jsx("button",{onClick:n,"aria-label":r("themeToggle.label"),className:`rounded-full p-2 transition ${e?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:t==="dark"?a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"h-5 w-5",children:a.jsx("path",{d:"M12 3a1 1 0 011 1v1a1 1 0 11-2 0V4a1 1 0 011-1zm0 15a5 5 0 100-10 5 5 0 000 10zm9-6a1 1 0 010 2h-1a1 1 0 110-2h1zM4 12a1 1 0 010 2H3a1 1 0 110-2h1zm14.36-7.36a1 1 0 011.42 1.42l-.71.7a1 1 0 11-1.41-1.4l.7-.72zM5.64 18.36a1 1 0 011.41 1.41l-.7.71a1 1 0 11-1.42-1.41l.71-.71zm12.72 0l.71.7a1 1 0 11-1.41 1.42l-.71-.71a1 1 0 011.41-1.41zM6.34 5.64l-.7-.7A1 1 0 117.05 3.5l.7.71A1 1 0 016.34 5.64zM12 6a1 1 0 011-1v0a1 1 0 01-1 1zm0 12a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1z"})}):a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"h-5 w-5",children:a.jsx("path",{fillRule:"evenodd",d:"M9.53 2.25a.75.75 0 01.19.82 8.25 8.25 0 0011.03 11.03.75.75 0 011.01.99A10.5 10.5 0 1112.9 2.1a.75.75 0 011.63-.85z",clipRule:"evenodd"})})})}function We({name:e,className:t="h-6 w-6",...n}){return e?a.jsx(Bb,{name:e,className:t,...n}):null}const fg=g.createContext(null);function kw({children:e}){const[t,n]=g.useState(null),[r,s]=g.useState(!0);g.useEffect(()=>{A.get("/auth/me").then(d=>n(d.authenticated===!1?null:d)).catch(()=>n(null)).finally(()=>s(!1))},[]);const i=async(d,h)=>{const m=await A.post("/auth/login",{username:d,password:h});return m.requires_2fa?{requires2fa:!0}:(n(m),{requires2fa:!1})},l=async d=>{const h=await A.post("/auth/verify-2fa",{code:d});n(h)},o=async()=>{await A.post("/auth/logout",{}),n(null)},u=async()=>{const d=await A.get("/auth/me");n(d.authenticated===!1?null:d)},c=d=>{var h;return!!t&&(t.is_super_admin||((h=t.permissions)==null?void 0:h.includes(d)))};return a.jsx(fg.Provider,{value:{user:t,loading:r,login:i,verifyTwoFactor:l,logout:o,refreshUser:u,hasPermission:c},children:e})}function Bt(){return g.useContext(fg)}const pg=g.createContext({phone:"09373 20 62 390",whatsapp:null,contact_email:"info@hifi-planet-amorbach.de",hero_image_path:null,ga_measurement_id:null}),ww=pg.Provider;function Vr(){return g.useContext(pg)}const Ks="/assets/logo-BNfZDkmN.png",Di="/assets/logo-dark-R-ckaBhx.png",jw="https://www.audio4cars.de/",Xh=e=>(e||"").replace(/[^\d+]/g,""),Zh=70,Nw=500;function Sw({className:e}){return a.jsxs("svg",{viewBox:"0 0 3 2",className:e,"aria-hidden":"true",children:[a.jsx("rect",{width:"3",height:"0.667",y:"0",fill:"#000"}),a.jsx("rect",{width:"3",height:"0.667",y:"0.667",fill:"#D00"}),a.jsx("rect",{width:"3",height:"0.666",y:"1.334",fill:"#FFCE00"})]})}function Cw({className:e}){return a.jsxs("svg",{viewBox:"0 0 60 30",className:e,"aria-hidden":"true",children:[a.jsx("clipPath",{id:"fgb-t",children:a.jsx("path",{d:"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"})}),a.jsx("path",{d:"M0,0 v30 h60 v-30 z",fill:"#00247d"}),a.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",stroke:"#fff",strokeWidth:"6"}),a.jsx("path",{d:"M0,0 L60,30 M60,0 L0,30",clipPath:"url(#fgb-t)",stroke:"#cf142b",strokeWidth:"4"}),a.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#fff",strokeWidth:"10"}),a.jsx("path",{d:"M30,0 v30 M0,15 h60",stroke:"#cf142b",strokeWidth:"6"})]})}const Zl=[{code:"de",label:"Deutsch",Flag:Sw},{code:"en",label:"English",Flag:Cw}];function Pw({overHero:e=!1}){const{language:t,setLanguage:n,t:r}=Te(),[s,i]=g.useState(!1),l=g.useRef(null),o=Zl.find(u=>u.code===t)||Zl[0];return g.useEffect(()=>{if(!s)return;const u=d=>{l.current&&!l.current.contains(d.target)&&i(!1)},c=d=>{d.key==="Escape"&&i(!1)};return document.addEventListener("mousedown",u),document.addEventListener("keydown",c),()=>{document.removeEventListener("mousedown",u),document.removeEventListener("keydown",c)}},[s]),a.jsxs("div",{className:"relative",ref:l,children:[a.jsxs("button",{type:"button",onClick:()=>i(u=>!u),"aria-haspopup":"listbox","aria-expanded":s,"aria-label":r("languageToggle.label"),className:`flex items-center gap-1 rounded-full p-1.5 transition ${e?"hover:bg-white/10":"hover:bg-neutral-100 dark:hover:bg-neutral-800"}`,children:[a.jsx("span",{className:`block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] ring-1 ${e?"ring-white/50":"ring-neutral-300 dark:ring-neutral-600"}`,children:a.jsx(o.Flag,{className:"h-full w-full"})}),a.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",className:`h-3 w-3 transition-transform ${e?"text-white/70":"text-neutral-400"} ${s?"rotate-180":""}`,children:a.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"})})]}),s&&a.jsx("div",{role:"listbox",className:"absolute right-0 z-50 mt-2 min-w-[9rem] overflow-hidden rounded-lg border border-neutral-200 bg-white py-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900",children:Zl.map(u=>a.jsxs("button",{type:"button",role:"option","aria-selected":u.code===t,onClick:()=>{n(u.code),i(!1)},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm transition hover:bg-neutral-100 dark:hover:bg-neutral-800 ${u.code===t?"font-semibold text-brand-600 dark:text-brand-400":"text-neutral-700 dark:text-neutral-200"}`,children:[a.jsx("span",{className:"block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] ring-1 ring-neutral-300 dark:ring-neutral-600",children:a.jsx(u.Flag,{className:"h-full w-full"})}),u.label]},u.code))})]})}function Ew(){const[e,t]=g.useState(!1),[n,r]=g.useState(!1),[s,i]=g.useState(!1),{user:l}=Bt(),{phone:o,whatsapp:u}=Vr(),{t:c}=Te(),d=u?8:7,m=mt().pathname==="/",[f,b]=g.useState(!m);g.useEffect(()=>{if(!m){b(!0);return}const v=()=>b(window.scrollY>24);return v(),window.addEventListener("scroll",v,{passive:!0}),()=>window.removeEventListener("scroll",v)},[m]);const y=m&&!f;g.useEffect(()=>{if(e){r(!0);let j;const C=requestAnimationFrame(()=>{j=requestAnimationFrame(()=>i(!0))});return()=>{cancelAnimationFrame(C),j&&cancelAnimationFrame(j)}}i(!1);const v=Nw+(d-1)*Zh,k=setTimeout(()=>r(!1),v);return()=>clearTimeout(k)},[e,d]);const w=()=>`transition-all duration-500 ease-out ${s?"opacity-100":"opacity-0"}`,x=v=>({transitionDelay:`${(s?v:d-1-v)*Zh}ms`,transform:s?"translateY(0)":"translateY(-140px)"}),p=l&&a.jsx(H,{to:"/admin","aria-label":c("nav.adminPanel"),title:c("nav.adminPanel"),className:`rounded-full p-2 transition ${y?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx(We,{name:"layout-dashboard",className:"h-5 w-5"})});return a.jsxs("header",{className:`sticky top-0 z-30 border-b transition-colors duration-300 ${y?"border-transparent bg-transparent":"border-neutral-200 bg-white/90 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/90"}`,children:[a.jsxs("div",{className:"mx-auto grid max-w-6xl grid-cols-[1fr_auto_1fr] items-center gap-3 px-4 py-3 sm:px-6",children:[a.jsx("div",{className:"flex items-center justify-self-start",children:a.jsx("button",{onClick:()=>t(!0),"aria-label":c("nav.openMenu"),className:`rounded-md p-2 transition ${y?"text-white hover:bg-white/10":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})})}),a.jsxs(H,{to:"/",className:"flex items-center justify-self-center rounded-lg px-2 py-1",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-14 w-auto dark:hidden sm:h-16"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-14 w-auto dark:block sm:h-16"})]}),a.jsxs("div",{className:"flex items-center justify-self-end gap-1",children:[p,!e&&a.jsx(Pw,{overHero:y}),a.jsx(mg,{overHero:y})]})]}),n&&Gc.createPortal(a.jsx("div",{className:"fixed inset-0 z-[100] overflow-y-auto text-left backdrop-blur-xl",style:{background:"linear-gradient(135deg, rgba(241,245,249,0.55) 0%, rgba(227,240,207,0.55) 50%, rgba(248,250,252,0.55) 100%)"},children:a.jsxs("div",{className:"relative mx-auto flex min-h-full max-w-6xl flex-col items-start justify-center gap-5 py-24 pl-6 pr-8 sm:pl-8",children:[a.jsxs("button",{onClick:()=>t(!1),"aria-label":c("nav.closeMenu"),className:"absolute left-6 top-8 flex items-center gap-2 text-neutral-600 hover:text-brand-600 sm:left-8 sm:top-[65px]",children:[a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6l12 12M18 6 6 18"})}),a.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide",children:c("nav.close")})]}),a.jsx(H,{to:"/fahrzeuge",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(0),children:c("nav.vehicles")}),a.jsx(H,{to:"/leistungen",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(1),children:c("nav.services")}),a.jsx(H,{to:"/galerie",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(2),children:c("nav.gallery")}),a.jsx(H,{to:"/kontakt",onClick:()=>t(!1),className:`text-3xl font-extrabold tracking-tight text-neutral-900 hover:text-brand-600 ${w()}`,style:x(3),children:c("nav.contact")}),a.jsx("div",{className:`h-px w-16 bg-brand-500/60 ${w()}`,style:x(4)}),o&&a.jsxs("a",{href:`tel:${Xh(o)}`,className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(5),children:[a.jsx(We,{name:"phone",className:"h-4 w-4"}),o]}),u&&a.jsxs("a",{href:`https://wa.me/${Xh(u).replace(/^0/,"49").replace("+","")}`,target:"_blank",rel:"noopener noreferrer",className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(6),children:[a.jsx(We,{name:"message-circle",className:"h-4 w-4"}),c("nav.whatsapp")]}),a.jsxs("a",{href:jw,target:"_blank",rel:"noopener noreferrer",className:`flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-600 hover:text-brand-600 ${w()}`,style:x(u?7:6),children:[a.jsx(We,{name:"shopping-bag",className:"h-4 w-4"}),c("nav.shop")]})]})}),document.body)]})}const Qh="hifiplanet-cookie-consent",gg={necessary:!0,external:!1,analytics:!1},xg=g.createContext({consent:gg,decided:!1,settingsOpen:!1,acceptAll:()=>{},rejectNonEssential:()=>{},saveCustom:()=>{},openSettings:()=>{},closeSettings:()=>{}});function Tw({children:e}){const[t,n]=g.useState(gg),[r,s]=g.useState(!1),[i,l]=g.useState(!1);g.useEffect(()=>{try{const f=localStorage.getItem(Qh);if(f){const b=JSON.parse(f);n({necessary:!0,external:!!b.external,analytics:!!b.analytics}),s(!0)}}catch{}},[]);const o=g.useCallback(f=>{n(f),s(!0),l(!1),localStorage.setItem(Qh,JSON.stringify({...f,decidedAt:new Date().toISOString()}))},[]),u=g.useCallback(()=>o({necessary:!0,external:!0,analytics:!0}),[o]),c=g.useCallback(()=>o({necessary:!0,external:!1,analytics:!1}),[o]),d=g.useCallback(f=>o({necessary:!0,external:!!f.external,analytics:!!f.analytics}),[o]),h=g.useCallback(()=>l(!0),[]),m=g.useCallback(()=>l(!1),[]);return a.jsx(xg.Provider,{value:{consent:t,decided:r,settingsOpen:i,acceptAll:u,rejectNonEssential:c,saveCustom:d,openSettings:h,closeSettings:m},children:e})}function Or(){return g.useContext(xg)}const Aw=e=>(e||"").replace(/[^\d+]/g,""),Mw=encodeURIComponent("Boxbrunner Str. 20a, 63916 Amorbach"),_w=`https://www.google.com/maps/dir/?api=1&destination=${Mw}`;function Lw(){const e=new Date,t=e.getHours()*60+e.getMinutes(),n=e.getDay();return n===0?!1:n===6?t>=10*60&&t<13*60:t>=9*60&&t<18*60}function Dw(){const e=Lw(),{openSettings:t}=Or(),{pathname:n}=mt(),r=n==="/",{phone:s,contact_email:i}=Vr(),{t:l}=Te(),o=[{key:"monFri",days:l("footer.days.monFri"),label:l("contactPage.hoursWeek")},{key:"sat",days:l("footer.days.sat"),label:l("contactPage.hoursSat")},{key:"sun",days:l("footer.days.sun"),label:l("footer.closed")}];return a.jsxs("footer",{className:`border-t border-neutral-200 bg-neutral-50 py-10 text-sm text-neutral-600 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-300 ${r?"pb-24":""}`,children:[a.jsxs("div",{className:"mx-auto grid max-w-6xl gap-4 px-4 sm:grid-cols-3 sm:px-6",children:[a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[a.jsx(We,{name:"map-pin",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:"HifiPlanet"})]}),a.jsx("p",{children:"Boxbrunner Str. 20a"}),a.jsx("p",{children:"63916 Amorbach"}),a.jsxs("a",{href:_w,target:"_blank",rel:"noopener noreferrer",className:"mt-4 flex items-center justify-center gap-1.5 rounded-md bg-brand-500 px-3 py-2 text-xs font-semibold text-white hover:bg-brand-600",children:[a.jsx(We,{name:"navigation",className:"h-3.5 w-3.5"}),l("footer.routePlan")]})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[a.jsx(We,{name:"phone",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:l("footer.contactHeading")})]}),a.jsx("p",{children:a.jsx("a",{href:`tel:${Aw(s)}`,className:"inline-block py-1 hover:text-brand-500",children:s})}),a.jsx("p",{children:a.jsx("a",{href:`mailto:${i}`,className:"inline-block py-1 hover:text-brand-500",children:i})}),a.jsx(H,{to:"/kontakt",className:"mt-4 flex items-center justify-center gap-1.5 rounded-md border border-neutral-300 px-3 py-2 text-xs font-semibold text-neutral-700 hover:border-brand-500 hover:text-brand-600 dark:border-neutral-700 dark:text-neutral-200",children:l("footer.contactForm")})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-3 flex items-center justify-between gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(We,{name:"clock",className:"h-4 w-4 text-brand-500"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:l("footer.hoursHeading")})]}),a.jsxs("span",{className:`flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[11px] font-semibold ${e?"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300":"bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400"}`,children:[a.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${e?"bg-green-500":"bg-neutral-400"}`}),l(e?"footer.open":"footer.closed")]})]}),a.jsx("dl",{className:"space-y-1.5",children:o.map(u=>a.jsxs("div",{className:"flex items-center justify-between gap-3",children:[a.jsx("dt",{className:"text-neutral-500 dark:text-neutral-400",children:u.days}),a.jsx("dd",{className:"font-medium text-neutral-700 dark:text-neutral-200",children:u.label})]},u.key))})]})]}),a.jsx("div",{className:"mx-auto mt-8 max-w-6xl border-t border-neutral-200 px-4 pt-6 text-center text-xs text-neutral-500 dark:border-neutral-800 dark:text-neutral-400 sm:px-6",children:a.jsxs("p",{className:"flex flex-wrap items-center justify-center gap-x-2 gap-y-1",children:[a.jsx("span",{children:l("footer.copyright")(new Date().getFullYear())}),a.jsx("span",{children:"·"}),a.jsx(H,{to:"/impressum",className:"hover:text-brand-500",children:l("footer.imprint")}),a.jsx("span",{children:"·"}),a.jsx(H,{to:"/datenschutz",className:"hover:text-brand-500",children:l("footer.privacy")}),a.jsx("span",{children:"·"}),a.jsx(H,{to:"/agb",className:"hover:text-brand-500",children:l("footer.terms")}),a.jsx("span",{children:"·"}),a.jsx("button",{type:"button",onClick:t,className:"hover:text-brand-500",children:l("footer.cookieSettings")})]})})]})}const Xc=g.createContext({});function wn(e){const t=g.useRef(null);return t.current===null&&(t.current=e()),t.current}const Bw=typeof window<"u",sa=Bw?g.useLayoutEffect:g.useEffect,ml=g.createContext(null);function Zc(e,t){e.indexOf(t)===-1&&e.push(t)}function Bi(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const St=(e,t,n)=>n>t?t:n {};const jn={},bg=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),vg=e=>typeof e=="object"&&e!==null,yg=e=>/^0[^.\s]+$/u.test(e);function kg(e){let t;return()=>(t===void 0&&(t=e()),t)}const Ke=e=>e,aa=(...e)=>e.reduce((t,n)=>r=>n(t(r))),Tr=(e,t,n)=>{const r=t-e;return r?(n-e)/r:1};class Jc{constructor(){this.subscriptions=[]}add(t){return Zc(this.subscriptions,t),()=>Bi(this.subscriptions,t)}notify(t,n,r){const s=this.subscriptions.length;if(s)if(s===1)this.subscriptions[0](t,n,r);else for(let i=0;i e*1e3,ot=e=>e/1e3,ed=(e,t)=>t?e*(1e3/t):0,wg=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,zw=1e-7,Rw=12;function Iw(e,t,n,r,s){let i,l,o=0;do l=t+(n-t)/2,i=wg(l,r,s)-e,i>0?n=l:t=l;while(Math.abs(i)>zw&&++oIw(i,0,1,e,n);return i=>i===0||i===1?i:wg(s(i),t,r)}const jg=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Ng=e=>t=>1-e(1-t),Sg=ia(.33,1.53,.69,.99),td=Ng(Sg),Cg=jg(td),Pg=e=>e>=1?1:(e*=2)<1?.5*td(e):.5*(2-Math.pow(2,-10*(e-1))),nd=e=>1-Math.sin(Math.acos(e)),Eg=Ng(nd),Tg=jg(nd),Fw=ia(.42,0,1,1),Vw=ia(0,0,.58,1),Ag=ia(.42,0,.58,1),Ow=e=>Array.isArray(e)&&typeof e[0]!="number",Mg=e=>Array.isArray(e)&&typeof e[0]=="number",Uw={linear:Ke,easeIn:Fw,easeInOut:Ag,easeOut:Vw,circIn:nd,circInOut:Tg,circOut:Eg,backIn:td,backInOut:Cg,backOut:Sg,anticipate:Pg},Ww=e=>typeof e=="string",Jh=e=>{if(Mg(e)){Qc(e.length===4);const[t,n,r,s]=e;return ia(t,n,r,s)}else if(Ww(e))return Uw[e];return e},Ma=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Hw(e){let t=new Set,n=new Set,r=!1,s=!1;const i=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function o(c){i.has(c)&&(u.schedule(c),e()),c(l)}const u={schedule:(c,d=!1,h=!1)=>{const f=h&&r?t:n;return d&&i.add(c),f.add(c),c},cancel:c=>{n.delete(c),i.delete(c)},process:c=>{if(l=c,r){s=!0;return}r=!0;const d=t;t=n,n=d,t.forEach(o),t.clear(),r=!1,s&&(s=!1,u.process(c))}};return u}const $w=40;function _g(e,t){let n=!1,r=!0;const s={delta:0,timestamp:0,isProcessing:!1},i=()=>n=!0,l=Ma.reduce((v,k)=>(v[k]=Hw(i),v),{}),{setup:o,read:u,resolveKeyframes:c,preUpdate:d,update:h,preRender:m,render:f,postRender:b}=l,y=()=>{const v=jn.useManualTiming,k=v?s.timestamp:performance.now();n=!1,v||(s.delta=r?1e3/60:Math.max(Math.min(k-s.timestamp,$w),1)),s.timestamp=k,s.isProcessing=!0,o.process(s),u.process(s),c.process(s),d.process(s),h.process(s),m.process(s),f.process(s),b.process(s),s.isProcessing=!1,n&&t&&(r=!1,e(y))},w=()=>{n=!0,r=!0,s.isProcessing||e(y)};return{schedule:Ma.reduce((v,k)=>{const j=l[k];return v[k]=(C,S=!1,P=!1)=>(n||w(),j.schedule(C,S,P)),v},{}),cancel:v=>{for(let k=0;k (ei===void 0&&Be.set(we.isProcessing||jn.useManualTiming?we.timestamp:performance.now()),ei),set:e=>{ei=e,queueMicrotask(Gw)}},Lg=e=>t=>typeof t=="string"&&t.startsWith(e),Dg=Lg("--"),Kw=Lg("var(--"),rd=e=>Kw(e)?qw.test(e.split("/*")[0].trim()):!1,qw=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function em(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const Ur={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},qs={...Ur,transform:e=>St(0,1,e)},_a={...Ur,default:1},ys=e=>Math.round(e*1e5)/1e5,sd=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function Yw(e){return e==null}const Xw=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ad=(e,t)=>n=>!!(typeof n=="string"&&Xw.test(n)&&n.startsWith(e)||t&&!Yw(n)&&Object.prototype.hasOwnProperty.call(n,t)),Bg=(e,t,n)=>r=>{if(typeof r!="string")return r;const[s,i,l,o]=r.match(sd);return{[e]:parseFloat(s),[t]:parseFloat(i),[n]:parseFloat(l),alpha:o!==void 0?parseFloat(o):1}},Zw=e=>St(0,255,e),Jl={...Ur,transform:e=>Math.round(Zw(e))},zn={test:ad("rgb","red"),parse:Bg("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Jl.transform(e)+", "+Jl.transform(t)+", "+Jl.transform(n)+", "+ys(qs.transform(r))+")"};function Qw(e){let t="",n="",r="",s="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),s=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),s=e.substring(4,5),t+=t,n+=n,r+=r,s+=s),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:s?parseInt(s,16)/255:1}}const Nu={test:ad("#"),parse:Qw,transform:zn.transform},la=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),It=la("deg"),Lt=la("%"),V=la("px"),Jw=la("vh"),e1=la("vw"),tm={...Lt,parse:e=>Lt.parse(e)/100,transform:e=>Lt.transform(e*100)},dr={test:ad("hsl","hue"),parse:Bg("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+Lt.transform(ys(t))+", "+Lt.transform(ys(n))+", "+ys(qs.transform(r))+")"},ge={test:e=>zn.test(e)||Nu.test(e)||dr.test(e),parse:e=>zn.test(e)?zn.parse(e):dr.test(e)?dr.parse(e):Nu.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?zn.transform(e):dr.transform(e),getAnimatableNone:e=>{const t=ge.parse(e);return t.alpha=0,ge.transform(t)}},t1=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function n1(e){var t,n;return isNaN(e)&&typeof e=="string"&&(((t=e.match(sd))==null?void 0:t.length)||0)+(((n=e.match(t1))==null?void 0:n.length)||0)>0}const zg="number",Rg="color",r1="var",s1="var(",nm="${}",a1=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Ar(e){const t=e.toString(),n=[],r={color:[],number:[],var:[]},s=[];let i=0;const o=t.replace(a1,u=>(ge.test(u)?(r.color.push(i),s.push(Rg),n.push(ge.parse(u))):u.startsWith(s1)?(r.var.push(i),s.push(r1),n.push(u)):(r.number.push(i),s.push(zg),n.push(parseFloat(u))),++i,nm)).split(nm);return{values:n,split:o,indexes:r,types:s}}function i1(e){return Ar(e).values}function Ig({split:e,types:t}){const n=e.length;return r=>{let s="";for(let i=0;i typeof e=="number"?0:ge.test(e)?ge.getAnimatableNone(e):e,u1=(e,t)=>typeof e=="number"?t!=null&&t.trim().endsWith("/")?e:0:o1(e);function c1(e){const t=Ar(e);return Ig(t)(t.values.map((r,s)=>u1(r,t.split[s])))}const jt={test:n1,parse:i1,createTransformer:l1,getAnimatableNone:c1};function eo(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function d1({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let s=0,i=0,l=0;if(!t)s=i=l=n;else{const o=n<.5?n*(1+t):n+t-n*t,u=2*n-o;s=eo(u,o,e+1/3),i=eo(u,o,e),l=eo(u,o,e-1/3)}return{red:Math.round(s*255),green:Math.round(i*255),blue:Math.round(l*255),alpha:r}}function zi(e,t){return n=>n>0?t:e}const re=(e,t,n)=>e+(t-e)*n,to=(e,t,n)=>{const r=e*e,s=n*(t*t-r)+r;return s<0?0:Math.sqrt(s)},h1=[Nu,zn,dr],m1=e=>h1.find(t=>t.test(e));function rm(e){const t=m1(e);if(!t)return!1;let n=t.parse(e);return t===dr&&(n=d1(n)),n}const sm=(e,t)=>{const n=rm(e),r=rm(t);if(!n||!r)return zi(e,t);const s={...n};return i=>(s.red=to(n.red,r.red,i),s.green=to(n.green,r.green,i),s.blue=to(n.blue,r.blue,i),s.alpha=re(n.alpha,r.alpha,i),zn.transform(s))},Su=new Set(["none","hidden"]);function f1(e,t){return Su.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function p1(e,t){return n=>re(e,t,n)}function id(e){return typeof e=="number"?p1:typeof e=="string"?rd(e)?zi:ge.test(e)?sm:b1:Array.isArray(e)?Fg:typeof e=="object"?ge.test(e)?sm:g1:zi}function Fg(e,t){const n=[...e],r=n.length,s=e.map((i,l)=>id(i)(i,t[l]));return i=>{for(let l=0;l {for(const i in r)n[i]=r[i](s);return n}}function x1(e,t){const n=[],r={color:0,var:0,number:0};for(let s=0;s {const n=jt.createTransformer(t),r=Ar(e),s=Ar(t);return r.indexes.var.length===s.indexes.var.length&&r.indexes.color.length===s.indexes.color.length&&r.indexes.number.length>=s.indexes.number.length?Su.has(e)&&!s.values.length||Su.has(t)&&!r.values.length?f1(e,t):aa(Fg(x1(r,s),s.values),n):zi(e,t)};function Vg(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?re(e,t,n):id(e)(e,t)}const v1=e=>{const t=({timestamp:n})=>e(n);return{start:(n=!0)=>Q.update(t,n),stop:()=>ht(t),now:()=>we.isProcessing?we.timestamp:Be.now()}},Og=(e,t,n=10)=>{let r="";const s=Math.max(Math.round(t/n),2);for(let i=0;i =Ri?1/0:t}function y1(e,t=100,n){const r=n({...e,keyframes:[0,t]}),s=Math.min(ld(r),Ri);return{type:"keyframes",ease:i=>r.next(s*i).value/t,duration:ot(s)}}const he={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Cu(e,t){return e*Math.sqrt(1-t*t)}const k1=12;function w1(e,t,n){let r=n;for(let s=1;s{const d=c*l,h=d*e,m=d-n,f=Cu(c,l),b=Math.exp(-h);return no-m/f*b},i=c=>{const h=c*l*e,m=h*n+n,f=Math.pow(l,2)*Math.pow(c,2)*e,b=Math.exp(-h),y=Cu(Math.pow(c,2),l);return(-s(c)+no>0?-1:1)*((m-f)*b)/y}):(s=c=>{const d=Math.exp(-c*e),h=(c-n)*e+1;return-no+d*h},i=c=>{const d=Math.exp(-c*e),h=(n-c)*(e*e);return d*h});const o=5/e,u=w1(s,i,o);if(e=Je(e),isNaN(u))return{stiffness:he.stiffness,damping:he.damping,duration:e};{const c=Math.pow(u,2)*r;return{stiffness:c,damping:l*2*Math.sqrt(r*c),duration:e}}}const N1=["duration","bounce"],S1=["stiffness","damping","mass"];function am(e,t){return t.some(n=>e[n]!==void 0)}function C1(e){let t={velocity:he.velocity,stiffness:he.stiffness,damping:he.damping,mass:he.mass,isResolvedFromDuration:!1,...e};if(!am(e,S1)&&am(e,N1))if(t.velocity=0,e.visualDuration){const n=e.visualDuration,r=2*Math.PI/(n*1.2),s=r*r,i=2*St(.05,1,1-(e.bounce||0))*Math.sqrt(s);t={...t,mass:he.mass,stiffness:s,damping:i}}else{const n=j1({...e,velocity:0});t={...t,...n,mass:he.mass},t.isResolvedFromDuration=!0}return t}function Ii(e=he.visualDuration,t=he.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:r,restDelta:s}=n;const i=n.keyframes[0],l=n.keyframes[n.keyframes.length-1],o={done:!1,value:i},{stiffness:u,damping:c,mass:d,duration:h,velocity:m,isResolvedFromDuration:f}=C1({...n,velocity:-ot(n.velocity||0)}),b=m||0,y=c/(2*Math.sqrt(u*d)),w=l-i,x=ot(Math.sqrt(u/d)),p=Math.abs(w)<5;r||(r=p?he.restSpeed.granular:he.restSpeed.default),s||(s=p?he.restDelta.granular:he.restDelta.default);let v,k,j,C,S,P;if(y<1)j=Cu(x,y),C=(b+y*x*w)/j,v=E=>{const N=Math.exp(-y*x*E);return l-N*(C*Math.sin(j*E)+w*Math.cos(j*E))},S=y*x*C+w*j,P=y*x*w-C*j,k=E=>Math.exp(-y*x*E)*(S*Math.sin(j*E)+P*Math.cos(j*E));else if(y===1){v=N=>l-Math.exp(-x*N)*(w+(b+x*w)*N);const E=b+x*w;k=N=>Math.exp(-x*N)*(x*E*N-b)}else{const E=x*Math.sqrt(y*y-1);v=W=>{const q=Math.exp(-y*x*W),z=Math.min(E*W,300);return l-q*((b+y*x*w)*Math.sinh(z)+E*w*Math.cosh(z))/E};const N=(b+y*x*w)/E,L=y*x*N-w*E,U=y*x*w-N*E;k=W=>{const q=Math.exp(-y*x*W),z=Math.min(E*W,300);return q*(L*Math.sinh(z)+U*Math.cosh(z))}}const M={calculatedDuration:f&&h||null,velocity:E=>Je(k(E)),next:E=>{if(!f&&y<1){const L=Math.exp(-y*x*E),U=Math.sin(j*E),W=Math.cos(j*E),q=l-L*(C*U+w*W),z=Je(L*(S*U+P*W));return o.done=Math.abs(z)<=r&&Math.abs(l-q)<=s,o.value=o.done?l:q,o}const N=v(E);if(f)o.done=E>=h;else{const L=Je(k(E));o.done=Math.abs(L)<=r&&Math.abs(l-N)<=s}return o.value=o.done?l:N,o},toString:()=>{const E=Math.min(ld(M),Ri),N=Og(L=>M.next(E*L).value,E,30);return E+"ms "+N},toTransition:()=>{}};return M}Ii.applyToOptions=e=>{const t=y1(e,100,Ii);return e.ease=t.ease,e.duration=Je(t.duration),e.type="keyframes",e};const P1=5;function Ug(e,t,n){const r=Math.max(t-P1,0);return ed(n-e(r),t-r)}function Pu({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:s=10,bounceStiffness:i=500,modifyTarget:l,min:o,max:u,restDelta:c=.5,restSpeed:d}){const h=e[0],m={done:!1,value:h},f=P=>o!==void 0&&P u,b=P=>o===void 0?u:u===void 0||Math.abs(o-P) -y*Math.exp(-P/r),v=P=>x+p(P),k=P=>{const M=p(P),E=v(P);m.done=Math.abs(M)<=c,m.value=m.done?x:E};let j,C;const S=P=>{f(m.value)&&(j=P,C=Ii({keyframes:[m.value,b(m.value)],velocity:Ug(v,P,m.value),damping:s,stiffness:i,restDelta:c,restSpeed:d}))};return S(0),{calculatedDuration:null,next:P=>{let M=!1;return!C&&j===void 0&&(M=!0,k(P),S(P)),j!==void 0&&P>=j?C.next(P-j):(!M&&k(P),m)}}}function E1(e,t,n){const r=[],s=n||jn.mix||Vg,i=e.length-1;for(let l=0;lt[0];if(i===2&&t[0]===t[1])return()=>t[1];const l=e[0]===e[1];e[0]>e[i-1]&&(e=[...e].reverse(),t=[...t].reverse());const o=E1(t,r,s),u=o.length,c=d=>{if(l&&d 1)for(;h c(St(e[0],e[i-1],d)):c}function T1(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const s=Tr(0,t,r);e.push(re(n,1,s))}}function Wg(e){const t=[0];return T1(t,e.length-1),t}function A1(e,t){return e.map(n=>n*t)}function M1(e,t){return e.map(()=>t||Ag).splice(0,e.length-1)}function ks({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const s=Ow(r)?r.map(Jh):Jh(r),i={done:!1,value:t[0]},l=A1(n&&n.length===t.length?n:Wg(t),e),o=od(l,t,{ease:Array.isArray(s)?s:M1(t,s)});return{calculatedDuration:e,next:u=>(i.value=o(u),i.done=u>=e,i)}}const _1=e=>e!==null;function fl(e,{repeat:t,repeatType:n="loop"},r,s=1){const i=e.filter(_1),o=s<0||t&&n!=="loop"&&t%2===1?0:i.length-1;return!o||r===void 0?i[o]:r}const L1={decay:Pu,inertia:Pu,tween:ks,keyframes:ks,spring:Ii};function Hg(e){typeof e.type=="string"&&(e.type=L1[e.type])}class ud{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,n){return this.finished.then(t,n)}}const D1=e=>e/100;class Ys extends ud{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{var r,s;const{motionValue:n}=this.options;n&&n.updatedAt!==Be.now()&&this.tick(Be.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(s=(r=this.options).onStop)==null||s.call(r))},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;Hg(t);const{type:n=ks,repeat:r=0,repeatDelay:s=0,repeatType:i,velocity:l=0}=t;let{keyframes:o}=t;const u=n||ks;u!==ks&&typeof o[0]!="number"&&(this.mixKeyframes=aa(D1,Vg(o[0],o[1])),o=[0,100]);const c=u({...t,keyframes:o});i==="mirror"&&(this.mirroredGenerator=u({...t,keyframes:[...o].reverse(),velocity:-l})),c.calculatedDuration===null&&(c.calculatedDuration=ld(c));const{calculatedDuration:d}=c;this.calculatedDuration=d,this.resolvedDuration=d+s,this.totalDuration=this.resolvedDuration*(r+1)-s,this.generator=c}updateTime(t){const n=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(t,n=!1){const{generator:r,totalDuration:s,mixKeyframes:i,mirroredGenerator:l,resolvedDuration:o,calculatedDuration:u}=this;if(this.startTime===null)return r.next(0);const{delay:c=0,keyframes:d,repeat:h,repeatType:m,repeatDelay:f,type:b,onUpdate:y,finalKeyframe:w}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-s/this.speed,this.startTime)),n?this.currentTime=t:this.updateTime(t);const x=this.currentTime-c*(this.playbackSpeed>=0?1:-1),p=this.playbackSpeed>=0?x<0:x>s;this.currentTime=Math.max(x,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=s);let v=this.currentTime,k=r;if(h){const P=Math.min(this.currentTime,s)/o;let M=Math.floor(P),E=P%1;!E&&P>=1&&(E=1),E===1&&M--,M=Math.min(M,h+1),!!(M%2)&&(m==="reverse"?(E=1-E,f&&(E-=f/o)):m==="mirror"&&(k=l)),v=St(0,1,E)*o}let j;p?(this.delayState.value=d[0],j=this.delayState):j=k.next(v),i&&!p&&(j.value=i(j.value));let{done:C}=j;!p&&u!==null&&(C=this.playbackSpeed>=0?this.currentTime>=s:this.currentTime<=0);const S=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&C);return S&&b!==Pu&&(j.value=fl(d,this.options,w,this.speed)),y&&y(j.value),S&&this.finish(),j}then(t,n){return this.finished.then(t,n)}get duration(){return ot(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+ot(t)}get time(){return ot(this.currentTime)}set time(t){t=Je(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const n=this.generator.next(t).value;return Ug(r=>this.generator.next(r).value,t,n)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;n&&this.driver&&this.updateTime(Be.now()),this.playbackSpeed=t,n&&this.driver&&(this.time=ot(this.currentTime))}play(){var s,i;if(this.isStopped)return;const{driver:t=v1,startTime:n}=this.options;this.driver||(this.driver=t(l=>this.tick(l))),(i=(s=this.options).onPlay)==null||i.call(s);const r=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=r):this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime||(this.startTime=n??r),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(Be.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var t,n;this.notifyFinished(),this.teardown(),this.state="finished",(n=(t=this.options).onComplete)==null||n.call(t)}cancel(){var t,n;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(n=(t=this.options).onCancel)==null||n.call(t)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){var n;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(n=this.driver)==null||n.stop(),t.observe(this)}}function B1(e){for(let t=1;t e*180/Math.PI,Eu=e=>{const t=Rn(Math.atan2(e[1],e[0]));return Tu(t)},z1={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:Eu,rotateZ:Eu,skewX:e=>Rn(Math.atan(e[1])),skewY:e=>Rn(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Tu=e=>(e=e%360,e<0&&(e+=360),e),im=Eu,lm=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),om=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),R1={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:lm,scaleY:om,scale:e=>(lm(e)+om(e))/2,rotateX:e=>Tu(Rn(Math.atan2(e[6],e[5]))),rotateY:e=>Tu(Rn(Math.atan2(-e[2],e[0]))),rotateZ:im,rotate:im,skewX:e=>Rn(Math.atan(e[4])),skewY:e=>Rn(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function Au(e){return e.includes("scale")?1:0}function Mu(e,t){if(!e||e==="none")return Au(t);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let r,s;if(n)r=R1,s=n;else{const o=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);r=z1,s=o}if(!s)return Au(t);const i=r[t],l=s[1].split(",").map(F1);return typeof i=="function"?i(l):l[i]}const I1=(e,t)=>{const{transform:n="none"}=getComputedStyle(e);return Mu(n,t)};function F1(e){return parseFloat(e.trim())}const Wr=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Hr=new Set([...Wr,"pathRotation"]),um=e=>e===Ur||e===V,V1=new Set(["x","y","z"]),O1=Wr.filter(e=>!V1.has(e));function U1(e){const t=[];return O1.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t}const un={width:({x:e},{paddingLeft:t="0",paddingRight:n="0",boxSizing:r})=>{const s=e.max-e.min;return r==="border-box"?s:s-parseFloat(t)-parseFloat(n)},height:({y:e},{paddingTop:t="0",paddingBottom:n="0",boxSizing:r})=>{const s=e.max-e.min;return r==="border-box"?s:s-parseFloat(t)-parseFloat(n)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>Mu(t,"x"),y:(e,{transform:t})=>Mu(t,"y")};un.translateX=un.x;un.translateY=un.y;const Vn=new Set;let _u=!1,Lu=!1,Du=!1;function $g(){if(Lu){const e=Array.from(Vn).filter(r=>r.needsMeasurement),t=new Set(e.map(r=>r.element)),n=new Map;t.forEach(r=>{const s=U1(r);s.length&&(n.set(r,s),r.render())}),e.forEach(r=>r.measureInitialState()),t.forEach(r=>{r.render();const s=n.get(r);s&&s.forEach(([i,l])=>{var o;(o=r.getValue(i))==null||o.set(l)})}),e.forEach(r=>r.measureEndState()),e.forEach(r=>{r.suspendedScrollY!==void 0&&window.scrollTo(0,r.suspendedScrollY)})}Lu=!1,_u=!1,Vn.forEach(e=>e.complete(Du)),Vn.clear()}function Gg(){Vn.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Lu=!0)})}function W1(){Du=!0,Gg(),$g(),Du=!1}class cd{constructor(t,n,r,s,i,l=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=r,this.motionValue=s,this.element=i,this.isAsync=l}scheduleResolve(){this.state="scheduled",this.isAsync?(Vn.add(this),_u||(_u=!0,Q.read(Gg),Q.resolveKeyframes($g))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:r,motionValue:s}=this;if(t[0]===null){const i=s==null?void 0:s.get(),l=t[t.length-1];if(i!==void 0)t[0]=i;else if(r&&n){const o=r.readValue(n,l);o!=null&&(t[0]=o)}t[0]===void 0&&(t[0]=l),s&&i===void 0&&s.set(t[0])}B1(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),Vn.delete(this)}cancel(){this.state==="scheduled"&&(Vn.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const H1=e=>e.startsWith("--");function Kg(e,t,n){H1(t)?e.style.setProperty(t,n):e.style[t]=n}const $1={};function dd(e,t){const n=kg(e);return()=>$1[t]??n()}const hd=dd(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),qg=dd(()=>window.ViewTimeline!==void 0,"viewTimeline"),Yg=dd(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),us=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,cm={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:us([0,.65,.55,1]),circOut:us([.55,0,1,.45]),backIn:us([.31,.01,.66,-.59]),backOut:us([.33,1.53,.69,.99])};function Xg(e,t){if(e)return typeof e=="function"?Yg()?Og(e,t):"ease-out":Mg(e)?us(e):Array.isArray(e)?e.map(n=>Xg(n,t)||cm.easeOut):cm[e]}function G1(e,t,n,{delay:r=0,duration:s=300,repeat:i=0,repeatType:l="loop",ease:o="easeOut",times:u}={},c=void 0){const d={[t]:n};u&&(d.offset=u);const h=Xg(o,s);Array.isArray(h)&&(d.easing=h);const m={delay:r,duration:s,easing:Array.isArray(h)?"linear":h,fill:"both",iterations:i+1,direction:l==="reverse"?"alternate":"normal"};return c&&(m.pseudoElement=c),e.animate(d,m)}function Zg(e){return typeof e=="function"&&"applyToOptions"in e}function K1({type:e,...t}){return Zg(e)&&Yg()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class Qg extends ud{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:n,name:r,keyframes:s,pseudoElement:i,allowFlatten:l=!1,finalKeyframe:o,onComplete:u}=t;this.isPseudoElement=!!i,this.allowFlatten=l,this.options=t,Qc(typeof t.type!="string");const c=K1(t);this.animation=G1(n,r,s,c,i),c.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!i){const d=fl(s,this.options,o,this.speed);this.updateMotionValue&&this.updateMotionValue(d),Kg(n,r,d),this.animation.cancel()}u==null||u(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var t,n;(n=(t=this.animation).finish)==null||n.call(t)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var n,r,s;const t=(n=this.options)==null?void 0:n.element;!this.isPseudoElement&&(t!=null&&t.isConnected)&&((s=(r=this.animation).commitStyles)==null||s.call(r))}get duration(){var n,r;const t=((r=(n=this.animation.effect)==null?void 0:n.getComputedTiming)==null?void 0:r.call(n).duration)||0;return ot(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+ot(t)}get time(){return ot(Number(this.animation.currentTime)||0)}set time(t){const n=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Je(t),n&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:n,rangeEnd:r,observe:s}){var i;return this.allowFlatten&&((i=this.animation.effect)==null||i.updateTiming({easing:"linear"})),this.animation.onfinish=null,t&&hd()?(this.animation.timeline=t,n&&(this.animation.rangeStart=n),r&&(this.animation.rangeEnd=r),Ke):s(this)}}const Jg={anticipate:Pg,backInOut:Cg,circInOut:Tg};function q1(e){return e in Jg}function Y1(e){typeof e.ease=="string"&&q1(e.ease)&&(e.ease=Jg[e.ease])}const ro=10;class X1 extends Qg{constructor(t){Y1(t),Hg(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:n,onUpdate:r,onComplete:s,element:i,...l}=this.options;if(!n)return;if(t!==void 0){n.set(t);return}const o=new Ys({...l,autoplay:!1}),u=Math.max(ro,Be.now()-this.startTime),c=St(0,ro,u-ro),d=o.sample(u).value,{name:h}=this.options;i&&h&&Kg(i,h,d),n.setWithVelocity(o.sample(Math.max(0,u-c)).value,d,c),o.stop()}}const dm=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(jt.test(e)||e==="0")&&!e.startsWith("url("));function Z1(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n Object.hasOwnProperty.call(Element.prototype,"animate"));function rj(e){var h;const{motionValue:t,name:n,repeatDelay:r,repeatType:s,damping:i,type:l,keyframes:o}=e;if(!(((h=t==null?void 0:t.owner)==null?void 0:h.current)instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:d}=t.owner.getProps();return nj()&&n&&(ex.has(n)||tj.has(n)&&ej(o))&&(n!=="transform"||!d)&&!c&&!r&&s!=="mirror"&&i!==0&&l!=="inertia"}const sj=40;class aj extends ud{constructor({autoplay:t=!0,delay:n=0,type:r="keyframes",repeat:s=0,repeatDelay:i=0,repeatType:l="loop",keyframes:o,name:u,motionValue:c,element:d,...h}){var b;super(),this.stop=()=>{var y,w;this._animation&&(this._animation.stop(),(y=this.stopTimeline)==null||y.call(this)),(w=this.keyframeResolver)==null||w.cancel()},this.createdAt=Be.now();const m={autoplay:t,delay:n,type:r,repeat:s,repeatDelay:i,repeatType:l,name:u,motionValue:c,element:d,...h},f=(d==null?void 0:d.KeyframeResolver)||cd;this.keyframeResolver=new f(o,(y,w,x)=>this.onKeyframesResolved(y,w,m,!x),u,c,d),(b=this.keyframeResolver)==null||b.scheduleResolve()}onKeyframesResolved(t,n,r,s){var x,p;this.keyframeResolver=void 0;const{name:i,type:l,velocity:o,delay:u,isHandoff:c,onUpdate:d}=r;this.resolvedAt=Be.now();let h=!0;Q1(t,i,l,o)||(h=!1,(jn.instantAnimations||!u)&&(d==null||d(fl(t,r,n))),t[0]=t[t.length-1],Bu(r),r.repeat=0);const f={startTime:s?this.resolvedAt?this.resolvedAt-this.createdAt>sj?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...r,keyframes:t},b=h&&!c&&rj(f),y=(p=(x=f.motionValue)==null?void 0:x.owner)==null?void 0:p.current;let w;if(b)try{w=new X1({...f,element:y})}catch{w=new Ys(f)}else w=new Ys(f);w.finished.then(()=>{this.notifyFinished()}).catch(Ke),this.pendingTimeline&&(this.stopTimeline=w.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=w}get finished(){return this._animation?this.animation.finished:this._finished}then(t,n){return this.finished.finally(t).then(()=>{})}get animation(){var t;return this._animation||((t=this.keyframeResolver)==null||t.resume(),W1()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var t;this._animation&&this.animation.cancel(),(t=this.keyframeResolver)==null||t.cancel()}}function tx(e,t,n,r=0,s=1){const i=Array.from(e).sort((c,d)=>c.sortNodePosition(d)).indexOf(t),l=e.size,o=(l-1)*r;return typeof n=="function"?n(i,l):s===1?i*r:o-i*r}const hm=30,ij=e=>!isNaN(parseFloat(e)),ws={current:void 0};class lj{constructor(t,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=r=>{var i;const s=Be.now();if(this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(r),this.current!==this.prev&&((i=this.events.change)==null||i.notify(this.current),this.dependents))for(const l of this.dependents)l.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=Be.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=ij(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new Jc);const r=this.events[t].add(n);return t==="change"?()=>{r(),Q.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,n,r){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-r}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var t;(t=this.events.change)==null||t.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return ws.current&&ws.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const t=Be.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>hm)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,hm);return ed(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var t,n;(t=this.dependents)==null||t.clear(),(n=this.events.destroy)==null||n.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function yt(e,t){return new lj(e,t)}function nx(e,t){if(e!=null&&e.inherit&&t){const{inherit:n,...r}=e;return{...t,...r}}return e}function md(e,t){const n=(e==null?void 0:e[t])??(e==null?void 0:e.default)??e;return n!==e?nx(n,e):n}const oj={type:"spring",stiffness:500,damping:25,restSpeed:10},uj=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),cj={type:"keyframes",duration:.8},dj={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},hj=(e,{keyframes:t})=>t.length>2?cj:Hr.has(e)?e.startsWith("scale")?uj(t[1]):oj:dj,mj=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function fj(e){for(const t in e)if(!mj.has(t))return!0;return!1}const fd=(e,t,n,r={},s,i)=>l=>{const o=md(r,e)||{},u=o.delay||r.delay||0;let{elapsed:c=0}=r;c=c-Je(u);const d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...o,delay:-c,onUpdate:m=>{t.set(m),o.onUpdate&&o.onUpdate(m)},onComplete:()=>{l(),o.onComplete&&o.onComplete()},name:e,motionValue:t,element:i?void 0:s};fj(o)||Object.assign(d,hj(e,d)),d.duration&&(d.duration=Je(d.duration)),d.repeatDelay&&(d.repeatDelay=Je(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let h=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(Bu(d),d.delay===0&&(h=!0)),(jn.instantAnimations||jn.skipAnimations||s!=null&&s.shouldSkipAnimations||o.skipAnimations)&&(h=!0,Bu(d),d.delay=0),d.allowFlatten=!o.type&&!o.ease,h&&!i&&t.get()!==void 0){const m=fl(d.keyframes,o);if(m!==void 0){Q.update(()=>{d.onUpdate(m),d.onComplete()});return}}return o.isSync?new Ys(d):new aj(d)},pj=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function gj(e){const t=pj.exec(e);if(!t)return[,];const[,n,r,s]=t;return[`--${n??r}`,s]}function rx(e,t,n=1){const[r,s]=gj(e);if(!r)return;const i=window.getComputedStyle(t).getPropertyValue(r);if(i){const l=i.trim();return bg(l)?parseFloat(l):l}return rd(s)?rx(s,t,n+1):s}function mm(e){const t=[{},{}];return e==null||e.values.forEach((n,r)=>{t[0][r]=n.get(),t[1][r]=n.getVelocity()}),t}function pd(e,t,n,r){if(typeof t=="function"){const[s,i]=mm(r);t=t(n!==void 0?n:e.custom,s,i)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[s,i]=mm(r);t=t(n!==void 0?n:e.custom,s,i)}return t}function On(e,t,n){const r=e.getProps();return pd(r,t,n!==void 0?n:r.custom,e)}const sx=new Set(["width","height","top","left","right","bottom",...Wr]),zu=e=>Array.isArray(e);function xj(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,yt(n))}function bj(e){return zu(e)?e[e.length-1]||0:e}function vj(e,t){const n=On(e,t);let{transitionEnd:r={},transition:s={},...i}=n||{};i={...i,...r};for(const l in i){const o=bj(i[l]);xj(e,l,o)}}const ke=e=>!!(e&&e.getVelocity);function yj(e){return!!(ke(e)&&e.add)}function Ru(e,t){const n=e.getValue("willChange");if(yj(n))return n.add(t);if(!n&&jn.WillChange){const r=new jn.WillChange("auto");e.addValue("willChange",r),r.add(t)}}function gd(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const kj="framerAppearId",ax="data-"+gd(kj);function ix(e){return e.props[ax]}function wj({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,r}function lx(e,t,{delay:n=0,transitionOverride:r,type:s}={}){let{transition:i,transitionEnd:l,...o}=t;const u=e.getDefaultTransition();i=i?nx(i,u):u;const c=i==null?void 0:i.reduceMotion,d=i==null?void 0:i.skipAnimations;r&&(i=r);const h=[],m=s&&e.animationState&&e.animationState.getState()[s],f=i==null?void 0:i.path;f&&f.animateVisualElement(e,o,i,n,h);for(const b in o){const y=e.getValue(b,e.latestValues[b]??null),w=o[b];if(w===void 0||m&&wj(m,b))continue;const x={delay:n,...md(i||{},b)};d&&(x.skipAnimations=!0);const p=y.get();if(p!==void 0&&!y.isAnimating()&&!Array.isArray(w)&&w===p&&!x.velocity){Q.update(()=>y.set(w));continue}let v=!1;if(window.MotionHandoffAnimation){const C=ix(e);if(C){const S=window.MotionHandoffAnimation(C,b,Q);S!==null&&(x.startTime=S,v=!0)}}Ru(e,b);const k=c??e.shouldReduceMotion;y.start(fd(b,y,w,k&&sx.has(b)?{type:!1}:x,e,v));const j=y.animation;j&&h.push(j)}if(l){const b=()=>Q.update(()=>{l&&vj(e,l)});h.length?Promise.all(h).then(b):b()}return h}function Iu(e,t,n={}){var u;const r=On(e,t,n.type==="exit"?(u=e.presenceContext)==null?void 0:u.custom:void 0);let{transition:s=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(s=n.transitionOverride);const i=r?()=>Promise.all(lx(e,r,n)):()=>Promise.resolve(),l=e.variantChildren&&e.variantChildren.size?(c=0)=>{const{delayChildren:d=0,staggerChildren:h,staggerDirection:m}=s;return jj(e,t,c,d,h,m,n)}:()=>Promise.resolve(),{when:o}=s;if(o){const[c,d]=o==="beforeChildren"?[i,l]:[l,i];return c().then(()=>d())}else return Promise.all([i(),l(n.delay)])}function jj(e,t,n=0,r=0,s=0,i=1,l){const o=[];for(const u of e.variantChildren)u.notify("AnimationStart",t),o.push(Iu(u,t,{...l,delay:n+(typeof r=="function"?0:r)+tx(e.variantChildren,u,r,s,i)}).then(()=>u.notify("AnimationComplete",t)));return Promise.all(o)}function Nj(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const s=t.map(i=>Iu(e,i,n));r=Promise.all(s)}else if(typeof t=="string")r=Iu(e,t,n);else{const s=typeof t=="function"?On(e,t,n.custom):t;r=Promise.all(lx(e,s,n))}return r.then(()=>{e.notify("AnimationComplete",t)})}const Sj={test:e=>e==="auto",parse:e=>e},ox=e=>t=>t.test(e),ux=[Ur,V,Lt,It,e1,Jw,Sj],fm=e=>ux.find(ox(e));function Cj(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||yg(e):!0}const Pj=new Set(["brightness","contrast","saturate","opacity"]);function Ej(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(sd)||[];if(!r)return e;const s=n.replace(r,"");let i=Pj.has(t)?1:0;return r!==n&&(i*=100),t+"("+i+s+")"}const Tj=/\b([a-z-]*)\(.*?\)/gu,Fu={...jt,getAnimatableNone:e=>{const t=e.match(Tj);return t?t.map(Ej).join(" "):e}},Vu={...jt,getAnimatableNone:e=>{const t=jt.parse(e);return jt.createTransformer(e)(t.map(r=>typeof r=="number"?0:typeof r=="object"?{...r,alpha:1}:r))}},pm={...Ur,transform:Math.round},Aj={rotate:It,pathRotation:It,rotateX:It,rotateY:It,rotateZ:It,scale:_a,scaleX:_a,scaleY:_a,scaleZ:_a,skew:It,skewX:It,skewY:It,distance:V,translateX:V,translateY:V,translateZ:V,x:V,y:V,z:V,perspective:V,transformPerspective:V,opacity:qs,originX:tm,originY:tm,originZ:V},Fi={borderWidth:V,borderTopWidth:V,borderRightWidth:V,borderBottomWidth:V,borderLeftWidth:V,borderRadius:V,borderTopLeftRadius:V,borderTopRightRadius:V,borderBottomRightRadius:V,borderBottomLeftRadius:V,width:V,maxWidth:V,height:V,maxHeight:V,top:V,right:V,bottom:V,left:V,inset:V,insetBlock:V,insetBlockStart:V,insetBlockEnd:V,insetInline:V,insetInlineStart:V,insetInlineEnd:V,padding:V,paddingTop:V,paddingRight:V,paddingBottom:V,paddingLeft:V,paddingBlock:V,paddingBlockStart:V,paddingBlockEnd:V,paddingInline:V,paddingInlineStart:V,paddingInlineEnd:V,margin:V,marginTop:V,marginRight:V,marginBottom:V,marginLeft:V,marginBlock:V,marginBlockStart:V,marginBlockEnd:V,marginInline:V,marginInlineStart:V,marginInlineEnd:V,fontSize:V,backgroundPositionX:V,backgroundPositionY:V,...Aj,zIndex:pm,fillOpacity:qs,strokeOpacity:qs,numOctaves:pm},Mj={...Fi,color:ge,backgroundColor:ge,outlineColor:ge,fill:ge,stroke:ge,borderColor:ge,borderTopColor:ge,borderRightColor:ge,borderBottomColor:ge,borderLeftColor:ge,filter:Fu,WebkitFilter:Fu,mask:Vu,WebkitMask:Vu},cx=e=>Mj[e],_j=new Set([Fu,Vu]);function dx(e,t){let n=cx(e);return _j.has(n)||(n=jt),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const Lj=new Set(["auto","none","0"]);function Dj(e,t,n){let r=0,s;for(;r {t.getValue(u).set(c)}),this.resolveNoneKeyframes()}}const xd=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"];function hx(e,t,n){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){const s=document.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e).filter(r=>r!=null)}const Ou=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function js(e){return vg(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:Mr,cancel:mx}=_g(queueMicrotask,!1),gt={x:!1,y:!1};function fx(){return gt.x||gt.y}function zj(e){return e==="x"||e==="y"?gt[e]?null:(gt[e]=!0,()=>{gt[e]=!1}):gt.x||gt.y?null:(gt.x=gt.y=!0,()=>{gt.x=gt.y=!1})}function px(e,t){const n=hx(e),r=new AbortController,s={passive:!0,...t,signal:r.signal};return[n,s,()=>r.abort()]}function Rj(e){return!(e.pointerType==="touch"||fx())}function Ij(e,t,n={}){const[r,s,i]=px(e,n);return r.forEach(l=>{let o=!1,u=!1,c;const d=()=>{l.removeEventListener("pointerleave",b)},h=w=>{c&&(c(w),c=void 0),d()},m=w=>{o=!1,window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),u&&(u=!1,h(w))},f=()=>{o=!0,window.addEventListener("pointerup",m,s),window.addEventListener("pointercancel",m,s)},b=w=>{if(w.pointerType!=="touch"){if(o){u=!0;return}h(w)}},y=w=>{if(!Rj(w))return;u=!1;const x=t(l,w);typeof x=="function"&&(c=x,l.addEventListener("pointerleave",b,s))};l.addEventListener("pointerenter",y,s),l.addEventListener("pointerdown",f,s)}),i}const gx=(e,t)=>t?e===t?!0:gx(e,t.parentElement):!1,bd=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,Fj=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function Vj(e){return Fj.has(e.tagName)||e.isContentEditable===!0}const Oj=new Set(["INPUT","SELECT","TEXTAREA"]);function Uj(e){return Oj.has(e.tagName)||e.isContentEditable===!0}const ti=new WeakSet;function gm(e){return t=>{t.key==="Enter"&&e(t)}}function so(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const Wj=(e,t)=>{const n=e.currentTarget;if(!n)return;const r=gm(()=>{if(ti.has(n))return;so(n,"down");const s=gm(()=>{so(n,"up")}),i=()=>so(n,"cancel");n.addEventListener("keyup",s,t),n.addEventListener("blur",i,t)});n.addEventListener("keydown",r,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",r),t)};function xm(e){return bd(e)&&!fx()}const bm=new WeakSet;function Hj(e,t,n={}){const[r,s,i]=px(e,n),l=o=>{const u=o.currentTarget;if(!xm(o)||bm.has(o))return;ti.add(u),n.stopPropagation&&bm.add(o);const c=t(u,o),d={...s,capture:!0},h=(b,y)=>{window.removeEventListener("pointerup",m,d),window.removeEventListener("pointercancel",f,d),ti.has(u)&&ti.delete(u),xm(b)&&typeof c=="function"&&c(b,{success:y})},m=b=>{h(b,u===window||u===document||n.useGlobalTarget||gx(u,b.target))},f=b=>{h(b,!1)};window.addEventListener("pointerup",m,d),window.addEventListener("pointercancel",f,d)};return r.forEach(o=>{(n.useGlobalTarget?window:o).addEventListener("pointerdown",l,s),js(o)&&(o.addEventListener("focus",c=>Wj(c,s)),!Vj(o)&&!o.hasAttribute("tabindex")&&(o.tabIndex=0))}),i}function vd(e){return vg(e)&&"ownerSVGElement"in e}const ni=new WeakMap;let Jt;const xx=(e,t,n)=>(r,s)=>s&&s[0]?s[0][e+"Size"]:vd(r)&&"getBBox"in r?r.getBBox()[t]:r[n],$j=xx("inline","width","offsetWidth"),Gj=xx("block","height","offsetHeight");function Kj({target:e,borderBoxSize:t}){var n;(n=ni.get(e))==null||n.forEach(r=>{r(e,{get width(){return $j(e,t)},get height(){return Gj(e,t)}})})}function qj(e){e.forEach(Kj)}function Yj(){typeof ResizeObserver>"u"||(Jt=new ResizeObserver(qj))}function Xj(e,t){Jt||Yj();const n=hx(e);return n.forEach(r=>{let s=ni.get(r);s||(s=new Set,ni.set(r,s)),s.add(t),Jt==null||Jt.observe(r)}),()=>{n.forEach(r=>{const s=ni.get(r);s==null||s.delete(t),s!=null&&s.size||Jt==null||Jt.unobserve(r)})}}const ri=new Set;let hr;function Zj(){hr=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};ri.forEach(t=>t(e))},window.addEventListener("resize",hr)}function Qj(e){return ri.add(e),hr||Zj(),()=>{ri.delete(e),!ri.size&&typeof hr=="function"&&(window.removeEventListener("resize",hr),hr=void 0)}}function Uu(e,t){return typeof e=="function"?Qj(e):Xj(e,t)}function bx(e,t){let n;const r=()=>{const{currentTime:s}=t,l=(s===null?0:s.value)/100;n!==l&&e(l),n=l};return Q.preUpdate(r,!0),()=>ht(r)}function Jj(e){return vd(e)&&e.tagName==="svg"}function eN(...e){const t=!Array.isArray(e[0]),n=t?0:-1,r=e[0+n],s=e[1+n],i=e[2+n],l=e[3+n],o=od(s,i,l);return t?o(r):o}function tN(e,t,n={}){const r=e.get();let s=null,i=r,l;const o=typeof r=="string"?r.replace(/[\d.-]/g,""):void 0,u=()=>{s&&(s.stop(),s=null),e.animation=void 0},c=()=>{const h=vm(e.get()),m=vm(i);if(h===m){u();return}const f=s?s.getGeneratorVelocity():e.getVelocity();u(),s=new Ys({keyframes:[h,m],velocity:f,type:"spring",restDelta:.001,restSpeed:.01,...n,onUpdate:l})},d=()=>{var h;c(),e.animation=s??void 0,(h=e.events.animationStart)==null||h.notify(),s==null||s.then(()=>{var m;e.animation=void 0,(m=e.events.animationComplete)==null||m.notify()})};if(e.attach((h,m)=>{i=h,l=f=>m(ao(f,o)),Q.postRender(d)},u),ke(t)){let h=n.skipInitialAnimation===!0;const m=t.on("change",b=>{h?(h=!1,e.jump(ao(b,o),!1)):e.set(ao(b,o))}),f=e.on("destroy",m);return()=>{m(),f()}}return u}function ao(e,t){return t?e+t:e}function vm(e){return typeof e=="number"?e:parseFloat(e)}const nN=[...ux,ge,jt],rN=e=>nN.find(ox(e)),ym=()=>({translate:0,scale:1,origin:0,originPoint:0}),mr=()=>({x:ym(),y:ym()}),km=()=>({min:0,max:0}),be=()=>({x:km(),y:km()}),sN=new WeakMap;function pl(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Xs(e){return typeof e=="string"||Array.isArray(e)}const yd=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],kd=["initial",...yd];function gl(e){return pl(e.animate)||kd.some(t=>Xs(e[t]))}function vx(e){return!!(gl(e)||e.variants)}function aN(e,t,n){for(const r in t){const s=t[r],i=n[r];if(ke(s))e.addValue(r,s);else if(ke(i))e.addValue(r,yt(s,{owner:e}));else if(i!==s)if(e.hasValue(r)){const l=e.getValue(r);l.liveStyle===!0?l.jump(s):l.hasAnimated||l.set(s)}else{const l=e.getStaticValue(r);e.addValue(r,yt(l!==void 0?l:s,{owner:e}))}}for(const r in n)t[r]===void 0&&e.removeValue(r);return t}const Wu={current:null},yx={current:!1},iN=typeof window<"u";function lN(){if(yx.current=!0,!!iN)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Wu.current=e.matches;e.addEventListener("change",t),t()}else Wu.current=!1}const wm=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let Vi={};function kx(e){Vi=e}function oN(){return Vi}class uN{scrapeMotionValuesFromProps(t,n,r){return{}}constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:s,skipAnimations:i,blockInitialAnimation:l,visualState:o},u={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=cd,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const f=Be.now();this.renderScheduledAt this.bindToMotionValue(i,s)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(yx.current||lN(),this.shouldReduceMotion=Wu.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(r=this.parent)==null||r.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var t;this.projection&&this.projection.unmount(),ht(this.notifyUpdate),ht(this.render),this.valueSubscriptions.forEach(n=>n()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(t=this.parent)==null||t.removeChild(this);for(const n in this.events)this.events[n].clear();for(const n in this.features){const r=this.features[n];r&&(r.unmount(),r.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,n){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),n.accelerate&&ex.has(t)&&this.current instanceof HTMLElement){const{factory:l,keyframes:o,times:u,ease:c,duration:d}=n.accelerate,h=new Qg({element:this.current,name:t,keyframes:o,times:u,ease:c,duration:Je(d)}),m=l(h);this.valueSubscriptions.set(t,()=>{m(),h.cancel()});return}const r=Hr.has(t);r&&this.onBindTransform&&this.onBindTransform();const s=n.on("change",l=>{this.latestValues[t]=l,this.props.onUpdate&&Q.preRender(this.notifyUpdate),r&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let i;typeof window<"u"&&window.MotionCheckAppearSync&&(i=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{s(),i&&i()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in Vi){const n=Vi[t];if(!n)continue;const{isEnabled:r,Feature:s}=n;if(!this.features[t]&&s&&r(this.props)&&(this.features[t]=new s(this)),this.features[t]){const i=this.features[t];i.isMounted?i.update():(i.mount(),i.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):be()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;r n.variantChildren.delete(t)}addValue(t,n){const r=this.values.get(t);n!==r&&(r&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let r=this.values.get(t);return r===void 0&&n!==void 0&&(r=yt(n===null?void 0:n,{owner:this}),this.addValue(t,r)),r}readValue(t,n){let r=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return r!=null&&(typeof r=="string"&&(bg(r)||yg(r))?r=parseFloat(r):!rN(r)&&jt.test(n)&&(r=dx(t,n)),this.setBaseTarget(t,ke(r)?r.get():r)),ke(r)?r.get():r}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var i;const{initial:n}=this.props;let r;if(typeof n=="string"||typeof n=="object"){const l=pd(this.props,n,(i=this.presenceContext)==null?void 0:i.custom);l&&(r=l[t])}if(n&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,t);return s!==void 0&&!ke(s)?s:this.initialValues[t]!==void 0&&r===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Jc),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}scheduleRenderMicrotask(){Mr.render(this.render)}}class wx extends uN{constructor(){super(...arguments),this.KeyframeResolver=Bj}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){const r=t.style;return r?r[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;ke(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}class Pn{constructor(t){this.isMounted=!1,this.node=t}update(){}}function jx({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function cN({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function dN(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function io(e){return e===void 0||e===1}function Hu({scale:e,scaleX:t,scaleY:n}){return!io(e)||!io(t)||!io(n)}function _n(e){return Hu(e)||Nx(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function Nx(e){return jm(e.x)||jm(e.y)}function jm(e){return e&&e!=="0%"}function Oi(e,t,n){const r=e-n,s=t*r;return n+s}function Nm(e,t,n,r,s){return s!==void 0&&(e=Oi(e,s,r)),Oi(e,n,r)+t}function $u(e,t=0,n=1,r,s){e.min=Nm(e.min,t,n,r,s),e.max=Nm(e.max,t,n,r,s)}function Sx(e,{x:t,y:n}){$u(e.x,t.translate,t.scale,t.originPoint),$u(e.y,n.translate,n.scale,n.originPoint)}const Sm=.999999999999,Cm=1.0000000000001;function hN(e,t,n,r=!1){var o;const s=n.length;if(!s)return;t.x=t.y=1;let i,l;for(let u=0;u Sm&&(t.x=1),t.ySm&&(t.y=1)}function Tt(e,t){e.min+=t,e.max+=t}function Pm(e,t,n,r,s=.5){const i=re(e.min,e.max,s);$u(e,t,n,i,r)}function Em(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function si(e,t,n){const r=n??e;Pm(e.x,Em(t.x,r.x),t.scaleX,t.scale,t.originX),Pm(e.y,Em(t.y,r.y),t.scaleY,t.scale,t.originY)}function Cx(e,t){return jx(dN(e.getBoundingClientRect(),t))}function mN(e,t,n){const r=Cx(e,n),{scroll:s}=t;return s&&(Tt(r.x,s.offset.x),Tt(r.y,s.offset.y)),r}const fN={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},pN=Wr.length;function gN(e,t,n){let r="",s=!0;for(let l=0;l {if(!t.target)return e;if(typeof e=="string")if(V.test(e))e=parseFloat(e);else return e;const n=Tm(e,t.target.x),r=Tm(e,t.target.y);return`${n}% ${r}%`}},xN={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,s=jt.parse(e);if(s.length>5)return r;const i=jt.createTransformer(e),l=typeof s[0]!="number"?1:0,o=n.x.scale*t.x,u=n.y.scale*t.y;s[0+l]/=o,s[1+l]/=u;const c=re(o,u,.5);return typeof s[2+l]=="number"&&(s[2+l]/=c),typeof s[3+l]=="number"&&(s[3+l]/=c),i(s)}},Gu={borderRadius:{...rs,applyTo:[...xd]},borderTopLeftRadius:rs,borderTopRightRadius:rs,borderBottomLeftRadius:rs,borderBottomRightRadius:rs,boxShadow:xN};function Ex(e,{layout:t,layoutId:n}){return Hr.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!Gu[e]||e==="opacity")}function jd(e,t,n){var l;const r=e.style,s=t==null?void 0:t.style,i={};if(!r)return i;for(const o in r)(ke(r[o])||s&&ke(s[o])||Ex(o,e)||((l=n==null?void 0:n.getValue(o))==null?void 0:l.liveStyle)!==void 0)&&(i[o]=r[o]);return i}function bN(e){return window.getComputedStyle(e)}class vN extends wx{constructor(){super(...arguments),this.type="html",this.renderInstance=Px}readValueFromInstance(t,n){var r;if(Hr.has(n))return(r=this.projection)!=null&&r.isProjecting?Au(n):I1(t,n);{const s=bN(t),i=(Dg(n)?s.getPropertyValue(n):s[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Cx(t,n)}build(t,n,r){wd(t,n,r.transformTemplate)}scrapeMotionValuesFromProps(t,n,r){return jd(t,n,r)}}const yN={offset:"stroke-dashoffset",array:"stroke-dasharray"},kN={offset:"strokeDashoffset",array:"strokeDasharray"};function wN(e,t,n=1,r=0,s=!0){e.pathLength=1;const i=s?yN:kN;e[i.offset]=`${-r}`,e[i.array]=`${t} ${n}`}const jN=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function Tx(e,{attrX:t,attrY:n,attrScale:r,pathLength:s,pathSpacing:i=1,pathOffset:l=0,...o},u,c,d){if(wd(e,o,c),u){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:m}=e;h.transform&&(m.transform=h.transform,delete h.transform),(m.transform||h.transformOrigin)&&(m.transformOrigin=h.transformOrigin??"50% 50%",delete h.transformOrigin),m.transform&&(m.transformBox=(d==null?void 0:d.transformBox)??"fill-box",delete h.transformBox);for(const f of jN)h[f]!==void 0&&(m[f]=h[f],delete h[f]);t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),r!==void 0&&(h.scale=r),s!==void 0&&wN(h,s,i,l,!1)}const Ax=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),Mx=e=>typeof e=="string"&&e.toLowerCase()==="svg";function NN(e,t,n,r){Px(e,t,void 0,r);for(const s in t.attrs)e.setAttribute(Ax.has(s)?s:gd(s),t.attrs[s])}function _x(e,t,n){const r=jd(e,t,n);for(const s in e)if(ke(e[s])||ke(t[s])){const i=Wr.indexOf(s)!==-1?"attr"+s.charAt(0).toUpperCase()+s.substring(1):s;r[i]=e[s]}return r}class SN extends wx{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=be}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Hr.has(n)){const r=cx(n);return r&&r.default||0}return n=Ax.has(n)?n:gd(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,r){return _x(t,n,r)}build(t,n,r){Tx(t,n,this.isSVGTag,r.transformTemplate,r.style)}renderInstance(t,n,r,s){NN(t,n,r,s)}mount(t){this.isSVGTag=Mx(t.tagName),super.mount(t)}}const CN=kd.length;function Lx(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?Lx(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n Promise.all(t.map(({animation:n,options:r})=>Nj(e,n,r)))}function AN(e){let t=TN(e),n=Am(),r=!0,s=!1;const i=c=>(d,h)=>{var f;const m=On(e,h,c==="exit"?(f=e.presenceContext)==null?void 0:f.custom:void 0);if(m){const{transition:b,transitionEnd:y,...w}=m;d={...d,...w,...y}}return d};function l(c){t=c(e)}function o(c){const{props:d}=e,h=Lx(e.parent)||{},m=[],f=new Set;let b={},y=1/0;for(let x=0;x y&&j,E=!1;const N=Array.isArray(k)?k:[k];let L=N.reduce(i(p),{});C===!1&&(L={});const{prevResolvedValues:U={}}=v,W={...U,...L},q=_=>{M=!0,f.has(_)&&(E=!0,f.delete(_)),v.needsAnimating[_]=!0;const B=e.getValue(_);B&&(B.liveStyle=!1)};for(const _ in W){const B=L[_],F=U[_];if(b.hasOwnProperty(_))continue;let O=!1;zu(B)&&zu(F)?O=!Dx(B,F)||P:O=B!==F,O?B!=null?q(_):f.add(_):B!==void 0&&f.has(_)?q(_):v.protectedKeys[_]=!0}v.prevProp=k,v.prevResolvedValues=L,v.isActive&&(b={...b,...L}),(r||s)&&e.blockInitialAnimation&&(M=!1);const z=S&&P;M&&(!z||E)&&m.push(...N.map(_=>{const B={type:p};if(typeof _=="string"&&(r||s)&&!z&&e.manuallyAnimateOnMount&&e.parent){const{parent:F}=e,O=On(F,_);if(F.enteringChildren&&O){const{delayChildren:X}=O.transition||{};B.delay=tx(F.enteringChildren,e,X)}}return{animation:_,options:B}}))}if(f.size){const x={};if(typeof d.initial!="boolean"){const p=On(e,Array.isArray(d.initial)?d.initial[0]:d.initial);p&&p.transition&&(x.transition=p.transition)}f.forEach(p=>{const v=e.getBaseTarget(p),k=e.getValue(p);k&&(k.liveStyle=!0),x[p]=v??null}),m.push({animation:x})}let w=!!m.length;return r&&(d.initial===!1||d.initial===d.animate)&&!e.manuallyAnimateOnMount&&(w=!1),r=!1,s=!1,w?t(m):Promise.resolve()}function u(c,d){var m;if(n[c].isActive===d)return Promise.resolve();(m=e.variantChildren)==null||m.forEach(f=>{var b;return(b=f.animationState)==null?void 0:b.setActive(c,d)}),n[c].isActive=d;const h=o(c);for(const f in n)n[f].protectedKeys={};return h}return{animateChanges:o,setActive:u,setAnimateFunction:l,getState:()=>n,reset:()=>{n=Am(),s=!0}}}function MN(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!Dx(t,e):!1}function Tn(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Am(){return{animate:Tn(!0),whileInView:Tn(),whileHover:Tn(),whileTap:Tn(),whileDrag:Tn(),whileFocus:Tn(),exit:Tn()}}function Ku(e,t){e.min=t.min,e.max=t.max}function pt(e,t){Ku(e.x,t.x),Ku(e.y,t.y)}function Mm(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const Bx=1e-4,_N=1-Bx,LN=1+Bx,zx=.01,DN=0-zx,BN=0+zx;function ze(e){return e.max-e.min}function zN(e,t,n){return Math.abs(e-t)<=n}function _m(e,t,n,r=.5){e.origin=r,e.originPoint=re(t.min,t.max,e.origin),e.scale=ze(n)/ze(t),e.translate=re(n.min,n.max,e.origin)-e.originPoint,(e.scale>=_N&&e.scale<=LN||isNaN(e.scale))&&(e.scale=1),(e.translate>=DN&&e.translate<=BN||isNaN(e.translate))&&(e.translate=0)}function Ns(e,t,n,r){_m(e.x,t.x,n.x,r?r.originX:void 0),_m(e.y,t.y,n.y,r?r.originY:void 0)}function Lm(e,t,n,r=0){const s=r?re(n.min,n.max,r):n.min;e.min=s+t.min,e.max=e.min+ze(t)}function RN(e,t,n,r){Lm(e.x,t.x,n.x,r==null?void 0:r.x),Lm(e.y,t.y,n.y,r==null?void 0:r.y)}function Dm(e,t,n,r=0){const s=r?re(n.min,n.max,r):n.min;e.min=t.min-s,e.max=e.min+ze(t)}function Ui(e,t,n,r){Dm(e.x,t.x,n.x,r==null?void 0:r.x),Dm(e.y,t.y,n.y,r==null?void 0:r.y)}function Bm(e,t,n,r,s){return e-=t,e=Oi(e,1/n,r),s!==void 0&&(e=Oi(e,1/s,r)),e}function IN(e,t=0,n=1,r=.5,s,i=e,l=e){if(Lt.test(t)&&(t=parseFloat(t),t=re(l.min,l.max,t/100)-l.min),typeof t!="number")return;let o=re(i.min,i.max,r);e===i&&(o-=t),e.min=Bm(e.min,t,n,o,s),e.max=Bm(e.max,t,n,o,s)}function zm(e,t,[n,r,s],i,l){IN(e,t[n],t[r],t[s],t.scale,i,l)}const FN=["x","scaleX","originX"],VN=["y","scaleY","originY"];function Rm(e,t,n,r){zm(e.x,t,FN,n?n.x:void 0,r?r.x:void 0),zm(e.y,t,VN,n?n.y:void 0,r?r.y:void 0)}function Im(e){return e.translate===0&&e.scale===1}function Rx(e){return Im(e.x)&&Im(e.y)}function Fm(e,t){return e.min===t.min&&e.max===t.max}function ON(e,t){return Fm(e.x,t.x)&&Fm(e.y,t.y)}function Vm(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function Ix(e,t){return Vm(e.x,t.x)&&Vm(e.y,t.y)}function Om(e){return ze(e.x)/ze(e.y)}function Um(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function Et(e){return[e("x"),e("y")]}function UN(e,t,n){let r="";const s=e.x.translate/t.x,i=e.y.translate/t.y,l=(n==null?void 0:n.z)||0;if((s||i||l)&&(r=`translate3d(${s}px, ${i}px, ${l}px) `),(t.x!==1||t.y!==1)&&(r+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:c,rotate:d,pathRotation:h,rotateX:m,rotateY:f,skewX:b,skewY:y}=n;c&&(r=`perspective(${c}px) ${r}`),d&&(r+=`rotate(${d}deg) `),h&&(r+=`rotate(${h}deg) `),m&&(r+=`rotateX(${m}deg) `),f&&(r+=`rotateY(${f}deg) `),b&&(r+=`skewX(${b}deg) `),y&&(r+=`skewY(${y}deg) `)}const o=e.x.scale*t.x,u=e.y.scale*t.y;return(o!==1||u!==1)&&(r+=`scale(${o}, ${u})`),r||"none"}const WN=xd.length,Wm=e=>typeof e=="string"?parseFloat(e):e,Hm=e=>typeof e=="number"||V.test(e);function HN(e,t,n,r,s,i){s?(e.opacity=re(0,n.opacity??1,$N(r)),e.opacityExit=re(t.opacity??1,0,GN(r))):i&&(e.opacity=re(t.opacity??1,n.opacity??1,r));for(let l=0;l r t?1:n(Tr(e,t,r))}function KN(e,t,n){const r=ke(e)?e:yt(e);return r.start(fd("",r,t,n)),r.animation}function Zs(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const qN=(e,t)=>e.depth-t.depth;class YN{constructor(){this.children=[],this.isDirty=!1}add(t){Zc(this.children,t),this.isDirty=!0}remove(t){Bi(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(qN),this.isDirty=!1,this.children.forEach(t)}}function XN(e,t){const n=Be.now(),r=({timestamp:s})=>{const i=s-n;i>=t&&(ht(r),e(i-t))};return Q.setup(r,!0),()=>ht(r)}function ai(e){return ke(e)?e.get():e}class ZN{constructor(){this.members=[]}add(t){Zc(this.members,t);for(let n=this.members.length-1;n>=0;n--){const r=this.members[n];if(r===t||r===this.lead||r===this.prevLead)continue;const s=r.instance;(!s||s.isConnected===!1)&&!r.snapshot&&(Bi(this.members,r),r.unmount())}t.scheduleRender()}remove(t){if(Bi(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){var n;for(let r=this.members.indexOf(t)-1;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1&&((n=s.instance)==null?void 0:n.isConnected)!==!1)return this.promote(s),!0}return!1}promote(t,n){var s;const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.updateSnapshot(),t.scheduleRender();const{layoutDependency:i}=r.options,{layoutDependency:l}=t.options;(i===void 0||i!==l)&&(t.resumeFrom=r,n&&(r.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),(s=t.root)!=null&&s.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var n,r,s,i,l;(r=(n=t.options).onExitComplete)==null||r.call(n),(l=(s=t.resumingFrom)==null?void 0:(i=s.options).onExitComplete)==null||l.call(i)})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){var t;(t=this.lead)!=null&&t.snapshot&&(this.lead.snapshot=void 0)}}const ii={hasAnimatedSinceResize:!0,hasEverUpdated:!1},lo=["","X","Y","Z"],QN=1e3;let JN=0;function oo(e,t,n,r){const{latestValues:s}=t;s[e]&&(n[e]=s[e],t.setStaticValue(e,0),r&&(r[e]=0))}function Vx(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=ix(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:s,layoutId:i}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",Q,!(s||i))}const{parent:r}=e;r&&!r.hasCheckedOptimisedAppear&&Vx(r)}function Ox({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:s}){return class{constructor(l={},o=t==null?void 0:t()){this.id=JN++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(nS),this.nodes.forEach(oS),this.nodes.forEach(uS),this.nodes.forEach(rS)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=l,this.root=o?o.root||o:this,this.path=o?[...o.path,o]:[],this.parent=o,this.depth=o?o.depth+1:0;for(let u=0;u this.root.updateBlockedByResize=!1;Q.read(()=>{h=window.innerWidth}),e(l,()=>{const f=window.innerWidth;f!==h&&(h=f,this.root.updateBlockedByResize=!0,d&&d(),d=XN(m,250),ii.hasAnimatedSinceResize&&(ii.hasAnimatedSinceResize=!1,this.nodes.forEach(qm)))})}o&&this.root.registerSharedNode(o,this),this.options.animate!==!1&&c&&(o||u)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:h,hasRelativeLayoutChanged:m,layout:f})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||c.getDefaultTransition()||fS,{onLayoutAnimationStart:y,onLayoutAnimationComplete:w}=c.getProps(),x=!this.targetLayout||!Ix(this.targetLayout,f),p=!h&&m;if(this.options.layoutRoot||this.resumeFrom||p||h&&(x||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const v={...md(b,"layout"),onPlay:y,onComplete:w};(c.shouldReduceMotion||this.options.layoutRoot)&&(v.delay=0,v.type=!1),this.startAnimation(v),this.setAnimationOrigin(d,p,v.path)}else h||qm(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=f})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const l=this.getStack();l&&l.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),ht(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(cS),this.animationId++)}getTransformTemplate(){const{visualElement:l}=this.options;return l&&l.getProps().transformTemplate}willUpdate(l=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&Vx(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d {this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!ze(this.snapshot.measuredBox.x)&&!ze(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let u=0;u {const S=C/1e3,P=j==null?void 0:j(S);P?(m.x.translate=P.x,m.x.scale=re(l.x.scale,1,S),m.x.origin=l.x.origin,m.x.originPoint=l.x.originPoint,m.y.translate=P.y,m.y.scale=re(l.y.scale,1,S),m.y.origin=l.y.origin,m.y.originPoint=l.y.originPoint):(Ym(m.x,l.x,S),Ym(m.y,l.y,S)),this.setTargetDelta(m),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Ui(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),hS(this.relativeTarget,this.relativeTargetOrigin,f,S),k&&ON(this.relativeTarget,k)&&(this.isProjectionDirty=!1),k||(k=be()),pt(k,this.relativeTarget)),w&&(this.animationValues=h,HN(h,d,this.latestValues,S,v,p)),P&&P.rotate!==void 0&&(this.animationValues||(this.animationValues=h),this.animationValues.pathRotation=P.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(l){var o,u,c;this.notifyListeners("animationStart"),(o=this.currentAnimation)==null||o.stop(),(c=(u=this.resumingFrom)==null?void 0:u.currentAnimation)==null||c.stop(),this.pendingAnimation&&(ht(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Q.update(()=>{ii.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=yt(0)),this.motionValue.jump(0,!1),this.currentAnimation=KN(this.motionValue,[0,1e3],{...l,velocity:0,isSync:!0,onUpdate:d=>{this.mixTargetDelta(d),l.onUpdate&&l.onUpdate(d)},onComplete:()=>{l.onComplete&&l.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const l=this.getStack();l&&l.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(QN),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const l=this.getLead();let{targetWithTransforms:o,target:u,layout:c,latestValues:d}=l;if(!(!o||!u||!c)){if(this!==l&&this.layout&&c&&Ux(this.options.animationType,this.layout.layoutBox,c.layoutBox)){u=this.target||be();const h=ze(this.layout.layoutBox.x);u.x.min=l.target.x.min,u.x.max=u.x.min+h;const m=ze(this.layout.layoutBox.y);u.y.min=l.target.y.min,u.y.max=u.y.min+m}pt(o,u),si(o,d),Ns(this.projectionDeltaWithTransform,this.layoutCorrected,o,d)}}registerSharedNode(l,o){this.sharedNodes.has(l)||this.sharedNodes.set(l,new ZN),this.sharedNodes.get(l).add(o);const c=o.options.initialPromotionConfig;o.promote({transition:c?c.transition:void 0,preserveFollowOpacity:c&&c.shouldPreserveFollowOpacity?c.shouldPreserveFollowOpacity(o):void 0})}isLead(){const l=this.getStack();return l?l.lead===this:!0}getLead(){var o;const{layoutId:l}=this.options;return l?((o=this.getStack())==null?void 0:o.lead)||this:this}getPrevLead(){var o;const{layoutId:l}=this.options;return l?(o=this.getStack())==null?void 0:o.prevLead:void 0}getStack(){const{layoutId:l}=this.options;if(l)return this.root.sharedNodes.get(l)}promote({needsReset:l,transition:o,preserveFollowOpacity:u}={}){const c=this.getStack();c&&c.promote(this,u),l&&(this.projectionDelta=void 0,this.needsReset=!0),o&&this.setOptions({transition:o})}relegate(){const l=this.getStack();return l?l.relegate(this):!1}resetSkewAndRotation(){const{visualElement:l}=this.options;if(!l)return;let o=!1;const{latestValues:u}=l;if((u.z||u.rotate||u.rotateX||u.rotateY||u.rotateZ||u.skewX||u.skewY)&&(o=!0),!o)return;const c={};u.z&&oo("z",l,c,this.animationValues);for(let d=0;d {var o;return(o=l.currentAnimation)==null?void 0:o.stop()}),this.root.nodes.forEach(Gm),this.root.sharedNodes.clear()}}}function eS(e){e.updateLayout()}function tS(e){var n;const t=((n=e.resumeFrom)==null?void 0:n.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:s}=e.layout,{animationType:i}=e.options,l=t.source!==e.layout.source;if(i==="size")Et(h=>{const m=l?t.measuredBox[h]:t.layoutBox[h],f=ze(m);m.min=r[h].min,m.max=m.min+f});else if(i==="x"||i==="y"){const h=i==="x"?"y":"x";Ku(l?t.measuredBox[h]:t.layoutBox[h],r[h])}else Ux(i,t.layoutBox,r)&&Et(h=>{const m=l?t.measuredBox[h]:t.layoutBox[h],f=ze(r[h]);m.max=m.min+f,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[h].max=e.relativeTarget[h].min+f)});const o=mr();Ns(o,r,t.layoutBox);const u=mr();l?Ns(u,e.applyTransform(s,!0),t.measuredBox):Ns(u,r,t.layoutBox);const c=!Rx(o);let d=!1;if(!e.resumeFrom){const h=e.getClosestProjectingParent();if(h&&!h.resumeFrom){const{snapshot:m,layout:f}=h;if(m&&f){const b=e.options.layoutAnchor||void 0,y=be();Ui(y,t.layoutBox,m.layoutBox,b);const w=be();Ui(w,r,f.layoutBox,b),Ix(y,w)||(d=!0),h.options.layoutRoot&&(e.relativeTarget=w,e.relativeTargetOrigin=y,e.relativeParent=h)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:t,delta:u,layoutDelta:o,hasLayoutChanged:c,hasRelativeLayoutChanged:d})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function nS(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function rS(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function sS(e){e.clearSnapshot()}function Gm(e){e.clearMeasurements()}function aS(e){e.isLayoutDirty=!0,e.updateLayout()}function Km(e){e.isLayoutDirty=!1}function iS(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function lS(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function qm(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function oS(e){e.resolveTargetDelta()}function uS(e){e.calcProjection()}function cS(e){e.resetSkewAndRotation()}function dS(e){e.removeLeadSnapshot()}function Ym(e,t,n){e.translate=re(t.translate,0,n),e.scale=re(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function Xm(e,t,n,r){e.min=re(t.min,n.min,r),e.max=re(t.max,n.max,r)}function hS(e,t,n,r){Xm(e.x,t.x,n.x,r),Xm(e.y,t.y,n.y,r)}function mS(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const fS={duration:.45,ease:[.4,0,.1,1]},Zm=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),Qm=Zm("applewebkit/")&&!Zm("chrome/")?Math.round:Ke;function Jm(e){e.min=Qm(e.min),e.max=Qm(e.max)}function pS(e){Jm(e.x),Jm(e.y)}function Ux(e,t,n){return e==="position"||e==="preserve-aspect"&&!zN(Om(t),Om(n),.2)}function gS(e){var t;return e!==e.root&&((t=e.scroll)==null?void 0:t.wasRoot)}const xS=Ox({attachResizeListener:(e,t)=>Zs(e,"resize",t),measureScroll:()=>{var e,t;return{x:document.documentElement.scrollLeft||((e=document.body)==null?void 0:e.scrollLeft)||0,y:document.documentElement.scrollTop||((t=document.body)==null?void 0:t.scrollTop)||0}},checkIsScrollRoot:()=>!0}),uo={current:void 0},Wx=Ox({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!uo.current){const e=new xS({});e.mount(window),e.setOptions({layoutScroll:!0}),uo.current=e}return uo.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),oa=g.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function ef(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function bS(...e){return t=>{let n=!1;const r=e.map(s=>{const i=ef(s,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let s=0;s {const{width:f,height:b,top:y,left:w,right:x,bottom:p,direction:v}=u.current;if(t||i===!1||!o.current||!f||!b)return;const k=v==="rtl",j=n==="left"?k?`right: ${x}`:`left: ${w}`:k?`left: ${w}`:`right: ${x}`,C=r==="bottom"?`bottom: ${p}`:`top: ${y}`;o.current.dataset.motionPopId=l;const S=document.createElement("style");c&&(S.nonce=c);const P=s??document.head;return P.appendChild(S),S.sheet&&S.sheet.insertRule(` [data-motion-pop-id="${l}"] { position: absolute !important; width: ${f}px !important; @@ -64,15 +64,15 @@ Error generating stack: `+i.message+` ${j}px !important; ${C}px !important; } - `),()=>{var M;(M=o.current)==null||M.removeAttribute("data-motion-pop-id"),P.contains(S)&&P.removeChild(S)}},[t]),a.jsx(yS,{isPresent:t,childRef:o,sizeRef:u,pop:i,children:i===!1?e:g.cloneElement(e,{ref:h})})}const wS=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:s,presenceAffectsLayout:i,mode:l,anchorX:o,anchorY:u,root:c})=>{const d=wn(jS),h=g.useId(),m=g.useRef(n),f=g.useRef(r);sa(()=>{m.current=n,f.current=r});let b=!0,y=g.useMemo(()=>(b=!1,{id:h,initial:t,isPresent:n,custom:s,onExitComplete:w=>{d.set(w,!0);for(const x of d.values())if(!x)return;r&&r()},register:w=>(d.set(w,!1),()=>{var x;d.delete(w),!m.current&&!d.size&&((x=f.current)==null||x.call(f))})}),[n,d,r]);return i&&b&&(y={...y}),g.useMemo(()=>{d.forEach((w,x)=>d.set(x,!1))},[n]),g.useEffect(()=>{!n&&!d.size&&r&&r()},[n]),e=a.jsx(kS,{pop:l==="popLayout",isPresent:n,anchorX:o,anchorY:u,root:c,children:e}),a.jsx(ml.Provider,{value:y,children:e})};function jS(){return new Map}function Hx(e=!0){const t=g.useContext(ml);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:s}=t,i=g.useId();g.useEffect(()=>{if(e)return s(i)},[e]);const l=g.useCallback(()=>e&&r&&r(i),[i,r,e]);return!n&&r?[!1,l]:[!0]}const La=e=>e.key||"";function tf(e){const t=[];return g.Children.forEach(e,n=>{g.isValidElement(n)&&t.push(n)}),t}const NS=({children:e,custom:t,initial:n=!0,onExitComplete:r,presenceAffectsLayout:s=!0,mode:i="sync",propagate:l=!1,anchorX:o="left",anchorY:u="top",root:c})=>{const[d,h]=Hx(l),m=g.useMemo(()=>tf(e),[e]),f=l&&!d?[]:m.map(La),b=g.useRef(!0),y=g.useRef(m),w=wn(()=>new Map),x=g.useRef(new Set),[p,v]=g.useState(m),[k,j]=g.useState(m);sa(()=>{b.current=!1,y.current=m;for(let P=0;P {const M=La(P),N=l&&!d?!1:m===k||f.includes(M),E=()=>{if(x.current.has(M))return;if(w.has(M))x.current.add(M),w.set(M,!0);else return;let B=!0;w.forEach(O=>{O||(B=!1)}),B&&(S==null||S(),j(y.current),l&&(h==null||h()),r&&r())};return a.jsx(wS,{isPresent:N,initial:!b.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:i,root:c,onExitComplete:N?void 0:E,anchorX:o,anchorY:u,children:P},M)})})},$x=g.createContext({strict:!1}),nf={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let rf=!1;function SS(){if(rf)return;const e={};for(const t in nf)e[t]={isEnabled:n=>nf[t].some(r=>!!n[r])};kx(e),rf=!0}function Gx(){return SS(),oN()}function CS(e){const t=Gx();for(const n in e)t[n]={...t[n],...e[n]};kx(t)}const PS=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Wi(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||PS.has(e)}let Kx=e=>!Wi(e);function ES(e){typeof e=="function"&&(Kx=t=>t.startsWith("on")?!Wi(t):e(t))}try{ES(require("@emotion/is-prop-valid").default)}catch{}function TS(e,t,n){const r={};for(const s in e)s==="values"&&typeof e.values=="object"||ye(e[s])||(Kx(s)||n===!0&&Wi(s)||!t&&!Wi(s)||e.draggable&&s.startsWith("onDrag"))&&(r[s]=e[s]);return r}const xl=g.createContext({});function AS(e,t){if(gl(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Xs(n)?n:void 0,animate:Xs(r)?r:void 0}}return e.inherit!==!1?t:{}}function MS(e){const{initial:t,animate:n}=AS(e,g.useContext(xl));return g.useMemo(()=>({initial:t,animate:n}),[sf(t),sf(n)])}function sf(e){return Array.isArray(e)?e.join(" "):e}const Nd=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function qx(e,t,n){for(const r in t)!ye(t[r])&&!Ex(r,n)&&(e[r]=t[r])}function _S({transformTemplate:e},t){return g.useMemo(()=>{const n=Nd();return wd(n,t,e),Object.assign({},n.vars,n.style)},[t])}function LS(e,t){const n=e.style||{},r={};return qx(r,n,e),Object.assign(r,_S(e,t)),r}function DS(e,t){const n={},r=LS(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const Yx=()=>({...Nd(),attrs:{}});function BS(e,t,n,r){const s=g.useMemo(()=>{const i=Yx();return Tx(i,t,Mx(r),e.transformTemplate,e.style),{...i.attrs,style:{...i.style}}},[t]);if(e.style){const i={};qx(i,e.style,e),s.style={...i,...s.style}}return s}const zS=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Sd(e){return typeof e!="string"||e.includes("-")?!1:!!(zS.indexOf(e)>-1||/[A-Z]/u.test(e))}function RS(e,t,n,{latestValues:r},s,i=!1,l){const u=(l??Sd(e)?BS:DS)(t,r,s,e),c=TS(t,typeof e=="string",i),d=e!==g.Fragment?{...c,...u,ref:n}:{},{children:h}=t,m=g.useMemo(()=>ye(h)?h.get():h,[h]);return g.createElement(e,{...d,children:m})}function IS({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,s){return{latestValues:FS(n,r,s,e),renderState:t()}}function FS(e,t,n,r){const s={},i=r(e,{});for(const m in i)s[m]=ai(i[m]);let{initial:l,animate:o}=e;const u=gl(e),c=vx(e);t&&c&&!u&&e.inherit!==!1&&(l===void 0&&(l=t.initial),o===void 0&&(o=t.animate));let d=n?n.initial===!1:!1;d=d||l===!1;const h=d?o:l;if(h&&typeof h!="boolean"&&!pl(h)){const m=Array.isArray(h)?h:[h];for(let f=0;f (t,n)=>{const r=g.useContext(xl),s=g.useContext(ml),i=()=>IS(e,t,r,s);return n?i():wn(i)},VS=Xx({scrapeMotionValuesFromProps:jd,createRenderState:Nd}),OS=Xx({scrapeMotionValuesFromProps:_x,createRenderState:Yx}),US=Symbol.for("motionComponentSymbol");function WS(e,t,n){const r=g.useRef(n);g.useInsertionEffect(()=>{r.current=n});const s=g.useRef(null);return g.useCallback(i=>{var o;i&&((o=e.onMount)==null||o.call(e,i)),t&&(i?t.mount(i):t.unmount());const l=r.current;if(typeof l=="function")if(i){const u=l(i);typeof u=="function"&&(s.current=u)}else s.current?(s.current(),s.current=null):l(i);else l&&(l.current=i)},[t])}const Zx=g.createContext({});function Qn(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function HS(e,t,n,r,s,i){var v,k;const{visualElement:l}=g.useContext(xl),o=g.useContext($x),u=g.useContext(ml),c=g.useContext(oa),d=c.reducedMotion,h=c.skipAnimations,m=g.useRef(null),f=g.useRef(!1);r=r||o.renderer,!m.current&&r&&(m.current=r(e,{visualState:t,parent:l,props:n,presenceContext:u,blockInitialAnimation:u?u.initial===!1:!1,reducedMotionConfig:d,skipAnimations:h,isSVG:i}),f.current&&m.current&&(m.current.manuallyAnimateOnMount=!0));const b=m.current,y=g.useContext(Zx);b&&!b.projection&&s&&(b.type==="html"||b.type==="svg")&&$S(m.current,n,s,y);const w=g.useRef(!1);g.useInsertionEffect(()=>{b&&w.current&&b.update(n,u)});const x=n[ax],p=g.useRef(!!x&&typeof window<"u"&&!((v=window.MotionHandoffIsComplete)!=null&&v.call(window,x))&&((k=window.MotionHasOptimisedAnimation)==null?void 0:k.call(window,x)));return sa(()=>{f.current=!0,b&&(w.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),b.scheduleRenderMicrotask(),p.current&&b.animationState&&b.animationState.animateChanges())}),g.useEffect(()=>{b&&(!p.current&&b.animationState&&b.animationState.animateChanges(),p.current&&(queueMicrotask(()=>{var j;(j=window.MotionHandoffMarkAsComplete)==null||j.call(window,x)}),p.current=!1),b.enteringChildren=void 0)}),b}function $S(e,t,n,r){const{layoutId:s,layout:i,drag:l,dragConstraints:o,layoutScroll:u,layoutRoot:c,layoutAnchor:d,layoutCrossfade:h}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:Qx(e.parent)),e.projection.setOptions({layoutId:s,layout:i,alwaysMeasureLayout:!!l||o&&Qn(o),visualElement:e,animationType:typeof i=="string"?i:"both",initialPromotionConfig:r,crossfade:h,layoutScroll:u,layoutRoot:c,layoutAnchor:d})}function Qx(e){if(e)return e.options.allowProjection!==!1?e.projection:Qx(e.parent)}function co(e,{forwardMotionProps:t=!1,type:n}={},r,s){r&&CS(r);const i=n?n==="svg":Sd(e),l=i?OS:VS;function o(c,d){let h;const m={...g.useContext(oa),...c,layoutId:GS(c)},{isStatic:f}=m,b=MS(c),y=l(c,f);if(!f&&typeof window<"u"){KS();const w=qS(m);h=w.MeasureLayout,b.visualElement=HS(e,y,m,s,w.ProjectionNode,i)}return a.jsxs(xl.Provider,{value:b,children:[h&&b.visualElement?a.jsx(h,{visualElement:b.visualElement,...m}):null,RS(e,c,WS(y,b.visualElement,d),y,f,t,i)]})}o.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const u=g.forwardRef(o);return u[US]=e,u}function GS({layoutId:e}){const t=g.useContext(Xc).id;return t&&e!==void 0?t+"-"+e:e}function KS(e,t){g.useContext($x).strict}function qS(e){const t=Gx(),{drag:n,layout:r}=t;if(!n&&!r)return{};const s={...n,...r};return{MeasureLayout:n!=null&&n.isEnabled(e)||r!=null&&r.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function YS(e,t){if(typeof Proxy>"u")return co;const n=new Map,r=(i,l)=>co(i,l,e,t),s=(i,l)=>r(i,l);return new Proxy(s,{get:(i,l)=>l==="create"?r:(n.has(l)||n.set(l,co(l,void 0,e,t)),n.get(l))})}const XS=(e,t)=>t.isSVG??Sd(e)?new SN(t):new vN(t,{allowProjection:e!==g.Fragment});class ZS extends Pn{constructor(t){super(t),t.animationState||(t.animationState=AN(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();pl(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}}let QS=0;class JS extends Pn{constructor(){super(...arguments),this.id=QS++,this.isExitComplete=!1}update(){var i;if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;if(t&&r===!1){if(this.isExitComplete){const{initial:l,custom:o}=this.node.getProps();if(typeof l=="string"||typeof l=="object"&&l!==null&&!Array.isArray(l)){const u=On(this.node,l,o);if(u){const{transition:c,transitionEnd:d,...h}=u;for(const m in h)(i=this.node.getValue(m))==null||i.jump(h[m])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const e2={animation:{Feature:ZS},exit:{Feature:JS}};function ua(e){return{point:{x:e.pageX,y:e.pageY}}}const t2=e=>t=>bd(t)&&e(t,ua(t));function Ss(e,t,n,r){return Zs(e,t,t2(n),r)}const Jx=({current:e})=>e?e.ownerDocument.defaultView:null,af=(e,t)=>Math.abs(e-t);function n2(e,t){const n=af(e.x,t.x),r=af(e.y,t.y);return Math.sqrt(n**2+r**2)}const lf=new Set(["auto","scroll"]);class eb{constructor(t,n,{transformPagePoint:r,contextWindow:s=window,dragSnapToOrigin:i=!1,distanceThreshold:l=3,element:o}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=b=>{this.handleScroll(b.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=Da(this.lastRawMoveEventInfo,this.transformPagePoint));const b=ho(this.lastMoveEventInfo,this.history),y=this.startEvent!==null,w=n2(b.offset,{x:0,y:0})>=this.distanceThreshold;if(!y&&!w)return;const{point:x}=b,{timestamp:p}=ke;this.history.push({...x,timestamp:p});const{onStart:v,onMove:k}=this.handlers;y||(v&&v(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),k&&k(this.lastMoveEvent,b)},this.handlePointerMove=(b,y)=>{this.lastMoveEvent=b,this.lastRawMoveEventInfo=y,this.lastMoveEventInfo=Da(y,this.transformPagePoint),Q.update(this.updatePoint,!0)},this.handlePointerUp=(b,y)=>{this.end();const{onEnd:w,onSessionEnd:x,resumeAnimation:p}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&p&&p(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const v=ho(b.type==="pointercancel"?this.lastMoveEventInfo:Da(y,this.transformPagePoint),this.history);this.startEvent&&w&&w(b,v),x&&x(b,v)},!bd(t))return;this.dragSnapToOrigin=i,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=l,this.contextWindow=s||window;const u=ua(t),c=Da(u,this.transformPagePoint),{point:d}=c,{timestamp:h}=ke;this.history=[{...d,timestamp:h}];const{onSessionStart:m}=n;m&&m(t,ho(c,this.history));const f={passive:!0,capture:!0};this.removeListeners=aa(Ss(this.contextWindow,"pointermove",this.handlePointerMove,f),Ss(this.contextWindow,"pointerup",this.handlePointerUp,f),Ss(this.contextWindow,"pointercancel",this.handlePointerUp,f)),o&&this.startScrollTracking(o)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(lf.has(r.overflowX)||lf.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,s=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},i={x:s.x-n.x,y:s.y-n.y};i.x===0&&i.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=i.x,this.lastMoveEventInfo.point.y+=i.y):this.history.length>0&&(this.history[0].x-=i.x,this.history[0].y-=i.y),this.scrollPositions.set(t,s),Q.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),dt(this.updatePoint)}}function Da(e,t){return t?{point:t(e.point)}:e}function of(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ho({point:e},t){return{point:e,delta:of(e,tb(t)),offset:of(e,r2(t)),velocity:s2(t,.1)}}function r2(e){return e[0]}function tb(e){return e[e.length-1]}function s2(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const s=tb(e);for(;n>=0&&(r=e[n],!(s.timestamp-r.timestamp>Qe(t)));)n--;if(!r)return{x:0,y:0};r===e[0]&&e.length>2&&s.timestamp-r.timestamp>Qe(t)*2&&(r=e[1]);const i=lt(s.timestamp-r.timestamp);if(i===0)return{x:0,y:0};const l={x:(s.x-r.x)/i,y:(s.y-r.y)/i};return l.x===1/0&&(l.x=0),l.y===1/0&&(l.y=0),l}function a2(e,{min:t,max:n},r){return t!==void 0&&e n&&(e=r?ne(n,e,r.max):Math.min(e,n)),e}function uf(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function i2(e,{top:t,left:n,bottom:r,right:s}){return{x:uf(e.x,n,s),y:uf(e.y,t,r)}}function cf(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min r?n=Tr(t.min,t.max-r,e.min):r>s&&(n=Tr(e.min,e.max-s,t.min)),Nt(0,1,n)}function u2(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const qu=.35;function c2(e=qu){return e===!1?e=0:e===!0&&(e=qu),{x:df(e,"left","right"),y:df(e,"top","bottom")}}function df(e,t,n){return{min:hf(e,t),max:hf(e,n)}}function hf(e,t){return typeof e=="number"?e:e[t]||0}const d2=new WeakMap;class h2{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=xe(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const i=h=>{n&&this.snapToCursor(ua(h).point),this.stopAnimation()},l=(h,m)=>{const{drag:f,dragPropagation:b,onDragStart:y}=this.getProps();if(f&&!b&&(this.openDragLock&&this.openDragLock(),this.openDragLock=zj(f),!this.openDragLock))return;this.latestPointerEvent=h,this.latestPanInfo=m,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Pt(x=>{let p=this.getAxisMotionValue(x).get()||0;if(_t.test(p)){const{projection:v}=this.visualElement;if(v&&v.layout){const k=v.layout.layoutBox[x];k&&(p=ze(k)*(parseFloat(p)/100))}}this.originPoint[x]=p}),y&&Q.update(()=>y(h,m),!1,!0),Ru(this.visualElement,"transform");const{animationState:w}=this.visualElement;w&&w.setActive("whileDrag",!0)},o=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m;const{dragPropagation:f,dragDirectionLock:b,onDirectionLock:y,onDrag:w}=this.getProps();if(!f&&!this.openDragLock)return;const{offset:x}=m;if(b&&this.currentDirection===null){this.currentDirection=f2(x),this.currentDirection!==null&&y&&y(this.currentDirection);return}this.updateAxis("x",m.point,x),this.updateAxis("y",m.point,x),this.visualElement.render(),w&&Q.update(()=>w(h,m),!1,!0)},u=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m,this.stop(h,m),this.latestPointerEvent=null,this.latestPanInfo=null},c=()=>{const{dragSnapToOrigin:h}=this.getProps();(h||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new eb(t,{onSessionStart:i,onStart:l,onMove:o,onSessionEnd:u,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:r,contextWindow:Jx(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,s=n||this.latestPanInfo,i=this.isDragging;if(this.cancel(),!i||!s||!r)return;const{velocity:l}=s;this.startAnimation(l);const{onDragEnd:o}=this.getProps();o&&Q.postRender(()=>o(r,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:s}=this.getProps();if(!r||!Ba(t,s,this.currentDirection))return;const i=this.getAxisMotionValue(t);let l=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(l=a2(l,this.constraints[t],this.elastic[t])),i.set(l)}resolveConstraints(){var i;const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(i=this.visualElement.projection)==null?void 0:i.layout,s=this.constraints;t&&Qn(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=i2(r.layoutBox,t):this.constraints=!1,this.elastic=c2(n),s!==this.constraints&&!Qn(t)&&r&&this.constraints&&!this.hasMutatedConstraints&&Pt(l=>{this.constraints!==!1&&this.getAxisMotionValue(l)&&(this.constraints[l]=u2(r.layoutBox[l],this.constraints[l]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Qn(t))return!1;const r=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;s.root&&(s.root.scroll=void 0,s.root.updateScroll());const i=mN(r,s.root,this.visualElement.getTransformPagePoint());let l=l2(s.layout.layoutBox,i);if(n){const o=n(cN(l));this.hasMutatedConstraints=!!o,o&&(l=jx(o))}return l}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:s,dragTransition:i,dragSnapToOrigin:l,onDragTransitionEnd:o}=this.getProps(),u=this.constraints||{},c=Pt(d=>{if(!Ba(d,n,this.currentDirection))return;let h=u&&u[d]||{};(l===!0||l===d)&&(h={min:0,max:0});const m=s?200:1e6,f=s?40:1e7,b={type:"inertia",velocity:r?t[d]:0,bounceStiffness:m,bounceDamping:f,timeConstant:750,restDelta:1,restSpeed:10,...i,...h};return this.startAxisValueAnimation(d,b)});return Promise.all(c).then(o)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return Ru(this.visualElement,t),r.start(fd(t,r,0,n,this.visualElement,!1))}stopAnimation(){Pt(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,s=this.visualElement.getProps()[n];return s||this.visualElement.getValue(t,this.visualElement.latestValues[t]??0)}snapToCursor(t){Pt(n=>{const{drag:r}=this.getProps();if(!Ba(n,r,this.currentDirection))return;const{projection:s}=this.visualElement,i=this.getAxisMotionValue(n);if(s&&s.layout){const{min:l,max:o}=s.layout.layoutBox[n],u=i.get()||0;i.set(t[n]-ne(l,o,.5)+u)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Qn(n)||!r||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};Pt(l=>{const o=this.getAxisMotionValue(l);if(o&&this.constraints!==!1){const u=o.get();s[l]=o2({min:u,max:u},this.constraints[l])}});const{transformTemplate:i}=this.visualElement.getProps();this.visualElement.current.style.transform=i?i({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),Pt(l=>{if(!Ba(l,t,null))return;const o=this.getAxisMotionValue(l),{min:u,max:c}=this.constraints[l];o.set(ne(u,c,s[l]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;d2.set(this.visualElement,this);const t=this.visualElement.current,n=Ss(t,"pointerdown",c=>{const{drag:d,dragListener:h=!0}=this.getProps(),m=c.target,f=m!==t&&Uj(m);d&&h&&!f&&this.start(c)});let r;const s=()=>{const{dragConstraints:c}=this.getProps();Qn(c)&&c.current&&(this.constraints=this.resolveRefConstraints(),r||(r=m2(t,c.current,()=>this.scalePositionWithinConstraints())))},{projection:i}=this.visualElement,l=i.addEventListener("measure",s);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),Q.read(s);const o=Zs(window,"resize",()=>this.scalePositionWithinConstraints()),u=i.addEventListener("didUpdate",({delta:c,hasLayoutChanged:d})=>{this.isDragging&&d&&(Pt(h=>{const m=this.getAxisMotionValue(h);m&&(this.originPoint[h]+=c[h].translate,m.set(m.get()+c[h].translate))}),this.visualElement.render())});return()=>{o(),n(),l(),u&&u(),r&&r()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:s=!1,dragConstraints:i=!1,dragElastic:l=qu,dragMomentum:o=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:s,dragConstraints:i,dragElastic:l,dragMomentum:o}}}function mf(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function m2(e,t,n){const r=Uu(e,mf(n)),s=Uu(t,mf(n));return()=>{r(),s()}}function Ba(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function f2(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class p2 extends Pn{constructor(t){super(t),this.removeGroupControls=Ke,this.removeListeners=Ke,this.controls=new h2(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Ke}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const mo=e=>(t,n)=>{e&&Q.update(()=>e(t,n),!1,!0)};class g2 extends Pn{constructor(){super(...arguments),this.removePointerDownListener=Ke}onPointerDown(t){this.session=new eb(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Jx(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:s}=this.node.getProps();return{onSessionStart:mo(t),onStart:mo(n),onMove:mo(r),onEnd:(i,l)=>{delete this.session,s&&Q.postRender(()=>s(i,l))}}}mount(){this.removePointerDownListener=Ss(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let fo=!1;class x2 extends g.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:s}=this.props,{projection:i}=t;i&&(n.group&&n.group.add(i),r&&r.register&&s&&r.register(i),fo&&i.root.didUpdate(),i.addEventListener("animationComplete",()=>{this.safeToRemove()}),i.setOptions({...i.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),ii.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:s,isPresent:i}=this.props,{projection:l}=r;return l&&(l.isPresent=i,t.layoutDependency!==n&&l.setOptions({...l.options,layoutDependency:n}),fo=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==i?l.willUpdate():this.safeToRemove(),t.isPresent!==i&&(i?l.promote():l.relegate()||Q.postRender(()=>{const o=l.getStack();(!o||!o.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:r}=t;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),Mr.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:s}=t;fo=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),r&&r.deregister&&r.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function nb(e){const[t,n]=Hx(),r=g.useContext(Xc);return a.jsx(x2,{...e,layoutGroup:r,switchLayoutGroup:g.useContext(Zx),isPresent:t,safeToRemove:n})}const b2={pan:{Feature:g2},drag:{Feature:p2,ProjectionNode:Wx,MeasureLayout:nb}};function ff(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,i=r[s];i&&Q.postRender(()=>i(t,ua(t)))}class v2 extends Pn{mount(){const{current:t}=this.node;t&&(this.unmount=Ij(t,(n,r)=>(ff(this.node,r,"Start"),s=>ff(this.node,s,"End"))))}unmount(){}}class y2 extends Pn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=aa(Zs(this.node.current,"focus",()=>this.onFocus()),Zs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function pf(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),i=r[s];i&&Q.postRender(()=>i(t,ua(t)))}class k2 extends Pn{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=Hj(t,(s,i)=>(pf(this.node,i,"Start"),(l,{success:o})=>pf(this.node,l,o?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:(r==null?void 0:r.tap)===!1})}unmount(){}}const Yu=new WeakMap,po=new WeakMap,w2=e=>{const t=Yu.get(e.target);t&&t(e)},j2=e=>{e.forEach(w2)};function N2({root:e,...t}){const n=e||document;po.has(n)||po.set(n,{});const r=po.get(n),s=JSON.stringify(t);return r[s]||(r[s]=new IntersectionObserver(j2,{root:e,...t})),r[s]}function S2(e,t,n){const r=N2(t);return Yu.set(e,n),r.observe(e),()=>{Yu.delete(e),r.unobserve(e)}}const C2={some:0,all:1};class P2 extends Pn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var u;(u=this.stopObserver)==null||u.call(this);const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:s="some",once:i}=t,l={root:n?n.current:void 0,rootMargin:r,threshold:typeof s=="number"?s:C2[s]},o=c=>{const{isIntersecting:d}=c;if(this.isInView===d||(this.isInView=d,i&&!d&&this.hasEnteredView))return;d&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",d);const{onViewportEnter:h,onViewportLeave:m}=this.node.getProps(),f=d?h:m;f&&f(c)};this.stopObserver=S2(this.node.current,l,o)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(E2(t,n))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}}function E2({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const T2={inView:{Feature:P2},tap:{Feature:k2},focus:{Feature:y2},hover:{Feature:v2}},A2={layout:{ProjectionNode:Wx,MeasureLayout:nb}},M2={...e2,...T2,...b2,...A2},Ut=YS(M2,XS);function Hi(e){return typeof window>"u"?!1:e?qg():hd()}const _2=50,gf=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),L2=()=>({time:0,x:gf(),y:gf()}),D2={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function xf(e,t,n,r){const s=n[t],{length:i,position:l}=D2[t],o=s.current,u=n.time;s.current=Math.abs(e[`scroll${l}`]),s.scrollLength=e[`scroll${i}`]-e[`client${i}`],s.offset.length=0,s.offset[0]=0,s.offset[1]=s.scrollLength,s.progress=Tr(0,s.scrollLength,s.current);const c=r-u;s.velocity=c>_2?0:ed(s.current-o,c)}function B2(e,t,n){xf(e,"x",t,n),xf(e,"y",t,n),t.time=n}function z2(e,t){const n={x:0,y:0};let r=e;for(;r&&r!==t;)if(js(r))n.x+=r.offsetLeft,n.y+=r.offsetTop,r=r.offsetParent;else if(r.tagName==="svg"){const s=r.getBoundingClientRect();r=r.parentElement;const i=r.getBoundingClientRect();n.x+=s.left-i.left,n.y+=s.top-i.top}else if(r instanceof SVGGraphicsElement){const{x:s,y:i}=r.getBBox();n.x+=s,n.y+=i;let l=null,o=r.parentNode;for(;!l;)o.tagName==="svg"&&(l=o),o=r.parentNode;r=l}else break;return n}const Xu={start:0,center:.5,end:1};function bf(e,t,n=0){let r=0;if(e in Xu&&(e=Xu[e]),typeof e=="string"){const s=parseFloat(e);e.endsWith("px")?r=s:e.endsWith("%")?e=s/100:e.endsWith("vw")?r=s/100*document.documentElement.clientWidth:e.endsWith("vh")?r=s/100*document.documentElement.clientHeight:e=s}return typeof e=="number"&&(r=t*e),n+r}const R2=[0,0];function I2(e,t,n,r){let s=Array.isArray(e)?e:R2,i=0,l=0;return typeof e=="number"?s=[e,e]:typeof e=="string"&&(e=e.trim(),e.includes(" ")?s=e.split(" "):s=[e,Xu[e]?e:"0"]),i=bf(s[0],n,r),l=bf(s[1],t),i-l}const cs={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},F2={x:0,y:0};function V2(e){return"getBBox"in e&&e.tagName!=="svg"?e.getBBox():{width:e.clientWidth,height:e.clientHeight}}function O2(e,t,n){const{offset:r=cs.All}=n,{target:s=e,axis:i="y"}=n,l=i==="y"?"height":"width",o=s!==e?z2(s,e):F2,u=s===e?{width:e.scrollWidth,height:e.scrollHeight}:V2(s),c={width:e.clientWidth,height:e.clientHeight};t[i].offset.length=0;let d=!t[i].interpolate;const h=r.length;for(let m=0;m {U2(e,r.target,n),B2(e,n,s),(r.offset||r.target)&&O2(e,n,r)},notify:()=>t(n)}}const Zn=new WeakMap,vf=new WeakMap,go=new WeakMap,yf=new WeakMap,za=new WeakMap,kf=e=>e===document.scrollingElement?window:e;function rb(e,{container:t=document.scrollingElement,trackContentSize:n=!1,...r}={}){if(!t)return Ke;let s=go.get(t);s||(s=new Set,go.set(t,s));const i=L2(),l=W2(t,e,i,r);if(s.add(l),!Zn.has(t)){const u=()=>{for(const m of s)m.measure(ke.timestamp);Q.preUpdate(c)},c=()=>{for(const m of s)m.notify()},d=()=>Q.read(u);Zn.set(t,d);const h=kf(t);window.addEventListener("resize",d),t!==document.documentElement&&vf.set(t,Uu(t,d)),h.addEventListener("scroll",d),d()}if(n&&!za.has(t)){const u=Zn.get(t),c={width:t.scrollWidth,height:t.scrollHeight};yf.set(t,c);const d=()=>{const m=t.scrollWidth,f=t.scrollHeight;(c.width!==m||c.height!==f)&&(u(),c.width=m,c.height=f)},h=Q.read(d,!0);za.set(t,h)}const o=Zn.get(t);return Q.read(o,!1,!0),()=>{var h;dt(o);const u=go.get(t);if(!u||(u.delete(l),u.size))return;const c=Zn.get(t);Zn.delete(t),c&&(kf(t).removeEventListener("scroll",c),(h=vf.get(t))==null||h(),window.removeEventListener("resize",c));const d=za.get(t);d&&(dt(d),za.delete(t)),yf.delete(t)}}const H2=[[cs.Enter,"entry"],[cs.Exit,"exit"],[cs.Any,"cover"],[cs.All,"contain"]],wf={start:0,end:1};function $2(e){const t=e.trim().split(/\s+/);if(t.length!==2)return;const n=wf[t[0]],r=wf[t[1]];if(!(n===void 0||r===void 0))return[n,r]}function G2(e){if(e.length!==2)return;const t=[];for(const n of e)if(Array.isArray(n))t.push(n);else if(typeof n=="string"){const r=$2(n);if(!r)return;t.push(r)}else return;return t}function K2(e,t){const n=G2(e);if(!n)return!1;for(let r=0;r<2;r++){const s=n[r],i=t[r];if(s[0]!==i[0]||s[1]!==i[1])return!1}return!0}function Cd(e){if(!e)return{rangeStart:"contain 0%",rangeEnd:"contain 100%"};for(const[t,n]of H2)if(K2(e,t))return{rangeStart:`${n} 0%`,rangeEnd:`${n} 100%`}}const jf=new Map;function Nf(e){const t={value:0},n=rb(r=>{t.value=r[e.axis].progress*100},e);return{currentTime:t,cancel:n}}function sb({source:e,container:t,...n}){const{axis:r}=n;e&&(t=e);let s=jf.get(t);s||(s=new Map,jf.set(t,s));const i=n.target??"self";let l=s.get(i);l||(l={},s.set(i,l));const o=r+(n.offset??[]).join(",");return l[o]||(n.target&&Hi(n.target)?Cd(n.offset)?l[o]=new ViewTimeline({subject:n.target,axis:r}):l[o]=Nf({container:t,...n}):Hi()?l[o]=new ScrollTimeline({source:t,axis:r}):l[o]=Nf({container:t,...n})),l[o]}function q2(e,t){const n=sb(t),r=t.target?Cd(t.offset):void 0,s=t.target?Hi(t.target)&&!!r:Hi();return e.attachTimeline({timeline:s?n:void 0,...r&&s&&{rangeStart:r.rangeStart,rangeEnd:r.rangeEnd},observe:i=>(i.pause(),bx(l=>{i.time=i.iterationDuration*l},n))})}function Y2(e){return e&&(e.target||e.offset)}function X2(e){return e.length===2}function Z2(e,t){return X2(e)||Y2(t)?rb(n=>{e(n[t.axis].progress,n)},t):bx(e,sb(t))}function ab(e,{axis:t="y",container:n=document.scrollingElement,...r}={}){if(!n)return Ke;const s={axis:t,container:n,...r};return typeof e=="function"?Z2(e,s):q2(e,s)}const Q2=()=>({scrollX:vt(0),scrollY:vt(0),scrollXProgress:vt(0),scrollYProgress:vt(0)}),fr=e=>e?!e.current:!1;function Sf(e,t,n,r){return{factory:s=>{let i;const l=()=>{if(fr(n)||fr(r)){Mr.read(l);return}i=ab(s,{...t,axis:e,container:(n==null?void 0:n.current)||void 0,target:(r==null?void 0:r.current)||void 0})};return Mr.read(l),()=>{mx(l),i==null||i()}},times:[0,1],keyframes:[0,1],ease:s=>s,duration:1}}function J2(e,t){return typeof window>"u"?!1:e?qg()&&!!Cd(t):hd()}function ib({container:e,target:t,...n}={}){const r=wn(Q2);J2(t,n.offset)&&(r.scrollXProgress.accelerate=Sf("x",n,e,t),r.scrollYProgress.accelerate=Sf("y",n,e,t));const s=g.useRef(null),i=g.useRef(!1),l=g.useCallback(()=>(s.current=ab((o,{x:u,y:c})=>{r.scrollX.set(u.current),r.scrollXProgress.set(u.progress),r.scrollY.set(c.current),r.scrollYProgress.set(c.progress)},{...n,container:(e==null?void 0:e.current)||void 0,target:(t==null?void 0:t.current)||void 0}),()=>{var o;(o=s.current)==null||o.call(s)}),[e,t,JSON.stringify(n.offset)]);return sa(()=>{if(i.current=!1,fr(e)||fr(t)){i.current=!0;return}else return l()},[l]),g.useEffect(()=>{if(!i.current)return;let o;const u=()=>{const c=fr(e),d=fr(t);!c&&!d&&(o=l())};return Mr.read(u),()=>{mx(u),o==null||o()}},[l]),r}function lb(e){const t=wn(()=>vt(e)),{isStatic:n}=g.useContext(oa);if(n){const[,r]=g.useState(e);g.useEffect(()=>t.on("change",r),[])}return t}function ob(e,t){const n=lb(t()),r=()=>n.set(t());return r(),sa(()=>{const s=()=>Q.preRender(r,!1,!0),i=e.map(l=>l.on("change",s));return()=>{i.forEach(l=>l()),dt(r)}}),n}function eC(e){ws.current=[],e();const t=ob(ws.current,e);return ws.current=void 0,t}function nn(e,t,n,r){if(typeof e=="function")return eC(e);if(n!==void 0&&!Array.isArray(n)&&typeof t!="function")return tC(e,t,n,r);const l=typeof t=="function"?t:eN(t,n,r),o=Array.isArray(e)?Cf(e,l):Cf([e],([c])=>l(c)),u=Array.isArray(e)?void 0:e.accelerate;return u&&!u.isTransformed&&typeof t!="function"&&Array.isArray(n)&&(r==null?void 0:r.clamp)!==!1&&(o.accelerate={...u,times:t,keyframes:n,isTransformed:!0}),o}function Cf(e,t){const n=wn(()=>[]);return ob(e,()=>{n.length=0;const r=e.length;for(let s=0;s Object.keys(n)),i=wn(()=>({}));for(const l of s)i[l]=nn(e,t,n[l],r);return i}function nC(e,t={}){const{isStatic:n}=g.useContext(oa),r=()=>ye(e)?e.get():e;if(n)return nn(r);const s=lb(r());return g.useInsertionEffect(()=>tN(s,e,t),[s,JSON.stringify(t)]),s}function rC(e,t={}){return nC(e,{type:"spring",...t})}function sC(){const{scrollYProgress:e}=ib(),t=rC(e,{stiffness:200,damping:30,restDelta:.001});return a.jsx(Ut.div,{style:{scaleX:t},className:"fixed left-0 top-0 z-40 h-0.5 w-full origin-left bg-brand-500"})}const aC=()=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",className:"h-10 w-10",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.7 6.3a4 4 0 0 0-5.5 4.5L3 17l2 2 6.2-6.2a4 4 0 0 0 4.5-5.5l-2.6 2.6-2-2 2.6-2.6Z"})});function ca({message:e,fullScreen:t=!1}){const{t:n}=Te(),r=a.jsxs("div",{className:"mx-auto max-w-md text-center",children:[a.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(aC,{})}),a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:n("maintenance.title")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:e||n("maintenance.defaultMessage")})]});return t?a.jsx("div",{className:"flex min-h-screen items-center justify-center bg-white px-4 dark:bg-neutral-950",children:r}):a.jsx("div",{className:"mx-auto max-w-6xl px-4 py-20 sm:px-6",children:r})}const Pf=a.jsx(a.Fragment,{children:'Wartungsmodus aktiv – Besucher sehen aktuell eine Wartungsmeldung. Du siehst diese Seite nur, weil du die Berechtigung "Wartungsmodus umgehen" hast.'});function da({inline:e=!1}){return e?a.jsx("div",{className:"mb-8 rounded-lg bg-amber-500 px-4 py-2 text-center text-xs font-semibold text-white",children:Pf}):a.jsx("div",{className:"bg-amber-500 px-4 py-2 text-center text-xs font-semibold text-white",children:Pf})}function iC({onClose:e}){const{consent:t,saveCustom:n}=Or(),[r,s]=g.useState(t.external),[i,l]=g.useState(t.analytics),{t:o}=Te();return a.jsx("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50 p-4",onClick:e,children:a.jsxs("div",{className:"w-full max-w-md rounded-xl bg-white p-6 dark:bg-neutral-900",onClick:u=>u.stopPropagation(),children:[a.jsx("h2",{className:"mb-1 text-lg font-bold text-neutral-900 dark:text-white",children:o("cookieConsent.modalTitle")}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-600 dark:text-neutral-300",children:[o("cookieConsent.modalIntro")," ",a.jsx(W,{to:"/datenschutz",className:"underline hover:text-brand-500",onClick:e,children:o("cookieConsent.privacyPolicy")}),"."]}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.necessaryTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.necessaryDesc")})]}),a.jsx("input",{type:"checkbox",checked:!0,disabled:!0,className:"mt-1 h-4 w-4 shrink-0"})]}),a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.externalTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.externalDesc")})]}),a.jsx("input",{type:"checkbox",checked:r,onChange:u=>s(u.target.checked),className:"mt-1 h-4 w-4 shrink-0"})]}),a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.analyticsTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.analyticsDesc")})]}),a.jsx("input",{type:"checkbox",checked:i,onChange:u=>l(u.target.checked),className:"mt-1 h-4 w-4 shrink-0"})]})]}),a.jsxs("div",{className:"mt-5 flex justify-end gap-2",children:[a.jsx("button",{type:"button",onClick:e,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:o("cookieConsent.cancel")}),a.jsx("button",{type:"button",onClick:()=>n({external:r,analytics:i}),className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:o("cookieConsent.saveSelection")})]})]})})}function lC(){const{decided:e,settingsOpen:t,acceptAll:n,rejectNonEssential:r,openSettings:s,closeSettings:i}=Or(),{t:l}=Te();return a.jsxs(a.Fragment,{children:[!e&&a.jsx("div",{className:"fixed inset-x-0 bottom-0 z-50 border-t border-neutral-200 bg-white/95 p-4 shadow-lg backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95 sm:p-5",children:a.jsxs("div",{className:"mx-auto flex max-w-6xl flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsxs("p",{className:"text-sm text-neutral-600 dark:text-neutral-300",children:[l("cookieConsent.bannerText")," ",l("cookieConsent.moreInfo")," ",a.jsx(W,{to:"/datenschutz",className:"underline hover:text-brand-500",children:l("cookieConsent.privacyPolicy")}),"."]}),a.jsxs("div",{className:"flex flex-wrap gap-2 sm:shrink-0",children:[a.jsx("button",{type:"button",onClick:s,className:"rounded-md border border-neutral-300 px-3 py-2 text-sm dark:border-neutral-700",children:l("cookieConsent.settings")}),a.jsx("button",{type:"button",onClick:r,className:"rounded-md border border-neutral-300 px-3 py-2 text-sm dark:border-neutral-700",children:l("cookieConsent.onlyNecessary")}),a.jsx("button",{type:"button",onClick:n,className:"rounded-md bg-brand-500 px-3 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l("cookieConsent.acceptAll")})]})]})}),t&&a.jsx(iC,{onClose:i})]})}function oC(){const{consent:e}=Or(),{ga_measurement_id:t}=Vr(),n=g.useRef(!1);return g.useEffect(()=>{if(!t||!e.analytics||n.current)return;n.current=!0;const r=document.createElement("script");r.src=`https://www.googletagmanager.com/gtag/js?id=${t}`,r.async=!0,document.head.appendChild(r),window.dataLayer=window.dataLayer||[];function s(...i){window.dataLayer.push(i)}window.gtag=s,s("js",new Date),s("config",t,{anonymize_ip:!0})},[t,e.analytics]),null}const ub=g.createContext({global:{enabled:!1,message:null},services:{enabled:!1,message:null},vehicles:{enabled:!1,message:null},bypass:!1}),uC=ub.Provider;function bl(){return g.useContext(ub)}const cC={global:{enabled:!1,message:null},services:{enabled:!1,message:null},vehicles:{enabled:!1,message:null}},dC={phone:"09373 20 62 390",whatsapp:null,contact_email:"info@hifi-planet-amorbach.de",hero_image_path:null,ga_measurement_id:null,package_card_theme:"graphite",package_card_layout:"strip"},hC=["/impressum","/datenschutz","/agb"];function mC(){const[e,t]=g.useState(null),[n,r]=g.useState(dC),{loading:s,hasPermission:i}=Dt(),l=ht();if(g.useEffect(()=>{A.get("/maintenance").then(t).catch(()=>t(cC)),A.get("/site-settings").then(r).catch(()=>{})},[]),e===null||s)return a.jsx("div",{className:"min-h-screen bg-white dark:bg-neutral-950"});const o=i("maintenance.bypass"),u=hC.includes(l.pathname);return e.global.enabled&&!o&&!u?a.jsx(Yh,{children:a.jsx(ca,{message:e.global.message,fullScreen:!0})}):a.jsx(Yh,{children:a.jsx(uC,{value:{...e,bypass:o},children:a.jsx(ww,{value:n,children:a.jsxs("div",{className:"page-texture flex min-h-screen flex-col text-neutral-900 dark:text-neutral-100",children:[o&&e.global.enabled&&a.jsx(da,{}),a.jsx(sC,{}),a.jsx(Ew,{}),a.jsx("main",{className:"flex-1",children:a.jsx(hl,{})}),a.jsx(Dw,{}),a.jsx(lC,{}),a.jsx(oC,{})]})})})})}const fC={home:"M3 11.5 12 4l9 7.5M5 10v9a1 1 0 0 0 1 1h4v-6h4v6h4a1 1 0 0 0 1-1v-9",tag:"M4 4h7l9 9-7 7-9-9V4Zm3.5 3.5h.01",car:"M3 13.5 4.5 9A2 2 0 0 1 6.4 7.5h11.2A2 2 0 0 1 19.5 9L21 13.5M3 13.5v4a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-4M3 13.5h18M6.5 16.5h.01M17.5 16.5h.01",box:"M12 3 4 7.5v9L12 21l8-4.5v-9L12 3Zm0 9 8-4.5M12 12v9M12 12 4 7.5",mail:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm0 0 8 7 8-7",users:"M16 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm-4 6c-4 0-7 2-7 4.5V19h14v-1.5C19 15 16 13 12 13Z",shield:"M12 3 4 6v6c0 4.5 3.4 7.7 8 9 4.6-1.3 8-4.5 8-9V6l-8-3Zm-1.5 9.5 4-4 1 1-5 5-2.5-2.5 1-1 1.5 1.5Z",lock:"M6 10V8a6 6 0 1 1 12 0v2m-13 0h14a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1Zm7 5v2",briefcase:"M4 7h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1Zm4 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18",sliders:"M4 6h16M4 6a2 2 0 1 0 4 0 2 2 0 0 0-4 0Zm16 6H4m10 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0ZM4 18h16m-12 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0Z",image:"M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm2 12 4.5-5.5L14 16l2.5-3L20 17H6ZM8 9.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z",help:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-5.5v.01M9.5 9.25a2.5 2.5 0 1 1 3.5 2.29c-.7.32-1 .77-1 1.46v.3"},pC=({path:e})=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:"h-5 w-5 shrink-0",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:e})});function gC(){const{logout:e,user:t,hasPermission:n}=Dt(),r=ra(),[s,i]=g.useState(!1),[l,o]=g.useState(0);g.useEffect(()=>{n("contact.manage")&&A.get("/contact").then(m=>o(m.filter(f=>f.status==="new").length)).catch(()=>{})},[]);const u=[{title:null,links:[{to:"/admin",label:"Dashboard",icon:"home",end:!0},{to:"/admin/account",label:"Mein Konto",icon:"lock"}]},{title:"Fahrzeug-Katalog",links:[{to:"/admin/brands",label:"Marken",icon:"tag",permission:"brands.manage"},{to:"/admin/models",label:"Modelle",icon:"car",permission:"models.manage"},{to:"/admin/packages",label:"Pakete",icon:"box",permission:"packages.manage"}]},{title:"Website",links:[{to:"/admin/services",label:"Leistungen",icon:"briefcase",permission:"services.manage"},{to:"/admin/faqs",label:"FAQ",icon:"help",permission:"content.manage"}]},{title:"Bildergalerie",links:[{to:"/admin/gallery-brands",label:"Marken",icon:"tag",permission:"gallery.manage"},{to:"/admin/gallery-projects",label:"Projekte",icon:"image",permission:"gallery.manage"}]},{title:"Kunden",links:[{to:"/admin/contact-requests",label:"Kontaktanfragen",icon:"mail",permission:"contact.manage",badge:l}]},{title:"Verwaltung",links:[{to:"/admin/users",label:"Benutzer",icon:"users",permission:"users.manage"},{to:"/admin/permission-groups",label:"Berechtigungsgruppen",icon:"shield",permission:"permission_groups.manage"},{to:"/admin/settings",label:"Einstellungen",icon:"sliders",permission:"settings.manage"}]}].map(m=>({...m,links:m.links.filter(f=>!f.permission||n(f.permission))})).filter(m=>m.links.length>0),c=async()=>{await e(),r("/admin/login")},d=({isActive:m})=>`flex items-center justify-between gap-2 rounded-md px-3 py-2 text-sm font-medium transition ${m?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,h=({onNavigate:m})=>a.jsx("nav",{className:"space-y-5",children:u.map((f,b)=>a.jsxs("div",{children:[f.title&&a.jsx("p",{className:"mb-1.5 px-3 text-xs font-semibold uppercase tracking-wide text-neutral-400 dark:text-neutral-500",children:f.title}),a.jsx("div",{className:"space-y-1",children:f.links.map(y=>a.jsxs(ug,{to:y.to,end:y.end,className:d,onClick:m,children:[a.jsxs("span",{className:"flex items-center gap-2.5",children:[a.jsx(pC,{path:fC[y.icon]}),y.label]}),!!y.badge&&a.jsx("span",{className:"rounded-full bg-red-500 px-2 py-0.5 text-xs font-bold text-white",children:y.badge})]},y.to))})]},b))});return a.jsxs("div",{className:"flex min-h-screen bg-neutral-50 text-neutral-900 dark:bg-neutral-950 dark:text-neutral-100",children:[a.jsxs("aside",{className:"hidden w-60 shrink-0 border-r border-neutral-200 p-4 dark:border-neutral-800 sm:block",children:[a.jsxs("div",{className:"mb-6 flex items-center gap-2 px-3",children:[a.jsxs("span",{className:"rounded-lg px-2 py-1",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-7 w-auto dark:hidden"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-7 w-auto dark:block"})]}),a.jsx("span",{className:"text-sm font-semibold text-neutral-500 dark:text-neutral-400",children:"Admin"})]}),a.jsx(h,{})]}),a.jsxs("div",{className:"flex-1",children:[a.jsxs("header",{className:"border-b border-neutral-200 dark:border-neutral-800",children:[a.jsxs("div",{className:"flex items-center justify-between px-4 py-3 sm:px-6",children:[a.jsxs("div",{className:"flex items-center gap-2 sm:hidden",children:[a.jsx("button",{onClick:()=>i(m=>!m),"aria-label":"Menü öffnen",className:"rounded-md p-2 text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}),a.jsxs("span",{className:"rounded-lg px-1.5 py-0.5",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-6 w-auto dark:hidden"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-6 w-auto dark:block"})]})]}),a.jsxs("p",{className:"hidden text-sm text-neutral-500 dark:text-neutral-400 sm:block",children:["Angemeldet als ",t==null?void 0:t.username,t!=null&&t.is_super_admin?" · Super-Admin":""]}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(mg,{}),a.jsx("button",{onClick:c,className:"rounded-md border border-neutral-300 px-3 py-1.5 text-sm font-medium text-neutral-700 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800",children:"Abmelden"})]})]}),s&&a.jsx("div",{className:"border-t border-neutral-200 px-4 py-3 dark:border-neutral-800 sm:hidden",children:a.jsx(h,{onNavigate:()=>i(!1)})})]}),a.jsx("main",{className:"p-4 sm:p-6",children:a.jsx(hl,{})})]})]})}function xC(){const{user:e,loading:t}=Dt();return t?a.jsx("div",{className:"flex min-h-screen items-center justify-center text-neutral-500",children:"Lädt…"}):e?a.jsx(hl,{}):a.jsx(Gs,{to:"/admin/login",replace:!0})}function Ve({permission:e,children:t}){const{hasPermission:n}=Dt();return(Array.isArray(e)?e:[e]).some(i=>n(i))?t:a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-8 text-center dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-2 text-lg font-bold text-neutral-900 dark:text-white",children:"Keine Berechtigung"}),a.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:"Du hast keinen Zugriff auf diesen Bereich. Bitte wende dich an einen Administrator, falls du hier Zugriff brauchst."})]})}function xo(e,t,n="name"){if(!t)return;let r=document.head.querySelector(`meta[${n}="${e}"]`);r||(r=document.createElement("meta"),r.setAttribute(n,e),document.head.appendChild(r)),r.setAttribute("content",t)}function bC(e){let t=document.head.querySelector('link[rel="canonical"]');t||(t=document.createElement("link"),t.setAttribute("rel","canonical"),document.head.appendChild(t)),t.setAttribute("href",`https://hifi-planet.de${e}`)}function nt({title:e,description:t,path:n}){g.useEffect(()=>{e&&(document.title=`${e} | HifiPlanet`,xo("og:title",`${e} | HifiPlanet`,"property")),t&&(xo("description",t),xo("og:description",t,"property")),n&&bC(n)},[e,t,n])}const vC=[.16,1,.3,1],Ef={up:{y:40},left:{x:-56},right:{x:56}};function yC(e){return{hidden:{opacity:0,scale:.96,filter:"blur(8px)",...Ef[e]||Ef.up},visible:{opacity:1,scale:1,x:0,y:0,filter:"blur(0px)"}}}const kC={hidden:{x:"-130%"},visible:{x:"230%",transition:{duration:1.1,ease:"easeInOut",delay:.4}}};function Se({children:e,direction:t="up",className:n="",index:r=0,shine:s=!1}){const i=Math.min(r*.09,.45);return a.jsxs(Ut.div,{className:n,style:{position:"relative",overflow:"hidden"},initial:"hidden",whileInView:"visible",viewport:{once:!0,amount:.25,margin:"-100px"},variants:yC(t),transition:{duration:.75,ease:vC,delay:i},children:[e,s&&a.jsx(Ut.div,{"aria-hidden":!0,variants:kC,className:"pointer-events-none absolute inset-y-0 -left-1/3 w-1/3 rotate-12 bg-gradient-to-r from-transparent via-white/40 to-transparent"})]})}function wC({items:e}){const[t,n]=g.useState(null);return a.jsx("div",{className:"divide-y divide-neutral-200 rounded-xl border border-neutral-200 bg-white dark:divide-neutral-800 dark:border-neutral-800 dark:bg-neutral-900",children:e.map((r,s)=>{const i=t===s;return a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>n(i?null:s),className:"flex w-full items-center justify-between gap-4 px-5 py-4 text-left","aria-expanded":i,children:[a.jsx("span",{className:"font-medium text-neutral-900 dark:text-white",children:r.question}),a.jsx(Ut.svg,{animate:{rotate:i?180:0},transition:{duration:.2},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-5 w-5 shrink-0 text-neutral-500",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m6 9 6 6 6-6"})})]}),a.jsx(NS,{initial:!1,children:i&&a.jsx(Ut.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.25,ease:"easeInOut"},className:"overflow-hidden",children:a.jsx("p",{className:"px-5 pb-4 text-sm text-neutral-600 dark:text-neutral-300",children:r.answer})})})]},r.question)})})}function cb({count:e=5,className:t="h-4 w-4"}){return a.jsx("div",{className:"flex gap-0.5 text-amber-400",children:Array.from({length:e}).map((n,r)=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",className:t,children:a.jsx("path",{d:"M10 1.5l2.6 5.6 6.1.6-4.6 4.1 1.3 6-5.4-3.1-5.4 3.1 1.3-6-4.6-4.1 6.1-.6L10 1.5z"})},r))})}const jC=70;function NC({testimonials:e}){const t=g.useRef(null),n=g.useRef(null),r=g.useRef({pos:0,half:0,hovering:!1,dragging:!1,dragStartX:0,dragStartPos:0,lastTime:null,rafId:null}).current;g.useLayoutEffect(()=>{const i=n.current,l=window.matchMedia("(prefers-reduced-motion: reduce)").matches,o=()=>{i.style.transform=`translateX(${r.pos}px)`},u=p=>{if(r.half<=0)return p;for(;p>0;)p-=r.half;for(;p<=-r.half;)p+=r.half;return p},c=()=>{r.half=i.scrollWidth/2,r.pos===0?r.pos=-r.half:r.pos=u(r.pos),o()};c();const d=new ResizeObserver(c);d.observe(i);const h=p=>{r.lastTime===null&&(r.lastTime=p);const v=(p-r.lastTime)/1e3;r.lastTime=p,!r.dragging&&!r.hovering&&!l&&(r.pos=u(r.pos+jC*v),o()),r.rafId=requestAnimationFrame(h)};r.rafId=requestAnimationFrame(h);const m=t.current,f=()=>{r.hovering=!0},b=()=>{r.hovering=!1},y=p=>{r.dragging=!0,r.dragStartX=p.clientX,r.dragStartPos=r.pos,m.setPointerCapture(p.pointerId),m.classList.add("cursor-grabbing"),m.classList.remove("cursor-grab")},w=p=>{r.dragging&&(r.pos=u(r.dragStartPos+(p.clientX-r.dragStartX)),o())},x=p=>{r.dragging&&(r.dragging=!1,m.hasPointerCapture(p.pointerId)&&m.releasePointerCapture(p.pointerId),m.classList.remove("cursor-grabbing"),m.classList.add("cursor-grab"))};return m.addEventListener("pointerenter",f),m.addEventListener("pointerleave",b),m.addEventListener("pointerdown",y),m.addEventListener("pointermove",w),m.addEventListener("pointerup",x),m.addEventListener("pointercancel",x),()=>{cancelAnimationFrame(r.rafId),d.disconnect(),m.removeEventListener("pointerenter",f),m.removeEventListener("pointerleave",b),m.removeEventListener("pointerdown",y),m.removeEventListener("pointermove",w),m.removeEventListener("pointerup",x),m.removeEventListener("pointercancel",x)}},[e.length]);const s=[...e,...e];return a.jsx("div",{ref:t,className:"marquee-viewport cursor-grab touch-pan-y select-none overflow-hidden",children:a.jsx("div",{ref:n,className:"marquee-track flex w-max gap-5",children:s.map((i,l)=>a.jsx("div",{className:"w-64 shrink-0 sm:w-72 lg:w-80",children:a.jsxs("div",{className:"relative flex h-full flex-col overflow-hidden rounded-xl border border-neutral-200 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 32 24",className:"absolute -right-1 -top-1 h-16 w-16 text-brand-500/10 dark:text-brand-400/10",children:a.jsx("path",{fill:"currentColor",d:"M9.4 0C4.4 3.5 1 9.1 1 15.3 1 20.6 4.3 24 8.4 24c3.8 0 6.6-3 6.6-6.6 0-3.4-2.4-5.9-5.4-5.9-.6 0-1.4.1-1.6.2C8.5 8.5 11.6 4.6 14.6 2.6L9.4 0zm16.5 0c-4.8 3.5-8.3 9.1-8.3 15.3 0 5.3 3.3 8.6 7.5 8.6 3.7 0 6.6-3 6.6-6.6 0-3.4-2.5-5.9-5.4-5.9-.6 0-1.4.1-1.6.2.5-3.3 3.6-7.1 6.7-9.1L25.9 0z"})}),a.jsx(cb,{className:"relative z-10 mb-3 h-4 w-4",count:i.rating||5}),a.jsxs("p",{className:"relative z-10 mb-4 line-clamp-6 flex-1 text-sm leading-relaxed text-neutral-600 dark:text-neutral-300",children:["„",i.text,'"']}),a.jsxs("div",{className:"relative z-10 mt-auto flex items-center gap-3",children:[i.photo?a.jsx("img",{src:i.photo,alt:"",referrerPolicy:"no-referrer",className:"h-9 w-9 shrink-0 rounded-full object-cover"}):a.jsx("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-brand-100 text-sm font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",children:i.name.charAt(0).toUpperCase()}),a.jsx("p",{className:"text-sm font-semibold text-neutral-900 dark:text-white",children:i.name})]})]})},`${i.name}-${l}`))})})}const SC="/assets/gallery-dash2-CEVCErVK.webp",db="/assets/gallery-amp-purple-CESAKuOf.webp",CC="/assets/gallery-speaker-CUXQZ49Q.webp",hb="/assets/gallery-subs-COSd4seJ.webp",mb="/assets/gallery-dash-Cg-7v9qo.webp",PC="/assets/hero-trunk-Dp4_JHDh.webp",EC="/assets/gallery-rear-8cIXPC7T.webp",TC="/assets/hero-highlight-Co4f1Kj5.webp",AC="/assets/youtube-hintergrund-C0osNxn7.mp4",MC="ostj2mKDVUc",_C=["Ground Zero Audio","Audison","Hertz","Helix","Brax","Gladen","Alpine","Pioneer","Kenwood","JVC"],LC=[{src:hb,width:900,height:600},{src:db,width:900,height:600},{src:CC,width:900,height:1200},{src:mb,width:900,height:814},{src:EC,width:900,height:1200},{src:PC,width:1920,height:1280}];function DC(){const{hero_image_path:e}=Vr(),t=e||SC,{t:n,language:r}=Te(),s=n("home.stats"),i=n("home.galleryAlts"),l=LC.map((k,j)=>({...k,alt:i[j]})),[o,u]=g.useState([]),[c,d]=g.useState(null),h=c?c.reviews.filter(k=>k.review_text).map(k=>({name:k.author_name,text:k.review_text,rating:k.rating,photo:k.profile_photo_url})):n("home.testimonials");g.useEffect(()=>{A.get("/faqs").then(k=>{u(k.map(j=>({question:r==="de"?j.question_de:j.question_en,answer:r==="de"?j.answer_de:j.answer_en})))}).catch(()=>{})},[r]),g.useEffect(()=>{A.get("/google-reviews").then(k=>{k.rating!=null&&k.reviews.some(j=>j.review_text)&&d(k)}).catch(()=>{})},[]),nt({title:n("home.metaTitle"),description:n("home.metaDescription"),path:"/"}),g.useEffect(()=>{if(o.length===0)return;const k=document.createElement("script");return k.type="application/ld+json",k.text=JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:o.map(j=>({"@type":"Question",name:j.question,acceptedAnswer:{"@type":"Answer",text:j.answer}}))}),document.head.appendChild(k),()=>document.head.removeChild(k)},[o]);const m=g.useRef(null),{scrollYProgress:f}=ib({target:m,offset:["start start","end start"]}),b=nn(f,[0,1],["-6%","6%"]),y=nn(f,[0,1],["0%","60%"]),w=nn(f,[0,.8],[1,0]),x=nn(f,[.5,1],[0,1]),p=nn(x,k=>k>.05?"auto":"none"),v=nn(f,[.5,1],[16,0]);return a.jsxs("div",{children:[a.jsx(Ut.div,{style:{opacity:x,pointerEvents:p,y:v},className:"fixed inset-x-0 bottom-0 z-20 border-t border-neutral-200 bg-white/95 px-4 py-3 shadow-[0_-8px_24px_rgba(0,0,0,0.08)] backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/95 sm:px-6",children:a.jsxs("div",{className:"mx-auto flex max-w-6xl items-center justify-between gap-3",children:[a.jsx("p",{className:"hidden text-sm font-medium text-neutral-600 dark:text-neutral-300 sm:block",children:n("home.stickyCta")}),a.jsxs("div",{className:"flex w-full gap-3 sm:w-auto",children:[a.jsx(W,{to:"/fahrzeuge",className:"flex-1 rounded-md bg-brand-500 px-5 py-2.5 text-center text-sm font-semibold text-white shadow-sm transition hover:-translate-y-0.5 hover:bg-brand-600 sm:flex-none",children:n("home.selectVehicle")}),a.jsx(W,{to:"/kontakt",className:"flex-1 rounded-md border border-neutral-300 px-5 py-2.5 text-center text-sm font-semibold text-neutral-700 transition hover:-translate-y-0.5 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800 sm:flex-none",children:n("home.getInTouch")})]})]})}),a.jsxs("section",{ref:m,className:"relative -mt-[89px] h-dvh min-h-[560px] overflow-hidden sm:-mt-[97px]",children:[a.jsx(Ut.img,{style:{y:b,scale:1.15},src:t,alt:n("home.heroImageAlt"),className:"absolute inset-0 h-full w-full object-cover"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-neutral-950 via-neutral-950/80 to-neutral-950/40"}),a.jsx(Ut.div,{style:{y,opacity:w},className:"relative flex h-full max-w-6xl flex-col items-center justify-center px-4 mx-auto text-center sm:px-6",children:a.jsxs(Ut.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.7,ease:"easeOut"},children:[a.jsx("p",{className:"mb-3 text-sm font-semibold uppercase tracking-wide text-brand-400",children:n("home.welcome")}),a.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-white sm:text-5xl",children:n("home.heroTitle")}),a.jsx("p",{className:"mx-auto mt-4 max-w-2xl text-base text-neutral-200 sm:text-lg",children:n("home.heroSubtitle")}),a.jsxs("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-3",children:[a.jsx(W,{to:"/fahrzeuge",className:"rounded-md bg-brand-500 px-6 py-3 text-sm font-semibold text-white shadow-sm transition hover:-translate-y-0.5 hover:bg-brand-600 hover:shadow-lg",children:n("home.selectVehicle")}),a.jsx(W,{to:"/kontakt",className:"rounded-md border border-white/30 bg-white/10 px-6 py-3 text-sm font-semibold text-white backdrop-blur transition hover:-translate-y-0.5 hover:bg-white/20",children:n("home.getInTouch")})]})]})})]}),a.jsx("section",{className:"border-b border-neutral-200 bg-neutral-950 py-8 dark:border-neutral-800",children:a.jsx("div",{className:"mx-auto grid max-w-6xl grid-cols-2 gap-6 px-4 text-center sm:grid-cols-4 sm:px-6",children:s.map((k,j)=>a.jsxs(Se,{index:j,children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-400 sm:text-3xl",children:k.value}),a.jsx("p",{className:"text-sm text-neutral-400",children:k.label})]},k.label))})}),a.jsx("section",{className:"border-b border-neutral-200 py-8 dark:border-neutral-800",children:a.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[a.jsx("p",{className:"mb-4 text-center text-xs font-semibold uppercase tracking-wide text-neutral-400",children:n("home.brandsHeading")}),a.jsx("div",{className:"flex flex-wrap items-center justify-center gap-x-8 gap-y-3",children:_C.map((k,j)=>a.jsx(Se,{index:j,className:"text-lg font-bold text-neutral-400 dark:text-neutral-600",children:k},k))})]})}),a.jsxs("section",{className:"relative flex min-h-[70vh] items-center justify-center overflow-hidden sm:min-h-[85vh]",children:[a.jsx("video",{autoPlay:!0,loop:!0,muted:!0,playsInline:!0,poster:mb,className:"absolute inset-0 h-full w-full object-cover",children:a.jsx("source",{src:AC,type:"video/mp4"})}),a.jsx("div",{className:"absolute inset-0 bg-black/55"}),a.jsxs(Se,{className:"relative mx-auto max-w-3xl px-4 text-center sm:px-6",children:[a.jsx("p",{className:"mb-4 text-xs font-semibold uppercase tracking-[0.2em] text-neutral-200 sm:text-sm",children:n("home.youtubeBadge")}),a.jsx("h2",{className:"text-3xl font-bold uppercase tracking-wide text-white sm:text-5xl",children:n("home.youtubeTitle")}),a.jsx("p",{className:"mt-4 text-xs font-semibold uppercase tracking-wide text-neutral-200 sm:text-sm",children:n("home.youtubeText")}),a.jsx("a",{href:`https://www.youtube.com/watch?v=${MC}`,target:"_blank",rel:"noopener noreferrer",className:"mt-8 inline-flex items-center justify-center rounded-full bg-white px-8 py-3 text-xs font-bold uppercase tracking-wide text-neutral-900 transition hover:-translate-y-0.5 hover:bg-neutral-100",children:n("home.youtubeCta")})]})]}),a.jsx("section",{className:"grain-band border-y border-neutral-200 bg-neutral-50 py-16 dark:border-neutral-800 dark:bg-neutral-900/40",children:a.jsxs("div",{className:"mx-auto max-w-6xl space-y-16 overflow-hidden px-4 sm:px-6",children:[a.jsxs("div",{className:"grid items-center gap-8 md:grid-cols-2",children:[a.jsx(Se,{direction:"left",shine:!0,className:"rounded-xl shadow-lg",children:a.jsx("img",{src:hb,alt:n("home.craftImageAlt"),width:900,height:600,className:"w-full rounded-xl object-cover",style:{maxHeight:380}})}),a.jsxs(Se,{direction:"right",index:1,children:[a.jsx("p",{className:"mb-2 text-sm font-semibold uppercase tracking-wide text-brand-600 dark:text-brand-400",children:n("home.craftEyebrow")}),a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.craftTitle")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:n("home.craftText")})]})]}),a.jsxs("div",{className:"grid items-center gap-8 md:grid-cols-2",children:[a.jsxs(Se,{direction:"left",className:"order-2 md:order-1",children:[a.jsx("p",{className:"mb-2 text-sm font-semibold uppercase tracking-wide text-brand-600 dark:text-brand-400",children:n("home.adviceEyebrow")}),a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.adviceTitle")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:n("home.adviceText")})]}),a.jsx(Se,{direction:"right",index:1,shine:!0,className:"order-1 md:order-2 rounded-xl shadow-lg",children:a.jsx("img",{src:db,alt:n("home.adviceImageAlt"),width:900,height:600,className:"w-full rounded-xl object-cover",style:{maxHeight:380}})})]})]})}),a.jsxs("section",{className:"mx-auto max-w-6xl px-4 py-16 sm:px-6",children:[a.jsxs(Se,{className:"mb-8 text-center",children:[a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.insightsTitle")}),a.jsx("p",{className:"mt-2 text-neutral-600 dark:text-neutral-300",children:n("home.insightsText")})]}),a.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:l.map((k,j)=>a.jsx(Se,{index:j%3,shine:!0,className:"aspect-square overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsx("img",{src:k.src,alt:k.alt,width:k.width,height:k.height,loading:"lazy",className:"h-full w-full object-cover transition duration-300 hover:scale-105"})},k.src))})]}),a.jsx("section",{className:"grain-band border-y border-neutral-200 bg-neutral-50 py-16 dark:border-neutral-800 dark:bg-neutral-900/40",children:a.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[a.jsxs(Se,{className:"mb-10 text-center",children:[a.jsx("div",{className:"mb-2 flex items-center justify-center gap-2",children:a.jsx(cb,{className:"h-6 w-6",count:c?Math.round(c.rating):5})}),a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:c?n("home.reviewsRatingDynamic")(c.rating,c.rating_count):n("home.reviewsRating")}),a.jsx("p",{className:"mt-1 text-neutral-600 dark:text-neutral-300",children:n("home.reviewsText")}),a.jsx("a",{href:"https://www.google.com/maps/search/?api=1&query=Hifi+Planet+Amorbach+Boxbrunner+Stra%C3%9Fe+20a",target:"_blank",rel:"noopener noreferrer",className:"mt-2 inline-block text-sm font-medium text-brand-600 hover:underline dark:text-brand-400",children:n("home.reviewsLink")})]}),a.jsx(Se,{children:a.jsx(NC,{testimonials:h})})]})}),a.jsx("section",{className:"mx-auto max-w-6xl overflow-hidden px-4 py-16 sm:px-6",children:a.jsxs("div",{className:"grid items-center gap-10 md:grid-cols-2",children:[a.jsx(Se,{direction:"left",shine:!0,className:"overflow-hidden rounded-xl shadow-lg",children:a.jsx("img",{src:TC,alt:n("home.moreImageAlt"),width:1600,height:905,className:"h-full w-full object-cover",loading:"lazy"})}),a.jsxs(Se,{direction:"right",index:1,className:"rounded-xl border border-neutral-200 bg-white p-8 text-center shadow-sm dark:border-neutral-800 dark:bg-neutral-900 md:text-left",children:[a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.moreTitle")}),a.jsx("p",{className:"mx-auto mb-8 max-w-2xl text-neutral-600 dark:text-neutral-300 md:mx-0",children:n("home.moreText")}),a.jsx(W,{to:"/leistungen",className:"inline-block rounded-md border border-neutral-300 px-6 py-3 text-sm font-semibold text-neutral-700 transition hover:-translate-y-0.5 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800",children:n("home.moreCta")})]})]})}),a.jsx("section",{className:"border-t border-neutral-300 py-16 dark:border-neutral-700",children:a.jsxs("div",{className:"mx-auto max-w-3xl px-4 sm:px-6",children:[a.jsx(Se,{className:"mb-8 text-center",children:a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.faqHeading")})}),a.jsx(Se,{index:1,children:a.jsx(wC,{items:o})})]})})]})}function BC(){const[e,t]=g.useState([]),[n,r]=g.useState(""),s=bl(),{t:i}=Te();return nt({title:i("vehicleSelect.metaTitle"),description:i("vehicleSelect.metaDescription"),path:"/fahrzeuge"}),g.useEffect(()=>{s.vehicles.enabled&&!s.bypass||A.get("/brands").then(t).catch(l=>r(l.message))},[s.vehicles.enabled,s.bypass]),s.vehicles.enabled&&!s.bypass?a.jsx(ca,{message:s.vehicles.message}):a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[s.vehicles.enabled&&s.bypass&&a.jsx(da,{inline:!0}),a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:i("vehicleSelect.title")}),a.jsx("p",{className:"mb-8 text-neutral-600 dark:text-neutral-300",children:i("vehicleSelect.intro")}),n&&a.jsx("p",{className:"text-red-600",children:n}),e.length===0&&!n&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:i("vehicleSelect.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:e.map(l=>a.jsx(W,{to:`/fahrzeuge/${l.slug}`,className:"flex items-center justify-center rounded-xl border border-neutral-200 bg-white px-6 py-8 text-center font-semibold text-neutral-800 shadow-sm transition hover:-translate-y-0.5 hover:border-brand-500 hover:shadow-md dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100",children:l.name},l.id))})]})}function zC(){const{brandSlug:e}=Yn(),[t,n]=g.useState(null),[r,s]=g.useState(""),i=bl(),{t:l}=Te();return g.useEffect(()=>{i.vehicles.enabled&&!i.bypass||A.get(`/brands/${e}/models`).then(n).catch(o=>s(o.message))},[e,i.vehicles.enabled,i.bypass]),nt({title:t?`${t.brand.name} ${l("brandPage.titleSuffix")}`:l("brandPage.metaTitleFallback"),description:t?l("brandPage.metaDescription")(t.brand.name):void 0,path:`/fahrzeuge/${e}`}),i.vehicles.enabled&&!i.bypass?a.jsx(ca,{message:i.vehicles.message}):r?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:r}):t?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[i.vehicles.enabled&&i.bypass&&a.jsx(da,{inline:!0}),a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(W,{to:"/fahrzeuge",className:"hover:text-brand-500",children:l("brandPage.breadcrumbVehicles")})," / ",t.brand.name]}),a.jsxs("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:[t.brand.name," – ",l("brandPage.titleSuffix")]}),t.models.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:l("brandPage.empty")}),a.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3",children:t.models.map(o=>a.jsx(W,{to:`/fahrzeuge/${e}/${o.slug}`,className:"flex items-center justify-center rounded-xl border border-neutral-200 bg-white px-6 py-8 text-center font-semibold text-neutral-800 shadow-sm transition hover:-translate-y-0.5 hover:border-brand-500 hover:shadow-md dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100",children:o.name},o.id))})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:l("brandPage.loading")})}const Tf="data:image/webp;base64,UklGRmoNAABXRUJQVlA4IF4NAAAQjACdASrgAVYDPlEok0ajoqGhIRK4IHAKCWlu/F+5xDCoDux8VXNtc99B5Uf715Q+k/+V6E/yD7bfvf7tYI7QKys1Pu/n/K9wD+L/0L/aeqHflfZf937AH81/p//N/yXr9f9f+M/yf7c+4D6R/7n+O+BL9d+rb+0f//9yX9VQU+fHDhw4cN7KTkCBAgQIECBAgQIEB8GtgzU5WrVq1atWrVq1atTTWWxGRvDLM5r169evXr169evVcNgPhleRXp06dOnTp06dOnTpUIn65+OKaJVsmzZs2bNmzZs2bNmSyYC6ipEunTp06dOnTp06dOlydZVuN901q1atWrVq1atWrVXZqLYS16JYyeHDhw4cOHDhw4cN4wtQeDaQLgECBAgQIECBAgQIDddB6sEmQB2atWrVq1atWrVq1aq1iYS5JU9iBlzXr169evXr169evXeEPp+8N6OklatWrVq1atWrVq1V3IfqDdZ8CK1AgQIECBAgQIECBBQFoI3bXHSzdGb8+OHDhw4cOHDhw4ZwLNj/Gx48ePHjx48ePHjx5HaZ5q8hFQPLVq1atWrVq1atWrVWlrSSS1atWrVq1atWrVq1VouJ4vs1atWrVq1atWrVqzMNN6naRaj4OHDhw4cOHDhwzggYy8goXr169evXr169evXbAmy3nWg79+/fv379+/fv377Aw+GV3JG24BIkSJEiRIkSJEiRH091sORb3KZK2rVq1atWrVq1atWZgOgxn2g3CECBAgQIECBAgQHwEh4tRYq5WHRSJEiRIkSJEiRIkRmQ4gXd9q0Xa9evXr169evXr169SUP3aSDmqBOfHDhw4cOHDhw4cN/rYXzoW6jx48ePHjx48ePHjwyNgV/F/hRIkSJEiRIkSJEiRGcgeccx2x48ePHjx48ePHjx5+h2DL7y1q1atWrVq1atWrVqrLjxn1+UevXr169evXr169epWz/ixb7G7Fx48ePHjx48ePHjx64Dpo0+TFzjw4cOHDhw4cOHDhwr64/FOVqj1ftlBYsWLFixYsWLFixsB93m6MKtrfi/YePHjx48ePHjx48eGCFP4MdBX+BXbQiRIkSJEiRIkSJEiA+X4/Ne4l0FixYsWLFixYsWLTKZjxkHLs7TTrVq1atWrVq1atWrSGY83Cktx0PPjhw4cOHDhw4cN/7Xmd/H4DxEePHjx48ePHjx48ct7KWpas7p5jy5cuXLly5cuXLlyM+h2/gRIkSJEiRIkSJEiRAPRMs9EnbFixYsWLFixYsWLBwJstxClHwcOHDhw4cOHDhw3+o6GvCGxY8ePHjx48ePHjx45aAayr3BCnnxw4cOHDhw4cOG/2HuJWxIvK1JLZs2bNmzZs2bNmyAMNnZLnTo6dOnTp06dOnTp06Vd0rFPQfnwwCPHjx48ePHjx48eOU7jRhCFUn5bFixYsWLFixYsWKZRr/1LzwcOHDhw4cOHDhw4ZshIGgexQoECBAgQIECBAgQH+hD+jvXr169eu0AAP7/2BA2pStbx3f0LK6/mZcFuZpv73FLTm7GUv07j8lFLoOGX1EwKUHfPc4FImBkAvjxF1E2TgBogJKpQ2lbMv5bOqPckB4PELJo9ZXlMwGup4PkMOtTZPmrbNoaCJqn0H4Bx7A0xA439P5hkMGBnAEfInQIN5UeUIDb3y6tLej2gR8HhJ5XmTsxvmM15ltL5ZwdGmoNeW8NevUVUKqJ8mNngu7ocCsyGYaeYOGGZBBt6rj6bPVKVbxvb8onw6mljAaaxGTz0W+aNPv06kK3qhDe6/uHi8kg2qvjF3njhRMyOJKZzg12h4qOtVgTuKPAMRWYDkgwiRs9iYqcumonNNXvXk3FAk2LO5XnyjtD5sHSUO3pIrztpBvqq+UJzKeIwGBlPwA2NP46tOJxLzbrKeH4SQjt2HAsbrVcQ/b/TgKZGPwaqfGDN+OjqJK3Z9dyCkGGfGKeG1w9+HSZTm/qh052lQEJAcdUX6vm/+sDBxtrfl4Sg8iMcVnDsfTKJpsTYF/vzJ1oQ6/VPyIX1HpDwnPXsptu9rKDFazlkwc3ofi8uKJmycgPiG9xOLlzn4Af8Dm+LcjJUMAtA7XeZPLlW1bwogbRthU8oA4LcURuku6eXDJ1eb1IKUU7k/UK0cBeK+R5YVcmrOnZIyHzcIaClYnrIwerP535fHv4VXjURTO6/85BvSeTNWvQGqkW5v1hG6AEMrxBryfat3kmr+SNEz5wC2f54z1O7C2KsRpt3maISh9PhMg7jDIxmVe07eHtkLtz6v3yQUJQV95yazDYpH5JfpuYSb8dtmB1cKjeoDTPvik9dCA1UFCTZBfojpIOwXdwAR7JEdZkEi/24hMNKJJlB6udZZKqNJB1hNl24Z++z6lAGSAuRgSwDZGdbqxs+0iL6wmRHilqPOiYB6hQiPZ7cfpMZxesqRwyhcf1O29w4ORG/7BlerR8hYvY4B1XsPYbDORvPk6FHIDXwTXGpuDIta7G4F6RNDdOvCFkAl53GZo5h/p2QkWUry5YuyegnPlKjT3He6ewYypA9YOvMhaqip7kr9sF4TU2bX9foKZ+FFZNzhyySS+13+g4BdJo9YF3bw5b6eSxUfTWiDLNh50VjuqRQWHUEkiA8zJqnqkKCwuDy6iY2oF20FJQlGIPpCDKPBzdXSb/n9NDltaoUlbam7cDAU7CwNdaWFXTABRk0S0e49iF4tO106Uwul7DGYpq0Eu71TnKUjCtEBc83QH8skvRzHniEne3AtJLYRH0cMNSSzeCJ1g+Nfc8RaZkhLhCaZGZdYe5j0LGmQnVFt2iapZvGBi7Sw0X56zdziC9Foq0OPsqKFetZdICc2eUV5Vu1+nvisSzn8wlSDUt3OmRkt/gJxfJQfWxcu5HZ26qqNpA4ablWrX4E9DEmvXzpFGYCnYJMheN2BlWwBVLh1cyQ8INngXaoB8I5Pj9oYyuz/W+jvJQ6G074luX9D3pLkuc88D0Hae3ZqXrRYRzGF1vD8pHsk9Co8B6rpE/4GEwW/zsCtnjz5G8m4KFwf2qW1k0HkNv7Nlg38bcz6TdTzuw/jega5XZQQhflLu4I6l+s90BHFIR+JEXTBBqJwT+IgTnpHNc+h5Ek74HiKqXuGUNGIKIozHkiFxMlnrsklrpweBzYY6ype9CzepAuQF63xC/eIJw1pMZEC1pPgq/r+1gWx5M6g8fpu2O12sb6pLeqT+G4mK3yHMZTojfp1xwQedRmwZnWQ8SCh4XV2a/+3OTz4D4pmmumyBV7V2VW3he8y6usinSjfYPxLyTng27fgw6jQhHl2mVhxBBjiwr5ljvJV7L+MJYDiZjGWfBCsTmehk6rbNt7ahTJpHu4B9ctRqiZXjx0zGpTF91OKifmy4nTq31p1XaIsZAHCWvItXKeke06KKKRTIm6mCT9yBJVwG1sqQhjrkP77q0/JGYgOwgdCQCstsAZQ0FlOrGYXYTIQK/krLyCAZjg8vP/Ers/KVN8F88OsyU5/T1e5ba8A2F63qgwhtkWoVIEZErOVL8sM/DtpWTlcBNsvVOFl4tT+Sk6a2ScCptFL5F6cZXTIw8JmgoCbyqB6xyU+uPP5y09s5T8MDC7Em7NpxCjgD39eed40gHQrBm6CtAbS9JOCVPkPxbpcGDj/LoAGbnyYzMpOmTi28LJ9FTIqyGuAI0jxY/QpNelOOEvNK3io1HeYkK3AprImDk99tlUjgt9bc3ejCOFDXt9LqGHjFssGrhVHyJBmWjwHQipcIMHxF2jfP5jfAGuHtJRRncHIFgLWmJ1XmzJ0LLqWCJShdJSJLc7L6YeVcgKfzOZCwhtzJ7VeI3uBhPXQNOqCf5tlQ32HApAMvCIiBwhYrpfFo/kvjfTMB/NJ0w2Lk8GAFfFQY+U6uX1oB0hztGmA5HggJTwgLo8exG64m3Xu4fg2g4MmQol7z6xNwwubABnpoS3Og85giFkaarUP2ovQyixFpXki8Xf5a5NwjUGCPbx+LD3WKJiBtkiHsYMMV/VAZVNvdg/Ph/V4ZYOr+hw7g9mOJXi+oVZxG9pqJC9w8nRkegsnQ2lpRHn22lTsIa9aOkR0X8zp/IajQxUzv057a3WptBst0EZbZtfmWp6h2K0sDQS9oQT1PqOkGDJlz6ZHZzDMShDTcwJfIZMdnjpeHdPoYoqlcn3M8daRuMeTSP3mabP1/pdQrs6Wl7ToKog2Au/gv46pUMgVcKmdWNJdDF8RplMMXJpU2tZMdkTWq4ofSypsCfuWfeHOpFQGJdFF6OoH2pDJXvkqpj1a832g3uYtVQg1TGyqYqI7UBZQy4NEZbdj6O/s6MNEnfujUDQ8QZj7rSE2RI77egKDWzM708AsvlMFoeX4CVP09rMzXNP2aOZwY7zOBTvBgEEqCWlXAFlY8pW0zIm16gqSPiwRUgH41i1PuJx382C0zTWGT243ZhLnyOIlreUrMQAfwR/oYt+ljnDFKqa5PEczDPa+u/vWmR6UM+Q/lLFiIlgBJTfaekWoeLpPd9FPN4gIHzK1ZS8kDHyq3lh/e6FQ84a4Zg6JlfQC/qhAAAAA==",RC="/assets/base-BKOm0Bib.webp",IC="/assets/clear-DZZMSrMX.webp",FC="/assets/drive-BE2W1yna.webp",VC="/assets/prime-BTVNe2Gb.webp",OC="/assets/elite_r-BRvz_pyr.webp",UC="/assets/apex-CFy2qup8.webp",WC="/assets/statement-pTO-wTPx.webp",HC="/assets/limitless-DDs0S_PU.webp",$C=(e,t,n)=>{t/=100,n/=100;const r=l=>(l+e/30)%12,s=t*Math.min(n,1-n),i=l=>n-s*Math.max(-1,Math.min(r(l)-3,Math.min(9-r(l),1)));return[Math.round(i(0)*255),Math.round(i(8)*255),Math.round(i(4)*255)]},bo=(e,t,n)=>`rgb(${$C(e,t,n).join(", ")})`,Af=e=>e.map(([t,n,r,s,i,l])=>({bgTop:bo(t,n,r),border:bo(t,n,r+8),accent:bo(s,i,l),img:null})),Mf={graphite:[{accent:"#b6b6b6",border:"#2a2a2a",bgTop:"#1c1c1c",img:RC},{accent:"#d3d3d3",border:"#2e2e2e",bgTop:"#212121",img:IC},{accent:"#8fb8bd",border:"#26383b",bgTop:"#16282b",img:FC},{accent:"#6fbf73",border:"#1f3a24",bgTop:"#122916",img:VC},{accent:"#63d34f",border:"#204a1c",bgTop:"#123312",img:OC},{accent:"#8bea3c",border:"#2b5518",bgTop:"#173a0f",img:UC},{accent:"#d9a83c",border:"#4a3a16",bgTop:"#33270d",img:WC},{accent:"#f2c14e",border:"#5a4718",bgTop:"#3d2f0c",img:HC}],"deep-blue":Af([[215,18,11,210,15,60],[212,25,11,208,32,60],[210,38,12,206,46,60],[212,46,12,205,56,61],[214,52,12,205,63,62],[216,58,12,205,68,63],[220,62,12,212,73,65],[226,66,12,216,78,68]]),"warm-bronze":Af([[30,15,11,34,22,60],[34,32,11,34,46,60],[32,46,12,30,58,60],[26,52,12,24,65,60],[20,55,12,18,68,60],[14,55,12,12,68,61],[8,52,12,6,64,62],[2,50,12,358,60,63]])},GC="#f2f2f2",KC="#8a8a8a",qC="#c4c4c4",_f=5;function YC({pkg:e,tier:t,tierT:n,layout:r,bullets:s,formatPrice:i,contactUrl:l,t:o}){const[u,c]=g.useState(!1),d=s.length-_f,h=u?s:s.slice(0,_f),m=t.img?null:{backgroundColor:t.accent,WebkitMaskImage:`url(${Tf})`,maskImage:`url(${Tf})`,maskMode:"luminance",WebkitMaskSize:"cover",maskSize:"cover",WebkitMaskPosition:"center",maskPosition:"center",WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat"};return a.jsxs("div",{style:{borderColor:t.border,background:`linear-gradient(180deg, ${t.bgTop} 0%, #0b0b0b 55%, #080808 100%)`},className:r==="strip"?"relative flex min-h-[420px] grow shrink basis-[190px] min-w-[190px] max-w-[240px] snap-start flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 dark:shadow-black/40 sm:min-h-[640px] sm:basis-[210px]":r==="coverflow"?"relative flex min-h-[420px] w-[230px] shrink-0 snap-center flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 will-change-transform dark:shadow-black/40 sm:min-h-[640px]":"relative flex min-h-[420px] flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 dark:shadow-black/40 sm:min-h-[640px]",children:[t.img?a.jsx("img",{src:t.img,alt:"","aria-hidden":"true",className:"pointer-events-none absolute inset-0 h-full w-full object-cover"}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"pointer-events-none absolute inset-0",style:{...m,opacity:.2+n*.45,filter:"blur(18px)"},"aria-hidden":"true"}),a.jsx("div",{className:"pointer-events-none absolute inset-0",style:{...m,opacity:.55+n*.45},"aria-hidden":"true"})]}),e.is_featured&&a.jsx("span",{className:"absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-full bg-brand-500 px-3 py-1 text-xs font-bold text-white shadow",children:o("modelPage.featuredBadge")}),a.jsxs("div",{className:"relative z-10 text-center",style:{padding:"34px 20px 0"},children:[a.jsx("div",{style:{fontFamily:"'Barlow Condensed', sans-serif",fontSize:"30px",letterSpacing:"3px",fontWeight:600,color:t.accent,textTransform:"uppercase",lineHeight:1.1},children:e.name}),a.jsx("div",{style:{width:"44px",height:"2px",margin:"14px auto 0",background:`linear-gradient(90deg, rgba(255,255,255,0) 0%, ${t.accent} 50%, rgba(255,255,255,0) 100%)`}})]}),s.length>0&&a.jsxs("div",{className:"relative z-10",style:{padding:"18px 20px 14px",background:u?"linear-gradient(180deg, rgba(8,8,8,0.7) 0%, rgba(8,8,8,0.62) 94%, rgba(8,8,8,0) 100%)":"linear-gradient(180deg, rgba(8,8,8,0.55) 0%, rgba(8,8,8,0.48) 92%, rgba(8,8,8,0) 100%)"},children:[a.jsx("ul",{className:"space-y-1.5 text-left",children:h.map((f,b)=>a.jsxs("li",{className:"flex items-start gap-2",style:{fontSize:"13px",color:qC},children:[a.jsx(We,{name:"check",className:"mt-0.5 h-3.5 w-3.5 shrink-0",style:{color:t.accent}}),a.jsx("span",{className:"leading-snug",children:f})]},b))}),d>0&&a.jsxs("button",{type:"button",onClick:()=>c(f=>!f),className:"mt-2.5 flex items-center gap-1 hover:opacity-80",style:{fontSize:"13px",color:t.accent},children:[u?o("modelPage.lessBullets"):o("modelPage.moreBullets")(d),a.jsx(We,{name:u?"chevron-up":"chevron-down",className:"h-3.5 w-3.5"})]})]}),a.jsx("div",{className:"relative z-10 flex-1"}),a.jsx("div",{className:"relative z-10",style:{padding:"20px 20px 28px",background:"linear-gradient(180deg, rgba(8,8,8,0) 0%, rgba(8,8,8,0.85) 45%, rgba(8,8,8,0.95) 100%)"},children:a.jsxs("div",{className:"text-center",children:[!e.price_text&&a.jsx("div",{style:{fontSize:"13px",color:KC},children:o("modelPage.totalPrice")}),a.jsx("div",{style:{marginTop:"4px",fontFamily:"'Barlow Condensed', sans-serif",fontSize:"30px",fontWeight:600,letterSpacing:"1px",color:GC},children:e.price_text||i(e.total_price)}),a.jsx(W,{to:l(e),className:"mt-4 inline-block rounded-md bg-brand-500 px-4 py-2 text-center text-sm font-semibold text-white shadow-lg shadow-brand-500/30 hover:bg-brand-400",children:o("modelPage.requestContact")})]})})]})}function XC(){const{brandSlug:e,modelSlug:t}=Yn(),[n,r]=g.useState(null),[s,i]=g.useState(""),l=bl(),{t:o,language:u}=Te(),{package_card_theme:c,package_card_layout:d}=Vr(),h=Mf[c]||Mf.graphite,m=["grid","strip","coverflow"].includes(d)?d:"strip",f=g.useRef(null),b=g.useRef(null),y=g.useRef(null),w=g.useRef(!1),[x,p]=g.useState(!1),v=N=>new Intl.NumberFormat(u==="de"?"de-DE":"en-US",{style:"currency",currency:"EUR"}).format(N);if(g.useEffect(()=>{l.vehicles.enabled&&!l.bypass||A.get(`/models/${e}/${t}/packages`).then(r).catch(N=>i(N.message))},[e,t,l.vehicles.enabled,l.bypass]),g.useEffect(()=>{const N=f.current;if(m!=="coverflow"||!N)return;let E=0;const B=()=>{E=0;const Y=N.scrollLeft+N.clientWidth/2;for(const R of N.children){const K=R.offsetLeft+R.offsetWidth/2,_=Math.max(-1,Math.min(1,(K-Y)/(R.offsetWidth*1.4))),D=Math.abs(_);R.style.transform=`rotateY(${(-_*35).toFixed(2)}deg) scale(${(1-D*.13).toFixed(3)}) translateZ(${(-D*60).toFixed(1)}px)`,R.style.zIndex=String(100-Math.round(D*50))}},O=()=>{E||(E=requestAnimationFrame(B))};B(),N.addEventListener("scroll",O,{passive:!0});const $=new ResizeObserver(O);return $.observe(N),()=>{N.removeEventListener("scroll",O),$.disconnect(),cancelAnimationFrame(E)}},[m,n]),g.useEffect(()=>{const N=f.current;if(m==="grid"||!N||w.current)return;const E=window.matchMedia("(pointer: coarse)").matches;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let O=[];const $=()=>{w.current=!0;const R=Math.min(N.clientWidth*.4,160);O=[setTimeout(()=>N.scrollTo({left:R,behavior:"smooth"}),500),setTimeout(()=>N.scrollTo({left:0,behavior:"smooth"}),1250)],E||(O.push(setTimeout(()=>p(!0),450)),O.push(setTimeout(()=>p(!1),1700)))},Y=new IntersectionObserver(([R])=>{R.isIntersecting&&(Y.disconnect(),$())},{threshold:.35});return Y.observe(N),()=>{Y.disconnect(),O.forEach(clearTimeout)}},[m,n]),g.useEffect(()=>{const N=f.current;if(m==="grid"||!N)return;let E=0,B=0,O=!1,$=0,Y=0;const R=()=>[...N.children].map(z=>z.offsetLeft+z.offsetWidth/2),K=(z,U)=>{let q=0,X=1/0;return z.forEach((ee,Ne)=>{const de=Math.abs(ee-U);de {O=!1;const z=R();if(!z.length)return;const U=N.scrollLeft+N.clientWidth/2,q=K(z,U);let X=q;q===$&&Math.abs(Y)>4&&(X=Y>0?Math.min($+1,z.length-1):Math.max($-1,0));const ee=N.scrollWidth-N.clientWidth,Ne=Math.max(0,Math.min(z[X]-N.clientWidth/2,ee));N.scrollTo({left:Ne,behavior:"smooth"}),clearTimeout(B),B=setTimeout(()=>{N.style.scrollSnapType=""},450)},D=z=>{if(Math.abs(z.deltaX)>Math.abs(z.deltaY))return;const U=N.scrollWidth-N.clientWidth;if(U<=1)return;const q=N.scrollLeft<=1,X=N.scrollLeft>=U-1;z.deltaY<0&&q||z.deltaY>0&&X||(z.preventDefault(),O||(O=!0,Y=0,$=K(R(),N.scrollLeft+N.clientWidth/2)),Y+=z.deltaY,N.style.scrollSnapType="none",N.scrollLeft+=z.deltaY,clearTimeout(E),E=setTimeout(_,150))};return N.addEventListener("wheel",D,{passive:!1}),()=>{N.removeEventListener("wheel",D),clearTimeout(E),clearTimeout(B)}},[m,n]),g.useEffect(()=>{const N=f.current,E=b.current,B=y.current;if(m==="grid"||!N||!E||!B)return;let O=0;const $=()=>{O=0;const X=N.scrollWidth-N.clientWidth;if(X<=1){E.style.opacity="0",E.style.pointerEvents="none";return}E.style.opacity="1",E.style.pointerEvents="auto";const ee=E.clientWidth,Ne=Math.max(32,N.clientWidth/N.scrollWidth*ee);B.style.width=`${Ne}px`,B.style.transform=`translateX(${(N.scrollLeft/X*(ee-Ne)).toFixed(1)}px)`},Y=()=>{O||(O=requestAnimationFrame($))};$(),N.addEventListener("scroll",Y,{passive:!0});const R=new ResizeObserver(Y);R.observe(N);let K=!1,_=0;const D=X=>{const ee=E.getBoundingClientRect(),Ne=B.clientWidth,de=Math.min(Math.max(X-ee.left-_,0),ee.width-Ne);N.scrollLeft=de/(ee.width-Ne)*(N.scrollWidth-N.clientWidth)},z=X=>{K=!0,E.setPointerCapture(X.pointerId),N.style.scrollSnapType="none";const ee=B.getBoundingClientRect();_=X.clientX>=ee.left&&X.clientX<=ee.right?X.clientX-ee.left:B.clientWidth/2,X.clientX>=ee.left&&X.clientX<=ee.right||D(X.clientX)},U=X=>{K&&D(X.clientX)},q=X=>{var ee;K&&(K=!1,(ee=E.hasPointerCapture)!=null&&ee.call(E,X.pointerId)&&E.releasePointerCapture(X.pointerId),N.style.scrollSnapType="")};return E.addEventListener("pointerdown",z),E.addEventListener("pointermove",U),E.addEventListener("pointerup",q),E.addEventListener("pointercancel",q),()=>{N.removeEventListener("scroll",Y),R.disconnect(),cancelAnimationFrame(O),E.removeEventListener("pointerdown",z),E.removeEventListener("pointermove",U),E.removeEventListener("pointerup",q),E.removeEventListener("pointercancel",q)}},[m,n]),nt({title:n?o("modelPage.metaTitle")(n.model.brand_name,n.model.name):o("modelPage.metaTitleFallback"),description:n?o("modelPage.metaDescription")(n.model.brand_name,n.model.name):void 0,path:`/fahrzeuge/${e}/${t}`}),l.vehicles.enabled&&!l.bypass)return a.jsx(ca,{message:l.vehicles.message});if(s)return a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:s});if(!n)return a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:o("modelPage.loading")});const{model:k,packages:j}=n,C=new Map([...j].sort((N,E)=>N.total_price-E.total_price).map((N,E)=>[N.id,E])),S=N=>{const E=j.length,B=C.get(N.id)??0,O=E<=1?0:B/(E-1),$=Math.round(O*(h.length-1));return{tier:h[$],tierT:O}},P=N=>[...N.products.map(E=>E.name_override||E.scraped_name||o("modelPage.productLoading")),...(N.description||"").split(` -`).map(E=>E.trim()).filter(Boolean)],M=N=>`/kontakt?${new URLSearchParams({brand:k.brand_name,model:k.name,package:N.name,packageId:N.id,total:N.total_price}).toString()}`;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"mx-auto max-w-6xl px-4 pt-12 sm:px-6",children:[l.vehicles.enabled&&l.bypass&&a.jsx(da,{inline:!0}),a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(W,{to:"/fahrzeuge",className:"hover:text-brand-500",children:o("modelPage.breadcrumbVehicles")})," /"," ",a.jsx(W,{to:`/fahrzeuge/${e}`,className:"hover:text-brand-500",children:k.brand_name})," / ",k.name]}),a.jsxs("h1",{className:`text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl ${j.length?"mb-2":"mb-8"}`,children:[k.brand_name," ",k.name," – ",o("modelPage.titleSuffix")]}),j.length===0&&a.jsx("p",{className:"pb-12 text-neutral-500 dark:text-neutral-400",children:o("modelPage.empty")})]}),j.length>0&&a.jsx("section",{className:"py-10 sm:py-14",style:{fontFamily:"'Barlow', sans-serif"},children:a.jsxs("div",{className:m==="grid"?"mx-auto max-w-6xl px-4 sm:px-6":"relative mx-auto max-w-[1880px] px-4 sm:px-6",children:[a.jsx("div",{ref:m==="grid"?void 0:f,className:m==="grid"?"grid items-start gap-[18px] sm:grid-cols-2 xl:grid-cols-3":"flex select-none items-start gap-[18px] overflow-x-auto pb-3 snap-x snap-mandatory [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",style:m==="coverflow"?{perspective:"1200px",paddingLeft:"calc(50% - 115px)",paddingRight:"calc(50% - 115px)",paddingTop:"10px"}:void 0,children:j.map(N=>{const{tier:E,tierT:B}=S(N);return a.jsx(YC,{pkg:N,tier:E,tierT:B,layout:m,bullets:P(N),formatPrice:v,contactUrl:M,t:o},N.id)})}),m!=="grid"&&a.jsx("div",{className:`pointer-events-none absolute inset-x-0 top-1/2 z-[200] flex -translate-y-1/2 justify-center transition-opacity duration-300 ${x?"opacity-100":"opacity-0"}`,"aria-hidden":"true",children:a.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-neutral-900/85 px-4 py-2 text-xs font-medium text-white shadow-lg backdrop-blur-sm",children:[a.jsx(zb,{className:"h-3.5 w-3.5 text-brand-400"}),a.jsx(Rb,{className:"h-4 w-4 text-brand-400"}),a.jsx(Ib,{className:"h-3.5 w-3.5 text-brand-400"}),a.jsx("span",{children:o("modelPage.wheelHint")})]})}),m!=="grid"&&a.jsx("div",{ref:b,className:"relative mx-auto mt-5 h-2 w-56 max-w-full cursor-pointer rounded-full bg-neutral-900/10 transition-opacity duration-200 dark:bg-white/10",style:{touchAction:"none"},"aria-hidden":"true",children:a.jsx("div",{ref:y,className:"absolute left-0 top-0 h-full rounded-full bg-brand-500 shadow-[0_0_10px_rgba(107,166,38,0.7)]",style:{width:"48px"}})})]})})]})}function ZC(){const[e,t]=g.useState(null),[n,r]=g.useState(""),{t:s}=Te();return nt({title:s("galleryOverview.metaTitle"),description:s("galleryOverview.metaDescription"),path:"/galerie"}),g.useEffect(()=>{A.get("/gallery-brands").then(t).catch(i=>r(i.message))},[]),a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:s("galleryOverview.title")}),a.jsx("p",{className:"mb-8 text-neutral-600 dark:text-neutral-300",children:s("galleryOverview.intro")}),n&&a.jsx("p",{className:"text-red-600",children:n}),!e&&!n&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:s("galleryOverview.loading")}),e&&e.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:s("galleryOverview.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:e==null?void 0:e.map(i=>a.jsxs(W,{to:`/galerie/${i.slug}`,className:"group relative block aspect-[4/3] overflow-hidden rounded-xl bg-neutral-900 shadow-sm transition hover:shadow-lg",children:[i.cover_image_path?a.jsx("img",{src:i.cover_image_path,alt:i.name,className:"h-full w-full object-cover transition duration-300 group-hover:scale-105"}):a.jsx("div",{className:"flex h-full w-full items-center justify-center bg-neutral-200 dark:bg-neutral-800"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/85 via-black/10 to-transparent transition group-hover:from-black/95"}),a.jsx("span",{className:"absolute inset-x-0 bottom-0 p-4 text-lg font-extrabold text-white",children:i.name})]},i.id))})]})}function QC(){const{brandSlug:e}=Yn(),[t,n]=g.useState(null),[r,s]=g.useState(""),{t:i}=Te();return g.useEffect(()=>{A.get(`/gallery-brands/${e}/projects`).then(n).catch(l=>s(l.message))},[e]),nt({title:t?i("galleryBrandPage.metaTitle")(t.brand.name):i("galleryBrandPage.metaTitleFallback"),description:t?i("galleryBrandPage.metaDescription")(t.brand.name):void 0,path:`/galerie/${e}`}),r?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:r}):t?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(W,{to:"/galerie",className:"hover:text-brand-500",children:i("galleryBrandPage.breadcrumbGallery")})," / ",t.brand.name]}),a.jsxs("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:[t.brand.name," – ",i("galleryBrandPage.titleSuffix")]}),t.projects.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:i("galleryBrandPage.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:t.projects.map(l=>a.jsxs(W,{to:`/galerie/${e}/${l.slug}`,className:"group relative block aspect-[4/3] overflow-hidden rounded-xl bg-neutral-900 shadow-sm transition hover:shadow-lg",children:[l.cover_image_path?a.jsx("img",{src:l.cover_image_path,alt:l.name,className:"h-full w-full object-cover transition duration-300 group-hover:scale-105"}):a.jsx("div",{className:"flex h-full w-full items-center justify-center bg-neutral-200 dark:bg-neutral-800"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/85 via-black/10 to-transparent transition group-hover:from-black/95"}),a.jsx("span",{className:"absolute inset-x-0 bottom-0 p-4 text-lg font-extrabold text-white",children:l.name})]},l.id))})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:i("galleryBrandPage.loading")})}function JC({photos:e,index:t,onClose:n,onNavigate:r}){const{t:s}=Te();if(g.useEffect(()=>{if(t==null)return;const o=u=>{u.key==="Escape"&&n(),u.key==="ArrowRight"&&r(1),u.key==="ArrowLeft"&&r(-1)};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[t,n,r]),t==null)return null;const i=e[t],l=o=>o.stopPropagation();return Gc.createPortal(a.jsxs("div",{className:"fixed inset-0 z-[200] flex items-center justify-center bg-black/90 p-4",onClick:n,children:[a.jsx("button",{onClick:o=>{l(o),n()},"aria-label":s("lightbox.close"),className:"absolute right-4 top-4 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-7 w-7",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6l12 12M18 6 6 18"})})}),e.length>1&&a.jsx("button",{onClick:o=>{l(o),r(-1)},"aria-label":s("lightbox.previous"),className:"absolute left-2 top-1/2 -translate-y-1/2 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white sm:left-4",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-8 w-8",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m15 18-6-6 6-6"})})}),a.jsx("img",{src:i.image_path,alt:i.caption||"",onClick:l,className:"max-h-[85vh] max-w-full rounded-lg object-contain"}),e.length>1&&a.jsx("button",{onClick:o=>{l(o),r(1)},"aria-label":s("lightbox.next"),className:"absolute right-2 top-1/2 -translate-y-1/2 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white sm:right-4",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-8 w-8",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m9 18 6-6-6-6"})})}),i.caption&&a.jsx("p",{onClick:l,className:"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/60 px-4 py-1.5 text-sm text-white",children:i.caption})]}),document.body)}function eP(){const{brandSlug:e,projectSlug:t}=Yn(),[n,r]=g.useState(null),[s,i]=g.useState(""),[l,o]=g.useState(null),{t:u}=Te();g.useEffect(()=>{A.get(`/gallery-brands/${e}/${t}/photos`).then(r).catch(d=>i(d.message))},[e,t]),nt({title:n?`${n.project.name} – ${n.project.brand_name}`:u("galleryProjectPage.metaTitleFallback"),description:n?u("galleryProjectPage.metaDescription")(n.project.name):void 0,path:`/galerie/${e}/${t}`});const c=d=>{o(h=>{const m=n.photos.length;return(h+d+m)%m})};return s?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:s}):n?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(W,{to:"/galerie",className:"hover:text-brand-500",children:u("galleryProjectPage.breadcrumbGallery")})," /"," ",a.jsx(W,{to:`/galerie/${e}`,className:"hover:text-brand-500",children:n.project.brand_name})," / ",n.project.name]}),a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:n.project.name}),n.photos.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:u("galleryProjectPage.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:n.photos.map((d,h)=>a.jsx(Se,{index:h%6,shine:!0,className:"aspect-square overflow-hidden rounded-xl",children:a.jsx("button",{onClick:()=>o(h),className:"block h-full w-full","aria-label":d.caption||u("galleryProjectPage.enlargeImage"),children:a.jsx("img",{src:d.image_path,alt:d.caption||"",className:"h-full w-full object-cover transition duration-300 hover:scale-105"})})},d.id))}),a.jsx(JC,{photos:n.photos,index:l,onClose:()=>o(null),onNavigate:c})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:u("galleryProjectPage.loading")})}function tP(){const[e,t]=g.useState([]),n=bl(),{t:r}=Te();return g.useEffect(()=>{A.get("/services").then(t).catch(()=>t([]))},[]),nt({title:r("leistungen.metaTitle"),description:r("leistungen.metaDescription"),path:"/leistungen"}),n.services.enabled&&!n.bypass?a.jsx(ca,{message:n.services.message}):a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[n.services.enabled&&n.bypass&&a.jsx(da,{inline:!0}),a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:r("leistungen.title")}),a.jsx("p",{className:"mb-10 max-w-2xl text-neutral-600 dark:text-neutral-300",children:r("leistungen.intro")}),a.jsx("div",{className:"grid gap-5 sm:grid-cols-2 lg:grid-cols-3",children:e.map((s,i)=>a.jsxs(Se,{index:i%3,shine:!0,className:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"relative aspect-[4/3]",children:[s.image_path&&a.jsx("img",{src:s.image_path,alt:s.title,className:"h-full w-full object-cover",loading:"lazy"}),a.jsx("div",{className:"absolute -bottom-5 left-5 flex h-12 w-12 items-center justify-center rounded-full bg-brand-500 text-white shadow-lg ring-4 ring-white dark:ring-neutral-900",children:a.jsx(We,{name:s.icon_name,className:"h-6 w-6"})})]}),a.jsxs("div",{className:"p-6 pt-8",children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:s.title}),a.jsx("p",{className:"mb-3 text-sm text-neutral-600 dark:text-neutral-300",children:s.description}),a.jsxs(W,{to:s.cta_url||"/kontakt",className:"text-sm font-semibold text-brand-600 hover:underline dark:text-brand-400",children:[s.cta_label||r("leistungen.contact")," →"]})]})]},s.id))}),a.jsxs("div",{className:"mt-12 rounded-xl border border-neutral-200 bg-neutral-50 p-8 text-center dark:border-neutral-800 dark:bg-neutral-900/40",children:[a.jsx("h2",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:r("leistungen.notListedTitle")}),a.jsx("p",{className:"mb-5 text-neutral-600 dark:text-neutral-300",children:r("leistungen.notListedText")}),a.jsx(W,{to:"/kontakt",className:"inline-block rounded-md bg-brand-500 px-6 py-3 text-sm font-semibold text-white hover:bg-brand-600",children:r("leistungen.contact")})]})]})}function nP({name:e,description:t,className:n="",children:r}){const{consent:s,acceptAll:i,openSettings:l}=Or();return s.external?r:a.jsxs("div",{className:`flex flex-col items-center justify-center gap-3 rounded-xl border border-neutral-200 bg-neutral-50 p-6 text-center dark:border-neutral-800 dark:bg-neutral-900/40 ${n}`,children:[a.jsx("p",{className:"text-sm text-neutral-600 dark:text-neutral-300",children:t||`${e} wird erst nach deiner Zustimmung geladen, da dabei Daten an Google übertragen werden.`}),a.jsxs("div",{className:"flex flex-wrap justify-center gap-2",children:[a.jsx("button",{type:"button",onClick:i,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Laden erlauben"}),a.jsx("button",{type:"button",onClick:l,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Cookie-Einstellungen"})]})]})}const fb=e=>(e||"").replace(/[^\d+]/g,""),rP=e=>`https://wa.me/${fb(e).replace(/^0/,"49").replace("+","")}`,pb=encodeURIComponent("Boxbrunner Str. 20a, 63916 Amorbach"),Lf=`https://www.google.com/maps/dir/?api=1&destination=${pb}`,li={fontFamily:"'Michroma', sans-serif"};function sP({className:e}){return a.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:a.jsx("path",{d:"M12 2a10 10 0 0 0-8.6 15l-1.3 4.8 5-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 1 1-4.2 14.8l-.3-.2-2.6.7.7-2.5-.2-.3A8 8 0 0 1 12 4zm4.3 9.9c-.2-.1-1.4-.7-1.6-.8s-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5.2-.4v-.4l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.7.7-.9 1.6-.6 2.7.5 1.7 1.6 3.1 3.4 4.2 1.7 1 2.5 1 3.4.9.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"})})}function aP({path:e,className:t}){return a.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:a.jsx("path",{d:e})})}const iP={premium:"M4 12v3M8 8v11M12 4v16M16 8v11M20 12v3",germany:"M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0 M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5 19 19M19 5l-1.5 1.5M6.5 17.5 5 19",individual:"M6 3h12l4 6-10 12L2 9z M11 3 8 9l4 12 4-12-3-6M2 9h20",experts:"M20 6 9 17l-5-5"};function Df({formatted:e,color:t}){const[n,r]=e.split("€");return a.jsxs("span",{style:{...li,color:t},children:[n,a.jsx("span",{style:{fontFamily:"'Barlow', sans-serif"},children:"€"}),r]})}function Ra({icon:e,label:t,name:n,type:r="text",required:s,value:i,onChange:l,placeholder:o}){return a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx("label",{htmlFor:`kf-${n}`,className:"text-xs font-semibold uppercase tracking-[2px]",style:{color:"var(--kf-label)"},children:t}),a.jsxs("div",{className:"relative flex items-center",children:[a.jsx(e,{className:"pointer-events-none absolute left-[14px] h-[17px] w-[17px]",style:{color:"var(--kf-fieldicon)"}}),a.jsx("input",{id:`kf-${n}`,name:n,type:r,required:s,value:i,onChange:l,placeholder:o,className:"w-full rounded-lg border py-3.5 pl-[42px] pr-4 text-[15px] outline-none transition-colors",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)",color:"var(--kf-text2)"}})]})]})}function lP(){const[e]=ow(),{phone:t,whatsapp:n,contact_email:r}=Vr(),{t:s,language:i}=Te(),{consent:l}=Or(),o=E=>new Intl.NumberFormat(i==="de"?"de-DE":"en-US",{style:"currency",currency:"EUR"}).format(E),[u,c]=g.useState({name:"",email:"",phone:"",vin:"",message:""}),[d,h]=g.useState("idle"),[m,f]=g.useState(""),[b,y]=g.useState([]),[w,x]=g.useState([]),p=e.get("packageId"),v=e.get("total")?Number(e.get("total")):null;g.useEffect(()=>{if(!p){y([]);return}A.get(`/packages/${p}/upgrades`).then(y).catch(()=>y([]))},[p]);const k=E=>{x(B=>B.includes(E)?B.filter(O=>O!==E):[...B,E])},j=b.filter(E=>w.includes(E.id)).reduce((E,B)=>E+Number(B.price),0);nt({title:s("contactPage.metaTitle"),description:s("contactPage.metaDescription"),path:"/kontakt"});const C={brand:e.get("brand")||"",model:e.get("model")||"",package:e.get("package")||""},S=!!(C.brand&&C.model&&C.package),P=E=>c(B=>({...B,[E.target.name]:E.target.value})),M=async E=>{E.preventDefault(),h("sending"),f("");try{await A.post("/contact",{...u,brand_name:C.brand||null,model_name:C.model||null,package_name:C.package||null,product_name:e.get("product")||null,package_id:p||null,package_product_id:e.get("productId")||null,upgrade_ids:w}),h("sent"),c({name:"",email:"",phone:"",vin:"",message:""})}catch(B){f(B.message),h("idle")}},N=[{key:"premium",title:s("contactPage.featurePremiumTitle"),sub:s("contactPage.featurePremiumSub")},{key:"germany",title:s("contactPage.featureGermanyTitle"),sub:s("contactPage.featureGermanySub")},{key:"individual",title:s("contactPage.featureIndividualTitle"),sub:s("contactPage.featureIndividualSub")},{key:"experts",title:s("contactPage.featureExpertsTitle"),sub:s("contactPage.featureExpertsSub")}];return a.jsx("div",{className:"kf-page kontakt-sektion relative w-full overflow-hidden px-4 pb-10 sm:px-10",style:{color:"var(--kf-text2)",fontFamily:"'Barlow', sans-serif"},children:a.jsxs("div",{className:"relative z-10 mx-auto max-w-[1280px] pt-10 sm:pt-14",children:[a.jsx("div",{className:"mb-3 text-[13px] font-semibold uppercase tracking-[6px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.heroEyebrow")}),a.jsxs("h1",{className:"text-[34px] leading-[1.08] sm:text-[46px] lg:text-[60px]",style:{...li,color:"var(--kf-text)"},children:[s("contactPage.heroTitlePre")," ",a.jsx("span",{style:{color:"var(--kf-accent2)"},children:s("contactPage.heroTitleAccent")})," ",s("contactPage.heroTitlePost")]}),a.jsx("p",{className:"mb-10 mt-5 max-w-[520px] text-lg leading-[1.55]",style:{color:"var(--kf-muted)"},children:s("contactPage.heroSubtitle")}),a.jsxs("div",{className:"grid grid-cols-1 items-start gap-10 min-[981px]:grid-cols-[minmax(0,1.35fr)_minmax(320px,1fr)]",children:[a.jsx("div",{children:a.jsxs("div",{className:"rounded-2xl border p-[22px] sm:p-10",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[S&&a.jsxs("div",{className:"mb-8 rounded-xl border px-6 py-[22px]",style:{background:"var(--kf-pkgbg)",borderColor:"var(--kf-pkgbrd)"},children:[a.jsxs("div",{className:"mb-3.5 flex items-center gap-2.5 text-xs font-bold uppercase tracking-[2px]",style:{color:"var(--kf-accent2)"},children:[a.jsx(Fb,{className:"h-4 w-4"}),s("contactPage.packageBoxTitle")]}),a.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-5 gap-y-2 text-[15px]",children:[a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextBrand")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.brand}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextModel")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.model}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextPackage")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.package})]}),a.jsxs("div",{className:"mt-3.5 flex items-baseline justify-between border-t pt-3.5",style:{borderColor:"var(--kf-pkgbrd)"},children:[a.jsx("span",{className:"text-[13px] font-semibold uppercase tracking-wide",style:{color:"var(--kf-muted)"},children:s("contactPage.packagePrice")}),a.jsx("span",{className:"text-xl",children:v!=null?a.jsx(Df,{formatted:o(v),color:"var(--kf-text)"}):"—"})]})]}),b.length>0&&a.jsxs("div",{className:"mb-8 rounded-xl border p-5",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)"},children:[a.jsx("div",{className:"mb-3 text-xs font-bold uppercase tracking-[2px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.optionalUpgrades")}),a.jsx("div",{className:"space-y-2",children:b.map(E=>a.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border p-3 text-sm",style:{borderColor:"var(--kf-fieldbrd)"},children:[a.jsx("input",{type:"checkbox",checked:w.includes(E.id),onChange:()=>k(E.id),className:"mt-0.5 h-4 w-4 rounded",style:{accentColor:"var(--kf-accent)"}}),a.jsxs("span",{className:"flex-1",children:[a.jsx("span",{className:"block font-semibold",style:{color:"var(--kf-text2)"},children:E.name}),E.description&&a.jsx("span",{className:"block text-xs",style:{color:"var(--kf-muted)"},children:E.description})]}),a.jsxs("span",{className:"font-semibold",style:{color:"var(--kf-accent2)"},children:["+",o(E.price)]})]},E.id))}),w.length>0&&v!=null&&a.jsxs("div",{className:"mt-3 flex items-baseline justify-between border-t pt-3 text-sm",style:{borderColor:"var(--kf-pkgbrd)"},children:[a.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide",style:{color:"var(--kf-muted)"},children:s("contactPage.totalWithUpgrades")}),a.jsx(Df,{formatted:o(v+j),color:"var(--kf-text)"})]})]}),a.jsx("h2",{className:"mb-8 text-xl",style:{...li,color:"var(--kf-text)"},children:s("contactPage.formTitle")}),d==="sent"&&a.jsxs("div",{className:"mb-6 rounded-[10px] border p-5",style:{borderColor:"var(--kf-accent)",background:"var(--kf-accentsoft)"},children:[a.jsx("div",{className:"text-base font-bold",style:{color:"var(--kf-accent2)"},children:s("contactPage.sentTitle")}),a.jsx("div",{className:"mt-1 text-sm",style:{color:"var(--kf-muted)"},children:s("contactPage.sentText")})]}),a.jsxs("form",{onSubmit:M,children:[a.jsxs("div",{className:"grid grid-cols-1 gap-6 min-[641px]:grid-cols-2",children:[a.jsx(Ra,{icon:Vb,label:s("contactPage.nameLabel"),name:"name",required:!0,value:u.name,onChange:P,placeholder:s("contactPage.namePlaceholder")}),a.jsx(Ra,{icon:Ld,label:s("contactPage.emailLabel"),name:"email",type:"email",required:!0,value:u.email,onChange:P,placeholder:s("contactPage.emailPlaceholder")}),a.jsx(Ra,{icon:Dd,label:s("contactPage.phoneLabel"),name:"phone",value:u.phone,onChange:P,placeholder:s("contactPage.phonePlaceholder")}),a.jsx(Ra,{icon:Ob,label:s("contactPage.vinLabel"),name:"vin",value:u.vin,onChange:P,placeholder:s("contactPage.vinPlaceholder")})]}),a.jsxs("div",{className:"mt-6 flex flex-col gap-2",children:[a.jsx("label",{htmlFor:"kf-message",className:"text-xs font-semibold uppercase tracking-[2px]",style:{color:"var(--kf-label)"},children:s("contactPage.messageLabel")}),a.jsx("textarea",{id:"kf-message",name:"message",rows:5,value:u.message,onChange:P,placeholder:s("contactPage.messagePlaceholder"),className:"w-full resize-y rounded-lg border px-4 py-3.5 text-[15px] outline-none",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)",color:"var(--kf-text2)"}})]}),m&&a.jsx("p",{className:"mt-4 text-sm text-red-600 dark:text-red-400",children:m}),a.jsxs("div",{className:"mt-8 flex flex-wrap items-center gap-5",children:[a.jsxs("button",{type:"submit",disabled:d==="sending",className:"inline-flex items-center gap-3 rounded-lg px-8 py-4 text-sm font-bold uppercase tracking-[3px] transition-[filter,box-shadow] hover:brightness-110 disabled:opacity-60",style:{background:"var(--kf-accent)",color:"var(--kf-btntext)",boxShadow:"0 10px 24px rgba(150,200,20,0.32)"},children:[a.jsx(Ub,{className:"h-[18px] w-[18px]"}),s(d==="sending"?"contactPage.sending":"contactPage.submit")]}),a.jsx("div",{className:"text-[13px]",style:{color:"var(--kf-label)"},children:s("contactPage.requiredHint")})]})]})]})}),a.jsxs("div",{className:"flex flex-col gap-6",children:[a.jsxs("div",{className:"relative overflow-hidden rounded-2xl border px-[22px] py-[26px] sm:px-8 sm:py-[34px]",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[a.jsx("div",{className:"pointer-events-none absolute -right-[60px] -top-[60px] h-[190px] w-[190px] rounded-full border border-dashed",style:{borderColor:"var(--kf-pkgbrd)"}}),a.jsx("h2",{className:"mb-7 text-[17px]",style:{...li,color:"var(--kf-text)"},children:s("contactPage.cardTitle")}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Dd,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.phone")}),a.jsx("a",{href:`tel:${fb(t)}`,className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:t})]})]}),a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Ld,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.email")}),a.jsx("a",{href:`mailto:${r}`,className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:r})]})]}),a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Wb,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.address")}),a.jsxs("div",{className:"text-base font-semibold leading-[1.4]",style:{color:"var(--kf-text2)"},children:["Boxbrunner Straße 20a",a.jsx("br",{}),"63916 Amorbach"]})]})]}),n&&a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(sP,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("nav.whatsapp")}),a.jsx("a",{href:rP(n),className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:n})]})]})]}),a.jsxs("div",{className:"mt-7 border-t pt-6",style:{borderColor:"var(--kf-divider)"},children:[a.jsx("div",{className:"mb-3 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.hours")}),a.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-[15px]",children:[a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.hoursWeekDays")}),a.jsx("span",{children:s("contactPage.hoursWeekTime")}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.hoursSatDay")}),a.jsx("span",{children:s("contactPage.hoursSatTime")})]})]})]}),a.jsxs("div",{className:"relative overflow-hidden rounded-2xl border",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[l.external&&a.jsxs("a",{href:Lf,target:"_blank",rel:"noopener noreferrer",className:"absolute left-3.5 top-3.5 z-10 inline-flex items-center gap-2 rounded-lg border px-3.5 py-2 text-[13px] font-semibold hover:border-[var(--kf-accent)]",style:{background:"var(--kf-pill)",borderColor:"var(--kf-pillbrd)",color:"var(--kf-text2)",boxShadow:"var(--kf-shadow2)"},children:[s("contactPage.mapOpenChip"),a.jsx(Hb,{className:"h-3.5 w-3.5",style:{color:"var(--kf-accent2)"}})]}),a.jsx(nP,{name:s("contactPage.mapEmbedName"),className:"h-[210px] w-full",children:a.jsx("div",{className:"h-[210px] overflow-hidden",children:a.jsx("iframe",{title:"HifiPlanet Amorbach – Standort",src:`https://www.google.com/maps?q=${pb}&output=embed`,width:"100%",height:"290",style:{border:0,display:"block",marginTop:"-60px"},loading:"lazy",referrerPolicy:"no-referrer-when-downgrade"})})}),a.jsxs("a",{href:Lf,target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2.5 border-t px-4 py-4 text-[13px] font-bold uppercase tracking-[3px] hover:bg-[var(--kf-accentsoft)]",style:{borderColor:"var(--kf-divider)",color:"var(--kf-accent2)"},children:[s("contactPage.routePlan")," →"]})]})]})]}),a.jsx("div",{className:"mt-10 grid grid-cols-1 overflow-hidden rounded-2xl border min-[641px]:grid-cols-2 min-[901px]:grid-cols-4",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow2)"},children:N.map(E=>a.jsxs("div",{className:"flex items-center gap-4 border-b p-6 last:border-b-0 min-[641px]:border-b-0 min-[641px]:border-r min-[641px]:last:border-r-0",style:{borderColor:"var(--kf-divider)"},children:[a.jsx("div",{className:"flex h-[46px] w-[46px] flex-shrink-0 items-center justify-center rounded-full border-[1.5px]",style:{borderColor:"var(--kf-pkgbrd)",color:"var(--kf-accent2)"},children:a.jsx(aP,{path:iP[E.key],className:"h-[22px] w-[22px]"})}),a.jsxs("div",{children:[a.jsx("div",{className:"text-[15px] font-bold",style:{color:"var(--kf-text)"},children:E.title}),a.jsx("div",{className:"mt-0.5 text-[13px]",style:{color:"var(--kf-muted)"},children:E.sub})]})]},E.key))})]})})}function oP(){return nt({title:"Impressum",description:"Impressum von HifiPlanet Amorbach gemäß § 5 DDG.",path:"/impressum"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Impressum"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Angaben gemäß § 5 DDG"}),a.jsxs("p",{children:["Hifi Planet e.K.",a.jsx("br",{}),"Inhaber: Christopher Horndasch",a.jsx("br",{}),"Boxbrunner Str. 20a",a.jsx("br",{}),"63916 Amorbach"]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Kontakt"}),a.jsxs("p",{children:["Telefon: ",a.jsx("a",{href:"tel:+4993732062390",className:"hover:text-brand-500",children:"09373 20 62 390"}),a.jsx("br",{}),"E-Mail: ",a.jsx("a",{href:"mailto:info@hifi-planet-amorbach.de",className:"hover:text-brand-500",children:"info@hifi-planet-amorbach.de"})]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Umsatzsteuer-ID"}),a.jsx("p",{children:"Umsatzsteuer-Identifikationsnummer gemäß § 27a Umsatzsteuergesetz: DE 275084766"})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Zuständige Kammer"}),a.jsx("p",{children:"IHK Aschaffenburg"})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV"}),a.jsxs("p",{children:["Christopher Horndasch",a.jsx("br",{}),"Anschrift wie oben"]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Verbraucherstreitbeilegung"}),a.jsx("p",{children:"Wir sind nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle im Sinne des Verbraucherstreitbeilegungsgesetzes (VSBG) teilzunehmen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Haftung für Inhalte"}),a.jsx("p",{children:"Als Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Haftung für Links"}),a.jsx("p",{children:"Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Urheberrecht"}),a.jsx("p",{children:"Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen."})]})]})]})}function uP(){return nt({title:"Datenschutzerklärung",description:"Datenschutzerklärung von HifiPlanet Amorbach gemäß Art. 13 DSGVO.",path:"/datenschutz"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Datenschutzerklärung"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"1. Verantwortlicher"}),a.jsxs("p",{children:["Verantwortlicher im Sinne der Datenschutz-Grundverordnung (DSGVO) ist:",a.jsx("br",{}),"Hifi Planet e.K., Christopher Horndasch",a.jsx("br",{}),"Boxbrunner Str. 20a, 63916 Amorbach",a.jsx("br",{}),"Telefon: 09373 20 62 390 · E-Mail:"," ",a.jsx("a",{href:"mailto:info@hifi-planet-amorbach.de",className:"hover:text-brand-500",children:"info@hifi-planet-amorbach.de"})]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"2. Ihre Rechte als betroffene Person"}),a.jsx("p",{className:"mb-2",children:"Sie haben jederzeit das Recht,"}),a.jsxs("ul",{className:"list-disc space-y-1 pl-5",children:[a.jsx("li",{children:"Auskunft über Ihre bei uns gespeicherten personenbezogenen Daten zu erhalten (Art. 15 DSGVO),"}),a.jsx("li",{children:"die Berichtigung unrichtiger Daten zu verlangen (Art. 16 DSGVO),"}),a.jsx("li",{children:"die Löschung Ihrer Daten zu verlangen (Art. 17 DSGVO),"}),a.jsx("li",{children:"die Verarbeitung Ihrer Daten einschränken zu lassen (Art. 18 DSGVO),"}),a.jsx("li",{children:"der Verarbeitung Ihrer Daten zu widersprechen (Art. 21 DSGVO),"}),a.jsx("li",{children:"Ihre Daten in einem gängigen Format zu erhalten (Datenübertragbarkeit, Art. 20 DSGVO), und"}),a.jsx("li",{children:"eine erteilte Einwilligung jederzeit mit Wirkung für die Zukunft zu widerrufen (Art. 7 Abs. 3 DSGVO)."})]}),a.jsx("p",{className:"mt-2",children:"Außerdem haben Sie das Recht, sich bei einer Datenschutz-Aufsichtsbehörde über die Verarbeitung Ihrer personenbezogenen Daten durch uns zu beschweren, zum Beispiel beim Bayerischen Landesamt für Datenschutzaufsicht (BayLDA)."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"3. Hosting und Server-Logfiles"}),a.jsx("p",{children:"Beim Aufruf dieser Website erhebt der Webserver automatisch Daten in sogenannten Server-Logfiles, die Ihr Browser übermittelt. Dazu gehören: IP-Adresse, Datum und Uhrzeit der Anfrage, aufgerufene Seite, verwendeter Browser und Betriebssystem sowie die zuvor besuchte Seite (Referrer-URL). Diese Daten dienen ausschließlich der technisch fehlerfreien Auslieferung der Website sowie der IT-Sicherheit (z. B. zur Abwehr von Angriffen) und werden nicht mit anderen Datenquellen zusammengeführt. Rechtsgrundlage ist unser berechtigtes Interesse an einem sicheren und stabilen Betrieb der Website (Art. 6 Abs. 1 lit. f DSGVO)."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"4. Kontaktformular"}),a.jsx("p",{children:"Wenn Sie uns über das Kontaktformular eine Anfrage zukommen lassen, werden Ihre Angaben aus dem Formular (Name, E-Mail-Adresse, optional Telefonnummer, Nachricht sowie ggf. der Kontext Ihrer Anfrage wie Marke, Modell oder Paket) inklusive der von Ihnen dort angegebenen Kontaktdaten bei uns gespeichert, um Ihre Anfrage zu bearbeiten und zu beantworten. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung durch Absenden des Formulars (Art. 6 Abs. 1 lit. a DSGVO) bzw., sofern Ihre Anfrage der Vorbereitung eines Vertrags dient, auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO. Wir löschen die Anfrage inklusive der Kontaktdaten, sobald der jeweilige Sachverhalt abschließend geklärt ist und keine gesetzlichen Aufbewahrungspflichten entgegenstehen. Diese Einwilligung können Sie jederzeit widerrufen, indem Sie uns formlos per E-Mail kontaktieren."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"5. Cookies und lokale Speicherung"}),a.jsx("p",{className:"mb-2",children:"Diese Website verwendet technisch notwendige Cookies bzw. Speichertechnologien, die für den Betrieb der Seite erforderlich sind und ohne die einzelne Funktionen nicht funktionieren würden. Dazu gehören:"}),a.jsxs("ul",{className:"list-disc space-y-1 pl-5",children:[a.jsxs("li",{children:["ein Session-Cookie (",a.jsx("code",{children:"hifi_admin_session"}),"), das für den Anmeldestatus im Mitarbeiter-Login benötigt wird und mit Ende der Browsersitzung abläuft,"]}),a.jsxs("li",{children:["eine lokale Speicherung (",a.jsx("code",{children:"localStorage"}),") Ihrer Hell-/Dunkelmodus-Einstellung sowie Ihrer Cookie-Auswahl, damit wir Sie nicht bei jedem Besuch erneut danach fragen müssen."]})]}),a.jsx("p",{className:"mt-2",children:'Für diese technisch notwendigen Cookies ist gemäß § 25 Abs. 2 Nr. 2 TTDSG keine Einwilligung erforderlich. Rechtsgrundlage ist unser berechtigtes Interesse am technischen Betrieb der Website (Art. 6 Abs. 1 lit. f DSGVO). Für alle darüber hinausgehenden Inhalte und Dienste – aktuell die eingebundenen Google Maps- und YouTube-Elemente sowie Google Analytics – fragen wir Sie beim ersten Besuch aktiv nach Ihrer Einwilligung. Sie können Ihre Auswahl jederzeit über den Link „Cookie-Einstellungen" im Footer ändern.'})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"6. Google Maps"}),a.jsxs("p",{children:['Auf unserer Kontaktseite und im Footer binden wir Kartenmaterial des Dienstes „Google Maps" ein, um Ihnen die Anfahrt zu unserem Standort zu erleichtern. Anbieter ist Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland. Die eingebettete Karte wird erst geladen, nachdem Sie dem im Cookie-Banner unter „Externe Medien" zugestimmt haben. Beim Laden der Karte wird Ihre IP-Adresse an Google übertragen; eine Verarbeitung kann dabei auch auf Servern außerhalb der EU/des EWR erfolgen. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"7. YouTube"}),a.jsxs("p",{children:['Auf unserer Startseite binden wir ein Video des Anbieters YouTube (Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland) im „erweiterten Datenschutzmodus" ein (Domain youtube-nocookie.com). Auch dieses Video wird erst geladen, nachdem Sie unter „Externe Medien" zugestimmt haben. Nach Angaben von Google werden dabei bis zum Start der Wiedergabe keine Cookies gesetzt; beim Laden des Players wird jedoch bereits eine Verbindung zu Google-Servern aufgebaut und Ihre IP-Adresse übertragen. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"8. Google Analytics"}),a.jsxs("p",{children:['Sofern Sie der Statistik-Kategorie im Cookie-Banner zugestimmt haben, setzen wir „Google Analytics" ein, einen Webanalysedienst der Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland. Google Analytics verwendet Cookies und ähnliche Technologien, die eine Analyse der Benutzung dieser Website durch Sie ermöglichen. Die dabei erzeugten Informationen (u. a. Ihre IP-Adresse, die vor der Verarbeitung durch die Aktivierung der IP-Anonymisierung gekürzt wird) werden an einen Server von Google übertragen und dort gespeichert; eine Verarbeitung kann dabei auch auf Servern außerhalb der EU/des EWR erfolgen. Die Verarbeitung erfolgt ausschließlich auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen mit Wirkung für die Zukunft widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"9. Empfänger der Daten"}),a.jsx("p",{children:"Ihre Daten werden grundsätzlich nur innerhalb unseres Unternehmens verarbeitet. Eine Weitergabe an Dritte erfolgt nur, soweit dies zur Bearbeitung Ihrer Anfrage erforderlich ist (z. B. an unseren Hosting-Provider zum Betrieb dieser Website und an unseren E-Mail-Anbieter zur Zustellung Ihrer Kontaktanfrage) oder soweit wir gesetzlich dazu verpflichtet sind."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"10. Speicherdauer"}),a.jsx("p",{children:"Sofern in dieser Erklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenspeicherung entfällt. Gesetzliche Aufbewahrungsfristen (z. B. aus dem Handels- oder Steuerrecht) bleiben hiervon unberührt und können eine längere Speicherung erforderlich machen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"11. SSL-/TLS-Verschlüsselung"}),a.jsx("p",{children:"Diese Seite nutzt aus Sicherheitsgründen eine SSL-/TLS-Verschlüsselung zur Übertragung Ihrer Daten. Eine verschlüsselte Verbindung erkennen Sie an dem Schloss-Symbol in der Adresszeile Ihres Browsers."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"12. Änderung dieser Datenschutzerklärung"}),a.jsx("p",{children:"Wir passen diese Datenschutzerklärung an, sobald sich die von uns eingesetzten Datenverarbeitungen ändern. Es gilt jeweils die zum Zeitpunkt Ihres Besuchs aktuelle, auf dieser Seite veröffentlichte Fassung."})]}),a.jsxs("p",{children:["Fragen zum Datenschutz beantworten wir Ihnen gerne über unser"," ",a.jsx(W,{to:"/kontakt",className:"underline hover:text-brand-500",children:"Kontaktformular"})," oder direkt per E-Mail."]})]})]})}function cP(){return nt({title:"AGB",description:"Allgemeine Geschäftsbedingungen von HifiPlanet Amorbach.",path:"/agb"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Allgemeine Geschäftsbedingungen"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"1. Geltungsbereich"}),a.jsx("p",{children:'Diese Allgemeinen Geschäftsbedingungen (AGB) gelten für alle Beratungs-, Werkstatt- und Umbauleistungen, die die Hifi Planet e.K., Boxbrunner Str. 20a, 63916 Amorbach („wir", „HifiPlanet") gegenüber ihren Kunden erbringt, sowie für die Nutzung des Kontaktformulars auf dieser Website.'})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"2. Anfragen über die Website"}),a.jsx("p",{children:"Über das Kontaktformular können Sie unverbindlich eine Beratung oder ein Angebot zu einem einzelnen Produkt oder einem ganzen Paket anfragen. Die auf der Website angezeigten Preise sind, soweit sie von Drittanbietern automatisiert übernommen werden, unverbindliche Circa-Preise ohne Einbau und können sich bis zur Erstellung eines konkreten Angebots ändern. Mit dem Absenden einer Anfrage kommt noch kein Vertrag zustande."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"3. Vertragsschluss"}),a.jsx("p",{children:"Ein verbindlicher Vertrag über Beratung, Material und Einbauleistungen kommt erst zustande, wenn wir Ihnen nach persönlicher oder schriftlicher Abstimmung ein konkretes Angebot unterbreitet haben und Sie dieses angenommen haben, spätestens jedoch mit der Übergabe Ihres Fahrzeugs zur vereinbarten Auftragsdurchführung in unserer Werkstatt in Amorbach."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"4. Preise und Zahlung"}),a.jsx("p",{children:"Es gelten die im jeweiligen Einzelangebot genannten Preise inklusive der zum Zeitpunkt der Rechnungsstellung gesetzlich geltenden Umsatzsteuer. Sofern nichts anderes vereinbart ist, ist die Rechnung nach Abnahme der Leistung bzw. Übergabe des Fahrzeugs ohne Abzug fällig."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"5. Termine und Fahrzeugübergabe"}),a.jsx("p",{children:"Vereinbarte Termine zur Fahrzeugübergabe sind von beiden Seiten einzuhalten. Verschiebungen sind möglichst frühzeitig mitzuteilen. Für Gegenstände, die sich zum Zeitpunkt der Übergabe im Fahrzeug befinden und nicht Gegenstand des Auftrags sind, übernehmen wir keine Haftung."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"6. Gewährleistung"}),a.jsx("p",{children:"Es gelten die gesetzlichen Gewährleistungsrechte. Mängel sind uns unverzüglich nach Feststellung anzuzeigen, damit wir Ihnen Nacherfüllung anbieten können. Für Verschleißteile sowie für Schäden, die auf unsachgemäße Behandlung, Fremdeingriffe Dritter oder normalen Verschleiß zurückzuführen sind, besteht kein Gewährleistungsanspruch."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"7. Eigentumsvorbehalt"}),a.jsx("p",{children:"Verbautes Material und gelieferte Ware bleiben bis zur vollständigen Bezahlung unser Eigentum."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"8. Haftung"}),a.jsx("p",{children:"Wir haften unbeschränkt bei Vorsatz und grober Fahrlässigkeit sowie nach Maßgabe des Produkthaftungsgesetzes. Bei leichter Fahrlässigkeit haften wir nur bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht) und begrenzt auf den vertragstypisch vorhersehbaren Schaden. Die Haftung für Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"9. Widerrufsrecht"}),a.jsx("p",{children:"Ein gesetzliches Widerrufsrecht für Verbraucher besteht bei Verträgen, die außerhalb von Geschäftsräumen oder im Fernabsatz geschlossen werden. Da der eigentliche Werkvertrag über Beratung und Einbauleistungen erst bei persönlicher Fahrzeugübergabe in unseren Geschäftsräumen in Amorbach geschlossen wird, handelt es sich hierbei nicht um einen Fernabsatzvertrag; ein gesetzliches Widerrufsrecht besteht in diesem Fall nicht. Sollte im Einzelfall ausnahmsweise ein Vertrag im Fernabsatz zustande kommen, informieren wir Sie gesondert über Ihr gesetzliches Widerrufsrecht."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"10. Anwendbares Recht und Gerichtsstand"}),a.jsx("p",{children:"Es gilt das Recht der Bundesrepublik Deutschland unter Ausschluss des UN-Kaufrechts. Ist der Kunde Kaufmann, juristische Person des öffentlichen Rechts oder öffentlich-rechtliches Sondervermögen, ist Gerichtsstand für alle Streitigkeiten aus diesem Vertragsverhältnis unser Geschäftssitz in Amorbach."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"11. Schlussbestimmungen"}),a.jsx("p",{children:"Sollte eine Bestimmung dieser AGB unwirksam sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen hiervon unberührt."})]})]})]})}const dP={host:"",name:"",user:"",password:"",charset:"utf8mb4"},hP={username:"",password:"",password_confirmation:""};function mP(){nt({title:"Ersteinrichtung",path:"/setup"});const[e,t]=g.useState("loading"),[n,r]=g.useState(""),[s,i]=g.useState(!1),[l,o]=g.useState(""),[u,c]=g.useState(dP),[d,h]=g.useState(hP),[m,f]=g.useState(null),b=()=>A.get("/setup/status").then(S=>(S.needs_setup?S.steps.admin.ok?t("done"):S.steps.schema.ok?t("admin"):t(S.steps.database.ok?"schema":"database"):t("locked"),S));g.useEffect(()=>{A.get("/setup/status").then(S=>t(S.needs_setup?"password":"locked")).catch(()=>t("locked"))},[]);const y=async S=>{S.preventDefault(),r(""),i(!0);try{await A.post("/setup/verify-password",{password:l}),await b()}catch(P){r(P.message)}finally{i(!1)}},w=async S=>{S.preventDefault(),r(""),i(!0);try{await A.post("/setup/database",u),await b()}catch(P){r(P.message)}finally{i(!1)}},x=async()=>{r(""),i(!0);try{const S=await A.post("/setup/migrate",{});f(S.actions),S.status.steps.schema.ok&&t("admin")}catch(S){r(S.message)}finally{i(!1)}},p=async S=>{if(S.preventDefault(),r(""),d.password!==d.password_confirmation){r("Die Passwörter stimmen nicht überein");return}i(!0);try{await A.post("/setup/admin",d),t("done")}catch(P){r(P.message)}finally{i(!1)}},v="w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900",k="mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",j=[{key:"database",label:"Datenbank"},{key:"schema",label:"Struktur"},{key:"admin",label:"Admin-Account"}],C=j.findIndex(S=>S.key===e);return a.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-neutral-50 px-4 py-12 dark:bg-neutral-950",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-16 w-auto sm:h-20"}),a.jsxs("div",{className:"w-full max-w-md rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[e==="loading"&&a.jsx("p",{className:"text-center text-sm text-neutral-400",children:"Lädt…"}),e==="locked"&&a.jsxs("div",{className:"text-center",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Bereits eingerichtet"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Seite wurde bereits vollständig eingerichtet. Der Assistent ist deshalb gesperrt."}),a.jsx(W,{to:"/admin/login",className:"text-sm font-medium text-brand-600 hover:underline dark:text-brand-400",children:"Zum Login"})]}),["database","schema","admin"].includes(e)&&a.jsx("div",{className:"mb-6 flex items-center justify-center gap-2",children:j.map((S,P)=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:`flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold ${P o(S.target.value),required:!0,autoFocus:!0,className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Prüfe…":"Weiter"})]}),e==="database"&&a.jsxs("form",{onSubmit:w,children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Datenbank-Zugangsdaten"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Trage die Zugangsdaten der Datenbank auf diesem Server ein. Die Verbindung wird vor dem Speichern getestet."}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Host *"}),a.jsx("input",{required:!0,value:u.host,onChange:S=>c({...u,host:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Datenbankname *"}),a.jsx("input",{required:!0,value:u.name,onChange:S=>c({...u,name:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Benutzer *"}),a.jsx("input",{required:!0,value:u.user,onChange:S=>c({...u,user:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Passwort"}),a.jsx("input",{type:"password",value:u.password,onChange:S=>c({...u,password:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:k,children:"Zeichensatz"}),a.jsx("input",{value:u.charset,onChange:S=>c({...u,charset:S.target.value}),className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Teste Verbindung…":"Verbindung testen & speichern"})]}),e==="schema"&&a.jsxs("div",{children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Datenbankstruktur"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Die Datenbankverbindung funktioniert. Jetzt legen wir die benötigten Tabellen an."}),m&&a.jsx("ul",{className:"mb-4 space-y-1 rounded-md bg-neutral-50 p-3 text-sm text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300",children:m.map((S,P)=>a.jsx("li",{children:S},P))}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"button",onClick:x,disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Richte ein…":"Datenbankstruktur einrichten"})]}),e==="admin"&&a.jsxs("form",{onSubmit:p,children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Erster Admin-Account"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Lege den ersten Super-Admin-Account an, mit dem du dich anschließend einloggen kannst."}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Benutzername"}),a.jsx("input",{required:!0,autoFocus:!0,value:d.username,onChange:S=>h({...d,username:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Passwort"}),a.jsx("input",{type:"password",required:!0,minLength:8,value:d.password,onChange:S=>h({...d,password:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:k,children:"Passwort wiederholen"}),a.jsx("input",{type:"password",required:!0,minLength:8,value:d.password_confirmation,onChange:S=>h({...d,password_confirmation:S.target.value}),className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Lege an…":"Admin-Account anlegen"})]}),e==="done"&&a.jsxs("div",{className:"text-center",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Fertig!"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Die Ersteinrichtung ist abgeschlossen. Du kannst dich jetzt mit deinem neuen Admin-Account anmelden."}),a.jsx(W,{to:"/admin/login",className:"inline-block w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600",children:"Zum Login"})]})]})]})}function fP(){const{user:e,login:t,verifyTwoFactor:n}=Dt(),r=ra(),[s,i]=g.useState("credentials"),[l,o]=g.useState(""),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState(""),[b,y]=g.useState(!1);if(e)return a.jsx(Gs,{to:"/admin",replace:!0});const w=async p=>{p.preventDefault(),y(!0),f("");try{(await t(l,u)).requires2fa?i("code"):r("/admin")}catch(v){f(v.message)}finally{y(!1)}},x=async p=>{p.preventDefault(),y(!0),f("");try{await n(d),r("/admin")}catch(v){f(v.message)}finally{y(!1)}};return a.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-neutral-50 px-4 dark:bg-neutral-950",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-16 w-auto dark:hidden sm:h-20"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-16 w-auto dark:block sm:h-20"}),s==="credentials"?a.jsxs("form",{onSubmit:w,className:"w-full max-w-sm rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-6 text-xl font-bold text-neutral-900 dark:text-white",children:"Admin-Login"}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername"}),a.jsx("input",{value:l,onChange:p=>o(p.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort"}),a.jsx("input",{type:"password",value:u,onChange:p=>c(p.target.value),required:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),m&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:m}),a.jsx("button",{type:"submit",disabled:b,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:b?"Anmelden…":"Anmelden"})]}):a.jsxs("form",{onSubmit:x,className:"w-full max-w-sm rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Bestätigungscode"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Öffne die Google Authenticator App und gib den 6-stelligen Code ein. Alternativ kannst du auch einen deiner Wiederherstellungscodes verwenden."}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Code"}),a.jsx("input",{value:d,onChange:p=>h(p.target.value),required:!0,autoFocus:!0,inputMode:"numeric",placeholder:"123456",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-center text-lg tracking-widest focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),m&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:m}),a.jsx("button",{type:"submit",disabled:b,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:b?"Prüfe…":"Bestätigen"}),a.jsx("button",{type:"button",onClick:()=>{i("credentials"),h(""),f("")},className:"mt-3 w-full text-sm text-neutral-500 hover:underline dark:text-neutral-400",children:"Zurück zum Login"})]})]})}const pP={tag:"M4 4h7l9 9-7 7-9-9V4Zm3.5 3.5h.01",car:"M3 13.5 4.5 9A2 2 0 0 1 6.4 7.5h11.2A2 2 0 0 1 19.5 9L21 13.5M3 13.5v4a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-4M3 13.5h18M6.5 16.5h.01M17.5 16.5h.01",box:"M12 3 4 7.5v9L12 21l8-4.5v-9L12 3Zm0 9 8-4.5M12 12v9M12 12 4 7.5",mail:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm0 0 8 7 8-7"},gP=({path:e,className:t="h-6 w-6"})=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:t,children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:e})});function xP(){const[e,t]=g.useState(null),[n,r]=g.useState("");if(g.useEffect(()=>{A.get("/analytics/report").then(t).catch(i=>r(i.message))},[]),n)return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"text-sm text-red-600",children:n})]});if(!e)return null;if(!e.configured)return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsxs("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:["Noch nicht eingerichtet. Unter"," ",a.jsx(W,{to:"/admin/settings/website",className:"text-brand-600 hover:underline dark:text-brand-400",children:"Einstellungen → Website"})," ","kannst du die Dashboard-Anbindung konfigurieren, um hier Besucherzahlen zu sehen."]})]});const s=Math.max(1,...e.daily.map(i=>i.pageviews));return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"mb-5 text-sm text-neutral-500 dark:text-neutral-400",children:"Letzte 7 Tage."}),a.jsxs("div",{className:"mb-6 grid grid-cols-3 gap-4",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.users}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Nutzer"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.sessions}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Sitzungen"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.pageviews}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Seitenaufrufe"})]})]}),e.daily.length>0&&a.jsx("div",{className:"mb-6 flex h-24 items-end gap-1.5",children:e.daily.map(i=>a.jsxs("div",{className:"flex flex-1 flex-col items-center gap-1",children:[a.jsx("div",{className:"w-full rounded-t bg-brand-400 dark:bg-brand-500",style:{height:`${Math.max(4,i.pageviews/s*80)}px`},title:`${i.date}: ${i.pageviews} Seitenaufrufe`}),a.jsxs("span",{className:"text-[10px] text-neutral-400",children:[i.date.slice(6,8),".",i.date.slice(4,6),"."]})]},i.date))}),e.top_pages.length>0&&a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-neutral-400",children:"Meistbesuchte Seiten"}),a.jsx("ul",{className:"space-y-1 text-sm",children:e.top_pages.map(i=>a.jsxs("li",{className:"flex items-center justify-between gap-3 text-neutral-700 dark:text-neutral-300",children:[a.jsx("span",{className:"truncate font-mono text-xs",children:i.path}),a.jsx("span",{className:"shrink-0 font-semibold",children:i.pageviews})]},i.path))})]})]})}function bP(){const{user:e,hasPermission:t}=Dt(),[n,r]=g.useState({});g.useEffect(()=>{t("brands.manage")&&A.get("/brands").then(i=>r(l=>({...l,brands:i.length}))),(t("models.manage")||t("packages.manage"))&&A.get("/models").then(i=>r(l=>({...l,models:i.length}))),t("packages.manage")&&A.get("/packages").then(i=>r(l=>({...l,packages:i.length}))),t("contact.manage")&&A.get("/contact").then(i=>r(l=>({...l,newContacts:i.filter(o=>o.status==="new").length})))},[]);const s=[{key:"brands",label:"Marken",icon:"tag",hint:"Die Hersteller, z. B. Audi oder BMW.",value:n.brands,to:"/admin/brands",show:t("brands.manage")},{key:"models",label:"Modelle",icon:"car",hint:"Die Fahrzeuge einer Marke, z. B. A4.",value:n.models,to:"/admin/models",show:t("models.manage")},{key:"packages",label:"Pakete",icon:"box",hint:"Die Sound-Pakete für ein Modell.",value:n.packages,to:"/admin/packages",show:t("packages.manage")},{key:"contacts",label:"Neue Anfragen",icon:"mail",hint:"Kunden, die noch auf Antwort warten.",value:n.newContacts,to:"/admin/contact-requests",show:t("contact.manage"),highlight:!0}].filter(i=>i.show);return a.jsxs("div",{children:[a.jsxs("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:["Willkommen, ",e==null?void 0:e.username,"!"]}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Hier siehst du auf einen Blick, wie viel in deinem Shop hinterlegt ist. Klicke auf eine Kachel, um dorthin zu gelangen."}),s.length===0?a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:"Für deinen Account sind noch keine Bereiche freigeschaltet. Bitte wende dich an einen Administrator."}):a.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:s.map(i=>a.jsxs(W,{to:i.to,className:`rounded-xl border p-5 shadow-sm transition hover:-translate-y-0.5 hover:shadow-md ${i.highlight&&i.value>0?"border-brand-300 bg-brand-50 dark:border-brand-900 dark:bg-brand-900/20":"border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"}`,children:[a.jsx("div",{className:"mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(gP,{path:pP[i.icon]})}),a.jsx("p",{className:"text-sm font-semibold text-neutral-700 dark:text-neutral-200",children:i.label}),a.jsx("p",{className:"mt-1 text-3xl font-extrabold text-brand-600 dark:text-brand-400",children:i.value??"…"}),a.jsx("p",{className:"mt-2 text-xs text-neutral-500 dark:text-neutral-400",children:i.hint})]},i.key))}),t("settings.manage")&&a.jsx(xP,{})]})}const Bf={name:"",sort_order:0};function vP(){const[e,t]=g.useState([]),[n,r]=g.useState(Bf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/brands").then(t);g.useEffect(()=>{u()},[]);const c=f=>{i(f.id),r({name:f.name,sort_order:f.sort_order})},d=()=>{i(null),r(Bf)},h=async f=>{f.preventDefault(),o("");try{s?await A.put(`/brands/${s}`,n):await A.post("/brands",n),d(),u()}catch(b){o(b.message)}},m=async f=>{confirm("Marke inkl. aller Modelle/Pakete/Produkte wirklich löschen?")&&(await A.delete(`/brands/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Marken"}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsx(W,{to:`/marken/${f.slug}`,target:"_blank",className:"hover:text-brand-500",children:f.name})}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Marken angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Marke bearbeiten":"Neue Marke"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.name,onChange:f=>r({...n,name:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const zf={name:"",brand_id:"",sort_order:0};function yP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(zf),[l,o]=g.useState(null),[u,c]=g.useState(""),[d,h]=g.useState("all"),m=g.useMemo(()=>d==="all"?e:e.filter(p=>String(p.brand_id)===d),[e,d]),f=()=>{A.get("/models").then(t),A.get("/brands").then(r)};g.useEffect(f,[]);const b=p=>{o(p.id),i({name:p.name,brand_id:p.brand_id,sort_order:p.sort_order})},y=()=>{o(null),i(zf)},w=async p=>{p.preventDefault(),c("");const v={...s,brand_id:Number(s.brand_id)};try{l?await A.put(`/models/${l}`,v):await A.post("/models",v),y(),f()}catch(k){c(k.message)}},x=async p=>{confirm("Modell inkl. aller Pakete/Produkte wirklich löschen?")&&(await A.delete(`/models/${p}`),f())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Modelle"}),a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Nach Marke filtern:"}),a.jsxs("select",{value:d,onChange:p=>h(p.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),n.map(p=>a.jsx("option",{value:String(p.id),children:p.name},p.id))]}),d!=="all"&&a.jsx("button",{onClick:()=>h("all"),className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[m.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke"}),a.jsx("th",{className:"px-4 py-2",children:"Modell"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[m.map(p=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:p.brand_name}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:p.name}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>b(p),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>x(p.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},p.id)),m.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Modelle angelegt.":"Keine Modelle für diese Marke."})})]})]})})]}),a.jsxs("form",{onSubmit:w,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Modell bearbeiten":"Neues Modell"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Marke *"}),a.jsxs("select",{required:!0,value:s.brand_id,onChange:p=>i({...s,brand_id:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Bitte wählen…"}),n.map(p=>a.jsx("option",{value:p.id,children:p.name},p.id))]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Modellname *"}),a.jsx("input",{required:!0,value:s.name,onChange:p=>i({...s,name:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:s.sort_order,onChange:p=>i({...s,sort_order:Number(p.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:y,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}function vl({value:e,onChange:t,label:n="Bild"}){const[r,s]=g.useState(!1),[i,l]=g.useState(""),o=async u=>{var d;const c=(d=u.target.files)==null?void 0:d[0];if(c){s(!0),l("");try{const h=new FormData;h.append("file",c);const m=await A.post("/uploads",h);t(m.path)}catch(h){l(h.message)}finally{s(!1)}}};return a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:n}),a.jsxs("div",{className:"flex items-center gap-3",children:[e&&a.jsx("img",{src:e,alt:"",className:"h-12 w-12 rounded-md object-cover"}),a.jsx("input",{type:"file",accept:"image/png,image/jpeg,image/webp",onChange:o,className:"text-sm"}),r&&a.jsx("span",{className:"text-sm text-neutral-500",children:"Lädt hoch…"})]}),i&&a.jsx("p",{className:"mt-1 text-sm text-red-600",children:i})]})}const Rf={name:"",cover_image_path:"",sort_order:0};function kP(){const[e,t]=g.useState([]),[n,r]=g.useState(Rf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/gallery-brands").then(t);g.useEffect(()=>{u()},[]);const c=f=>{i(f.id),r({name:f.name,cover_image_path:f.cover_image_path||"",sort_order:f.sort_order})},d=()=>{i(null),r(Rf)},h=async f=>{f.preventDefault(),o("");try{s?await A.put(`/gallery-brands/${s}`,n):await A.post("/gallery-brands",n),d(),u()}catch(b){o(b.message)}},m=async f=>{confirm("Marke inkl. aller Projekte/Fotos wirklich löschen?")&&(await A.delete(`/gallery-brands/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Galerie-Marken"}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Bild"}),a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:f.cover_image_path?a.jsx("img",{src:f.cover_image_path,alt:"",className:"h-10 w-10 rounded-md object-cover"}):a.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-md bg-neutral-100 text-xs text-neutral-400 dark:bg-neutral-800",children:"–"})}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsx(W,{to:`/galerie/${f.slug}`,target:"_blank",className:"hover:text-brand-500",children:f.name})}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Galerie-Marken angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Marke bearbeiten":"Neue Marke"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.name,onChange:f=>r({...n,name:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:n.cover_image_path,onChange:f=>r({...n,cover_image_path:f}),label:"Titelbild (optional)"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const If={name:"",gallery_brand_id:"",cover_image_path:"",sort_order:0};function wP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(If),[l,o]=g.useState(null),[u,c]=g.useState(""),[d,h]=g.useState("all"),m=g.useMemo(()=>d==="all"?e:e.filter(p=>String(p.gallery_brand_id)===d),[e,d]),f=()=>{A.get("/gallery-projects").then(t),A.get("/gallery-brands").then(r)};g.useEffect(f,[]);const b=p=>{o(p.id),i({name:p.name,gallery_brand_id:p.gallery_brand_id,cover_image_path:p.cover_image_path||"",sort_order:p.sort_order})},y=()=>{o(null),i(If)},w=async p=>{p.preventDefault(),c("");const v={...s,gallery_brand_id:Number(s.gallery_brand_id)};try{l?await A.put(`/gallery-projects/${l}`,v):await A.post("/gallery-projects",v),y(),f()}catch(k){c(k.message)}},x=async p=>{confirm("Projekt inkl. aller Fotos wirklich löschen?")&&(await A.delete(`/gallery-projects/${p}`),f())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Galerie-Projekte"}),a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Nach Marke filtern:"}),a.jsxs("select",{value:d,onChange:p=>h(p.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),n.map(p=>a.jsx("option",{value:String(p.id),children:p.name},p.id))]}),d!=="all"&&a.jsx("button",{onClick:()=>h("all"),className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[m.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke"}),a.jsx("th",{className:"px-4 py-2",children:"Projekt"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[m.map(p=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:p.brand_name}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:p.name}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx(W,{to:`/admin/gallery-projects/${p.id}/photos`,className:"mr-3 text-brand-600 hover:underline",children:"Fotos"}),a.jsx("button",{onClick:()=>b(p),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>x(p.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},p.id)),m.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Projekte angelegt.":"Keine Projekte für diese Marke."})})]})]})})]}),a.jsxs("form",{onSubmit:w,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Projekt bearbeiten":"Neues Projekt"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Marke *"}),a.jsxs("select",{required:!0,value:s.gallery_brand_id,onChange:p=>i({...s,gallery_brand_id:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Bitte wählen…"}),n.map(p=>a.jsx("option",{value:p.id,children:p.name},p.id))]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Projektname *"}),a.jsx("input",{required:!0,placeholder:"z. B. Audi TT",value:s.name,onChange:p=>i({...s,name:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:s.cover_image_path,onChange:p=>i({...s,cover_image_path:p}),label:"Titelbild (optional)"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:s.sort_order,onChange:p=>i({...s,sort_order:Number(p.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:y,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}function jP(){const{projectId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(""),[i,l]=g.useState(!1),[o,u]=g.useState(""),c=g.useRef(null),d=()=>A.get(`/gallery-projects/${e}/photos`).then(n);g.useEffect(()=>{d()},[e]);const h=async w=>{const x=Array.from(w.target.files||[]);if(x.length!==0){s(""),l(!0);try{for(let p=0;p {n(p=>p.map(v=>v.id===w.id?{...v,caption:x}:v))},f=(w,x)=>{n(p=>p.map(v=>v.id===w.id?{...v,sort_order:x}:v))},b=async w=>{await A.put(`/gallery-photos/${w.id}`,{caption:w.caption,sort_order:w.sort_order}),d()},y=async w=>{confirm("Foto wirklich entfernen?")&&(await A.delete(`/gallery-photos/${w}`),d())};return a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(W,{to:"/admin/gallery-projects",className:"text-brand-600 hover:underline",children:"← Zurück zu den Projekten"})}),a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Fotos im Projekt"}),a.jsxs("div",{className:"mb-6 rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Fotos hinzufügen (Mehrfachauswahl möglich)"}),a.jsx("input",{ref:c,type:"file",multiple:!0,accept:"image/png,image/jpeg,image/webp",onChange:h,disabled:i,className:"text-sm"}),i&&a.jsx("p",{className:"mt-2 text-sm text-neutral-500",children:o})]}),r&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:r}),a.jsxs("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:[t.map(w=>a.jsxs("div",{className:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("img",{src:w.image_path,alt:w.caption||"",className:"aspect-square w-full object-cover"}),a.jsxs("div",{className:"space-y-2 p-3",children:[a.jsx("input",{value:w.caption||"",onChange:x=>m(w,x.target.value),onBlur:()=>b(w),placeholder:"Bildunterschrift (optional)",className:"w-full rounded-md border border-neutral-300 bg-white px-2 py-1 text-xs dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("input",{type:"number",value:w.sort_order,onChange:x=>f(w,Number(x.target.value)),onBlur:()=>b(w),className:"w-16 rounded-md border border-neutral-300 bg-white px-2 py-1 text-xs dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{onClick:()=>y(w.id),className:"text-xs text-red-600 hover:underline",children:"Entfernen"})]})]})]},w.id)),t.length===0&&a.jsx("p",{className:"col-span-full py-6 text-center text-neutral-400",children:"Noch keine Fotos in diesem Projekt."})]})]})}const NP=["Base","Clear","Drive","Prime","Elite","Apex","The Statement","Limitless"],SP=e=>(e+1)*10,Ia="w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",Zu=e=>({description:e.description||"",markup_type:e.markup_type||"none",markup_value:e.markup_value||0,icon_name:e.icon_name||"",tagline:e.tagline||"",price_text:e.price_text||"",is_featured:!!e.is_featured,sort_order:e.sort_order??0}),CP=e=>({description:"",markup_type:"none",markup_value:0,icon_name:"",tagline:"",price_text:"",is_featured:!1,sort_order:SP(e)}),PP=["description","markup_type","markup_value","icon_name","tagline","price_text","is_featured","sort_order"],vo=e=>{if(!e.existing)return e.checked;const t=Zu(e.existing);return PP.some(n=>n==="is_featured"?!!t[n]!=!!e.form[n]:String(t[n])!==String(e.form[n]))},ss=(e,t)=>{const n=t.filter(l=>l.car_model_id===e).slice().sort((l,o)=>l.sort_order-o.sort_order||l.name.localeCompare(o.name)),r=new Set,s=NP.map((l,o)=>{const u=n.find(c=>!r.has(c.id)&&c.name.trim().toLowerCase()===l.toLowerCase());return u&&r.add(u.id),{key:`tier-${o}`,tierName:l,existing:u||null,checked:!!u,form:u?Zu(u):CP(o)}}),i=n.filter(l=>!r.has(l.id)).map(l=>({key:`legacy-${l.id}`,tierName:null,existing:l,checked:!0,form:Zu(l)}));return[...s,...i]},EP=e=>{e.target.style.height="auto",e.target.style.height=`${e.target.scrollHeight}px`};function TP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(""),[l,o]=g.useState(""),[u,c]=g.useState([]),[d,h]=g.useState({}),[m,f]=g.useState(!1),[b,y]=g.useState(null),[w,x]=g.useState(""),[p,v]=g.useState(!1),[k,j]=g.useState(null),[C,S]=g.useState("all"),[P,M]=g.useState("all"),N=async()=>{const[T,H]=await Promise.all([A.get("/packages"),A.get("/models")]);return t(T),r(H),T};g.useEffect(()=>{N()},[]);const E=g.useMemo(()=>new Map(n.map(T=>[T.id,T])),[n]),B=g.useMemo(()=>{const T=new Map;return n.forEach(H=>{T.has(H.brand_id)||T.set(H.brand_id,H.brand_name)}),Array.from(T,([H,Z])=>({id:H,name:Z})).sort((H,Z)=>H.name.localeCompare(Z.name))},[n]),O=g.useMemo(()=>n.filter(T=>!s||String(T.brand_id)===s).sort((T,H)=>T.name.localeCompare(H.name)),[n,s]),$=l?E.get(Number(l)):null,Y=g.useMemo(()=>u.some(vo),[u]),R=()=>!Y||confirm("Ungespeicherte Änderungen verwerfen?"),K=(T,H,Z=e)=>{i(String(T)),o(String(H)),c(ss(Number(H),Z)),h({}),y(null),x(""),j(null)},_=T=>{R()&&(i(T),o(""),c([]),h({}),y(null),j(null))},D=T=>{if(!R())return;if(!T){o(""),c([]);return}const H=E.get(Number(T));K(H?H.brand_id:s,T)},z=(T,H)=>c(Z=>Z.map(Fe=>Fe.key===T?{...Fe,checked:H}:Fe)),U=(T,H)=>c(Z=>Z.map(Fe=>Fe.key===T?{...Fe,form:{...Fe.form,...H}}:Fe)),q=T=>({name:T.tierName??T.existing.name,car_model_id:Number(l),...T.form,markup_value:Number(T.form.markup_value),sort_order:Number(T.form.sort_order)}),X=async()=>{f(!0),y(null);const T={},H=u;let Z=0,Fe=0;for(const qe of u)try{qe.existing?vo(qe)&&(await A.put(`/packages/${qe.existing.id}`,q(qe)),Fe+=1):qe.checked&&(await A.post("/packages",q(qe)),Z+=1)}catch(Kr){T[qe.key]=Kr.message}const fa=await N(),Nl=ss(Number(l),fa).map(qe=>{if(!T[qe.key])return qe;const Kr=H.find(Lb=>Lb.key===qe.key);return Kr?{...qe,checked:Kr.checked,form:Kr.form}:qe});c(Nl),h(T);const Gr=Object.keys(T).length,Zt=[];Z&&Zt.push(`${Z} neu angelegt`),Fe&&Zt.push(`${Fe} aktualisiert`),!Zt.length&&!Gr&&Zt.push("Keine Änderungen"),y(Gr?{kind:"error",text:`${Zt.join(", ")||"Nichts gespeichert"} – ${Gr} Paket(e) fehlgeschlagen (Details an der Zeile).`}:{kind:"ok",text:`${Zt.join(", ")}.`}),f(!1)},ee=async T=>{if(!confirm(`Paket "${T.tierName??T.existing.name}" inkl. aller Produkte wirklich löschen?`))return;await A.delete(`/packages/${T.existing.id}`);const H=await N();c(ss(Number(l),H)),y(null)},Ne=async T=>{if(!confirm("Paket inkl. aller Produkte wirklich löschen?"))return;await A.delete(`/packages/${T.id}`);const H=await N();l&&c(ss(Number(l),H))},de=async()=>{if(!w||!R())return;const T=E.get(Number(w)),H=E.get(Number(l));if(confirm(`Alle Pakete von "${T.brand_name} ${T.name}" inkl. verknüpfter Produkte nach "${H.brand_name} ${H.name}" kopieren? + `),()=>{var M;(M=o.current)==null||M.removeAttribute("data-motion-pop-id"),P.contains(S)&&P.removeChild(S)}},[t]),a.jsx(yS,{isPresent:t,childRef:o,sizeRef:u,pop:i,children:i===!1?e:g.cloneElement(e,{ref:h})})}const wS=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:s,presenceAffectsLayout:i,mode:l,anchorX:o,anchorY:u,root:c})=>{const d=wn(jS),h=g.useId(),m=g.useRef(n),f=g.useRef(r);sa(()=>{m.current=n,f.current=r});let b=!0,y=g.useMemo(()=>(b=!1,{id:h,initial:t,isPresent:n,custom:s,onExitComplete:w=>{d.set(w,!0);for(const x of d.values())if(!x)return;r&&r()},register:w=>(d.set(w,!1),()=>{var x;d.delete(w),!m.current&&!d.size&&((x=f.current)==null||x.call(f))})}),[n,d,r]);return i&&b&&(y={...y}),g.useMemo(()=>{d.forEach((w,x)=>d.set(x,!1))},[n]),g.useEffect(()=>{!n&&!d.size&&r&&r()},[n]),e=a.jsx(kS,{pop:l==="popLayout",isPresent:n,anchorX:o,anchorY:u,root:c,children:e}),a.jsx(ml.Provider,{value:y,children:e})};function jS(){return new Map}function Hx(e=!0){const t=g.useContext(ml);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:s}=t,i=g.useId();g.useEffect(()=>{if(e)return s(i)},[e]);const l=g.useCallback(()=>e&&r&&r(i),[i,r,e]);return!n&&r?[!1,l]:[!0]}const La=e=>e.key||"";function tf(e){const t=[];return g.Children.forEach(e,n=>{g.isValidElement(n)&&t.push(n)}),t}const NS=({children:e,custom:t,initial:n=!0,onExitComplete:r,presenceAffectsLayout:s=!0,mode:i="sync",propagate:l=!1,anchorX:o="left",anchorY:u="top",root:c})=>{const[d,h]=Hx(l),m=g.useMemo(()=>tf(e),[e]),f=l&&!d?[]:m.map(La),b=g.useRef(!0),y=g.useRef(m),w=wn(()=>new Map),x=g.useRef(new Set),[p,v]=g.useState(m),[k,j]=g.useState(m);sa(()=>{b.current=!1,y.current=m;for(let P=0;P {const M=La(P),E=l&&!d?!1:m===k||f.includes(M),N=()=>{if(x.current.has(M))return;if(w.has(M))x.current.add(M),w.set(M,!0);else return;let L=!0;w.forEach(U=>{U||(L=!1)}),L&&(S==null||S(),j(y.current),l&&(h==null||h()),r&&r())};return a.jsx(wS,{isPresent:E,initial:!b.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:i,root:c,onExitComplete:E?void 0:N,anchorX:o,anchorY:u,children:P},M)})})},$x=g.createContext({strict:!1}),nf={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let rf=!1;function SS(){if(rf)return;const e={};for(const t in nf)e[t]={isEnabled:n=>nf[t].some(r=>!!n[r])};kx(e),rf=!0}function Gx(){return SS(),oN()}function CS(e){const t=Gx();for(const n in e)t[n]={...t[n],...e[n]};kx(t)}const PS=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Wi(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||PS.has(e)}let Kx=e=>!Wi(e);function ES(e){typeof e=="function"&&(Kx=t=>t.startsWith("on")?!Wi(t):e(t))}try{ES(require("@emotion/is-prop-valid").default)}catch{}function TS(e,t,n){const r={};for(const s in e)s==="values"&&typeof e.values=="object"||ke(e[s])||(Kx(s)||n===!0&&Wi(s)||!t&&!Wi(s)||e.draggable&&s.startsWith("onDrag"))&&(r[s]=e[s]);return r}const xl=g.createContext({});function AS(e,t){if(gl(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Xs(n)?n:void 0,animate:Xs(r)?r:void 0}}return e.inherit!==!1?t:{}}function MS(e){const{initial:t,animate:n}=AS(e,g.useContext(xl));return g.useMemo(()=>({initial:t,animate:n}),[sf(t),sf(n)])}function sf(e){return Array.isArray(e)?e.join(" "):e}const Nd=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function qx(e,t,n){for(const r in t)!ke(t[r])&&!Ex(r,n)&&(e[r]=t[r])}function _S({transformTemplate:e},t){return g.useMemo(()=>{const n=Nd();return wd(n,t,e),Object.assign({},n.vars,n.style)},[t])}function LS(e,t){const n=e.style||{},r={};return qx(r,n,e),Object.assign(r,_S(e,t)),r}function DS(e,t){const n={},r=LS(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const Yx=()=>({...Nd(),attrs:{}});function BS(e,t,n,r){const s=g.useMemo(()=>{const i=Yx();return Tx(i,t,Mx(r),e.transformTemplate,e.style),{...i.attrs,style:{...i.style}}},[t]);if(e.style){const i={};qx(i,e.style,e),s.style={...i,...s.style}}return s}const zS=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Sd(e){return typeof e!="string"||e.includes("-")?!1:!!(zS.indexOf(e)>-1||/[A-Z]/u.test(e))}function RS(e,t,n,{latestValues:r},s,i=!1,l){const u=(l??Sd(e)?BS:DS)(t,r,s,e),c=TS(t,typeof e=="string",i),d=e!==g.Fragment?{...c,...u,ref:n}:{},{children:h}=t,m=g.useMemo(()=>ke(h)?h.get():h,[h]);return g.createElement(e,{...d,children:m})}function IS({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,s){return{latestValues:FS(n,r,s,e),renderState:t()}}function FS(e,t,n,r){const s={},i=r(e,{});for(const m in i)s[m]=ai(i[m]);let{initial:l,animate:o}=e;const u=gl(e),c=vx(e);t&&c&&!u&&e.inherit!==!1&&(l===void 0&&(l=t.initial),o===void 0&&(o=t.animate));let d=n?n.initial===!1:!1;d=d||l===!1;const h=d?o:l;if(h&&typeof h!="boolean"&&!pl(h)){const m=Array.isArray(h)?h:[h];for(let f=0;f (t,n)=>{const r=g.useContext(xl),s=g.useContext(ml),i=()=>IS(e,t,r,s);return n?i():wn(i)},VS=Xx({scrapeMotionValuesFromProps:jd,createRenderState:Nd}),OS=Xx({scrapeMotionValuesFromProps:_x,createRenderState:Yx}),US=Symbol.for("motionComponentSymbol");function WS(e,t,n){const r=g.useRef(n);g.useInsertionEffect(()=>{r.current=n});const s=g.useRef(null);return g.useCallback(i=>{var o;i&&((o=e.onMount)==null||o.call(e,i)),t&&(i?t.mount(i):t.unmount());const l=r.current;if(typeof l=="function")if(i){const u=l(i);typeof u=="function"&&(s.current=u)}else s.current?(s.current(),s.current=null):l(i);else l&&(l.current=i)},[t])}const Zx=g.createContext({});function Qn(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function HS(e,t,n,r,s,i){var v,k;const{visualElement:l}=g.useContext(xl),o=g.useContext($x),u=g.useContext(ml),c=g.useContext(oa),d=c.reducedMotion,h=c.skipAnimations,m=g.useRef(null),f=g.useRef(!1);r=r||o.renderer,!m.current&&r&&(m.current=r(e,{visualState:t,parent:l,props:n,presenceContext:u,blockInitialAnimation:u?u.initial===!1:!1,reducedMotionConfig:d,skipAnimations:h,isSVG:i}),f.current&&m.current&&(m.current.manuallyAnimateOnMount=!0));const b=m.current,y=g.useContext(Zx);b&&!b.projection&&s&&(b.type==="html"||b.type==="svg")&&$S(m.current,n,s,y);const w=g.useRef(!1);g.useInsertionEffect(()=>{b&&w.current&&b.update(n,u)});const x=n[ax],p=g.useRef(!!x&&typeof window<"u"&&!((v=window.MotionHandoffIsComplete)!=null&&v.call(window,x))&&((k=window.MotionHasOptimisedAnimation)==null?void 0:k.call(window,x)));return sa(()=>{f.current=!0,b&&(w.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),b.scheduleRenderMicrotask(),p.current&&b.animationState&&b.animationState.animateChanges())}),g.useEffect(()=>{b&&(!p.current&&b.animationState&&b.animationState.animateChanges(),p.current&&(queueMicrotask(()=>{var j;(j=window.MotionHandoffMarkAsComplete)==null||j.call(window,x)}),p.current=!1),b.enteringChildren=void 0)}),b}function $S(e,t,n,r){const{layoutId:s,layout:i,drag:l,dragConstraints:o,layoutScroll:u,layoutRoot:c,layoutAnchor:d,layoutCrossfade:h}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:Qx(e.parent)),e.projection.setOptions({layoutId:s,layout:i,alwaysMeasureLayout:!!l||o&&Qn(o),visualElement:e,animationType:typeof i=="string"?i:"both",initialPromotionConfig:r,crossfade:h,layoutScroll:u,layoutRoot:c,layoutAnchor:d})}function Qx(e){if(e)return e.options.allowProjection!==!1?e.projection:Qx(e.parent)}function co(e,{forwardMotionProps:t=!1,type:n}={},r,s){r&&CS(r);const i=n?n==="svg":Sd(e),l=i?OS:VS;function o(c,d){let h;const m={...g.useContext(oa),...c,layoutId:GS(c)},{isStatic:f}=m,b=MS(c),y=l(c,f);if(!f&&typeof window<"u"){KS();const w=qS(m);h=w.MeasureLayout,b.visualElement=HS(e,y,m,s,w.ProjectionNode,i)}return a.jsxs(xl.Provider,{value:b,children:[h&&b.visualElement?a.jsx(h,{visualElement:b.visualElement,...m}):null,RS(e,c,WS(y,b.visualElement,d),y,f,t,i)]})}o.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const u=g.forwardRef(o);return u[US]=e,u}function GS({layoutId:e}){const t=g.useContext(Xc).id;return t&&e!==void 0?t+"-"+e:e}function KS(e,t){g.useContext($x).strict}function qS(e){const t=Gx(),{drag:n,layout:r}=t;if(!n&&!r)return{};const s={...n,...r};return{MeasureLayout:n!=null&&n.isEnabled(e)||r!=null&&r.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function YS(e,t){if(typeof Proxy>"u")return co;const n=new Map,r=(i,l)=>co(i,l,e,t),s=(i,l)=>r(i,l);return new Proxy(s,{get:(i,l)=>l==="create"?r:(n.has(l)||n.set(l,co(l,void 0,e,t)),n.get(l))})}const XS=(e,t)=>t.isSVG??Sd(e)?new SN(t):new vN(t,{allowProjection:e!==g.Fragment});class ZS extends Pn{constructor(t){super(t),t.animationState||(t.animationState=AN(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();pl(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}}let QS=0;class JS extends Pn{constructor(){super(...arguments),this.id=QS++,this.isExitComplete=!1}update(){var i;if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;if(t&&r===!1){if(this.isExitComplete){const{initial:l,custom:o}=this.node.getProps();if(typeof l=="string"||typeof l=="object"&&l!==null&&!Array.isArray(l)){const u=On(this.node,l,o);if(u){const{transition:c,transitionEnd:d,...h}=u;for(const m in h)(i=this.node.getValue(m))==null||i.jump(h[m])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const e2={animation:{Feature:ZS},exit:{Feature:JS}};function ua(e){return{point:{x:e.pageX,y:e.pageY}}}const t2=e=>t=>bd(t)&&e(t,ua(t));function Ss(e,t,n,r){return Zs(e,t,t2(n),r)}const Jx=({current:e})=>e?e.ownerDocument.defaultView:null,af=(e,t)=>Math.abs(e-t);function n2(e,t){const n=af(e.x,t.x),r=af(e.y,t.y);return Math.sqrt(n**2+r**2)}const lf=new Set(["auto","scroll"]);class eb{constructor(t,n,{transformPagePoint:r,contextWindow:s=window,dragSnapToOrigin:i=!1,distanceThreshold:l=3,element:o}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=b=>{this.handleScroll(b.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=Da(this.lastRawMoveEventInfo,this.transformPagePoint));const b=ho(this.lastMoveEventInfo,this.history),y=this.startEvent!==null,w=n2(b.offset,{x:0,y:0})>=this.distanceThreshold;if(!y&&!w)return;const{point:x}=b,{timestamp:p}=we;this.history.push({...x,timestamp:p});const{onStart:v,onMove:k}=this.handlers;y||(v&&v(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),k&&k(this.lastMoveEvent,b)},this.handlePointerMove=(b,y)=>{this.lastMoveEvent=b,this.lastRawMoveEventInfo=y,this.lastMoveEventInfo=Da(y,this.transformPagePoint),Q.update(this.updatePoint,!0)},this.handlePointerUp=(b,y)=>{this.end();const{onEnd:w,onSessionEnd:x,resumeAnimation:p}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&p&&p(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const v=ho(b.type==="pointercancel"?this.lastMoveEventInfo:Da(y,this.transformPagePoint),this.history);this.startEvent&&w&&w(b,v),x&&x(b,v)},!bd(t))return;this.dragSnapToOrigin=i,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=l,this.contextWindow=s||window;const u=ua(t),c=Da(u,this.transformPagePoint),{point:d}=c,{timestamp:h}=we;this.history=[{...d,timestamp:h}];const{onSessionStart:m}=n;m&&m(t,ho(c,this.history));const f={passive:!0,capture:!0};this.removeListeners=aa(Ss(this.contextWindow,"pointermove",this.handlePointerMove,f),Ss(this.contextWindow,"pointerup",this.handlePointerUp,f),Ss(this.contextWindow,"pointercancel",this.handlePointerUp,f)),o&&this.startScrollTracking(o)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(lf.has(r.overflowX)||lf.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,s=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},i={x:s.x-n.x,y:s.y-n.y};i.x===0&&i.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=i.x,this.lastMoveEventInfo.point.y+=i.y):this.history.length>0&&(this.history[0].x-=i.x,this.history[0].y-=i.y),this.scrollPositions.set(t,s),Q.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),ht(this.updatePoint)}}function Da(e,t){return t?{point:t(e.point)}:e}function of(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ho({point:e},t){return{point:e,delta:of(e,tb(t)),offset:of(e,r2(t)),velocity:s2(t,.1)}}function r2(e){return e[0]}function tb(e){return e[e.length-1]}function s2(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const s=tb(e);for(;n>=0&&(r=e[n],!(s.timestamp-r.timestamp>Je(t)));)n--;if(!r)return{x:0,y:0};r===e[0]&&e.length>2&&s.timestamp-r.timestamp>Je(t)*2&&(r=e[1]);const i=ot(s.timestamp-r.timestamp);if(i===0)return{x:0,y:0};const l={x:(s.x-r.x)/i,y:(s.y-r.y)/i};return l.x===1/0&&(l.x=0),l.y===1/0&&(l.y=0),l}function a2(e,{min:t,max:n},r){return t!==void 0&&e n&&(e=r?re(n,e,r.max):Math.min(e,n)),e}function uf(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function i2(e,{top:t,left:n,bottom:r,right:s}){return{x:uf(e.x,n,s),y:uf(e.y,t,r)}}function cf(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min r?n=Tr(t.min,t.max-r,e.min):r>s&&(n=Tr(e.min,e.max-s,t.min)),St(0,1,n)}function u2(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const qu=.35;function c2(e=qu){return e===!1?e=0:e===!0&&(e=qu),{x:df(e,"left","right"),y:df(e,"top","bottom")}}function df(e,t,n){return{min:hf(e,t),max:hf(e,n)}}function hf(e,t){return typeof e=="number"?e:e[t]||0}const d2=new WeakMap;class h2{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=be(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const i=h=>{n&&this.snapToCursor(ua(h).point),this.stopAnimation()},l=(h,m)=>{const{drag:f,dragPropagation:b,onDragStart:y}=this.getProps();if(f&&!b&&(this.openDragLock&&this.openDragLock(),this.openDragLock=zj(f),!this.openDragLock))return;this.latestPointerEvent=h,this.latestPanInfo=m,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Et(x=>{let p=this.getAxisMotionValue(x).get()||0;if(Lt.test(p)){const{projection:v}=this.visualElement;if(v&&v.layout){const k=v.layout.layoutBox[x];k&&(p=ze(k)*(parseFloat(p)/100))}}this.originPoint[x]=p}),y&&Q.update(()=>y(h,m),!1,!0),Ru(this.visualElement,"transform");const{animationState:w}=this.visualElement;w&&w.setActive("whileDrag",!0)},o=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m;const{dragPropagation:f,dragDirectionLock:b,onDirectionLock:y,onDrag:w}=this.getProps();if(!f&&!this.openDragLock)return;const{offset:x}=m;if(b&&this.currentDirection===null){this.currentDirection=f2(x),this.currentDirection!==null&&y&&y(this.currentDirection);return}this.updateAxis("x",m.point,x),this.updateAxis("y",m.point,x),this.visualElement.render(),w&&Q.update(()=>w(h,m),!1,!0)},u=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m,this.stop(h,m),this.latestPointerEvent=null,this.latestPanInfo=null},c=()=>{const{dragSnapToOrigin:h}=this.getProps();(h||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new eb(t,{onSessionStart:i,onStart:l,onMove:o,onSessionEnd:u,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:r,contextWindow:Jx(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,s=n||this.latestPanInfo,i=this.isDragging;if(this.cancel(),!i||!s||!r)return;const{velocity:l}=s;this.startAnimation(l);const{onDragEnd:o}=this.getProps();o&&Q.postRender(()=>o(r,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:s}=this.getProps();if(!r||!Ba(t,s,this.currentDirection))return;const i=this.getAxisMotionValue(t);let l=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(l=a2(l,this.constraints[t],this.elastic[t])),i.set(l)}resolveConstraints(){var i;const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(i=this.visualElement.projection)==null?void 0:i.layout,s=this.constraints;t&&Qn(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=i2(r.layoutBox,t):this.constraints=!1,this.elastic=c2(n),s!==this.constraints&&!Qn(t)&&r&&this.constraints&&!this.hasMutatedConstraints&&Et(l=>{this.constraints!==!1&&this.getAxisMotionValue(l)&&(this.constraints[l]=u2(r.layoutBox[l],this.constraints[l]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Qn(t))return!1;const r=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;s.root&&(s.root.scroll=void 0,s.root.updateScroll());const i=mN(r,s.root,this.visualElement.getTransformPagePoint());let l=l2(s.layout.layoutBox,i);if(n){const o=n(cN(l));this.hasMutatedConstraints=!!o,o&&(l=jx(o))}return l}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:s,dragTransition:i,dragSnapToOrigin:l,onDragTransitionEnd:o}=this.getProps(),u=this.constraints||{},c=Et(d=>{if(!Ba(d,n,this.currentDirection))return;let h=u&&u[d]||{};(l===!0||l===d)&&(h={min:0,max:0});const m=s?200:1e6,f=s?40:1e7,b={type:"inertia",velocity:r?t[d]:0,bounceStiffness:m,bounceDamping:f,timeConstant:750,restDelta:1,restSpeed:10,...i,...h};return this.startAxisValueAnimation(d,b)});return Promise.all(c).then(o)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return Ru(this.visualElement,t),r.start(fd(t,r,0,n,this.visualElement,!1))}stopAnimation(){Et(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,s=this.visualElement.getProps()[n];return s||this.visualElement.getValue(t,this.visualElement.latestValues[t]??0)}snapToCursor(t){Et(n=>{const{drag:r}=this.getProps();if(!Ba(n,r,this.currentDirection))return;const{projection:s}=this.visualElement,i=this.getAxisMotionValue(n);if(s&&s.layout){const{min:l,max:o}=s.layout.layoutBox[n],u=i.get()||0;i.set(t[n]-re(l,o,.5)+u)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Qn(n)||!r||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};Et(l=>{const o=this.getAxisMotionValue(l);if(o&&this.constraints!==!1){const u=o.get();s[l]=o2({min:u,max:u},this.constraints[l])}});const{transformTemplate:i}=this.visualElement.getProps();this.visualElement.current.style.transform=i?i({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),Et(l=>{if(!Ba(l,t,null))return;const o=this.getAxisMotionValue(l),{min:u,max:c}=this.constraints[l];o.set(re(u,c,s[l]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;d2.set(this.visualElement,this);const t=this.visualElement.current,n=Ss(t,"pointerdown",c=>{const{drag:d,dragListener:h=!0}=this.getProps(),m=c.target,f=m!==t&&Uj(m);d&&h&&!f&&this.start(c)});let r;const s=()=>{const{dragConstraints:c}=this.getProps();Qn(c)&&c.current&&(this.constraints=this.resolveRefConstraints(),r||(r=m2(t,c.current,()=>this.scalePositionWithinConstraints())))},{projection:i}=this.visualElement,l=i.addEventListener("measure",s);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),Q.read(s);const o=Zs(window,"resize",()=>this.scalePositionWithinConstraints()),u=i.addEventListener("didUpdate",({delta:c,hasLayoutChanged:d})=>{this.isDragging&&d&&(Et(h=>{const m=this.getAxisMotionValue(h);m&&(this.originPoint[h]+=c[h].translate,m.set(m.get()+c[h].translate))}),this.visualElement.render())});return()=>{o(),n(),l(),u&&u(),r&&r()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:s=!1,dragConstraints:i=!1,dragElastic:l=qu,dragMomentum:o=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:s,dragConstraints:i,dragElastic:l,dragMomentum:o}}}function mf(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function m2(e,t,n){const r=Uu(e,mf(n)),s=Uu(t,mf(n));return()=>{r(),s()}}function Ba(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function f2(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class p2 extends Pn{constructor(t){super(t),this.removeGroupControls=Ke,this.removeListeners=Ke,this.controls=new h2(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Ke}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const mo=e=>(t,n)=>{e&&Q.update(()=>e(t,n),!1,!0)};class g2 extends Pn{constructor(){super(...arguments),this.removePointerDownListener=Ke}onPointerDown(t){this.session=new eb(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Jx(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:s}=this.node.getProps();return{onSessionStart:mo(t),onStart:mo(n),onMove:mo(r),onEnd:(i,l)=>{delete this.session,s&&Q.postRender(()=>s(i,l))}}}mount(){this.removePointerDownListener=Ss(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let fo=!1;class x2 extends g.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:s}=this.props,{projection:i}=t;i&&(n.group&&n.group.add(i),r&&r.register&&s&&r.register(i),fo&&i.root.didUpdate(),i.addEventListener("animationComplete",()=>{this.safeToRemove()}),i.setOptions({...i.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),ii.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:s,isPresent:i}=this.props,{projection:l}=r;return l&&(l.isPresent=i,t.layoutDependency!==n&&l.setOptions({...l.options,layoutDependency:n}),fo=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==i?l.willUpdate():this.safeToRemove(),t.isPresent!==i&&(i?l.promote():l.relegate()||Q.postRender(()=>{const o=l.getStack();(!o||!o.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:r}=t;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),Mr.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:s}=t;fo=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),r&&r.deregister&&r.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function nb(e){const[t,n]=Hx(),r=g.useContext(Xc);return a.jsx(x2,{...e,layoutGroup:r,switchLayoutGroup:g.useContext(Zx),isPresent:t,safeToRemove:n})}const b2={pan:{Feature:g2},drag:{Feature:p2,ProjectionNode:Wx,MeasureLayout:nb}};function ff(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,i=r[s];i&&Q.postRender(()=>i(t,ua(t)))}class v2 extends Pn{mount(){const{current:t}=this.node;t&&(this.unmount=Ij(t,(n,r)=>(ff(this.node,r,"Start"),s=>ff(this.node,s,"End"))))}unmount(){}}class y2 extends Pn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=aa(Zs(this.node.current,"focus",()=>this.onFocus()),Zs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function pf(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),i=r[s];i&&Q.postRender(()=>i(t,ua(t)))}class k2 extends Pn{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=Hj(t,(s,i)=>(pf(this.node,i,"Start"),(l,{success:o})=>pf(this.node,l,o?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:(r==null?void 0:r.tap)===!1})}unmount(){}}const Yu=new WeakMap,po=new WeakMap,w2=e=>{const t=Yu.get(e.target);t&&t(e)},j2=e=>{e.forEach(w2)};function N2({root:e,...t}){const n=e||document;po.has(n)||po.set(n,{});const r=po.get(n),s=JSON.stringify(t);return r[s]||(r[s]=new IntersectionObserver(j2,{root:e,...t})),r[s]}function S2(e,t,n){const r=N2(t);return Yu.set(e,n),r.observe(e),()=>{Yu.delete(e),r.unobserve(e)}}const C2={some:0,all:1};class P2 extends Pn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var u;(u=this.stopObserver)==null||u.call(this);const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:s="some",once:i}=t,l={root:n?n.current:void 0,rootMargin:r,threshold:typeof s=="number"?s:C2[s]},o=c=>{const{isIntersecting:d}=c;if(this.isInView===d||(this.isInView=d,i&&!d&&this.hasEnteredView))return;d&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",d);const{onViewportEnter:h,onViewportLeave:m}=this.node.getProps(),f=d?h:m;f&&f(c)};this.stopObserver=S2(this.node.current,l,o)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(E2(t,n))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}}function E2({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const T2={inView:{Feature:P2},tap:{Feature:k2},focus:{Feature:y2},hover:{Feature:v2}},A2={layout:{ProjectionNode:Wx,MeasureLayout:nb}},M2={...e2,...T2,...b2,...A2},Wt=YS(M2,XS);function Hi(e){return typeof window>"u"?!1:e?qg():hd()}const _2=50,gf=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),L2=()=>({time:0,x:gf(),y:gf()}),D2={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function xf(e,t,n,r){const s=n[t],{length:i,position:l}=D2[t],o=s.current,u=n.time;s.current=Math.abs(e[`scroll${l}`]),s.scrollLength=e[`scroll${i}`]-e[`client${i}`],s.offset.length=0,s.offset[0]=0,s.offset[1]=s.scrollLength,s.progress=Tr(0,s.scrollLength,s.current);const c=r-u;s.velocity=c>_2?0:ed(s.current-o,c)}function B2(e,t,n){xf(e,"x",t,n),xf(e,"y",t,n),t.time=n}function z2(e,t){const n={x:0,y:0};let r=e;for(;r&&r!==t;)if(js(r))n.x+=r.offsetLeft,n.y+=r.offsetTop,r=r.offsetParent;else if(r.tagName==="svg"){const s=r.getBoundingClientRect();r=r.parentElement;const i=r.getBoundingClientRect();n.x+=s.left-i.left,n.y+=s.top-i.top}else if(r instanceof SVGGraphicsElement){const{x:s,y:i}=r.getBBox();n.x+=s,n.y+=i;let l=null,o=r.parentNode;for(;!l;)o.tagName==="svg"&&(l=o),o=r.parentNode;r=l}else break;return n}const Xu={start:0,center:.5,end:1};function bf(e,t,n=0){let r=0;if(e in Xu&&(e=Xu[e]),typeof e=="string"){const s=parseFloat(e);e.endsWith("px")?r=s:e.endsWith("%")?e=s/100:e.endsWith("vw")?r=s/100*document.documentElement.clientWidth:e.endsWith("vh")?r=s/100*document.documentElement.clientHeight:e=s}return typeof e=="number"&&(r=t*e),n+r}const R2=[0,0];function I2(e,t,n,r){let s=Array.isArray(e)?e:R2,i=0,l=0;return typeof e=="number"?s=[e,e]:typeof e=="string"&&(e=e.trim(),e.includes(" ")?s=e.split(" "):s=[e,Xu[e]?e:"0"]),i=bf(s[0],n,r),l=bf(s[1],t),i-l}const cs={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},F2={x:0,y:0};function V2(e){return"getBBox"in e&&e.tagName!=="svg"?e.getBBox():{width:e.clientWidth,height:e.clientHeight}}function O2(e,t,n){const{offset:r=cs.All}=n,{target:s=e,axis:i="y"}=n,l=i==="y"?"height":"width",o=s!==e?z2(s,e):F2,u=s===e?{width:e.scrollWidth,height:e.scrollHeight}:V2(s),c={width:e.clientWidth,height:e.clientHeight};t[i].offset.length=0;let d=!t[i].interpolate;const h=r.length;for(let m=0;m {U2(e,r.target,n),B2(e,n,s),(r.offset||r.target)&&O2(e,n,r)},notify:()=>t(n)}}const Zn=new WeakMap,vf=new WeakMap,go=new WeakMap,yf=new WeakMap,za=new WeakMap,kf=e=>e===document.scrollingElement?window:e;function rb(e,{container:t=document.scrollingElement,trackContentSize:n=!1,...r}={}){if(!t)return Ke;let s=go.get(t);s||(s=new Set,go.set(t,s));const i=L2(),l=W2(t,e,i,r);if(s.add(l),!Zn.has(t)){const u=()=>{for(const m of s)m.measure(we.timestamp);Q.preUpdate(c)},c=()=>{for(const m of s)m.notify()},d=()=>Q.read(u);Zn.set(t,d);const h=kf(t);window.addEventListener("resize",d),t!==document.documentElement&&vf.set(t,Uu(t,d)),h.addEventListener("scroll",d),d()}if(n&&!za.has(t)){const u=Zn.get(t),c={width:t.scrollWidth,height:t.scrollHeight};yf.set(t,c);const d=()=>{const m=t.scrollWidth,f=t.scrollHeight;(c.width!==m||c.height!==f)&&(u(),c.width=m,c.height=f)},h=Q.read(d,!0);za.set(t,h)}const o=Zn.get(t);return Q.read(o,!1,!0),()=>{var h;ht(o);const u=go.get(t);if(!u||(u.delete(l),u.size))return;const c=Zn.get(t);Zn.delete(t),c&&(kf(t).removeEventListener("scroll",c),(h=vf.get(t))==null||h(),window.removeEventListener("resize",c));const d=za.get(t);d&&(ht(d),za.delete(t)),yf.delete(t)}}const H2=[[cs.Enter,"entry"],[cs.Exit,"exit"],[cs.Any,"cover"],[cs.All,"contain"]],wf={start:0,end:1};function $2(e){const t=e.trim().split(/\s+/);if(t.length!==2)return;const n=wf[t[0]],r=wf[t[1]];if(!(n===void 0||r===void 0))return[n,r]}function G2(e){if(e.length!==2)return;const t=[];for(const n of e)if(Array.isArray(n))t.push(n);else if(typeof n=="string"){const r=$2(n);if(!r)return;t.push(r)}else return;return t}function K2(e,t){const n=G2(e);if(!n)return!1;for(let r=0;r<2;r++){const s=n[r],i=t[r];if(s[0]!==i[0]||s[1]!==i[1])return!1}return!0}function Cd(e){if(!e)return{rangeStart:"contain 0%",rangeEnd:"contain 100%"};for(const[t,n]of H2)if(K2(e,t))return{rangeStart:`${n} 0%`,rangeEnd:`${n} 100%`}}const jf=new Map;function Nf(e){const t={value:0},n=rb(r=>{t.value=r[e.axis].progress*100},e);return{currentTime:t,cancel:n}}function sb({source:e,container:t,...n}){const{axis:r}=n;e&&(t=e);let s=jf.get(t);s||(s=new Map,jf.set(t,s));const i=n.target??"self";let l=s.get(i);l||(l={},s.set(i,l));const o=r+(n.offset??[]).join(",");return l[o]||(n.target&&Hi(n.target)?Cd(n.offset)?l[o]=new ViewTimeline({subject:n.target,axis:r}):l[o]=Nf({container:t,...n}):Hi()?l[o]=new ScrollTimeline({source:t,axis:r}):l[o]=Nf({container:t,...n})),l[o]}function q2(e,t){const n=sb(t),r=t.target?Cd(t.offset):void 0,s=t.target?Hi(t.target)&&!!r:Hi();return e.attachTimeline({timeline:s?n:void 0,...r&&s&&{rangeStart:r.rangeStart,rangeEnd:r.rangeEnd},observe:i=>(i.pause(),bx(l=>{i.time=i.iterationDuration*l},n))})}function Y2(e){return e&&(e.target||e.offset)}function X2(e){return e.length===2}function Z2(e,t){return X2(e)||Y2(t)?rb(n=>{e(n[t.axis].progress,n)},t):bx(e,sb(t))}function ab(e,{axis:t="y",container:n=document.scrollingElement,...r}={}){if(!n)return Ke;const s={axis:t,container:n,...r};return typeof e=="function"?Z2(e,s):q2(e,s)}const Q2=()=>({scrollX:yt(0),scrollY:yt(0),scrollXProgress:yt(0),scrollYProgress:yt(0)}),fr=e=>e?!e.current:!1;function Sf(e,t,n,r){return{factory:s=>{let i;const l=()=>{if(fr(n)||fr(r)){Mr.read(l);return}i=ab(s,{...t,axis:e,container:(n==null?void 0:n.current)||void 0,target:(r==null?void 0:r.current)||void 0})};return Mr.read(l),()=>{mx(l),i==null||i()}},times:[0,1],keyframes:[0,1],ease:s=>s,duration:1}}function J2(e,t){return typeof window>"u"?!1:e?qg()&&!!Cd(t):hd()}function ib({container:e,target:t,...n}={}){const r=wn(Q2);J2(t,n.offset)&&(r.scrollXProgress.accelerate=Sf("x",n,e,t),r.scrollYProgress.accelerate=Sf("y",n,e,t));const s=g.useRef(null),i=g.useRef(!1),l=g.useCallback(()=>(s.current=ab((o,{x:u,y:c})=>{r.scrollX.set(u.current),r.scrollXProgress.set(u.progress),r.scrollY.set(c.current),r.scrollYProgress.set(c.progress)},{...n,container:(e==null?void 0:e.current)||void 0,target:(t==null?void 0:t.current)||void 0}),()=>{var o;(o=s.current)==null||o.call(s)}),[e,t,JSON.stringify(n.offset)]);return sa(()=>{if(i.current=!1,fr(e)||fr(t)){i.current=!0;return}else return l()},[l]),g.useEffect(()=>{if(!i.current)return;let o;const u=()=>{const c=fr(e),d=fr(t);!c&&!d&&(o=l())};return Mr.read(u),()=>{mx(u),o==null||o()}},[l]),r}function lb(e){const t=wn(()=>yt(e)),{isStatic:n}=g.useContext(oa);if(n){const[,r]=g.useState(e);g.useEffect(()=>t.on("change",r),[])}return t}function ob(e,t){const n=lb(t()),r=()=>n.set(t());return r(),sa(()=>{const s=()=>Q.preRender(r,!1,!0),i=e.map(l=>l.on("change",s));return()=>{i.forEach(l=>l()),ht(r)}}),n}function eC(e){ws.current=[],e();const t=ob(ws.current,e);return ws.current=void 0,t}function nn(e,t,n,r){if(typeof e=="function")return eC(e);if(n!==void 0&&!Array.isArray(n)&&typeof t!="function")return tC(e,t,n,r);const l=typeof t=="function"?t:eN(t,n,r),o=Array.isArray(e)?Cf(e,l):Cf([e],([c])=>l(c)),u=Array.isArray(e)?void 0:e.accelerate;return u&&!u.isTransformed&&typeof t!="function"&&Array.isArray(n)&&(r==null?void 0:r.clamp)!==!1&&(o.accelerate={...u,times:t,keyframes:n,isTransformed:!0}),o}function Cf(e,t){const n=wn(()=>[]);return ob(e,()=>{n.length=0;const r=e.length;for(let s=0;s Object.keys(n)),i=wn(()=>({}));for(const l of s)i[l]=nn(e,t,n[l],r);return i}function nC(e,t={}){const{isStatic:n}=g.useContext(oa),r=()=>ke(e)?e.get():e;if(n)return nn(r);const s=lb(r());return g.useInsertionEffect(()=>tN(s,e,t),[s,JSON.stringify(t)]),s}function rC(e,t={}){return nC(e,{type:"spring",...t})}function sC(){const{scrollYProgress:e}=ib(),t=rC(e,{stiffness:200,damping:30,restDelta:.001});return a.jsx(Wt.div,{style:{scaleX:t},className:"fixed left-0 top-0 z-40 h-0.5 w-full origin-left bg-brand-500"})}const aC=()=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",className:"h-10 w-10",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.7 6.3a4 4 0 0 0-5.5 4.5L3 17l2 2 6.2-6.2a4 4 0 0 0 4.5-5.5l-2.6 2.6-2-2 2.6-2.6Z"})});function ca({message:e,fullScreen:t=!1}){const{t:n}=Te(),r=a.jsxs("div",{className:"mx-auto max-w-md text-center",children:[a.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(aC,{})}),a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:n("maintenance.title")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:e||n("maintenance.defaultMessage")})]});return t?a.jsx("div",{className:"flex min-h-screen items-center justify-center bg-white px-4 dark:bg-neutral-950",children:r}):a.jsx("div",{className:"mx-auto max-w-6xl px-4 py-20 sm:px-6",children:r})}const Pf=a.jsx(a.Fragment,{children:'Wartungsmodus aktiv – Besucher sehen aktuell eine Wartungsmeldung. Du siehst diese Seite nur, weil du die Berechtigung "Wartungsmodus umgehen" hast.'});function da({inline:e=!1}){return e?a.jsx("div",{className:"mb-8 rounded-lg bg-amber-500 px-4 py-2 text-center text-xs font-semibold text-white",children:Pf}):a.jsx("div",{className:"bg-amber-500 px-4 py-2 text-center text-xs font-semibold text-white",children:Pf})}function iC({onClose:e}){const{consent:t,saveCustom:n}=Or(),[r,s]=g.useState(t.external),[i,l]=g.useState(t.analytics),{t:o}=Te();return a.jsx("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50 p-4",onClick:e,children:a.jsxs("div",{className:"w-full max-w-md rounded-xl bg-white p-6 dark:bg-neutral-900",onClick:u=>u.stopPropagation(),children:[a.jsx("h2",{className:"mb-1 text-lg font-bold text-neutral-900 dark:text-white",children:o("cookieConsent.modalTitle")}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-600 dark:text-neutral-300",children:[o("cookieConsent.modalIntro")," ",a.jsx(H,{to:"/datenschutz",className:"underline hover:text-brand-500",onClick:e,children:o("cookieConsent.privacyPolicy")}),"."]}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.necessaryTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.necessaryDesc")})]}),a.jsx("input",{type:"checkbox",checked:!0,disabled:!0,className:"mt-1 h-4 w-4 shrink-0"})]}),a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.externalTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.externalDesc")})]}),a.jsx("input",{type:"checkbox",checked:r,onChange:u=>s(u.target.checked),className:"mt-1 h-4 w-4 shrink-0"})]}),a.jsxs("div",{className:"flex items-start justify-between gap-3 rounded-lg border border-neutral-200 p-3 dark:border-neutral-700",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-neutral-800 dark:text-neutral-100",children:o("cookieConsent.analyticsTitle")}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:o("cookieConsent.analyticsDesc")})]}),a.jsx("input",{type:"checkbox",checked:i,onChange:u=>l(u.target.checked),className:"mt-1 h-4 w-4 shrink-0"})]})]}),a.jsxs("div",{className:"mt-5 flex justify-end gap-2",children:[a.jsx("button",{type:"button",onClick:e,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:o("cookieConsent.cancel")}),a.jsx("button",{type:"button",onClick:()=>n({external:r,analytics:i}),className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:o("cookieConsent.saveSelection")})]})]})})}function lC(){const{decided:e,settingsOpen:t,acceptAll:n,rejectNonEssential:r,openSettings:s,closeSettings:i}=Or(),{t:l}=Te();return a.jsxs(a.Fragment,{children:[!e&&a.jsx("div",{className:"fixed inset-x-0 bottom-0 z-50 border-t border-neutral-200 bg-white/95 p-4 shadow-lg backdrop-blur dark:border-neutral-800 dark:bg-neutral-900/95 sm:p-5",children:a.jsxs("div",{className:"mx-auto flex max-w-6xl flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsxs("p",{className:"text-sm text-neutral-600 dark:text-neutral-300",children:[l("cookieConsent.bannerText")," ",l("cookieConsent.moreInfo")," ",a.jsx(H,{to:"/datenschutz",className:"underline hover:text-brand-500",children:l("cookieConsent.privacyPolicy")}),"."]}),a.jsxs("div",{className:"flex flex-wrap gap-2 sm:shrink-0",children:[a.jsx("button",{type:"button",onClick:s,className:"rounded-md border border-neutral-300 px-3 py-2 text-sm dark:border-neutral-700",children:l("cookieConsent.settings")}),a.jsx("button",{type:"button",onClick:r,className:"rounded-md border border-neutral-300 px-3 py-2 text-sm dark:border-neutral-700",children:l("cookieConsent.onlyNecessary")}),a.jsx("button",{type:"button",onClick:n,className:"rounded-md bg-brand-500 px-3 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l("cookieConsent.acceptAll")})]})]})}),t&&a.jsx(iC,{onClose:i})]})}function oC(){const{consent:e}=Or(),{ga_measurement_id:t}=Vr(),n=g.useRef(!1);return g.useEffect(()=>{if(!t||!e.analytics||n.current)return;n.current=!0;const r=document.createElement("script");r.src=`https://www.googletagmanager.com/gtag/js?id=${t}`,r.async=!0,document.head.appendChild(r),window.dataLayer=window.dataLayer||[];function s(...i){window.dataLayer.push(i)}window.gtag=s,s("js",new Date),s("config",t,{anonymize_ip:!0})},[t,e.analytics]),null}const ub=g.createContext({global:{enabled:!1,message:null},services:{enabled:!1,message:null},vehicles:{enabled:!1,message:null},bypass:!1}),uC=ub.Provider;function bl(){return g.useContext(ub)}const cC={global:{enabled:!1,message:null},services:{enabled:!1,message:null},vehicles:{enabled:!1,message:null}},dC={phone:"09373 20 62 390",whatsapp:null,contact_email:"info@hifi-planet-amorbach.de",hero_image_path:null,ga_measurement_id:null,package_card_theme:"graphite",package_card_layout:"strip",package_wheel_hint_interval:8},hC=["/impressum","/datenschutz","/agb"];function mC(){const[e,t]=g.useState(null),[n,r]=g.useState(dC),{loading:s,hasPermission:i}=Bt(),l=mt();if(g.useEffect(()=>{A.get("/maintenance").then(t).catch(()=>t(cC)),A.get("/site-settings").then(r).catch(()=>{})},[]),e===null||s)return a.jsx("div",{className:"min-h-screen bg-white dark:bg-neutral-950"});const o=i("maintenance.bypass"),u=hC.includes(l.pathname);return e.global.enabled&&!o&&!u?a.jsx(Yh,{children:a.jsx(ca,{message:e.global.message,fullScreen:!0})}):a.jsx(Yh,{children:a.jsx(uC,{value:{...e,bypass:o},children:a.jsx(ww,{value:n,children:a.jsxs("div",{className:"page-texture flex min-h-screen flex-col text-neutral-900 dark:text-neutral-100",children:[o&&e.global.enabled&&a.jsx(da,{}),a.jsx(sC,{}),a.jsx(Ew,{}),a.jsx("main",{className:"flex-1",children:a.jsx(hl,{})}),a.jsx(Dw,{}),a.jsx(lC,{}),a.jsx(oC,{})]})})})})}const fC={home:"M3 11.5 12 4l9 7.5M5 10v9a1 1 0 0 0 1 1h4v-6h4v6h4a1 1 0 0 0 1-1v-9",tag:"M4 4h7l9 9-7 7-9-9V4Zm3.5 3.5h.01",car:"M3 13.5 4.5 9A2 2 0 0 1 6.4 7.5h11.2A2 2 0 0 1 19.5 9L21 13.5M3 13.5v4a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-4M3 13.5h18M6.5 16.5h.01M17.5 16.5h.01",box:"M12 3 4 7.5v9L12 21l8-4.5v-9L12 3Zm0 9 8-4.5M12 12v9M12 12 4 7.5",mail:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm0 0 8 7 8-7",users:"M16 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm-4 6c-4 0-7 2-7 4.5V19h14v-1.5C19 15 16 13 12 13Z",shield:"M12 3 4 6v6c0 4.5 3.4 7.7 8 9 4.6-1.3 8-4.5 8-9V6l-8-3Zm-1.5 9.5 4-4 1 1-5 5-2.5-2.5 1-1 1.5 1.5Z",lock:"M6 10V8a6 6 0 1 1 12 0v2m-13 0h14a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1Zm7 5v2",briefcase:"M4 7h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1Zm4 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18",sliders:"M4 6h16M4 6a2 2 0 1 0 4 0 2 2 0 0 0-4 0Zm16 6H4m10 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0ZM4 18h16m-12 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0Z",image:"M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm2 12 4.5-5.5L14 16l2.5-3L20 17H6ZM8 9.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z",help:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-5.5v.01M9.5 9.25a2.5 2.5 0 1 1 3.5 2.29c-.7.32-1 .77-1 1.46v.3"},pC=({path:e})=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:"h-5 w-5 shrink-0",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:e})});function gC(){const{logout:e,user:t,hasPermission:n}=Bt(),r=ra(),[s,i]=g.useState(!1),[l,o]=g.useState(0);g.useEffect(()=>{n("contact.manage")&&A.get("/contact").then(m=>o(m.filter(f=>f.status==="new").length)).catch(()=>{})},[]);const u=[{title:null,links:[{to:"/admin",label:"Dashboard",icon:"home",end:!0},{to:"/admin/account",label:"Mein Konto",icon:"lock"}]},{title:"Fahrzeug-Katalog",links:[{to:"/admin/brands",label:"Marken",icon:"tag",permission:"brands.manage"},{to:"/admin/models",label:"Modelle",icon:"car",permission:"models.manage"},{to:"/admin/packages",label:"Pakete",icon:"box",permission:"packages.manage"}]},{title:"Website",links:[{to:"/admin/services",label:"Leistungen",icon:"briefcase",permission:"services.manage"},{to:"/admin/faqs",label:"FAQ",icon:"help",permission:"content.manage"}]},{title:"Bildergalerie",links:[{to:"/admin/gallery-brands",label:"Marken",icon:"tag",permission:"gallery.manage"},{to:"/admin/gallery-projects",label:"Projekte",icon:"image",permission:"gallery.manage"}]},{title:"Kunden",links:[{to:"/admin/contact-requests",label:"Kontaktanfragen",icon:"mail",permission:"contact.manage",badge:l}]},{title:"Verwaltung",links:[{to:"/admin/users",label:"Benutzer",icon:"users",permission:"users.manage"},{to:"/admin/permission-groups",label:"Berechtigungsgruppen",icon:"shield",permission:"permission_groups.manage"},{to:"/admin/settings",label:"Einstellungen",icon:"sliders",permission:"settings.manage"}]}].map(m=>({...m,links:m.links.filter(f=>!f.permission||n(f.permission))})).filter(m=>m.links.length>0),c=async()=>{await e(),r("/admin/login")},d=({isActive:m})=>`flex items-center justify-between gap-2 rounded-md px-3 py-2 text-sm font-medium transition ${m?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,h=({onNavigate:m})=>a.jsx("nav",{className:"space-y-5",children:u.map((f,b)=>a.jsxs("div",{children:[f.title&&a.jsx("p",{className:"mb-1.5 px-3 text-xs font-semibold uppercase tracking-wide text-neutral-400 dark:text-neutral-500",children:f.title}),a.jsx("div",{className:"space-y-1",children:f.links.map(y=>a.jsxs(ug,{to:y.to,end:y.end,className:d,onClick:m,children:[a.jsxs("span",{className:"flex items-center gap-2.5",children:[a.jsx(pC,{path:fC[y.icon]}),y.label]}),!!y.badge&&a.jsx("span",{className:"rounded-full bg-red-500 px-2 py-0.5 text-xs font-bold text-white",children:y.badge})]},y.to))})]},b))});return a.jsxs("div",{className:"flex min-h-screen bg-neutral-50 text-neutral-900 dark:bg-neutral-950 dark:text-neutral-100",children:[a.jsxs("aside",{className:"hidden w-60 shrink-0 border-r border-neutral-200 p-4 dark:border-neutral-800 sm:block",children:[a.jsxs("div",{className:"mb-6 flex items-center gap-2 px-3",children:[a.jsxs("span",{className:"rounded-lg px-2 py-1",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-7 w-auto dark:hidden"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-7 w-auto dark:block"})]}),a.jsx("span",{className:"text-sm font-semibold text-neutral-500 dark:text-neutral-400",children:"Admin"})]}),a.jsx(h,{})]}),a.jsxs("div",{className:"flex-1",children:[a.jsxs("header",{className:"border-b border-neutral-200 dark:border-neutral-800",children:[a.jsxs("div",{className:"flex items-center justify-between px-4 py-3 sm:px-6",children:[a.jsxs("div",{className:"flex items-center gap-2 sm:hidden",children:[a.jsx("button",{onClick:()=>i(m=>!m),"aria-label":"Menü öffnen",className:"rounded-md p-2 text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-6 w-6",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}),a.jsxs("span",{className:"rounded-lg px-1.5 py-0.5",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-6 w-auto dark:hidden"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-6 w-auto dark:block"})]})]}),a.jsxs("p",{className:"hidden text-sm text-neutral-500 dark:text-neutral-400 sm:block",children:["Angemeldet als ",t==null?void 0:t.username,t!=null&&t.is_super_admin?" · Super-Admin":""]}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(mg,{}),a.jsx("button",{onClick:c,className:"rounded-md border border-neutral-300 px-3 py-1.5 text-sm font-medium text-neutral-700 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800",children:"Abmelden"})]})]}),s&&a.jsx("div",{className:"border-t border-neutral-200 px-4 py-3 dark:border-neutral-800 sm:hidden",children:a.jsx(h,{onNavigate:()=>i(!1)})})]}),a.jsx("main",{className:"p-4 sm:p-6",children:a.jsx(hl,{})})]})]})}function xC(){const{user:e,loading:t}=Bt();return t?a.jsx("div",{className:"flex min-h-screen items-center justify-center text-neutral-500",children:"Lädt…"}):e?a.jsx(hl,{}):a.jsx(Gs,{to:"/admin/login",replace:!0})}function Ve({permission:e,children:t}){const{hasPermission:n}=Bt();return(Array.isArray(e)?e:[e]).some(i=>n(i))?t:a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-8 text-center dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-2 text-lg font-bold text-neutral-900 dark:text-white",children:"Keine Berechtigung"}),a.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:"Du hast keinen Zugriff auf diesen Bereich. Bitte wende dich an einen Administrator, falls du hier Zugriff brauchst."})]})}function xo(e,t,n="name"){if(!t)return;let r=document.head.querySelector(`meta[${n}="${e}"]`);r||(r=document.createElement("meta"),r.setAttribute(n,e),document.head.appendChild(r)),r.setAttribute("content",t)}function bC(e){let t=document.head.querySelector('link[rel="canonical"]');t||(t=document.createElement("link"),t.setAttribute("rel","canonical"),document.head.appendChild(t)),t.setAttribute("href",`https://hifi-planet.de${e}`)}function rt({title:e,description:t,path:n}){g.useEffect(()=>{e&&(document.title=`${e} | HifiPlanet`,xo("og:title",`${e} | HifiPlanet`,"property")),t&&(xo("description",t),xo("og:description",t,"property")),n&&bC(n)},[e,t,n])}const vC=[.16,1,.3,1],Ef={up:{y:40},left:{x:-56},right:{x:56}};function yC(e){return{hidden:{opacity:0,scale:.96,filter:"blur(8px)",...Ef[e]||Ef.up},visible:{opacity:1,scale:1,x:0,y:0,filter:"blur(0px)"}}}const kC={hidden:{x:"-130%"},visible:{x:"230%",transition:{duration:1.1,ease:"easeInOut",delay:.4}}};function Se({children:e,direction:t="up",className:n="",index:r=0,shine:s=!1}){const i=Math.min(r*.09,.45);return a.jsxs(Wt.div,{className:n,style:{position:"relative",overflow:"hidden"},initial:"hidden",whileInView:"visible",viewport:{once:!0,amount:.25,margin:"-100px"},variants:yC(t),transition:{duration:.75,ease:vC,delay:i},children:[e,s&&a.jsx(Wt.div,{"aria-hidden":!0,variants:kC,className:"pointer-events-none absolute inset-y-0 -left-1/3 w-1/3 rotate-12 bg-gradient-to-r from-transparent via-white/40 to-transparent"})]})}function wC({items:e}){const[t,n]=g.useState(null);return a.jsx("div",{className:"divide-y divide-neutral-200 rounded-xl border border-neutral-200 bg-white dark:divide-neutral-800 dark:border-neutral-800 dark:bg-neutral-900",children:e.map((r,s)=>{const i=t===s;return a.jsxs("div",{children:[a.jsxs("button",{onClick:()=>n(i?null:s),className:"flex w-full items-center justify-between gap-4 px-5 py-4 text-left","aria-expanded":i,children:[a.jsx("span",{className:"font-medium text-neutral-900 dark:text-white",children:r.question}),a.jsx(Wt.svg,{animate:{rotate:i?180:0},transition:{duration:.2},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-5 w-5 shrink-0 text-neutral-500",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m6 9 6 6 6-6"})})]}),a.jsx(NS,{initial:!1,children:i&&a.jsx(Wt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.25,ease:"easeInOut"},className:"overflow-hidden",children:a.jsx("p",{className:"px-5 pb-4 text-sm text-neutral-600 dark:text-neutral-300",children:r.answer})})})]},r.question)})})}function cb({count:e=5,className:t="h-4 w-4"}){return a.jsx("div",{className:"flex gap-0.5 text-amber-400",children:Array.from({length:e}).map((n,r)=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",className:t,children:a.jsx("path",{d:"M10 1.5l2.6 5.6 6.1.6-4.6 4.1 1.3 6-5.4-3.1-5.4 3.1 1.3-6-4.6-4.1 6.1-.6L10 1.5z"})},r))})}const jC=70;function NC({testimonials:e}){const t=g.useRef(null),n=g.useRef(null),r=g.useRef({pos:0,half:0,hovering:!1,dragging:!1,dragStartX:0,dragStartPos:0,lastTime:null,rafId:null}).current;g.useLayoutEffect(()=>{const i=n.current,l=window.matchMedia("(prefers-reduced-motion: reduce)").matches,o=()=>{i.style.transform=`translateX(${r.pos}px)`},u=p=>{if(r.half<=0)return p;for(;p>0;)p-=r.half;for(;p<=-r.half;)p+=r.half;return p},c=()=>{r.half=i.scrollWidth/2,r.pos===0?r.pos=-r.half:r.pos=u(r.pos),o()};c();const d=new ResizeObserver(c);d.observe(i);const h=p=>{r.lastTime===null&&(r.lastTime=p);const v=(p-r.lastTime)/1e3;r.lastTime=p,!r.dragging&&!r.hovering&&!l&&(r.pos=u(r.pos+jC*v),o()),r.rafId=requestAnimationFrame(h)};r.rafId=requestAnimationFrame(h);const m=t.current,f=()=>{r.hovering=!0},b=()=>{r.hovering=!1},y=p=>{r.dragging=!0,r.dragStartX=p.clientX,r.dragStartPos=r.pos,m.setPointerCapture(p.pointerId),m.classList.add("cursor-grabbing"),m.classList.remove("cursor-grab")},w=p=>{r.dragging&&(r.pos=u(r.dragStartPos+(p.clientX-r.dragStartX)),o())},x=p=>{r.dragging&&(r.dragging=!1,m.hasPointerCapture(p.pointerId)&&m.releasePointerCapture(p.pointerId),m.classList.remove("cursor-grabbing"),m.classList.add("cursor-grab"))};return m.addEventListener("pointerenter",f),m.addEventListener("pointerleave",b),m.addEventListener("pointerdown",y),m.addEventListener("pointermove",w),m.addEventListener("pointerup",x),m.addEventListener("pointercancel",x),()=>{cancelAnimationFrame(r.rafId),d.disconnect(),m.removeEventListener("pointerenter",f),m.removeEventListener("pointerleave",b),m.removeEventListener("pointerdown",y),m.removeEventListener("pointermove",w),m.removeEventListener("pointerup",x),m.removeEventListener("pointercancel",x)}},[e.length]);const s=[...e,...e];return a.jsx("div",{ref:t,className:"marquee-viewport cursor-grab touch-pan-y select-none overflow-hidden",children:a.jsx("div",{ref:n,className:"marquee-track flex w-max gap-5",children:s.map((i,l)=>a.jsx("div",{className:"w-64 shrink-0 sm:w-72 lg:w-80",children:a.jsxs("div",{className:"relative flex h-full flex-col overflow-hidden rounded-xl border border-neutral-200 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 32 24",className:"absolute -right-1 -top-1 h-16 w-16 text-brand-500/10 dark:text-brand-400/10",children:a.jsx("path",{fill:"currentColor",d:"M9.4 0C4.4 3.5 1 9.1 1 15.3 1 20.6 4.3 24 8.4 24c3.8 0 6.6-3 6.6-6.6 0-3.4-2.4-5.9-5.4-5.9-.6 0-1.4.1-1.6.2C8.5 8.5 11.6 4.6 14.6 2.6L9.4 0zm16.5 0c-4.8 3.5-8.3 9.1-8.3 15.3 0 5.3 3.3 8.6 7.5 8.6 3.7 0 6.6-3 6.6-6.6 0-3.4-2.5-5.9-5.4-5.9-.6 0-1.4.1-1.6.2.5-3.3 3.6-7.1 6.7-9.1L25.9 0z"})}),a.jsx(cb,{className:"relative z-10 mb-3 h-4 w-4",count:i.rating||5}),a.jsxs("p",{className:"relative z-10 mb-4 line-clamp-6 flex-1 text-sm leading-relaxed text-neutral-600 dark:text-neutral-300",children:["„",i.text,'"']}),a.jsxs("div",{className:"relative z-10 mt-auto flex items-center gap-3",children:[i.photo?a.jsx("img",{src:i.photo,alt:"",referrerPolicy:"no-referrer",className:"h-9 w-9 shrink-0 rounded-full object-cover"}):a.jsx("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-brand-100 text-sm font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",children:i.name.charAt(0).toUpperCase()}),a.jsx("p",{className:"text-sm font-semibold text-neutral-900 dark:text-white",children:i.name})]})]})},`${i.name}-${l}`))})})}const SC="/assets/gallery-dash2-CEVCErVK.webp",db="/assets/gallery-amp-purple-CESAKuOf.webp",CC="/assets/gallery-speaker-CUXQZ49Q.webp",hb="/assets/gallery-subs-COSd4seJ.webp",mb="/assets/gallery-dash-Cg-7v9qo.webp",PC="/assets/hero-trunk-Dp4_JHDh.webp",EC="/assets/gallery-rear-8cIXPC7T.webp",TC="/assets/hero-highlight-Co4f1Kj5.webp",AC="/assets/youtube-hintergrund-C0osNxn7.mp4",MC="ostj2mKDVUc",_C=["Ground Zero Audio","Audison","Hertz","Helix","Brax","Gladen","Alpine","Pioneer","Kenwood","JVC"],LC=[{src:hb,width:900,height:600},{src:db,width:900,height:600},{src:CC,width:900,height:1200},{src:mb,width:900,height:814},{src:EC,width:900,height:1200},{src:PC,width:1920,height:1280}];function DC(){const{hero_image_path:e}=Vr(),t=e||SC,{t:n,language:r}=Te(),s=n("home.stats"),i=n("home.galleryAlts"),l=LC.map((k,j)=>({...k,alt:i[j]})),[o,u]=g.useState([]),[c,d]=g.useState(null),h=c?c.reviews.filter(k=>k.review_text).map(k=>({name:k.author_name,text:k.review_text,rating:k.rating,photo:k.profile_photo_url})):n("home.testimonials");g.useEffect(()=>{A.get("/faqs").then(k=>{u(k.map(j=>({question:r==="de"?j.question_de:j.question_en,answer:r==="de"?j.answer_de:j.answer_en})))}).catch(()=>{})},[r]),g.useEffect(()=>{A.get("/google-reviews").then(k=>{k.rating!=null&&k.reviews.some(j=>j.review_text)&&d(k)}).catch(()=>{})},[]),rt({title:n("home.metaTitle"),description:n("home.metaDescription"),path:"/"}),g.useEffect(()=>{if(o.length===0)return;const k=document.createElement("script");return k.type="application/ld+json",k.text=JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:o.map(j=>({"@type":"Question",name:j.question,acceptedAnswer:{"@type":"Answer",text:j.answer}}))}),document.head.appendChild(k),()=>document.head.removeChild(k)},[o]);const m=g.useRef(null),{scrollYProgress:f}=ib({target:m,offset:["start start","end start"]}),b=nn(f,[0,1],["-6%","6%"]),y=nn(f,[0,1],["0%","60%"]),w=nn(f,[0,.8],[1,0]),x=nn(f,[.5,1],[0,1]),p=nn(x,k=>k>.05?"auto":"none"),v=nn(f,[.5,1],[16,0]);return a.jsxs("div",{children:[a.jsx(Wt.div,{style:{opacity:x,pointerEvents:p,y:v},className:"fixed inset-x-0 bottom-0 z-20 border-t border-neutral-200 bg-white/95 px-4 py-3 shadow-[0_-8px_24px_rgba(0,0,0,0.08)] backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/95 sm:px-6",children:a.jsxs("div",{className:"mx-auto flex max-w-6xl items-center justify-between gap-3",children:[a.jsx("p",{className:"hidden text-sm font-medium text-neutral-600 dark:text-neutral-300 sm:block",children:n("home.stickyCta")}),a.jsxs("div",{className:"flex w-full gap-3 sm:w-auto",children:[a.jsx(H,{to:"/fahrzeuge",className:"flex-1 rounded-md bg-brand-500 px-5 py-2.5 text-center text-sm font-semibold text-white shadow-sm transition hover:-translate-y-0.5 hover:bg-brand-600 sm:flex-none",children:n("home.selectVehicle")}),a.jsx(H,{to:"/kontakt",className:"flex-1 rounded-md border border-neutral-300 px-5 py-2.5 text-center text-sm font-semibold text-neutral-700 transition hover:-translate-y-0.5 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800 sm:flex-none",children:n("home.getInTouch")})]})]})}),a.jsxs("section",{ref:m,className:"relative -mt-[89px] h-dvh min-h-[560px] overflow-hidden sm:-mt-[97px]",children:[a.jsx(Wt.img,{style:{y:b,scale:1.15},src:t,alt:n("home.heroImageAlt"),className:"absolute inset-0 h-full w-full object-cover"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-neutral-950 via-neutral-950/80 to-neutral-950/40"}),a.jsx(Wt.div,{style:{y,opacity:w},className:"relative flex h-full max-w-6xl flex-col items-center justify-center px-4 mx-auto text-center sm:px-6",children:a.jsxs(Wt.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.7,ease:"easeOut"},children:[a.jsx("p",{className:"mb-3 text-sm font-semibold uppercase tracking-wide text-brand-400",children:n("home.welcome")}),a.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-white sm:text-5xl",children:n("home.heroTitle")}),a.jsx("p",{className:"mx-auto mt-4 max-w-2xl text-base text-neutral-200 sm:text-lg",children:n("home.heroSubtitle")}),a.jsxs("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-3",children:[a.jsx(H,{to:"/fahrzeuge",className:"rounded-md bg-brand-500 px-6 py-3 text-sm font-semibold text-white shadow-sm transition hover:-translate-y-0.5 hover:bg-brand-600 hover:shadow-lg",children:n("home.selectVehicle")}),a.jsx(H,{to:"/kontakt",className:"rounded-md border border-white/30 bg-white/10 px-6 py-3 text-sm font-semibold text-white backdrop-blur transition hover:-translate-y-0.5 hover:bg-white/20",children:n("home.getInTouch")})]})]})})]}),a.jsx("section",{className:"border-b border-neutral-200 bg-neutral-950 py-8 dark:border-neutral-800",children:a.jsx("div",{className:"mx-auto grid max-w-6xl grid-cols-2 gap-6 px-4 text-center sm:grid-cols-4 sm:px-6",children:s.map((k,j)=>a.jsxs(Se,{index:j,children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-400 sm:text-3xl",children:k.value}),a.jsx("p",{className:"text-sm text-neutral-400",children:k.label})]},k.label))})}),a.jsx("section",{className:"border-b border-neutral-200 py-8 dark:border-neutral-800",children:a.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[a.jsx("p",{className:"mb-4 text-center text-xs font-semibold uppercase tracking-wide text-neutral-400",children:n("home.brandsHeading")}),a.jsx("div",{className:"flex flex-wrap items-center justify-center gap-x-8 gap-y-3",children:_C.map((k,j)=>a.jsx(Se,{index:j,className:"text-lg font-bold text-neutral-400 dark:text-neutral-600",children:k},k))})]})}),a.jsxs("section",{className:"relative flex min-h-[70vh] items-center justify-center overflow-hidden sm:min-h-[85vh]",children:[a.jsx("video",{autoPlay:!0,loop:!0,muted:!0,playsInline:!0,poster:mb,className:"absolute inset-0 h-full w-full object-cover",children:a.jsx("source",{src:AC,type:"video/mp4"})}),a.jsx("div",{className:"absolute inset-0 bg-black/55"}),a.jsxs(Se,{className:"relative mx-auto max-w-3xl px-4 text-center sm:px-6",children:[a.jsx("p",{className:"mb-4 text-xs font-semibold uppercase tracking-[0.2em] text-neutral-200 sm:text-sm",children:n("home.youtubeBadge")}),a.jsx("h2",{className:"text-3xl font-bold uppercase tracking-wide text-white sm:text-5xl",children:n("home.youtubeTitle")}),a.jsx("p",{className:"mt-4 text-xs font-semibold uppercase tracking-wide text-neutral-200 sm:text-sm",children:n("home.youtubeText")}),a.jsx("a",{href:`https://www.youtube.com/watch?v=${MC}`,target:"_blank",rel:"noopener noreferrer",className:"mt-8 inline-flex items-center justify-center rounded-full bg-white px-8 py-3 text-xs font-bold uppercase tracking-wide text-neutral-900 transition hover:-translate-y-0.5 hover:bg-neutral-100",children:n("home.youtubeCta")})]})]}),a.jsx("section",{className:"grain-band border-y border-neutral-200 bg-neutral-50 py-16 dark:border-neutral-800 dark:bg-neutral-900/40",children:a.jsxs("div",{className:"mx-auto max-w-6xl space-y-16 overflow-hidden px-4 sm:px-6",children:[a.jsxs("div",{className:"grid items-center gap-8 md:grid-cols-2",children:[a.jsx(Se,{direction:"left",shine:!0,className:"rounded-xl shadow-lg",children:a.jsx("img",{src:hb,alt:n("home.craftImageAlt"),width:900,height:600,className:"w-full rounded-xl object-cover",style:{maxHeight:380}})}),a.jsxs(Se,{direction:"right",index:1,children:[a.jsx("p",{className:"mb-2 text-sm font-semibold uppercase tracking-wide text-brand-600 dark:text-brand-400",children:n("home.craftEyebrow")}),a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.craftTitle")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:n("home.craftText")})]})]}),a.jsxs("div",{className:"grid items-center gap-8 md:grid-cols-2",children:[a.jsxs(Se,{direction:"left",className:"order-2 md:order-1",children:[a.jsx("p",{className:"mb-2 text-sm font-semibold uppercase tracking-wide text-brand-600 dark:text-brand-400",children:n("home.adviceEyebrow")}),a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.adviceTitle")}),a.jsx("p",{className:"text-neutral-600 dark:text-neutral-300",children:n("home.adviceText")})]}),a.jsx(Se,{direction:"right",index:1,shine:!0,className:"order-1 md:order-2 rounded-xl shadow-lg",children:a.jsx("img",{src:db,alt:n("home.adviceImageAlt"),width:900,height:600,className:"w-full rounded-xl object-cover",style:{maxHeight:380}})})]})]})}),a.jsxs("section",{className:"mx-auto max-w-6xl px-4 py-16 sm:px-6",children:[a.jsxs(Se,{className:"mb-8 text-center",children:[a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.insightsTitle")}),a.jsx("p",{className:"mt-2 text-neutral-600 dark:text-neutral-300",children:n("home.insightsText")})]}),a.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:l.map((k,j)=>a.jsx(Se,{index:j%3,shine:!0,className:"aspect-square overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsx("img",{src:k.src,alt:k.alt,width:k.width,height:k.height,loading:"lazy",className:"h-full w-full object-cover transition duration-300 hover:scale-105"})},k.src))})]}),a.jsx("section",{className:"grain-band border-y border-neutral-200 bg-neutral-50 py-16 dark:border-neutral-800 dark:bg-neutral-900/40",children:a.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[a.jsxs(Se,{className:"mb-10 text-center",children:[a.jsx("div",{className:"mb-2 flex items-center justify-center gap-2",children:a.jsx(cb,{className:"h-6 w-6",count:c?Math.round(c.rating):5})}),a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:c?n("home.reviewsRatingDynamic")(c.rating,c.rating_count):n("home.reviewsRating")}),a.jsx("p",{className:"mt-1 text-neutral-600 dark:text-neutral-300",children:n("home.reviewsText")}),a.jsx("a",{href:"https://www.google.com/maps/search/?api=1&query=Hifi+Planet+Amorbach+Boxbrunner+Stra%C3%9Fe+20a",target:"_blank",rel:"noopener noreferrer",className:"mt-2 inline-block text-sm font-medium text-brand-600 hover:underline dark:text-brand-400",children:n("home.reviewsLink")})]}),a.jsx(Se,{children:a.jsx(NC,{testimonials:h})})]})}),a.jsx("section",{className:"mx-auto max-w-6xl overflow-hidden px-4 py-16 sm:px-6",children:a.jsxs("div",{className:"grid items-center gap-10 md:grid-cols-2",children:[a.jsx(Se,{direction:"left",shine:!0,className:"overflow-hidden rounded-xl shadow-lg",children:a.jsx("img",{src:TC,alt:n("home.moreImageAlt"),width:1600,height:905,className:"h-full w-full object-cover",loading:"lazy"})}),a.jsxs(Se,{direction:"right",index:1,className:"rounded-xl border border-neutral-200 bg-white p-8 text-center shadow-sm dark:border-neutral-800 dark:bg-neutral-900 md:text-left",children:[a.jsx("h2",{className:"mb-3 text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.moreTitle")}),a.jsx("p",{className:"mx-auto mb-8 max-w-2xl text-neutral-600 dark:text-neutral-300 md:mx-0",children:n("home.moreText")}),a.jsx(H,{to:"/leistungen",className:"inline-block rounded-md border border-neutral-300 px-6 py-3 text-sm font-semibold text-neutral-700 transition hover:-translate-y-0.5 hover:bg-neutral-100 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-800",children:n("home.moreCta")})]})]})}),a.jsx("section",{className:"border-t border-neutral-300 py-16 dark:border-neutral-700",children:a.jsxs("div",{className:"mx-auto max-w-3xl px-4 sm:px-6",children:[a.jsx(Se,{className:"mb-8 text-center",children:a.jsx("h2",{className:"text-2xl font-bold text-neutral-900 dark:text-white",children:n("home.faqHeading")})}),a.jsx(Se,{index:1,children:a.jsx(wC,{items:o})})]})})]})}function BC(){const[e,t]=g.useState([]),[n,r]=g.useState(""),s=bl(),{t:i}=Te();return rt({title:i("vehicleSelect.metaTitle"),description:i("vehicleSelect.metaDescription"),path:"/fahrzeuge"}),g.useEffect(()=>{s.vehicles.enabled&&!s.bypass||A.get("/brands").then(t).catch(l=>r(l.message))},[s.vehicles.enabled,s.bypass]),s.vehicles.enabled&&!s.bypass?a.jsx(ca,{message:s.vehicles.message}):a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[s.vehicles.enabled&&s.bypass&&a.jsx(da,{inline:!0}),a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:i("vehicleSelect.title")}),a.jsx("p",{className:"mb-8 text-neutral-600 dark:text-neutral-300",children:i("vehicleSelect.intro")}),n&&a.jsx("p",{className:"text-red-600",children:n}),e.length===0&&!n&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:i("vehicleSelect.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:e.map(l=>a.jsx(H,{to:`/fahrzeuge/${l.slug}`,className:"flex items-center justify-center rounded-xl border border-neutral-200 bg-white px-6 py-8 text-center font-semibold text-neutral-800 shadow-sm transition hover:-translate-y-0.5 hover:border-brand-500 hover:shadow-md dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100",children:l.name},l.id))})]})}function zC(){const{brandSlug:e}=Yn(),[t,n]=g.useState(null),[r,s]=g.useState(""),i=bl(),{t:l}=Te();return g.useEffect(()=>{i.vehicles.enabled&&!i.bypass||A.get(`/brands/${e}/models`).then(n).catch(o=>s(o.message))},[e,i.vehicles.enabled,i.bypass]),rt({title:t?`${t.brand.name} ${l("brandPage.titleSuffix")}`:l("brandPage.metaTitleFallback"),description:t?l("brandPage.metaDescription")(t.brand.name):void 0,path:`/fahrzeuge/${e}`}),i.vehicles.enabled&&!i.bypass?a.jsx(ca,{message:i.vehicles.message}):r?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:r}):t?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[i.vehicles.enabled&&i.bypass&&a.jsx(da,{inline:!0}),a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(H,{to:"/fahrzeuge",className:"hover:text-brand-500",children:l("brandPage.breadcrumbVehicles")})," / ",t.brand.name]}),a.jsxs("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:[t.brand.name," – ",l("brandPage.titleSuffix")]}),t.models.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:l("brandPage.empty")}),a.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3",children:t.models.map(o=>a.jsx(H,{to:`/fahrzeuge/${e}/${o.slug}`,className:"flex items-center justify-center rounded-xl border border-neutral-200 bg-white px-6 py-8 text-center font-semibold text-neutral-800 shadow-sm transition hover:-translate-y-0.5 hover:border-brand-500 hover:shadow-md dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-100",children:o.name},o.id))})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:l("brandPage.loading")})}const Tf="data:image/webp;base64,UklGRmoNAABXRUJQVlA4IF4NAAAQjACdASrgAVYDPlEok0ajoqGhIRK4IHAKCWlu/F+5xDCoDux8VXNtc99B5Uf715Q+k/+V6E/yD7bfvf7tYI7QKys1Pu/n/K9wD+L/0L/aeqHflfZf937AH81/p//N/yXr9f9f+M/yf7c+4D6R/7n+O+BL9d+rb+0f//9yX9VQU+fHDhw4cN7KTkCBAgQIECBAgQIEB8GtgzU5WrVq1atWrVq1atTTWWxGRvDLM5r169evXr169evVcNgPhleRXp06dOnTp06dOnTpUIn65+OKaJVsmzZs2bNmzZs2bNmSyYC6ipEunTp06dOnTp06dOlydZVuN901q1atWrVq1atWrVXZqLYS16JYyeHDhw4cOHDhw4cN4wtQeDaQLgECBAgQIECBAgQIDddB6sEmQB2atWrVq1atWrVq1aq1iYS5JU9iBlzXr169evXr169evXeEPp+8N6OklatWrVq1atWrVq1V3IfqDdZ8CK1AgQIECBAgQIECBBQFoI3bXHSzdGb8+OHDhw4cOHDhw4ZwLNj/Gx48ePHjx48ePHjx5HaZ5q8hFQPLVq1atWrVq1atWrVWlrSSS1atWrVq1atWrVq1VouJ4vs1atWrVq1atWrVqzMNN6naRaj4OHDhw4cOHDhwzggYy8goXr169evXr169evXbAmy3nWg79+/fv379+/fv377Aw+GV3JG24BIkSJEiRIkSJEiRH091sORb3KZK2rVq1atWrVq1atWZgOgxn2g3CECBAgQIECBAgQHwEh4tRYq5WHRSJEiRIkSJEiRIkRmQ4gXd9q0Xa9evXr169evXr169SUP3aSDmqBOfHDhw4cOHDhw4cN/rYXzoW6jx48ePHjx48ePHjwyNgV/F/hRIkSJEiRIkSJEiRGcgeccx2x48ePHjx48ePHjx5+h2DL7y1q1atWrVq1atWrVqrLjxn1+UevXr169evXr169epWz/ixb7G7Fx48ePHjx48ePHjx64Dpo0+TFzjw4cOHDhw4cOHDhwr64/FOVqj1ftlBYsWLFixYsWLFixsB93m6MKtrfi/YePHjx48ePHjx48eGCFP4MdBX+BXbQiRIkSJEiRIkSJEiA+X4/Ne4l0FixYsWLFixYsWLTKZjxkHLs7TTrVq1atWrVq1atWrSGY83Cktx0PPjhw4cOHDhw4cN/7Xmd/H4DxEePHjx48ePHjx48ct7KWpas7p5jy5cuXLly5cuXLlyM+h2/gRIkSJEiRIkSJEiRAPRMs9EnbFixYsWLFixYsWLBwJstxClHwcOHDhw4cOHDhw3+o6GvCGxY8ePHjx48ePHjx45aAayr3BCnnxw4cOHDhw4cOG/2HuJWxIvK1JLZs2bNmzZs2bNmyAMNnZLnTo6dOnTp06dOnTp06Vd0rFPQfnwwCPHjx48ePHjx48eOU7jRhCFUn5bFixYsWLFixYsWKZRr/1LzwcOHDhw4cOHDhw4ZshIGgexQoECBAgQIECBAgQH+hD+jvXr169eu0AAP7/2BA2pStbx3f0LK6/mZcFuZpv73FLTm7GUv07j8lFLoOGX1EwKUHfPc4FImBkAvjxF1E2TgBogJKpQ2lbMv5bOqPckB4PELJo9ZXlMwGup4PkMOtTZPmrbNoaCJqn0H4Bx7A0xA439P5hkMGBnAEfInQIN5UeUIDb3y6tLej2gR8HhJ5XmTsxvmM15ltL5ZwdGmoNeW8NevUVUKqJ8mNngu7ocCsyGYaeYOGGZBBt6rj6bPVKVbxvb8onw6mljAaaxGTz0W+aNPv06kK3qhDe6/uHi8kg2qvjF3njhRMyOJKZzg12h4qOtVgTuKPAMRWYDkgwiRs9iYqcumonNNXvXk3FAk2LO5XnyjtD5sHSUO3pIrztpBvqq+UJzKeIwGBlPwA2NP46tOJxLzbrKeH4SQjt2HAsbrVcQ/b/TgKZGPwaqfGDN+OjqJK3Z9dyCkGGfGKeG1w9+HSZTm/qh052lQEJAcdUX6vm/+sDBxtrfl4Sg8iMcVnDsfTKJpsTYF/vzJ1oQ6/VPyIX1HpDwnPXsptu9rKDFazlkwc3ofi8uKJmycgPiG9xOLlzn4Af8Dm+LcjJUMAtA7XeZPLlW1bwogbRthU8oA4LcURuku6eXDJ1eb1IKUU7k/UK0cBeK+R5YVcmrOnZIyHzcIaClYnrIwerP535fHv4VXjURTO6/85BvSeTNWvQGqkW5v1hG6AEMrxBryfat3kmr+SNEz5wC2f54z1O7C2KsRpt3maISh9PhMg7jDIxmVe07eHtkLtz6v3yQUJQV95yazDYpH5JfpuYSb8dtmB1cKjeoDTPvik9dCA1UFCTZBfojpIOwXdwAR7JEdZkEi/24hMNKJJlB6udZZKqNJB1hNl24Z++z6lAGSAuRgSwDZGdbqxs+0iL6wmRHilqPOiYB6hQiPZ7cfpMZxesqRwyhcf1O29w4ORG/7BlerR8hYvY4B1XsPYbDORvPk6FHIDXwTXGpuDIta7G4F6RNDdOvCFkAl53GZo5h/p2QkWUry5YuyegnPlKjT3He6ewYypA9YOvMhaqip7kr9sF4TU2bX9foKZ+FFZNzhyySS+13+g4BdJo9YF3bw5b6eSxUfTWiDLNh50VjuqRQWHUEkiA8zJqnqkKCwuDy6iY2oF20FJQlGIPpCDKPBzdXSb/n9NDltaoUlbam7cDAU7CwNdaWFXTABRk0S0e49iF4tO106Uwul7DGYpq0Eu71TnKUjCtEBc83QH8skvRzHniEne3AtJLYRH0cMNSSzeCJ1g+Nfc8RaZkhLhCaZGZdYe5j0LGmQnVFt2iapZvGBi7Sw0X56zdziC9Foq0OPsqKFetZdICc2eUV5Vu1+nvisSzn8wlSDUt3OmRkt/gJxfJQfWxcu5HZ26qqNpA4ablWrX4E9DEmvXzpFGYCnYJMheN2BlWwBVLh1cyQ8INngXaoB8I5Pj9oYyuz/W+jvJQ6G074luX9D3pLkuc88D0Hae3ZqXrRYRzGF1vD8pHsk9Co8B6rpE/4GEwW/zsCtnjz5G8m4KFwf2qW1k0HkNv7Nlg38bcz6TdTzuw/jega5XZQQhflLu4I6l+s90BHFIR+JEXTBBqJwT+IgTnpHNc+h5Ek74HiKqXuGUNGIKIozHkiFxMlnrsklrpweBzYY6ype9CzepAuQF63xC/eIJw1pMZEC1pPgq/r+1gWx5M6g8fpu2O12sb6pLeqT+G4mK3yHMZTojfp1xwQedRmwZnWQ8SCh4XV2a/+3OTz4D4pmmumyBV7V2VW3he8y6usinSjfYPxLyTng27fgw6jQhHl2mVhxBBjiwr5ljvJV7L+MJYDiZjGWfBCsTmehk6rbNt7ahTJpHu4B9ctRqiZXjx0zGpTF91OKifmy4nTq31p1XaIsZAHCWvItXKeke06KKKRTIm6mCT9yBJVwG1sqQhjrkP77q0/JGYgOwgdCQCstsAZQ0FlOrGYXYTIQK/krLyCAZjg8vP/Ers/KVN8F88OsyU5/T1e5ba8A2F63qgwhtkWoVIEZErOVL8sM/DtpWTlcBNsvVOFl4tT+Sk6a2ScCptFL5F6cZXTIw8JmgoCbyqB6xyU+uPP5y09s5T8MDC7Em7NpxCjgD39eed40gHQrBm6CtAbS9JOCVPkPxbpcGDj/LoAGbnyYzMpOmTi28LJ9FTIqyGuAI0jxY/QpNelOOEvNK3io1HeYkK3AprImDk99tlUjgt9bc3ejCOFDXt9LqGHjFssGrhVHyJBmWjwHQipcIMHxF2jfP5jfAGuHtJRRncHIFgLWmJ1XmzJ0LLqWCJShdJSJLc7L6YeVcgKfzOZCwhtzJ7VeI3uBhPXQNOqCf5tlQ32HApAMvCIiBwhYrpfFo/kvjfTMB/NJ0w2Lk8GAFfFQY+U6uX1oB0hztGmA5HggJTwgLo8exG64m3Xu4fg2g4MmQol7z6xNwwubABnpoS3Og85giFkaarUP2ovQyixFpXki8Xf5a5NwjUGCPbx+LD3WKJiBtkiHsYMMV/VAZVNvdg/Ph/V4ZYOr+hw7g9mOJXi+oVZxG9pqJC9w8nRkegsnQ2lpRHn22lTsIa9aOkR0X8zp/IajQxUzv057a3WptBst0EZbZtfmWp6h2K0sDQS9oQT1PqOkGDJlz6ZHZzDMShDTcwJfIZMdnjpeHdPoYoqlcn3M8daRuMeTSP3mabP1/pdQrs6Wl7ToKog2Au/gv46pUMgVcKmdWNJdDF8RplMMXJpU2tZMdkTWq4ofSypsCfuWfeHOpFQGJdFF6OoH2pDJXvkqpj1a832g3uYtVQg1TGyqYqI7UBZQy4NEZbdj6O/s6MNEnfujUDQ8QZj7rSE2RI77egKDWzM708AsvlMFoeX4CVP09rMzXNP2aOZwY7zOBTvBgEEqCWlXAFlY8pW0zIm16gqSPiwRUgH41i1PuJx382C0zTWGT243ZhLnyOIlreUrMQAfwR/oYt+ljnDFKqa5PEczDPa+u/vWmR6UM+Q/lLFiIlgBJTfaekWoeLpPd9FPN4gIHzK1ZS8kDHyq3lh/e6FQ84a4Zg6JlfQC/qhAAAAA==",RC="/assets/base-BKOm0Bib.webp",IC="/assets/clear-DZZMSrMX.webp",FC="/assets/drive-BE2W1yna.webp",VC="/assets/prime-BTVNe2Gb.webp",OC="/assets/elite_r-BRvz_pyr.webp",UC="/assets/apex-CFy2qup8.webp",WC="/assets/statement-pTO-wTPx.webp",HC="/assets/limitless-DDs0S_PU.webp",$C=(e,t,n)=>{t/=100,n/=100;const r=l=>(l+e/30)%12,s=t*Math.min(n,1-n),i=l=>n-s*Math.max(-1,Math.min(r(l)-3,Math.min(9-r(l),1)));return[Math.round(i(0)*255),Math.round(i(8)*255),Math.round(i(4)*255)]},bo=(e,t,n)=>`rgb(${$C(e,t,n).join(", ")})`,Af=e=>e.map(([t,n,r,s,i,l])=>({bgTop:bo(t,n,r),border:bo(t,n,r+8),accent:bo(s,i,l),img:null})),Mf={graphite:[{accent:"#b6b6b6",border:"#2a2a2a",bgTop:"#1c1c1c",img:RC},{accent:"#d3d3d3",border:"#2e2e2e",bgTop:"#212121",img:IC},{accent:"#8fb8bd",border:"#26383b",bgTop:"#16282b",img:FC},{accent:"#6fbf73",border:"#1f3a24",bgTop:"#122916",img:VC},{accent:"#63d34f",border:"#204a1c",bgTop:"#123312",img:OC},{accent:"#8bea3c",border:"#2b5518",bgTop:"#173a0f",img:UC},{accent:"#d9a83c",border:"#4a3a16",bgTop:"#33270d",img:WC},{accent:"#f2c14e",border:"#5a4718",bgTop:"#3d2f0c",img:HC}],"deep-blue":Af([[215,18,11,210,15,60],[212,25,11,208,32,60],[210,38,12,206,46,60],[212,46,12,205,56,61],[214,52,12,205,63,62],[216,58,12,205,68,63],[220,62,12,212,73,65],[226,66,12,216,78,68]]),"warm-bronze":Af([[30,15,11,34,22,60],[34,32,11,34,46,60],[32,46,12,30,58,60],[26,52,12,24,65,60],[20,55,12,18,68,60],[14,55,12,12,68,61],[8,52,12,6,64,62],[2,50,12,358,60,63]])},GC="#f2f2f2",KC="#8a8a8a",qC="#c4c4c4",_f=5;function YC({pkg:e,tier:t,tierT:n,layout:r,bullets:s,formatPrice:i,contactUrl:l,t:o}){const[u,c]=g.useState(!1),d=s.length-_f,h=u?s:s.slice(0,_f),m=t.img?null:{backgroundColor:t.accent,WebkitMaskImage:`url(${Tf})`,maskImage:`url(${Tf})`,maskMode:"luminance",WebkitMaskSize:"cover",maskSize:"cover",WebkitMaskPosition:"center",maskPosition:"center",WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat"};return a.jsxs("div",{style:{borderColor:t.border,background:`linear-gradient(180deg, ${t.bgTop} 0%, #0b0b0b 55%, #080808 100%)`},className:r==="strip"?"relative flex min-h-[420px] grow shrink basis-[190px] min-w-[190px] max-w-[240px] snap-start flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 dark:shadow-black/40 sm:min-h-[640px] sm:basis-[210px]":r==="coverflow"?"relative flex min-h-[420px] w-[230px] shrink-0 snap-center flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 will-change-transform dark:shadow-black/40 sm:min-h-[640px]":"relative flex min-h-[420px] flex-col overflow-hidden rounded-[18px] border shadow-xl shadow-neutral-900/20 dark:shadow-black/40 sm:min-h-[640px]",children:[t.img?a.jsx("img",{src:t.img,alt:"","aria-hidden":"true",className:"pointer-events-none absolute inset-0 h-full w-full object-cover"}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"pointer-events-none absolute inset-0",style:{...m,opacity:.2+n*.45,filter:"blur(18px)"},"aria-hidden":"true"}),a.jsx("div",{className:"pointer-events-none absolute inset-0",style:{...m,opacity:.55+n*.45},"aria-hidden":"true"})]}),e.is_featured&&a.jsx("span",{className:"absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-full bg-brand-500 px-3 py-1 text-xs font-bold text-white shadow",children:o("modelPage.featuredBadge")}),a.jsxs("div",{className:"relative z-10 text-center",style:{padding:"34px 20px 0"},children:[a.jsx("div",{style:{fontFamily:"'Barlow Condensed', sans-serif",fontSize:"30px",letterSpacing:"3px",fontWeight:600,color:t.accent,textTransform:"uppercase",lineHeight:1.1},children:e.name}),a.jsx("div",{style:{width:"44px",height:"2px",margin:"14px auto 0",background:`linear-gradient(90deg, rgba(255,255,255,0) 0%, ${t.accent} 50%, rgba(255,255,255,0) 100%)`}})]}),s.length>0&&a.jsxs("div",{className:"relative z-10",style:{padding:"18px 20px 14px",background:u?"linear-gradient(180deg, rgba(8,8,8,0.7) 0%, rgba(8,8,8,0.62) 94%, rgba(8,8,8,0) 100%)":"linear-gradient(180deg, rgba(8,8,8,0.55) 0%, rgba(8,8,8,0.48) 92%, rgba(8,8,8,0) 100%)"},children:[a.jsx("ul",{className:"space-y-1.5 text-left",children:h.map((f,b)=>a.jsxs("li",{className:"flex items-start gap-2",style:{fontSize:"13px",color:qC},children:[a.jsx(We,{name:"check",className:"mt-0.5 h-3.5 w-3.5 shrink-0",style:{color:t.accent}}),a.jsx("span",{className:"leading-snug",children:f})]},b))}),d>0&&a.jsxs("button",{type:"button",onClick:()=>c(f=>!f),className:"mt-2.5 flex items-center gap-1 hover:opacity-80",style:{fontSize:"13px",color:t.accent},children:[u?o("modelPage.lessBullets"):o("modelPage.moreBullets")(d),a.jsx(We,{name:u?"chevron-up":"chevron-down",className:"h-3.5 w-3.5"})]})]}),a.jsx("div",{className:"relative z-10 flex-1"}),a.jsx("div",{className:"relative z-10",style:{padding:"20px 20px 28px",background:"linear-gradient(180deg, rgba(8,8,8,0) 0%, rgba(8,8,8,0.85) 45%, rgba(8,8,8,0.95) 100%)"},children:a.jsxs("div",{className:"text-center",children:[!e.price_text&&a.jsx("div",{style:{fontSize:"13px",color:KC},children:o("modelPage.totalPrice")}),a.jsx("div",{style:{marginTop:"4px",fontFamily:"'Barlow Condensed', sans-serif",fontSize:"30px",fontWeight:600,letterSpacing:"1px",color:GC},children:e.price_text||i(e.total_price)}),a.jsx(H,{to:l(e),className:"mt-4 inline-block rounded-md bg-brand-500 px-4 py-2 text-center text-sm font-semibold text-white shadow-lg shadow-brand-500/30 hover:bg-brand-400",children:o("modelPage.requestContact")})]})})]})}function XC(){const{brandSlug:e,modelSlug:t}=Yn(),[n,r]=g.useState(null),[s,i]=g.useState(""),l=bl(),{t:o,language:u}=Te(),{package_card_theme:c,package_card_layout:d,package_wheel_hint_interval:h}=Vr(),m=Mf[c]||Mf.graphite,f=["grid","strip","coverflow"].includes(d)?d:"strip",b=Math.max(2,Number(h)||8)*1e3,y=g.useRef(null),w=g.useRef(null),x=g.useRef(null),[p,v]=g.useState(!1),k=N=>new Intl.NumberFormat(u==="de"?"de-DE":"en-US",{style:"currency",currency:"EUR"}).format(N);if(g.useEffect(()=>{l.vehicles.enabled&&!l.bypass||A.get(`/models/${e}/${t}/packages`).then(r).catch(N=>i(N.message))},[e,t,l.vehicles.enabled,l.bypass]),g.useEffect(()=>{const N=y.current;if(f!=="coverflow"||!N)return;let L=0;const U=()=>{L=0;const z=N.scrollLeft+N.clientWidth/2;for(const $ of N.children){const _=$.offsetLeft+$.offsetWidth/2,B=Math.max(-1,Math.min(1,(_-z)/($.offsetWidth*1.4))),F=Math.abs(B);$.style.transform=`rotateY(${(-B*35).toFixed(2)}deg) scale(${(1-F*.13).toFixed(3)}) translateZ(${(-F*60).toFixed(1)}px)`,$.style.zIndex=String(100-Math.round(F*50))}},W=()=>{L||(L=requestAnimationFrame(U))};U(),N.addEventListener("scroll",W,{passive:!0});const q=new ResizeObserver(W);return q.observe(N),()=>{N.removeEventListener("scroll",W),q.disconnect(),cancelAnimationFrame(L)}},[f,n]),g.useEffect(()=>{const N=y.current;if(f==="grid"||!N)return;const L=window.matchMedia("(pointer: coarse)").matches;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let W=[],q=0;const z=()=>{const _=Math.min(N.clientWidth*.4,160);W.push(setTimeout(()=>N.scrollTo({left:_,behavior:"smooth"}),500)),W.push(setTimeout(()=>N.scrollTo({left:0,behavior:"smooth"}),1250)),L||(W.push(setTimeout(()=>v(!0),450)),W.push(setTimeout(()=>v(!1),1700)))},$=new IntersectionObserver(([_])=>{_.isIntersecting&&($.disconnect(),z(),q=setInterval(()=>{N.scrollLeft<=1&&z()},b))},{threshold:.35});return $.observe(N),()=>{$.disconnect(),clearInterval(q),W.forEach(clearTimeout)}},[f,n,b]),g.useEffect(()=>{const N=y.current;if(f==="grid"||!N)return;let L=0,U=0,W=!1,q=0,z=0;const $=()=>[...N.children].map(O=>O.offsetLeft+O.offsetWidth/2),_=(O,X)=>{let fe=0,Y=1/0;return O.forEach((ne,te)=>{const qe=Math.abs(ne-X);qe {W=!1;const O=$();if(!O.length)return;const X=N.scrollLeft+N.clientWidth/2,fe=_(O,X);let Y=fe;fe===q&&Math.abs(z)>4&&(Y=z>0?Math.min(q+1,O.length-1):Math.max(q-1,0));const ne=N.scrollWidth-N.clientWidth,te=Math.max(0,Math.min(O[Y]-N.clientWidth/2,ne));N.scrollTo({left:te,behavior:"smooth"}),clearTimeout(U),U=setTimeout(()=>{N.style.scrollSnapType=""},450)},F=O=>{if(Math.abs(O.deltaX)>Math.abs(O.deltaY))return;const X=N.scrollWidth-N.clientWidth;if(X<=1)return;const fe=N.scrollLeft<=1,Y=N.scrollLeft>=X-1;O.deltaY<0&&fe||O.deltaY>0&&Y||(O.preventDefault(),W||(W=!0,z=0,q=_($(),N.scrollLeft+N.clientWidth/2)),z+=O.deltaY,N.style.scrollSnapType="none",N.scrollLeft+=O.deltaY,clearTimeout(L),L=setTimeout(B,150))};return N.addEventListener("wheel",F,{passive:!1}),()=>{N.removeEventListener("wheel",F),clearTimeout(L),clearTimeout(U)}},[f,n]),g.useEffect(()=>{const N=y.current,L=w.current,U=x.current;if(f==="grid"||!N||!L||!U)return;let W=0;const q=()=>{W=0;const Y=N.scrollWidth-N.clientWidth;if(Y<=1){L.style.opacity="0",L.style.pointerEvents="none";return}L.style.opacity="1",L.style.pointerEvents="auto";const ne=L.clientWidth,te=Math.max(32,N.clientWidth/N.scrollWidth*ne);U.style.width=`${te}px`,U.style.transform=`translateX(${(N.scrollLeft/Y*(ne-te)).toFixed(1)}px)`},z=()=>{W||(W=requestAnimationFrame(q))};q(),N.addEventListener("scroll",z,{passive:!0});const $=new ResizeObserver(z);$.observe(N);let _=!1,B=0;const F=Y=>{const ne=L.getBoundingClientRect(),te=U.clientWidth,qe=Math.min(Math.max(Y-ne.left-B,0),ne.width-te);N.scrollLeft=qe/(ne.width-te)*(N.scrollWidth-N.clientWidth)},O=Y=>{_=!0,L.setPointerCapture(Y.pointerId),N.style.scrollSnapType="none";const ne=U.getBoundingClientRect();B=Y.clientX>=ne.left&&Y.clientX<=ne.right?Y.clientX-ne.left:U.clientWidth/2,Y.clientX>=ne.left&&Y.clientX<=ne.right||F(Y.clientX)},X=Y=>{_&&F(Y.clientX)},fe=Y=>{var ne;_&&(_=!1,(ne=L.hasPointerCapture)!=null&&ne.call(L,Y.pointerId)&&L.releasePointerCapture(Y.pointerId),N.style.scrollSnapType="")};return L.addEventListener("pointerdown",O),L.addEventListener("pointermove",X),L.addEventListener("pointerup",fe),L.addEventListener("pointercancel",fe),()=>{N.removeEventListener("scroll",z),$.disconnect(),cancelAnimationFrame(W),L.removeEventListener("pointerdown",O),L.removeEventListener("pointermove",X),L.removeEventListener("pointerup",fe),L.removeEventListener("pointercancel",fe)}},[f,n]),rt({title:n?o("modelPage.metaTitle")(n.model.brand_name,n.model.name):o("modelPage.metaTitleFallback"),description:n?o("modelPage.metaDescription")(n.model.brand_name,n.model.name):void 0,path:`/fahrzeuge/${e}/${t}`}),l.vehicles.enabled&&!l.bypass)return a.jsx(ca,{message:l.vehicles.message});if(s)return a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:s});if(!n)return a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:o("modelPage.loading")});const{model:j,packages:C}=n,S=new Map([...C].sort((N,L)=>N.total_price-L.total_price).map((N,L)=>[N.id,L])),P=N=>{const L=C.length,U=S.get(N.id)??0,W=L<=1?0:U/(L-1),q=Math.round(W*(m.length-1));return{tier:m[q],tierT:W}},M=N=>[...N.products.map(L=>L.name_override||L.scraped_name||o("modelPage.productLoading")),...(N.description||"").split(` +`).map(L=>L.trim()).filter(Boolean)],E=N=>`/kontakt?${new URLSearchParams({brand:j.brand_name,model:j.name,package:N.name,packageId:N.id,total:N.total_price}).toString()}`;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"mx-auto max-w-6xl px-4 pt-12 sm:px-6",children:[l.vehicles.enabled&&l.bypass&&a.jsx(da,{inline:!0}),a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(H,{to:"/fahrzeuge",className:"hover:text-brand-500",children:o("modelPage.breadcrumbVehicles")})," /"," ",a.jsx(H,{to:`/fahrzeuge/${e}`,className:"hover:text-brand-500",children:j.brand_name})," / ",j.name]}),a.jsxs("h1",{className:`text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl ${C.length?"mb-2":"mb-8"}`,children:[j.brand_name," ",j.name," – ",o("modelPage.titleSuffix")]}),C.length===0&&a.jsx("p",{className:"pb-12 text-neutral-500 dark:text-neutral-400",children:o("modelPage.empty")})]}),C.length>0&&a.jsx("section",{className:"py-10 sm:py-14",style:{fontFamily:"'Barlow', sans-serif"},children:a.jsxs("div",{className:f==="grid"?"mx-auto max-w-6xl px-4 sm:px-6":"relative mx-auto max-w-[1880px] px-4 sm:px-6",children:[a.jsx("div",{ref:f==="grid"?void 0:y,className:f==="grid"?"grid items-start gap-[18px] sm:grid-cols-2 xl:grid-cols-3":"flex select-none items-start gap-[18px] overflow-x-auto pb-3 snap-x snap-mandatory [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",style:f==="coverflow"?{perspective:"1200px",paddingLeft:"calc(50% - 115px)",paddingRight:"calc(50% - 115px)",paddingTop:"10px"}:void 0,children:C.map(N=>{const{tier:L,tierT:U}=P(N);return a.jsx(YC,{pkg:N,tier:L,tierT:U,layout:f,bullets:M(N),formatPrice:k,contactUrl:E,t:o},N.id)})}),f!=="grid"&&a.jsx("div",{className:`pointer-events-none absolute inset-x-0 top-1/2 z-[200] flex -translate-y-1/2 justify-center transition-opacity duration-300 ${p?"opacity-100":"opacity-0"}`,"aria-hidden":"true",children:a.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-neutral-900/85 px-4 py-2 text-xs font-medium text-white shadow-lg backdrop-blur-sm",children:[a.jsx(zb,{className:"h-3.5 w-3.5 text-brand-400"}),a.jsx(Rb,{className:"h-4 w-4 text-brand-400"}),a.jsx(Ib,{className:"h-3.5 w-3.5 text-brand-400"}),a.jsx("span",{children:o("modelPage.wheelHint")})]})}),f!=="grid"&&a.jsx("div",{ref:w,className:"relative mx-auto mt-5 h-2 w-56 max-w-full cursor-pointer rounded-full bg-neutral-900/10 transition-opacity duration-200 dark:bg-white/10",style:{touchAction:"none"},"aria-hidden":"true",children:a.jsx("div",{ref:x,className:"absolute left-0 top-0 h-full rounded-full bg-brand-500 shadow-[0_0_10px_rgba(107,166,38,0.7)]",style:{width:"48px"}})})]})})]})}function ZC(){const[e,t]=g.useState(null),[n,r]=g.useState(""),{t:s}=Te();return rt({title:s("galleryOverview.metaTitle"),description:s("galleryOverview.metaDescription"),path:"/galerie"}),g.useEffect(()=>{A.get("/gallery-brands").then(t).catch(i=>r(i.message))},[]),a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:s("galleryOverview.title")}),a.jsx("p",{className:"mb-8 text-neutral-600 dark:text-neutral-300",children:s("galleryOverview.intro")}),n&&a.jsx("p",{className:"text-red-600",children:n}),!e&&!n&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:s("galleryOverview.loading")}),e&&e.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:s("galleryOverview.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:e==null?void 0:e.map(i=>a.jsxs(H,{to:`/galerie/${i.slug}`,className:"group relative block aspect-[4/3] overflow-hidden rounded-xl bg-neutral-900 shadow-sm transition hover:shadow-lg",children:[i.cover_image_path?a.jsx("img",{src:i.cover_image_path,alt:i.name,className:"h-full w-full object-cover transition duration-300 group-hover:scale-105"}):a.jsx("div",{className:"flex h-full w-full items-center justify-center bg-neutral-200 dark:bg-neutral-800"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/85 via-black/10 to-transparent transition group-hover:from-black/95"}),a.jsx("span",{className:"absolute inset-x-0 bottom-0 p-4 text-lg font-extrabold text-white",children:i.name})]},i.id))})]})}function QC(){const{brandSlug:e}=Yn(),[t,n]=g.useState(null),[r,s]=g.useState(""),{t:i}=Te();return g.useEffect(()=>{A.get(`/gallery-brands/${e}/projects`).then(n).catch(l=>s(l.message))},[e]),rt({title:t?i("galleryBrandPage.metaTitle")(t.brand.name):i("galleryBrandPage.metaTitleFallback"),description:t?i("galleryBrandPage.metaDescription")(t.brand.name):void 0,path:`/galerie/${e}`}),r?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:r}):t?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(H,{to:"/galerie",className:"hover:text-brand-500",children:i("galleryBrandPage.breadcrumbGallery")})," / ",t.brand.name]}),a.jsxs("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:[t.brand.name," – ",i("galleryBrandPage.titleSuffix")]}),t.projects.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:i("galleryBrandPage.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:t.projects.map(l=>a.jsxs(H,{to:`/galerie/${e}/${l.slug}`,className:"group relative block aspect-[4/3] overflow-hidden rounded-xl bg-neutral-900 shadow-sm transition hover:shadow-lg",children:[l.cover_image_path?a.jsx("img",{src:l.cover_image_path,alt:l.name,className:"h-full w-full object-cover transition duration-300 group-hover:scale-105"}):a.jsx("div",{className:"flex h-full w-full items-center justify-center bg-neutral-200 dark:bg-neutral-800"}),a.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/85 via-black/10 to-transparent transition group-hover:from-black/95"}),a.jsx("span",{className:"absolute inset-x-0 bottom-0 p-4 text-lg font-extrabold text-white",children:l.name})]},l.id))})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:i("galleryBrandPage.loading")})}function JC({photos:e,index:t,onClose:n,onNavigate:r}){const{t:s}=Te();if(g.useEffect(()=>{if(t==null)return;const o=u=>{u.key==="Escape"&&n(),u.key==="ArrowRight"&&r(1),u.key==="ArrowLeft"&&r(-1)};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[t,n,r]),t==null)return null;const i=e[t],l=o=>o.stopPropagation();return Gc.createPortal(a.jsxs("div",{className:"fixed inset-0 z-[200] flex items-center justify-center bg-black/90 p-4",onClick:n,children:[a.jsx("button",{onClick:o=>{l(o),n()},"aria-label":s("lightbox.close"),className:"absolute right-4 top-4 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-7 w-7",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6l12 12M18 6 6 18"})})}),e.length>1&&a.jsx("button",{onClick:o=>{l(o),r(-1)},"aria-label":s("lightbox.previous"),className:"absolute left-2 top-1/2 -translate-y-1/2 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white sm:left-4",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-8 w-8",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m15 18-6-6 6-6"})})}),a.jsx("img",{src:i.image_path,alt:i.caption||"",onClick:l,className:"max-h-[85vh] max-w-full rounded-lg object-contain"}),e.length>1&&a.jsx("button",{onClick:o=>{l(o),r(1)},"aria-label":s("lightbox.next"),className:"absolute right-2 top-1/2 -translate-y-1/2 rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white sm:right-4",children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"h-8 w-8",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m9 18 6-6-6-6"})})}),i.caption&&a.jsx("p",{onClick:l,className:"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/60 px-4 py-1.5 text-sm text-white",children:i.caption})]}),document.body)}function eP(){const{brandSlug:e,projectSlug:t}=Yn(),[n,r]=g.useState(null),[s,i]=g.useState(""),[l,o]=g.useState(null),{t:u}=Te();g.useEffect(()=>{A.get(`/gallery-brands/${e}/${t}/photos`).then(r).catch(d=>i(d.message))},[e,t]),rt({title:n?`${n.project.name} – ${n.project.brand_name}`:u("galleryProjectPage.metaTitleFallback"),description:n?u("galleryProjectPage.metaDescription")(n.project.name):void 0,path:`/galerie/${e}/${t}`});const c=d=>{o(h=>{const m=n.photos.length;return(h+d+m)%m})};return s?a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-red-600 sm:px-6",children:s}):n?a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[a.jsxs("p",{className:"mb-1 text-sm text-neutral-500 dark:text-neutral-400",children:[a.jsx(H,{to:"/galerie",className:"hover:text-brand-500",children:u("galleryProjectPage.breadcrumbGallery")})," /"," ",a.jsx(H,{to:`/galerie/${e}`,className:"hover:text-brand-500",children:n.project.brand_name})," / ",n.project.name]}),a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:n.project.name}),n.photos.length===0&&a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:u("galleryProjectPage.empty")}),a.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:n.photos.map((d,h)=>a.jsx(Se,{index:h%6,shine:!0,className:"aspect-square overflow-hidden rounded-xl",children:a.jsx("button",{onClick:()=>o(h),className:"block h-full w-full","aria-label":d.caption||u("galleryProjectPage.enlargeImage"),children:a.jsx("img",{src:d.image_path,alt:d.caption||"",className:"h-full w-full object-cover transition duration-300 hover:scale-105"})})},d.id))}),a.jsx(JC,{photos:n.photos,index:l,onClose:()=>o(null),onNavigate:c})]}):a.jsx("p",{className:"mx-auto max-w-6xl px-4 py-12 text-neutral-500 sm:px-6",children:u("galleryProjectPage.loading")})}function tP(){const[e,t]=g.useState([]),n=bl(),{t:r}=Te();return g.useEffect(()=>{A.get("/services").then(t).catch(()=>t([]))},[]),rt({title:r("leistungen.metaTitle"),description:r("leistungen.metaDescription"),path:"/leistungen"}),n.services.enabled&&!n.bypass?a.jsx(ca,{message:n.services.message}):a.jsxs("div",{className:"mx-auto max-w-6xl px-4 py-12 sm:px-6",children:[n.services.enabled&&n.bypass&&a.jsx(da,{inline:!0}),a.jsx("h1",{className:"mb-2 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:r("leistungen.title")}),a.jsx("p",{className:"mb-10 max-w-2xl text-neutral-600 dark:text-neutral-300",children:r("leistungen.intro")}),a.jsx("div",{className:"grid gap-5 sm:grid-cols-2 lg:grid-cols-3",children:e.map((s,i)=>a.jsxs(Se,{index:i%3,shine:!0,className:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"relative aspect-[4/3]",children:[s.image_path&&a.jsx("img",{src:s.image_path,alt:s.title,className:"h-full w-full object-cover",loading:"lazy"}),a.jsx("div",{className:"absolute -bottom-5 left-5 flex h-12 w-12 items-center justify-center rounded-full bg-brand-500 text-white shadow-lg ring-4 ring-white dark:ring-neutral-900",children:a.jsx(We,{name:s.icon_name,className:"h-6 w-6"})})]}),a.jsxs("div",{className:"p-6 pt-8",children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:s.title}),a.jsx("p",{className:"mb-3 text-sm text-neutral-600 dark:text-neutral-300",children:s.description}),a.jsxs(H,{to:s.cta_url||"/kontakt",className:"text-sm font-semibold text-brand-600 hover:underline dark:text-brand-400",children:[s.cta_label||r("leistungen.contact")," →"]})]})]},s.id))}),a.jsxs("div",{className:"mt-12 rounded-xl border border-neutral-200 bg-neutral-50 p-8 text-center dark:border-neutral-800 dark:bg-neutral-900/40",children:[a.jsx("h2",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:r("leistungen.notListedTitle")}),a.jsx("p",{className:"mb-5 text-neutral-600 dark:text-neutral-300",children:r("leistungen.notListedText")}),a.jsx(H,{to:"/kontakt",className:"inline-block rounded-md bg-brand-500 px-6 py-3 text-sm font-semibold text-white hover:bg-brand-600",children:r("leistungen.contact")})]})]})}function nP({name:e,description:t,className:n="",children:r}){const{consent:s,acceptAll:i,openSettings:l}=Or();return s.external?r:a.jsxs("div",{className:`flex flex-col items-center justify-center gap-3 rounded-xl border border-neutral-200 bg-neutral-50 p-6 text-center dark:border-neutral-800 dark:bg-neutral-900/40 ${n}`,children:[a.jsx("p",{className:"text-sm text-neutral-600 dark:text-neutral-300",children:t||`${e} wird erst nach deiner Zustimmung geladen, da dabei Daten an Google übertragen werden.`}),a.jsxs("div",{className:"flex flex-wrap justify-center gap-2",children:[a.jsx("button",{type:"button",onClick:i,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Laden erlauben"}),a.jsx("button",{type:"button",onClick:l,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Cookie-Einstellungen"})]})]})}const fb=e=>(e||"").replace(/[^\d+]/g,""),rP=e=>`https://wa.me/${fb(e).replace(/^0/,"49").replace("+","")}`,pb=encodeURIComponent("Boxbrunner Str. 20a, 63916 Amorbach"),Lf=`https://www.google.com/maps/dir/?api=1&destination=${pb}`,li={fontFamily:"'Michroma', sans-serif"};function sP({className:e}){return a.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:a.jsx("path",{d:"M12 2a10 10 0 0 0-8.6 15l-1.3 4.8 5-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 1 1-4.2 14.8l-.3-.2-2.6.7.7-2.5-.2-.3A8 8 0 0 1 12 4zm4.3 9.9c-.2-.1-1.4-.7-1.6-.8s-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5.2-.4v-.4l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.7.7-.9 1.6-.6 2.7.5 1.7 1.6 3.1 3.4 4.2 1.7 1 2.5 1 3.4.9.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"})})}function aP({path:e,className:t}){return a.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:a.jsx("path",{d:e})})}const iP={premium:"M4 12v3M8 8v11M12 4v16M16 8v11M20 12v3",germany:"M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0 M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5 19 19M19 5l-1.5 1.5M6.5 17.5 5 19",individual:"M6 3h12l4 6-10 12L2 9z M11 3 8 9l4 12 4-12-3-6M2 9h20",experts:"M20 6 9 17l-5-5"};function Df({formatted:e,color:t}){const[n,r]=e.split("€");return a.jsxs("span",{style:{...li,color:t},children:[n,a.jsx("span",{style:{fontFamily:"'Barlow', sans-serif"},children:"€"}),r]})}function Ra({icon:e,label:t,name:n,type:r="text",required:s,value:i,onChange:l,placeholder:o}){return a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx("label",{htmlFor:`kf-${n}`,className:"text-xs font-semibold uppercase tracking-[2px]",style:{color:"var(--kf-label)"},children:t}),a.jsxs("div",{className:"relative flex items-center",children:[a.jsx(e,{className:"pointer-events-none absolute left-[14px] h-[17px] w-[17px]",style:{color:"var(--kf-fieldicon)"}}),a.jsx("input",{id:`kf-${n}`,name:n,type:r,required:s,value:i,onChange:l,placeholder:o,className:"w-full rounded-lg border py-3.5 pl-[42px] pr-4 text-[15px] outline-none transition-colors",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)",color:"var(--kf-text2)"}})]})]})}function lP(){const[e]=ow(),{phone:t,whatsapp:n,contact_email:r}=Vr(),{t:s,language:i}=Te(),{consent:l}=Or(),o=N=>new Intl.NumberFormat(i==="de"?"de-DE":"en-US",{style:"currency",currency:"EUR"}).format(N),[u,c]=g.useState({name:"",email:"",phone:"",vin:"",message:""}),[d,h]=g.useState("idle"),[m,f]=g.useState(""),[b,y]=g.useState([]),[w,x]=g.useState([]),p=e.get("packageId"),v=e.get("total")?Number(e.get("total")):null;g.useEffect(()=>{if(!p){y([]);return}A.get(`/packages/${p}/upgrades`).then(y).catch(()=>y([]))},[p]);const k=N=>{x(L=>L.includes(N)?L.filter(U=>U!==N):[...L,N])},j=b.filter(N=>w.includes(N.id)).reduce((N,L)=>N+Number(L.price),0);rt({title:s("contactPage.metaTitle"),description:s("contactPage.metaDescription"),path:"/kontakt"});const C={brand:e.get("brand")||"",model:e.get("model")||"",package:e.get("package")||""},S=!!(C.brand&&C.model&&C.package),P=N=>c(L=>({...L,[N.target.name]:N.target.value})),M=async N=>{N.preventDefault(),h("sending"),f("");try{await A.post("/contact",{...u,brand_name:C.brand||null,model_name:C.model||null,package_name:C.package||null,product_name:e.get("product")||null,package_id:p||null,package_product_id:e.get("productId")||null,upgrade_ids:w}),h("sent"),c({name:"",email:"",phone:"",vin:"",message:""})}catch(L){f(L.message),h("idle")}},E=[{key:"premium",title:s("contactPage.featurePremiumTitle"),sub:s("contactPage.featurePremiumSub")},{key:"germany",title:s("contactPage.featureGermanyTitle"),sub:s("contactPage.featureGermanySub")},{key:"individual",title:s("contactPage.featureIndividualTitle"),sub:s("contactPage.featureIndividualSub")},{key:"experts",title:s("contactPage.featureExpertsTitle"),sub:s("contactPage.featureExpertsSub")}];return a.jsx("div",{className:"kf-page kontakt-sektion relative w-full overflow-hidden px-4 pb-10 sm:px-10",style:{color:"var(--kf-text2)",fontFamily:"'Barlow', sans-serif"},children:a.jsxs("div",{className:"relative z-10 mx-auto max-w-[1280px] pt-10 sm:pt-14",children:[a.jsx("div",{className:"mb-3 text-[13px] font-semibold uppercase tracking-[6px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.heroEyebrow")}),a.jsxs("h1",{className:"text-[34px] leading-[1.08] sm:text-[46px] lg:text-[60px]",style:{...li,color:"var(--kf-text)"},children:[s("contactPage.heroTitlePre")," ",a.jsx("span",{style:{color:"var(--kf-accent2)"},children:s("contactPage.heroTitleAccent")})," ",s("contactPage.heroTitlePost")]}),a.jsx("p",{className:"mb-10 mt-5 max-w-[520px] text-lg leading-[1.55]",style:{color:"var(--kf-muted)"},children:s("contactPage.heroSubtitle")}),a.jsxs("div",{className:"grid grid-cols-1 items-start gap-10 min-[981px]:grid-cols-[minmax(0,1.35fr)_minmax(320px,1fr)]",children:[a.jsx("div",{children:a.jsxs("div",{className:"rounded-2xl border p-[22px] sm:p-10",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[S&&a.jsxs("div",{className:"mb-8 rounded-xl border px-6 py-[22px]",style:{background:"var(--kf-pkgbg)",borderColor:"var(--kf-pkgbrd)"},children:[a.jsxs("div",{className:"mb-3.5 flex items-center gap-2.5 text-xs font-bold uppercase tracking-[2px]",style:{color:"var(--kf-accent2)"},children:[a.jsx(Fb,{className:"h-4 w-4"}),s("contactPage.packageBoxTitle")]}),a.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-5 gap-y-2 text-[15px]",children:[a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextBrand")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.brand}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextModel")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.model}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.contextPackage")}),a.jsx("span",{className:"font-semibold",style:{color:"var(--kf-text2)"},children:C.package})]}),a.jsxs("div",{className:"mt-3.5 flex items-baseline justify-between border-t pt-3.5",style:{borderColor:"var(--kf-pkgbrd)"},children:[a.jsx("span",{className:"text-[13px] font-semibold uppercase tracking-wide",style:{color:"var(--kf-muted)"},children:s("contactPage.packagePrice")}),a.jsx("span",{className:"text-xl",children:v!=null?a.jsx(Df,{formatted:o(v),color:"var(--kf-text)"}):"—"})]})]}),b.length>0&&a.jsxs("div",{className:"mb-8 rounded-xl border p-5",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)"},children:[a.jsx("div",{className:"mb-3 text-xs font-bold uppercase tracking-[2px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.optionalUpgrades")}),a.jsx("div",{className:"space-y-2",children:b.map(N=>a.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border p-3 text-sm",style:{borderColor:"var(--kf-fieldbrd)"},children:[a.jsx("input",{type:"checkbox",checked:w.includes(N.id),onChange:()=>k(N.id),className:"mt-0.5 h-4 w-4 rounded",style:{accentColor:"var(--kf-accent)"}}),a.jsxs("span",{className:"flex-1",children:[a.jsx("span",{className:"block font-semibold",style:{color:"var(--kf-text2)"},children:N.name}),N.description&&a.jsx("span",{className:"block text-xs",style:{color:"var(--kf-muted)"},children:N.description})]}),a.jsxs("span",{className:"font-semibold",style:{color:"var(--kf-accent2)"},children:["+",o(N.price)]})]},N.id))}),w.length>0&&v!=null&&a.jsxs("div",{className:"mt-3 flex items-baseline justify-between border-t pt-3 text-sm",style:{borderColor:"var(--kf-pkgbrd)"},children:[a.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide",style:{color:"var(--kf-muted)"},children:s("contactPage.totalWithUpgrades")}),a.jsx(Df,{formatted:o(v+j),color:"var(--kf-text)"})]})]}),a.jsx("h2",{className:"mb-8 text-xl",style:{...li,color:"var(--kf-text)"},children:s("contactPage.formTitle")}),d==="sent"&&a.jsxs("div",{className:"mb-6 rounded-[10px] border p-5",style:{borderColor:"var(--kf-accent)",background:"var(--kf-accentsoft)"},children:[a.jsx("div",{className:"text-base font-bold",style:{color:"var(--kf-accent2)"},children:s("contactPage.sentTitle")}),a.jsx("div",{className:"mt-1 text-sm",style:{color:"var(--kf-muted)"},children:s("contactPage.sentText")})]}),a.jsxs("form",{onSubmit:M,children:[a.jsxs("div",{className:"grid grid-cols-1 gap-6 min-[641px]:grid-cols-2",children:[a.jsx(Ra,{icon:Vb,label:s("contactPage.nameLabel"),name:"name",required:!0,value:u.name,onChange:P,placeholder:s("contactPage.namePlaceholder")}),a.jsx(Ra,{icon:Ld,label:s("contactPage.emailLabel"),name:"email",type:"email",required:!0,value:u.email,onChange:P,placeholder:s("contactPage.emailPlaceholder")}),a.jsx(Ra,{icon:Dd,label:s("contactPage.phoneLabel"),name:"phone",value:u.phone,onChange:P,placeholder:s("contactPage.phonePlaceholder")}),a.jsx(Ra,{icon:Ob,label:s("contactPage.vinLabel"),name:"vin",value:u.vin,onChange:P,placeholder:s("contactPage.vinPlaceholder")})]}),a.jsxs("div",{className:"mt-6 flex flex-col gap-2",children:[a.jsx("label",{htmlFor:"kf-message",className:"text-xs font-semibold uppercase tracking-[2px]",style:{color:"var(--kf-label)"},children:s("contactPage.messageLabel")}),a.jsx("textarea",{id:"kf-message",name:"message",rows:5,value:u.message,onChange:P,placeholder:s("contactPage.messagePlaceholder"),className:"w-full resize-y rounded-lg border px-4 py-3.5 text-[15px] outline-none",style:{background:"var(--kf-field)",borderColor:"var(--kf-fieldbrd)",color:"var(--kf-text2)"}})]}),m&&a.jsx("p",{className:"mt-4 text-sm text-red-600 dark:text-red-400",children:m}),a.jsxs("div",{className:"mt-8 flex flex-wrap items-center gap-5",children:[a.jsxs("button",{type:"submit",disabled:d==="sending",className:"inline-flex items-center gap-3 rounded-lg px-8 py-4 text-sm font-bold uppercase tracking-[3px] transition-[filter,box-shadow] hover:brightness-110 disabled:opacity-60",style:{background:"var(--kf-accent)",color:"var(--kf-btntext)",boxShadow:"0 10px 24px rgba(150,200,20,0.32)"},children:[a.jsx(Ub,{className:"h-[18px] w-[18px]"}),s(d==="sending"?"contactPage.sending":"contactPage.submit")]}),a.jsx("div",{className:"text-[13px]",style:{color:"var(--kf-label)"},children:s("contactPage.requiredHint")})]})]})]})}),a.jsxs("div",{className:"flex flex-col gap-6",children:[a.jsxs("div",{className:"relative overflow-hidden rounded-2xl border px-[22px] py-[26px] sm:px-8 sm:py-[34px]",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[a.jsx("div",{className:"pointer-events-none absolute -right-[60px] -top-[60px] h-[190px] w-[190px] rounded-full border border-dashed",style:{borderColor:"var(--kf-pkgbrd)"}}),a.jsx("h2",{className:"mb-7 text-[17px]",style:{...li,color:"var(--kf-text)"},children:s("contactPage.cardTitle")}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Dd,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.phone")}),a.jsx("a",{href:`tel:${fb(t)}`,className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:t})]})]}),a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Ld,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.email")}),a.jsx("a",{href:`mailto:${r}`,className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:r})]})]}),a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(Wb,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.address")}),a.jsxs("div",{className:"text-base font-semibold leading-[1.4]",style:{color:"var(--kf-text2)"},children:["Boxbrunner Straße 20a",a.jsx("br",{}),"63916 Amorbach"]})]})]}),n&&a.jsxs("div",{className:"flex items-start gap-4",children:[a.jsx("div",{className:"flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full",style:{background:"var(--kf-accentsoft)"},children:a.jsx(sP,{className:"h-[18px] w-[18px]",style:{color:"var(--kf-accent2)"}})}),a.jsxs("div",{children:[a.jsx("div",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("nav.whatsapp")}),a.jsx("a",{href:rP(n),className:"text-base font-semibold",style:{color:"var(--kf-text2)"},children:n})]})]})]}),a.jsxs("div",{className:"mt-7 border-t pt-6",style:{borderColor:"var(--kf-divider)"},children:[a.jsx("div",{className:"mb-3 text-[11px] font-semibold uppercase tracking-[3px]",style:{color:"var(--kf-accent2)"},children:s("contactPage.hours")}),a.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-[15px]",children:[a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.hoursWeekDays")}),a.jsx("span",{children:s("contactPage.hoursWeekTime")}),a.jsx("span",{style:{color:"var(--kf-label)"},children:s("contactPage.hoursSatDay")}),a.jsx("span",{children:s("contactPage.hoursSatTime")})]})]})]}),a.jsxs("div",{className:"relative overflow-hidden rounded-2xl border",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow)"},children:[l.external&&a.jsxs("a",{href:Lf,target:"_blank",rel:"noopener noreferrer",className:"absolute left-3.5 top-3.5 z-10 inline-flex items-center gap-2 rounded-lg border px-3.5 py-2 text-[13px] font-semibold hover:border-[var(--kf-accent)]",style:{background:"var(--kf-pill)",borderColor:"var(--kf-pillbrd)",color:"var(--kf-text2)",boxShadow:"var(--kf-shadow2)"},children:[s("contactPage.mapOpenChip"),a.jsx(Hb,{className:"h-3.5 w-3.5",style:{color:"var(--kf-accent2)"}})]}),a.jsx(nP,{name:s("contactPage.mapEmbedName"),className:"h-[210px] w-full",children:a.jsx("div",{className:"h-[210px] overflow-hidden",children:a.jsx("iframe",{title:"HifiPlanet Amorbach – Standort",src:`https://www.google.com/maps?q=${pb}&output=embed`,width:"100%",height:"290",style:{border:0,display:"block",marginTop:"-60px"},loading:"lazy",referrerPolicy:"no-referrer-when-downgrade"})})}),a.jsxs("a",{href:Lf,target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2.5 border-t px-4 py-4 text-[13px] font-bold uppercase tracking-[3px] hover:bg-[var(--kf-accentsoft)]",style:{borderColor:"var(--kf-divider)",color:"var(--kf-accent2)"},children:[s("contactPage.routePlan")," →"]})]})]})]}),a.jsx("div",{className:"mt-10 grid grid-cols-1 overflow-hidden rounded-2xl border min-[641px]:grid-cols-2 min-[901px]:grid-cols-4",style:{background:"var(--kf-card)",borderColor:"var(--kf-cardbrd)",boxShadow:"var(--kf-shadow2)"},children:E.map(N=>a.jsxs("div",{className:"flex items-center gap-4 border-b p-6 last:border-b-0 min-[641px]:border-b-0 min-[641px]:border-r min-[641px]:last:border-r-0",style:{borderColor:"var(--kf-divider)"},children:[a.jsx("div",{className:"flex h-[46px] w-[46px] flex-shrink-0 items-center justify-center rounded-full border-[1.5px]",style:{borderColor:"var(--kf-pkgbrd)",color:"var(--kf-accent2)"},children:a.jsx(aP,{path:iP[N.key],className:"h-[22px] w-[22px]"})}),a.jsxs("div",{children:[a.jsx("div",{className:"text-[15px] font-bold",style:{color:"var(--kf-text)"},children:N.title}),a.jsx("div",{className:"mt-0.5 text-[13px]",style:{color:"var(--kf-muted)"},children:N.sub})]})]},N.key))})]})})}function oP(){return rt({title:"Impressum",description:"Impressum von HifiPlanet Amorbach gemäß § 5 DDG.",path:"/impressum"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Impressum"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Angaben gemäß § 5 DDG"}),a.jsxs("p",{children:["Hifi Planet e.K.",a.jsx("br",{}),"Inhaber: Christopher Horndasch",a.jsx("br",{}),"Boxbrunner Str. 20a",a.jsx("br",{}),"63916 Amorbach"]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Kontakt"}),a.jsxs("p",{children:["Telefon: ",a.jsx("a",{href:"tel:+4993732062390",className:"hover:text-brand-500",children:"09373 20 62 390"}),a.jsx("br",{}),"E-Mail: ",a.jsx("a",{href:"mailto:info@hifi-planet-amorbach.de",className:"hover:text-brand-500",children:"info@hifi-planet-amorbach.de"})]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Umsatzsteuer-ID"}),a.jsx("p",{children:"Umsatzsteuer-Identifikationsnummer gemäß § 27a Umsatzsteuergesetz: DE 275084766"})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Zuständige Kammer"}),a.jsx("p",{children:"IHK Aschaffenburg"})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV"}),a.jsxs("p",{children:["Christopher Horndasch",a.jsx("br",{}),"Anschrift wie oben"]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Verbraucherstreitbeilegung"}),a.jsx("p",{children:"Wir sind nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle im Sinne des Verbraucherstreitbeilegungsgesetzes (VSBG) teilzunehmen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Haftung für Inhalte"}),a.jsx("p",{children:"Als Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Haftung für Links"}),a.jsx("p",{children:"Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"Urheberrecht"}),a.jsx("p",{children:"Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen."})]})]})]})}function uP(){return rt({title:"Datenschutzerklärung",description:"Datenschutzerklärung von HifiPlanet Amorbach gemäß Art. 13 DSGVO.",path:"/datenschutz"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Datenschutzerklärung"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"1. Verantwortlicher"}),a.jsxs("p",{children:["Verantwortlicher im Sinne der Datenschutz-Grundverordnung (DSGVO) ist:",a.jsx("br",{}),"Hifi Planet e.K., Christopher Horndasch",a.jsx("br",{}),"Boxbrunner Str. 20a, 63916 Amorbach",a.jsx("br",{}),"Telefon: 09373 20 62 390 · E-Mail:"," ",a.jsx("a",{href:"mailto:info@hifi-planet-amorbach.de",className:"hover:text-brand-500",children:"info@hifi-planet-amorbach.de"})]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"2. Ihre Rechte als betroffene Person"}),a.jsx("p",{className:"mb-2",children:"Sie haben jederzeit das Recht,"}),a.jsxs("ul",{className:"list-disc space-y-1 pl-5",children:[a.jsx("li",{children:"Auskunft über Ihre bei uns gespeicherten personenbezogenen Daten zu erhalten (Art. 15 DSGVO),"}),a.jsx("li",{children:"die Berichtigung unrichtiger Daten zu verlangen (Art. 16 DSGVO),"}),a.jsx("li",{children:"die Löschung Ihrer Daten zu verlangen (Art. 17 DSGVO),"}),a.jsx("li",{children:"die Verarbeitung Ihrer Daten einschränken zu lassen (Art. 18 DSGVO),"}),a.jsx("li",{children:"der Verarbeitung Ihrer Daten zu widersprechen (Art. 21 DSGVO),"}),a.jsx("li",{children:"Ihre Daten in einem gängigen Format zu erhalten (Datenübertragbarkeit, Art. 20 DSGVO), und"}),a.jsx("li",{children:"eine erteilte Einwilligung jederzeit mit Wirkung für die Zukunft zu widerrufen (Art. 7 Abs. 3 DSGVO)."})]}),a.jsx("p",{className:"mt-2",children:"Außerdem haben Sie das Recht, sich bei einer Datenschutz-Aufsichtsbehörde über die Verarbeitung Ihrer personenbezogenen Daten durch uns zu beschweren, zum Beispiel beim Bayerischen Landesamt für Datenschutzaufsicht (BayLDA)."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"3. Hosting und Server-Logfiles"}),a.jsx("p",{children:"Beim Aufruf dieser Website erhebt der Webserver automatisch Daten in sogenannten Server-Logfiles, die Ihr Browser übermittelt. Dazu gehören: IP-Adresse, Datum und Uhrzeit der Anfrage, aufgerufene Seite, verwendeter Browser und Betriebssystem sowie die zuvor besuchte Seite (Referrer-URL). Diese Daten dienen ausschließlich der technisch fehlerfreien Auslieferung der Website sowie der IT-Sicherheit (z. B. zur Abwehr von Angriffen) und werden nicht mit anderen Datenquellen zusammengeführt. Rechtsgrundlage ist unser berechtigtes Interesse an einem sicheren und stabilen Betrieb der Website (Art. 6 Abs. 1 lit. f DSGVO)."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"4. Kontaktformular"}),a.jsx("p",{children:"Wenn Sie uns über das Kontaktformular eine Anfrage zukommen lassen, werden Ihre Angaben aus dem Formular (Name, E-Mail-Adresse, optional Telefonnummer, Nachricht sowie ggf. der Kontext Ihrer Anfrage wie Marke, Modell oder Paket) inklusive der von Ihnen dort angegebenen Kontaktdaten bei uns gespeichert, um Ihre Anfrage zu bearbeiten und zu beantworten. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung durch Absenden des Formulars (Art. 6 Abs. 1 lit. a DSGVO) bzw., sofern Ihre Anfrage der Vorbereitung eines Vertrags dient, auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO. Wir löschen die Anfrage inklusive der Kontaktdaten, sobald der jeweilige Sachverhalt abschließend geklärt ist und keine gesetzlichen Aufbewahrungspflichten entgegenstehen. Diese Einwilligung können Sie jederzeit widerrufen, indem Sie uns formlos per E-Mail kontaktieren."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"5. Cookies und lokale Speicherung"}),a.jsx("p",{className:"mb-2",children:"Diese Website verwendet technisch notwendige Cookies bzw. Speichertechnologien, die für den Betrieb der Seite erforderlich sind und ohne die einzelne Funktionen nicht funktionieren würden. Dazu gehören:"}),a.jsxs("ul",{className:"list-disc space-y-1 pl-5",children:[a.jsxs("li",{children:["ein Session-Cookie (",a.jsx("code",{children:"hifi_admin_session"}),"), das für den Anmeldestatus im Mitarbeiter-Login benötigt wird und mit Ende der Browsersitzung abläuft,"]}),a.jsxs("li",{children:["eine lokale Speicherung (",a.jsx("code",{children:"localStorage"}),") Ihrer Hell-/Dunkelmodus-Einstellung sowie Ihrer Cookie-Auswahl, damit wir Sie nicht bei jedem Besuch erneut danach fragen müssen."]})]}),a.jsx("p",{className:"mt-2",children:'Für diese technisch notwendigen Cookies ist gemäß § 25 Abs. 2 Nr. 2 TTDSG keine Einwilligung erforderlich. Rechtsgrundlage ist unser berechtigtes Interesse am technischen Betrieb der Website (Art. 6 Abs. 1 lit. f DSGVO). Für alle darüber hinausgehenden Inhalte und Dienste – aktuell die eingebundenen Google Maps- und YouTube-Elemente sowie Google Analytics – fragen wir Sie beim ersten Besuch aktiv nach Ihrer Einwilligung. Sie können Ihre Auswahl jederzeit über den Link „Cookie-Einstellungen" im Footer ändern.'})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"6. Google Maps"}),a.jsxs("p",{children:['Auf unserer Kontaktseite und im Footer binden wir Kartenmaterial des Dienstes „Google Maps" ein, um Ihnen die Anfahrt zu unserem Standort zu erleichtern. Anbieter ist Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland. Die eingebettete Karte wird erst geladen, nachdem Sie dem im Cookie-Banner unter „Externe Medien" zugestimmt haben. Beim Laden der Karte wird Ihre IP-Adresse an Google übertragen; eine Verarbeitung kann dabei auch auf Servern außerhalb der EU/des EWR erfolgen. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"7. YouTube"}),a.jsxs("p",{children:['Auf unserer Startseite binden wir ein Video des Anbieters YouTube (Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland) im „erweiterten Datenschutzmodus" ein (Domain youtube-nocookie.com). Auch dieses Video wird erst geladen, nachdem Sie unter „Externe Medien" zugestimmt haben. Nach Angaben von Google werden dabei bis zum Start der Wiedergabe keine Cookies gesetzt; beim Laden des Players wird jedoch bereits eine Verbindung zu Google-Servern aufgebaut und Ihre IP-Adresse übertragen. Die Verarbeitung erfolgt auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"8. Google Analytics"}),a.jsxs("p",{children:['Sofern Sie der Statistik-Kategorie im Cookie-Banner zugestimmt haben, setzen wir „Google Analytics" ein, einen Webanalysedienst der Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland. Google Analytics verwendet Cookies und ähnliche Technologien, die eine Analyse der Benutzung dieser Website durch Sie ermöglichen. Die dabei erzeugten Informationen (u. a. Ihre IP-Adresse, die vor der Verarbeitung durch die Aktivierung der IP-Anonymisierung gekürzt wird) werden an einen Server von Google übertragen und dort gespeichert; eine Verarbeitung kann dabei auch auf Servern außerhalb der EU/des EWR erfolgen. Die Verarbeitung erfolgt ausschließlich auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die Sie jederzeit über die Cookie-Einstellungen mit Wirkung für die Zukunft widerrufen können. Weitere Informationen finden Sie in der'," ",a.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-500",children:"Datenschutzerklärung von Google"}),"."]})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"9. Empfänger der Daten"}),a.jsx("p",{children:"Ihre Daten werden grundsätzlich nur innerhalb unseres Unternehmens verarbeitet. Eine Weitergabe an Dritte erfolgt nur, soweit dies zur Bearbeitung Ihrer Anfrage erforderlich ist (z. B. an unseren Hosting-Provider zum Betrieb dieser Website und an unseren E-Mail-Anbieter zur Zustellung Ihrer Kontaktanfrage) oder soweit wir gesetzlich dazu verpflichtet sind."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"10. Speicherdauer"}),a.jsx("p",{children:"Sofern in dieser Erklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenspeicherung entfällt. Gesetzliche Aufbewahrungsfristen (z. B. aus dem Handels- oder Steuerrecht) bleiben hiervon unberührt und können eine längere Speicherung erforderlich machen."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"11. SSL-/TLS-Verschlüsselung"}),a.jsx("p",{children:"Diese Seite nutzt aus Sicherheitsgründen eine SSL-/TLS-Verschlüsselung zur Übertragung Ihrer Daten. Eine verschlüsselte Verbindung erkennen Sie an dem Schloss-Symbol in der Adresszeile Ihres Browsers."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"12. Änderung dieser Datenschutzerklärung"}),a.jsx("p",{children:"Wir passen diese Datenschutzerklärung an, sobald sich die von uns eingesetzten Datenverarbeitungen ändern. Es gilt jeweils die zum Zeitpunkt Ihres Besuchs aktuelle, auf dieser Seite veröffentlichte Fassung."})]}),a.jsxs("p",{children:["Fragen zum Datenschutz beantworten wir Ihnen gerne über unser"," ",a.jsx(H,{to:"/kontakt",className:"underline hover:text-brand-500",children:"Kontaktformular"})," oder direkt per E-Mail."]})]})]})}function cP(){return rt({title:"AGB",description:"Allgemeine Geschäftsbedingungen von HifiPlanet Amorbach.",path:"/agb"}),a.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-12 sm:px-6",children:[a.jsx("h1",{className:"mb-8 text-2xl font-bold text-neutral-900 dark:text-white sm:text-3xl",children:"Allgemeine Geschäftsbedingungen"}),a.jsxs("div",{className:"space-y-8 text-sm text-neutral-600 dark:text-neutral-300",children:[a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"1. Geltungsbereich"}),a.jsx("p",{children:'Diese Allgemeinen Geschäftsbedingungen (AGB) gelten für alle Beratungs-, Werkstatt- und Umbauleistungen, die die Hifi Planet e.K., Boxbrunner Str. 20a, 63916 Amorbach („wir", „HifiPlanet") gegenüber ihren Kunden erbringt, sowie für die Nutzung des Kontaktformulars auf dieser Website.'})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"2. Anfragen über die Website"}),a.jsx("p",{children:"Über das Kontaktformular können Sie unverbindlich eine Beratung oder ein Angebot zu einem einzelnen Produkt oder einem ganzen Paket anfragen. Die auf der Website angezeigten Preise sind, soweit sie von Drittanbietern automatisiert übernommen werden, unverbindliche Circa-Preise ohne Einbau und können sich bis zur Erstellung eines konkreten Angebots ändern. Mit dem Absenden einer Anfrage kommt noch kein Vertrag zustande."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"3. Vertragsschluss"}),a.jsx("p",{children:"Ein verbindlicher Vertrag über Beratung, Material und Einbauleistungen kommt erst zustande, wenn wir Ihnen nach persönlicher oder schriftlicher Abstimmung ein konkretes Angebot unterbreitet haben und Sie dieses angenommen haben, spätestens jedoch mit der Übergabe Ihres Fahrzeugs zur vereinbarten Auftragsdurchführung in unserer Werkstatt in Amorbach."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"4. Preise und Zahlung"}),a.jsx("p",{children:"Es gelten die im jeweiligen Einzelangebot genannten Preise inklusive der zum Zeitpunkt der Rechnungsstellung gesetzlich geltenden Umsatzsteuer. Sofern nichts anderes vereinbart ist, ist die Rechnung nach Abnahme der Leistung bzw. Übergabe des Fahrzeugs ohne Abzug fällig."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"5. Termine und Fahrzeugübergabe"}),a.jsx("p",{children:"Vereinbarte Termine zur Fahrzeugübergabe sind von beiden Seiten einzuhalten. Verschiebungen sind möglichst frühzeitig mitzuteilen. Für Gegenstände, die sich zum Zeitpunkt der Übergabe im Fahrzeug befinden und nicht Gegenstand des Auftrags sind, übernehmen wir keine Haftung."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"6. Gewährleistung"}),a.jsx("p",{children:"Es gelten die gesetzlichen Gewährleistungsrechte. Mängel sind uns unverzüglich nach Feststellung anzuzeigen, damit wir Ihnen Nacherfüllung anbieten können. Für Verschleißteile sowie für Schäden, die auf unsachgemäße Behandlung, Fremdeingriffe Dritter oder normalen Verschleiß zurückzuführen sind, besteht kein Gewährleistungsanspruch."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"7. Eigentumsvorbehalt"}),a.jsx("p",{children:"Verbautes Material und gelieferte Ware bleiben bis zur vollständigen Bezahlung unser Eigentum."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"8. Haftung"}),a.jsx("p",{children:"Wir haften unbeschränkt bei Vorsatz und grober Fahrlässigkeit sowie nach Maßgabe des Produkthaftungsgesetzes. Bei leichter Fahrlässigkeit haften wir nur bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht) und begrenzt auf den vertragstypisch vorhersehbaren Schaden. Die Haftung für Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"9. Widerrufsrecht"}),a.jsx("p",{children:"Ein gesetzliches Widerrufsrecht für Verbraucher besteht bei Verträgen, die außerhalb von Geschäftsräumen oder im Fernabsatz geschlossen werden. Da der eigentliche Werkvertrag über Beratung und Einbauleistungen erst bei persönlicher Fahrzeugübergabe in unseren Geschäftsräumen in Amorbach geschlossen wird, handelt es sich hierbei nicht um einen Fernabsatzvertrag; ein gesetzliches Widerrufsrecht besteht in diesem Fall nicht. Sollte im Einzelfall ausnahmsweise ein Vertrag im Fernabsatz zustande kommen, informieren wir Sie gesondert über Ihr gesetzliches Widerrufsrecht."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"10. Anwendbares Recht und Gerichtsstand"}),a.jsx("p",{children:"Es gilt das Recht der Bundesrepublik Deutschland unter Ausschluss des UN-Kaufrechts. Ist der Kunde Kaufmann, juristische Person des öffentlichen Rechts oder öffentlich-rechtliches Sondervermögen, ist Gerichtsstand für alle Streitigkeiten aus diesem Vertragsverhältnis unser Geschäftssitz in Amorbach."})]}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-2 font-semibold text-neutral-900 dark:text-white",children:"11. Schlussbestimmungen"}),a.jsx("p",{children:"Sollte eine Bestimmung dieser AGB unwirksam sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen hiervon unberührt."})]})]})]})}const dP={host:"",name:"",user:"",password:"",charset:"utf8mb4"},hP={username:"",password:"",password_confirmation:""};function mP(){rt({title:"Ersteinrichtung",path:"/setup"});const[e,t]=g.useState("loading"),[n,r]=g.useState(""),[s,i]=g.useState(!1),[l,o]=g.useState(""),[u,c]=g.useState(dP),[d,h]=g.useState(hP),[m,f]=g.useState(null),b=()=>A.get("/setup/status").then(S=>(S.needs_setup?S.steps.admin.ok?t("done"):S.steps.schema.ok?t("admin"):t(S.steps.database.ok?"schema":"database"):t("locked"),S));g.useEffect(()=>{A.get("/setup/status").then(S=>t(S.needs_setup?"password":"locked")).catch(()=>t("locked"))},[]);const y=async S=>{S.preventDefault(),r(""),i(!0);try{await A.post("/setup/verify-password",{password:l}),await b()}catch(P){r(P.message)}finally{i(!1)}},w=async S=>{S.preventDefault(),r(""),i(!0);try{await A.post("/setup/database",u),await b()}catch(P){r(P.message)}finally{i(!1)}},x=async()=>{r(""),i(!0);try{const S=await A.post("/setup/migrate",{});f(S.actions),S.status.steps.schema.ok&&t("admin")}catch(S){r(S.message)}finally{i(!1)}},p=async S=>{if(S.preventDefault(),r(""),d.password!==d.password_confirmation){r("Die Passwörter stimmen nicht überein");return}i(!0);try{await A.post("/setup/admin",d),t("done")}catch(P){r(P.message)}finally{i(!1)}},v="w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900",k="mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",j=[{key:"database",label:"Datenbank"},{key:"schema",label:"Struktur"},{key:"admin",label:"Admin-Account"}],C=j.findIndex(S=>S.key===e);return a.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-neutral-50 px-4 py-12 dark:bg-neutral-950",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-16 w-auto sm:h-20"}),a.jsxs("div",{className:"w-full max-w-md rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[e==="loading"&&a.jsx("p",{className:"text-center text-sm text-neutral-400",children:"Lädt…"}),e==="locked"&&a.jsxs("div",{className:"text-center",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Bereits eingerichtet"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Seite wurde bereits vollständig eingerichtet. Der Assistent ist deshalb gesperrt."}),a.jsx(H,{to:"/admin/login",className:"text-sm font-medium text-brand-600 hover:underline dark:text-brand-400",children:"Zum Login"})]}),["database","schema","admin"].includes(e)&&a.jsx("div",{className:"mb-6 flex items-center justify-center gap-2",children:j.map((S,P)=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:`flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold ${P o(S.target.value),required:!0,autoFocus:!0,className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Prüfe…":"Weiter"})]}),e==="database"&&a.jsxs("form",{onSubmit:w,children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Datenbank-Zugangsdaten"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Trage die Zugangsdaten der Datenbank auf diesem Server ein. Die Verbindung wird vor dem Speichern getestet."}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Host *"}),a.jsx("input",{required:!0,value:u.host,onChange:S=>c({...u,host:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Datenbankname *"}),a.jsx("input",{required:!0,value:u.name,onChange:S=>c({...u,name:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Benutzer *"}),a.jsx("input",{required:!0,value:u.user,onChange:S=>c({...u,user:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Passwort"}),a.jsx("input",{type:"password",value:u.password,onChange:S=>c({...u,password:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:k,children:"Zeichensatz"}),a.jsx("input",{value:u.charset,onChange:S=>c({...u,charset:S.target.value}),className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Teste Verbindung…":"Verbindung testen & speichern"})]}),e==="schema"&&a.jsxs("div",{children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Datenbankstruktur"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Die Datenbankverbindung funktioniert. Jetzt legen wir die benötigten Tabellen an."}),m&&a.jsx("ul",{className:"mb-4 space-y-1 rounded-md bg-neutral-50 p-3 text-sm text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300",children:m.map((S,P)=>a.jsx("li",{children:S},P))}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"button",onClick:x,disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Richte ein…":"Datenbankstruktur einrichten"})]}),e==="admin"&&a.jsxs("form",{onSubmit:p,children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Erster Admin-Account"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Lege den ersten Super-Admin-Account an, mit dem du dich anschließend einloggen kannst."}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Benutzername"}),a.jsx("input",{required:!0,autoFocus:!0,value:d.username,onChange:S=>h({...d,username:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-3",children:[a.jsx("label",{className:k,children:"Passwort"}),a.jsx("input",{type:"password",required:!0,minLength:8,value:d.password,onChange:S=>h({...d,password:S.target.value}),className:v})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:k,children:"Passwort wiederholen"}),a.jsx("input",{type:"password",required:!0,minLength:8,value:d.password_confirmation,onChange:S=>h({...d,password_confirmation:S.target.value}),className:v})]}),n&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:n}),a.jsx("button",{type:"submit",disabled:s,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:s?"Lege an…":"Admin-Account anlegen"})]}),e==="done"&&a.jsxs("div",{className:"text-center",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Fertig!"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Die Ersteinrichtung ist abgeschlossen. Du kannst dich jetzt mit deinem neuen Admin-Account anmelden."}),a.jsx(H,{to:"/admin/login",className:"inline-block w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600",children:"Zum Login"})]})]})]})}function fP(){const{user:e,login:t,verifyTwoFactor:n}=Bt(),r=ra(),[s,i]=g.useState("credentials"),[l,o]=g.useState(""),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState(""),[b,y]=g.useState(!1);if(e)return a.jsx(Gs,{to:"/admin",replace:!0});const w=async p=>{p.preventDefault(),y(!0),f("");try{(await t(l,u)).requires2fa?i("code"):r("/admin")}catch(v){f(v.message)}finally{y(!1)}},x=async p=>{p.preventDefault(),y(!0),f("");try{await n(d),r("/admin")}catch(v){f(v.message)}finally{y(!1)}};return a.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-neutral-50 px-4 dark:bg-neutral-950",children:[a.jsx("img",{src:Ks,alt:"HifiPlanet",className:"h-16 w-auto dark:hidden sm:h-20"}),a.jsx("img",{src:Di,alt:"HifiPlanet",className:"hidden h-16 w-auto dark:block sm:h-20"}),s==="credentials"?a.jsxs("form",{onSubmit:w,className:"w-full max-w-sm rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-6 text-xl font-bold text-neutral-900 dark:text-white",children:"Admin-Login"}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername"}),a.jsx("input",{value:l,onChange:p=>o(p.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort"}),a.jsx("input",{type:"password",value:u,onChange:p=>c(p.target.value),required:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),m&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:m}),a.jsx("button",{type:"submit",disabled:b,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:b?"Anmelden…":"Anmelden"})]}):a.jsxs("form",{onSubmit:x,className:"w-full max-w-sm rounded-xl border border-neutral-200 bg-white p-8 shadow-sm dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h1",{className:"mb-2 text-xl font-bold text-neutral-900 dark:text-white",children:"Bestätigungscode"}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Öffne die Google Authenticator App und gib den 6-stelligen Code ein. Alternativ kannst du auch einen deiner Wiederherstellungscodes verwenden."}),a.jsxs("div",{className:"mb-6",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Code"}),a.jsx("input",{value:d,onChange:p=>h(p.target.value),required:!0,autoFocus:!0,inputMode:"numeric",placeholder:"123456",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-center text-lg tracking-widest focus:border-brand-500 focus:outline-none dark:border-neutral-700 dark:bg-neutral-900"})]}),m&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:m}),a.jsx("button",{type:"submit",disabled:b,className:"w-full rounded-md bg-brand-500 px-4 py-2.5 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:b?"Prüfe…":"Bestätigen"}),a.jsx("button",{type:"button",onClick:()=>{i("credentials"),h(""),f("")},className:"mt-3 w-full text-sm text-neutral-500 hover:underline dark:text-neutral-400",children:"Zurück zum Login"})]})]})}const pP={tag:"M4 4h7l9 9-7 7-9-9V4Zm3.5 3.5h.01",car:"M3 13.5 4.5 9A2 2 0 0 1 6.4 7.5h11.2A2 2 0 0 1 19.5 9L21 13.5M3 13.5v4a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-4M3 13.5h18M6.5 16.5h.01M17.5 16.5h.01",box:"M12 3 4 7.5v9L12 21l8-4.5v-9L12 3Zm0 9 8-4.5M12 12v9M12 12 4 7.5",mail:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm0 0 8 7 8-7"},gP=({path:e,className:t="h-6 w-6"})=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:t,children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:e})});function xP(){const[e,t]=g.useState(null),[n,r]=g.useState("");if(g.useEffect(()=>{A.get("/analytics/report").then(t).catch(i=>r(i.message))},[]),n)return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"text-sm text-red-600",children:n})]});if(!e)return null;if(!e.configured)return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsxs("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:["Noch nicht eingerichtet. Unter"," ",a.jsx(H,{to:"/admin/settings/website",className:"text-brand-600 hover:underline dark:text-brand-400",children:"Einstellungen → Website"})," ","kannst du die Dashboard-Anbindung konfigurieren, um hier Besucherzahlen zu sehen."]})]});const s=Math.max(1,...e.daily.map(i=>i.pageviews));return a.jsxs("section",{className:"mt-8 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"mb-5 text-sm text-neutral-500 dark:text-neutral-400",children:"Letzte 7 Tage."}),a.jsxs("div",{className:"mb-6 grid grid-cols-3 gap-4",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.users}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Nutzer"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.sessions}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Sitzungen"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-2xl font-extrabold text-brand-600 dark:text-brand-400",children:e.totals.pageviews}),a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:"Seitenaufrufe"})]})]}),e.daily.length>0&&a.jsx("div",{className:"mb-6 flex h-24 items-end gap-1.5",children:e.daily.map(i=>a.jsxs("div",{className:"flex flex-1 flex-col items-center gap-1",children:[a.jsx("div",{className:"w-full rounded-t bg-brand-400 dark:bg-brand-500",style:{height:`${Math.max(4,i.pageviews/s*80)}px`},title:`${i.date}: ${i.pageviews} Seitenaufrufe`}),a.jsxs("span",{className:"text-[10px] text-neutral-400",children:[i.date.slice(6,8),".",i.date.slice(4,6),"."]})]},i.date))}),e.top_pages.length>0&&a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-neutral-400",children:"Meistbesuchte Seiten"}),a.jsx("ul",{className:"space-y-1 text-sm",children:e.top_pages.map(i=>a.jsxs("li",{className:"flex items-center justify-between gap-3 text-neutral-700 dark:text-neutral-300",children:[a.jsx("span",{className:"truncate font-mono text-xs",children:i.path}),a.jsx("span",{className:"shrink-0 font-semibold",children:i.pageviews})]},i.path))})]})]})}function bP(){const{user:e,hasPermission:t}=Bt(),[n,r]=g.useState({});g.useEffect(()=>{t("brands.manage")&&A.get("/brands").then(i=>r(l=>({...l,brands:i.length}))),(t("models.manage")||t("packages.manage"))&&A.get("/models").then(i=>r(l=>({...l,models:i.length}))),t("packages.manage")&&A.get("/packages").then(i=>r(l=>({...l,packages:i.length}))),t("contact.manage")&&A.get("/contact").then(i=>r(l=>({...l,newContacts:i.filter(o=>o.status==="new").length})))},[]);const s=[{key:"brands",label:"Marken",icon:"tag",hint:"Die Hersteller, z. B. Audi oder BMW.",value:n.brands,to:"/admin/brands",show:t("brands.manage")},{key:"models",label:"Modelle",icon:"car",hint:"Die Fahrzeuge einer Marke, z. B. A4.",value:n.models,to:"/admin/models",show:t("models.manage")},{key:"packages",label:"Pakete",icon:"box",hint:"Die Sound-Pakete für ein Modell.",value:n.packages,to:"/admin/packages",show:t("packages.manage")},{key:"contacts",label:"Neue Anfragen",icon:"mail",hint:"Kunden, die noch auf Antwort warten.",value:n.newContacts,to:"/admin/contact-requests",show:t("contact.manage"),highlight:!0}].filter(i=>i.show);return a.jsxs("div",{children:[a.jsxs("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:["Willkommen, ",e==null?void 0:e.username,"!"]}),a.jsx("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:"Hier siehst du auf einen Blick, wie viel in deinem Shop hinterlegt ist. Klicke auf eine Kachel, um dorthin zu gelangen."}),s.length===0?a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:"Für deinen Account sind noch keine Bereiche freigeschaltet. Bitte wende dich an einen Administrator."}):a.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:s.map(i=>a.jsxs(H,{to:i.to,className:`rounded-xl border p-5 shadow-sm transition hover:-translate-y-0.5 hover:shadow-md ${i.highlight&&i.value>0?"border-brand-300 bg-brand-50 dark:border-brand-900 dark:bg-brand-900/20":"border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900"}`,children:[a.jsx("div",{className:"mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(gP,{path:pP[i.icon]})}),a.jsx("p",{className:"text-sm font-semibold text-neutral-700 dark:text-neutral-200",children:i.label}),a.jsx("p",{className:"mt-1 text-3xl font-extrabold text-brand-600 dark:text-brand-400",children:i.value??"…"}),a.jsx("p",{className:"mt-2 text-xs text-neutral-500 dark:text-neutral-400",children:i.hint})]},i.key))}),t("settings.manage")&&a.jsx(xP,{})]})}const Bf={name:"",sort_order:0};function vP(){const[e,t]=g.useState([]),[n,r]=g.useState(Bf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/brands").then(t);g.useEffect(()=>{u()},[]);const c=f=>{i(f.id),r({name:f.name,sort_order:f.sort_order})},d=()=>{i(null),r(Bf)},h=async f=>{f.preventDefault(),o("");try{s?await A.put(`/brands/${s}`,n):await A.post("/brands",n),d(),u()}catch(b){o(b.message)}},m=async f=>{confirm("Marke inkl. aller Modelle/Pakete/Produkte wirklich löschen?")&&(await A.delete(`/brands/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Marken"}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsx(H,{to:`/marken/${f.slug}`,target:"_blank",className:"hover:text-brand-500",children:f.name})}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Marken angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Marke bearbeiten":"Neue Marke"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.name,onChange:f=>r({...n,name:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const zf={name:"",brand_id:"",sort_order:0};function yP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(zf),[l,o]=g.useState(null),[u,c]=g.useState(""),[d,h]=g.useState("all"),m=g.useMemo(()=>d==="all"?e:e.filter(p=>String(p.brand_id)===d),[e,d]),f=()=>{A.get("/models").then(t),A.get("/brands").then(r)};g.useEffect(f,[]);const b=p=>{o(p.id),i({name:p.name,brand_id:p.brand_id,sort_order:p.sort_order})},y=()=>{o(null),i(zf)},w=async p=>{p.preventDefault(),c("");const v={...s,brand_id:Number(s.brand_id)};try{l?await A.put(`/models/${l}`,v):await A.post("/models",v),y(),f()}catch(k){c(k.message)}},x=async p=>{confirm("Modell inkl. aller Pakete/Produkte wirklich löschen?")&&(await A.delete(`/models/${p}`),f())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Modelle"}),a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Nach Marke filtern:"}),a.jsxs("select",{value:d,onChange:p=>h(p.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),n.map(p=>a.jsx("option",{value:String(p.id),children:p.name},p.id))]}),d!=="all"&&a.jsx("button",{onClick:()=>h("all"),className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[m.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke"}),a.jsx("th",{className:"px-4 py-2",children:"Modell"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[m.map(p=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:p.brand_name}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:p.name}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>b(p),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>x(p.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},p.id)),m.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Modelle angelegt.":"Keine Modelle für diese Marke."})})]})]})})]}),a.jsxs("form",{onSubmit:w,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Modell bearbeiten":"Neues Modell"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Marke *"}),a.jsxs("select",{required:!0,value:s.brand_id,onChange:p=>i({...s,brand_id:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Bitte wählen…"}),n.map(p=>a.jsx("option",{value:p.id,children:p.name},p.id))]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Modellname *"}),a.jsx("input",{required:!0,value:s.name,onChange:p=>i({...s,name:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:s.sort_order,onChange:p=>i({...s,sort_order:Number(p.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:y,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}function vl({value:e,onChange:t,label:n="Bild"}){const[r,s]=g.useState(!1),[i,l]=g.useState(""),o=async u=>{var d;const c=(d=u.target.files)==null?void 0:d[0];if(c){s(!0),l("");try{const h=new FormData;h.append("file",c);const m=await A.post("/uploads",h);t(m.path)}catch(h){l(h.message)}finally{s(!1)}}};return a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:n}),a.jsxs("div",{className:"flex items-center gap-3",children:[e&&a.jsx("img",{src:e,alt:"",className:"h-12 w-12 rounded-md object-cover"}),a.jsx("input",{type:"file",accept:"image/png,image/jpeg,image/webp",onChange:o,className:"text-sm"}),r&&a.jsx("span",{className:"text-sm text-neutral-500",children:"Lädt hoch…"})]}),i&&a.jsx("p",{className:"mt-1 text-sm text-red-600",children:i})]})}const Rf={name:"",cover_image_path:"",sort_order:0};function kP(){const[e,t]=g.useState([]),[n,r]=g.useState(Rf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/gallery-brands").then(t);g.useEffect(()=>{u()},[]);const c=f=>{i(f.id),r({name:f.name,cover_image_path:f.cover_image_path||"",sort_order:f.sort_order})},d=()=>{i(null),r(Rf)},h=async f=>{f.preventDefault(),o("");try{s?await A.put(`/gallery-brands/${s}`,n):await A.post("/gallery-brands",n),d(),u()}catch(b){o(b.message)}},m=async f=>{confirm("Marke inkl. aller Projekte/Fotos wirklich löschen?")&&(await A.delete(`/gallery-brands/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Galerie-Marken"}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Bild"}),a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:f.cover_image_path?a.jsx("img",{src:f.cover_image_path,alt:"",className:"h-10 w-10 rounded-md object-cover"}):a.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-md bg-neutral-100 text-xs text-neutral-400 dark:bg-neutral-800",children:"–"})}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsx(H,{to:`/galerie/${f.slug}`,target:"_blank",className:"hover:text-brand-500",children:f.name})}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Galerie-Marken angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Marke bearbeiten":"Neue Marke"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.name,onChange:f=>r({...n,name:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:n.cover_image_path,onChange:f=>r({...n,cover_image_path:f}),label:"Titelbild (optional)"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const If={name:"",gallery_brand_id:"",cover_image_path:"",sort_order:0};function wP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(If),[l,o]=g.useState(null),[u,c]=g.useState(""),[d,h]=g.useState("all"),m=g.useMemo(()=>d==="all"?e:e.filter(p=>String(p.gallery_brand_id)===d),[e,d]),f=()=>{A.get("/gallery-projects").then(t),A.get("/gallery-brands").then(r)};g.useEffect(f,[]);const b=p=>{o(p.id),i({name:p.name,gallery_brand_id:p.gallery_brand_id,cover_image_path:p.cover_image_path||"",sort_order:p.sort_order})},y=()=>{o(null),i(If)},w=async p=>{p.preventDefault(),c("");const v={...s,gallery_brand_id:Number(s.gallery_brand_id)};try{l?await A.put(`/gallery-projects/${l}`,v):await A.post("/gallery-projects",v),y(),f()}catch(k){c(k.message)}},x=async p=>{confirm("Projekt inkl. aller Fotos wirklich löschen?")&&(await A.delete(`/gallery-projects/${p}`),f())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Galerie-Projekte"}),a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Nach Marke filtern:"}),a.jsxs("select",{value:d,onChange:p=>h(p.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),n.map(p=>a.jsx("option",{value:String(p.id),children:p.name},p.id))]}),d!=="all"&&a.jsx("button",{onClick:()=>h("all"),className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[m.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke"}),a.jsx("th",{className:"px-4 py-2",children:"Projekt"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[m.map(p=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:p.brand_name}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:p.name}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx(H,{to:`/admin/gallery-projects/${p.id}/photos`,className:"mr-3 text-brand-600 hover:underline",children:"Fotos"}),a.jsx("button",{onClick:()=>b(p),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>x(p.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},p.id)),m.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Projekte angelegt.":"Keine Projekte für diese Marke."})})]})]})})]}),a.jsxs("form",{onSubmit:w,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Projekt bearbeiten":"Neues Projekt"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Marke *"}),a.jsxs("select",{required:!0,value:s.gallery_brand_id,onChange:p=>i({...s,gallery_brand_id:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Bitte wählen…"}),n.map(p=>a.jsx("option",{value:p.id,children:p.name},p.id))]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Projektname *"}),a.jsx("input",{required:!0,placeholder:"z. B. Audi TT",value:s.name,onChange:p=>i({...s,name:p.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:s.cover_image_path,onChange:p=>i({...s,cover_image_path:p}),label:"Titelbild (optional)"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:s.sort_order,onChange:p=>i({...s,sort_order:Number(p.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:y,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}function jP(){const{projectId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(""),[i,l]=g.useState(!1),[o,u]=g.useState(""),c=g.useRef(null),d=()=>A.get(`/gallery-projects/${e}/photos`).then(n);g.useEffect(()=>{d()},[e]);const h=async w=>{const x=Array.from(w.target.files||[]);if(x.length!==0){s(""),l(!0);try{for(let p=0;p {n(p=>p.map(v=>v.id===w.id?{...v,caption:x}:v))},f=(w,x)=>{n(p=>p.map(v=>v.id===w.id?{...v,sort_order:x}:v))},b=async w=>{await A.put(`/gallery-photos/${w.id}`,{caption:w.caption,sort_order:w.sort_order}),d()},y=async w=>{confirm("Foto wirklich entfernen?")&&(await A.delete(`/gallery-photos/${w}`),d())};return a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(H,{to:"/admin/gallery-projects",className:"text-brand-600 hover:underline",children:"← Zurück zu den Projekten"})}),a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Fotos im Projekt"}),a.jsxs("div",{className:"mb-6 rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Fotos hinzufügen (Mehrfachauswahl möglich)"}),a.jsx("input",{ref:c,type:"file",multiple:!0,accept:"image/png,image/jpeg,image/webp",onChange:h,disabled:i,className:"text-sm"}),i&&a.jsx("p",{className:"mt-2 text-sm text-neutral-500",children:o})]}),r&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:r}),a.jsxs("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4",children:[t.map(w=>a.jsxs("div",{className:"overflow-hidden rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("img",{src:w.image_path,alt:w.caption||"",className:"aspect-square w-full object-cover"}),a.jsxs("div",{className:"space-y-2 p-3",children:[a.jsx("input",{value:w.caption||"",onChange:x=>m(w,x.target.value),onBlur:()=>b(w),placeholder:"Bildunterschrift (optional)",className:"w-full rounded-md border border-neutral-300 bg-white px-2 py-1 text-xs dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("input",{type:"number",value:w.sort_order,onChange:x=>f(w,Number(x.target.value)),onBlur:()=>b(w),className:"w-16 rounded-md border border-neutral-300 bg-white px-2 py-1 text-xs dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{onClick:()=>y(w.id),className:"text-xs text-red-600 hover:underline",children:"Entfernen"})]})]})]},w.id)),t.length===0&&a.jsx("p",{className:"col-span-full py-6 text-center text-neutral-400",children:"Noch keine Fotos in diesem Projekt."})]})]})}const NP=["Base","Clear","Drive","Prime","Elite","Apex","The Statement","Limitless"],SP=e=>(e+1)*10,Ia="w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",Zu=e=>({description:e.description||"",markup_type:e.markup_type||"none",markup_value:e.markup_value||0,icon_name:e.icon_name||"",tagline:e.tagline||"",price_text:e.price_text||"",is_featured:!!e.is_featured,sort_order:e.sort_order??0}),CP=e=>({description:"",markup_type:"none",markup_value:0,icon_name:"",tagline:"",price_text:"",is_featured:!1,sort_order:SP(e)}),PP=["description","markup_type","markup_value","icon_name","tagline","price_text","is_featured","sort_order"],vo=e=>{if(!e.existing)return e.checked;const t=Zu(e.existing);return PP.some(n=>n==="is_featured"?!!t[n]!=!!e.form[n]:String(t[n])!==String(e.form[n]))},ss=(e,t)=>{const n=t.filter(l=>l.car_model_id===e).slice().sort((l,o)=>l.sort_order-o.sort_order||l.name.localeCompare(o.name)),r=new Set,s=NP.map((l,o)=>{const u=n.find(c=>!r.has(c.id)&&c.name.trim().toLowerCase()===l.toLowerCase());return u&&r.add(u.id),{key:`tier-${o}`,tierName:l,existing:u||null,checked:!!u,form:u?Zu(u):CP(o)}}),i=n.filter(l=>!r.has(l.id)).map(l=>({key:`legacy-${l.id}`,tierName:null,existing:l,checked:!0,form:Zu(l)}));return[...s,...i]},EP=e=>{e.target.style.height="auto",e.target.style.height=`${e.target.scrollHeight}px`};function TP(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(""),[l,o]=g.useState(""),[u,c]=g.useState([]),[d,h]=g.useState({}),[m,f]=g.useState(!1),[b,y]=g.useState(null),[w,x]=g.useState(""),[p,v]=g.useState(!1),[k,j]=g.useState(null),[C,S]=g.useState("all"),[P,M]=g.useState("all"),E=async()=>{const[T,G]=await Promise.all([A.get("/packages"),A.get("/models")]);return t(T),r(G),T};g.useEffect(()=>{E()},[]);const N=g.useMemo(()=>new Map(n.map(T=>[T.id,T])),[n]),L=g.useMemo(()=>{const T=new Map;return n.forEach(G=>{T.has(G.brand_id)||T.set(G.brand_id,G.brand_name)}),Array.from(T,([G,Z])=>({id:G,name:Z})).sort((G,Z)=>G.name.localeCompare(Z.name))},[n]),U=g.useMemo(()=>n.filter(T=>!s||String(T.brand_id)===s).sort((T,G)=>T.name.localeCompare(G.name)),[n,s]),W=l?N.get(Number(l)):null,q=g.useMemo(()=>u.some(vo),[u]),z=()=>!q||confirm("Ungespeicherte Änderungen verwerfen?"),$=(T,G,Z=e)=>{i(String(T)),o(String(G)),c(ss(Number(G),Z)),h({}),y(null),x(""),j(null)},_=T=>{z()&&(i(T),o(""),c([]),h({}),y(null),j(null))},B=T=>{if(!z())return;if(!T){o(""),c([]);return}const G=N.get(Number(T));$(G?G.brand_id:s,T)},F=(T,G)=>c(Z=>Z.map(Fe=>Fe.key===T?{...Fe,checked:G}:Fe)),O=(T,G)=>c(Z=>Z.map(Fe=>Fe.key===T?{...Fe,form:{...Fe.form,...G}}:Fe)),X=T=>({name:T.tierName??T.existing.name,car_model_id:Number(l),...T.form,markup_value:Number(T.form.markup_value),sort_order:Number(T.form.sort_order)}),fe=async()=>{f(!0),y(null);const T={},G=u;let Z=0,Fe=0;for(const Ye of u)try{Ye.existing?vo(Ye)&&(await A.put(`/packages/${Ye.existing.id}`,X(Ye)),Fe+=1):Ye.checked&&(await A.post("/packages",X(Ye)),Z+=1)}catch(Kr){T[Ye.key]=Kr.message}const fa=await E(),Nl=ss(Number(l),fa).map(Ye=>{if(!T[Ye.key])return Ye;const Kr=G.find(Lb=>Lb.key===Ye.key);return Kr?{...Ye,checked:Kr.checked,form:Kr.form}:Ye});c(Nl),h(T);const Gr=Object.keys(T).length,Zt=[];Z&&Zt.push(`${Z} neu angelegt`),Fe&&Zt.push(`${Fe} aktualisiert`),!Zt.length&&!Gr&&Zt.push("Keine Änderungen"),y(Gr?{kind:"error",text:`${Zt.join(", ")||"Nichts gespeichert"} – ${Gr} Paket(e) fehlgeschlagen (Details an der Zeile).`}:{kind:"ok",text:`${Zt.join(", ")}.`}),f(!1)},Y=async T=>{if(!confirm(`Paket "${T.tierName??T.existing.name}" inkl. aller Produkte wirklich löschen?`))return;await A.delete(`/packages/${T.existing.id}`);const G=await E();c(ss(Number(l),G)),y(null)},ne=async T=>{if(!confirm("Paket inkl. aller Produkte wirklich löschen?"))return;await A.delete(`/packages/${T.id}`);const G=await E();l&&c(ss(Number(l),G))},te=async()=>{if(!w||!z())return;const T=N.get(Number(w)),G=N.get(Number(l));if(confirm(`Alle Pakete von "${T.brand_name} ${T.name}" inkl. verknüpfter Produkte nach "${G.brand_name} ${G.name}" kopieren? -Bereits vorhandene Paketstufen werden übersprungen. Upgrades werden nicht mitkopiert.`)){v(!0),j(null);try{const Z=await A.post(`/models/${l}/copy-packages`,{source_model_id:Number(w)}),Fe=Z.copied.reduce((Gr,Zt)=>Gr+Zt.products,0),fa=[`${Z.copied.length} Paket(e) kopiert (${Fe} Produkte)`];Z.skipped.length&&fa.push(`übersprungen: ${Z.skipped.join(", ")}`),j({text:`${fa.join(" – ")}.`});const Nl=await N();c(ss(Number(l),Nl)),h({})}catch(Z){j({error:Z.message})}v(!1)}},Xt=u.filter(T=>!T.existing&&T.checked).length,F=u.filter(T=>T.existing&&vo(T)).length,zt=g.useMemo(()=>n.filter(T=>C==="all"||String(T.brand_id)===C).sort((T,H)=>T.name.localeCompare(H.name)),[n,C]),$r=g.useMemo(()=>e.filter(T=>{const H=E.get(T.car_model_id);return!(C!=="all"&&String(H==null?void 0:H.brand_id)!==C||P!=="all"&&String(T.car_model_id)!==P)}),[e,E,C,P]),_d=a.jsxs("div",{children:[a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Filtern:"}),a.jsxs("select",{value:C,onChange:T=>{S(T.target.value),M("all")},className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),B.map(T=>a.jsx("option",{value:String(T.id),children:T.name},T.id))]}),a.jsxs("select",{value:P,onChange:T=>M(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Modelle"}),zt.map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]}),(C!=="all"||P!=="all")&&a.jsx("button",{onClick:()=>{S("all"),M("all")},className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[$r.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke / Modell"}),a.jsx("th",{className:"px-4 py-2",children:"Paket"}),a.jsx("th",{className:"px-4 py-2",children:"Aufschlag"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[$r.map(T=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[T.brand_name," ",T.model_name]}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[T.name,T.is_featured&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Empfohlen"})]})}),a.jsxs("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:[T.markup_type==="fixed"&&`+${T.markup_value} €`,T.markup_type==="percent"&&`+${T.markup_value} %`,(!T.markup_type||T.markup_type==="none")&&"–"]}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx(W,{to:`/admin/packages/${T.id}/products`,className:"mr-3 text-brand-600 hover:underline",children:"Produkte"}),a.jsx(W,{to:`/admin/packages/${T.id}/upgrades`,className:"mr-3 text-brand-600 hover:underline",children:"Upgrades"}),a.jsx("button",{onClick:()=>{if(!R())return;const H=E.get(T.car_model_id);K(H.brand_id,T.car_model_id),window.scrollTo({top:0,behavior:"smooth"})},className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>Ne(T),className:"text-red-600 hover:underline",children:"Löschen"})]})]},T.id)),$r.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Pakete angelegt.":"Keine Pakete für diesen Filter."})})]})]})})]});return a.jsxs("div",{className:"space-y-6",children:[a.jsx("h1",{className:"text-xl font-bold text-neutral-900 dark:text-white",children:"Pakete"}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-3 font-bold text-neutral-900 dark:text-white",children:"Modell wählen"}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsxs("select",{value:s,onChange:T=>_(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Marke wählen…"}),B.map(T=>a.jsx("option",{value:String(T.id),children:T.name},T.id))]}),a.jsxs("select",{value:l,onChange:T=>D(T.target.value),className:"min-w-[220px] rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Modell wählen…"}),O.map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]})]}),!l&&a.jsx("p",{className:"mt-2 text-sm text-neutral-500 dark:text-neutral-400",children:"Modell auswählen, um dessen Pakete anzulegen oder zu bearbeiten – die Standard-Paketstufen stehen dann als Checkliste bereit."})]}),$&&a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"border-b border-neutral-200 px-5 py-4 dark:border-neutral-800",children:[a.jsxs("h2",{className:"font-bold text-neutral-900 dark:text-white",children:["Pakete für ",$.brand_name," ",$.name]}),a.jsx("p",{className:"mt-1 text-sm text-neutral-500 dark:text-neutral-400",children:"Paketstufen anhaken, Beschreibung und Aufschlag ausfüllen, unten alles auf einmal speichern."}),a.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 rounded-lg border border-neutral-200 bg-neutral-50 px-3 py-2.5 dark:border-neutral-800 dark:bg-neutral-950",children:[a.jsx("span",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Pakete von anderem Modell kopieren:"}),a.jsxs("select",{value:w,onChange:T=>x(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Quellmodell wählen…"}),n.filter(T=>String(T.id)!==l).sort((T,H)=>`${T.brand_name} ${T.name}`.localeCompare(`${H.brand_name} ${H.name}`)).map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]}),a.jsx("button",{type:"button",onClick:de,disabled:!w||p,className:"rounded-md border border-brand-500 px-3 py-1.5 text-sm font-semibold text-brand-600 hover:bg-brand-50 disabled:opacity-50 dark:hover:bg-brand-900/20",children:p?"Kopiert…":"Kopieren"}),a.jsx("span",{className:"text-xs text-neutral-400",children:"inkl. Produkte, ohne Upgrades"}),k&&a.jsx("span",{className:`w-full text-sm ${k.error?"text-red-600":"text-brand-600 dark:text-brand-400"}`,children:k.error||k.text})]})]}),a.jsx("div",{children:u.map((T,H)=>a.jsxs("div",{children:[T.tierName===null&&H>0&&u[H-1].tierName!==null&&a.jsx("div",{className:"border-t border-neutral-200 bg-neutral-50 px-5 py-2 text-xs font-semibold uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-400",children:"Weitere Pakete (alte Namen)"}),a.jsxs("div",{className:`border-t border-neutral-100 dark:border-neutral-800 ${T.checked?"":"opacity-70"}`,children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-5 py-3",children:[a.jsxs("label",{className:"flex cursor-pointer items-center gap-3",children:[a.jsx("input",{type:"checkbox",checked:T.checked,disabled:!!T.existing||m,onChange:Z=>z(T.key,Z.target.checked),className:"h-5 w-5 rounded border-neutral-300 text-brand-600 focus:ring-brand-500 disabled:opacity-60"}),a.jsx("span",{className:"font-semibold text-neutral-900 dark:text-white",children:T.tierName??T.existing.name})]}),T.tierName===null&&a.jsx("span",{className:"text-xs text-neutral-400",children:"(alter Name)"}),T.existing?a.jsx("span",{className:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs font-semibold text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:"Vorhanden"}):T.checked&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Neu"}),T.form.is_featured&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Empfohlen"}),T.existing&&a.jsxs("span",{className:"ml-auto flex items-center gap-3 text-sm",children:[a.jsx(W,{to:`/admin/packages/${T.existing.id}/products`,className:"text-brand-600 hover:underline",children:"Produkte"}),a.jsx(W,{to:`/admin/packages/${T.existing.id}/upgrades`,className:"text-brand-600 hover:underline",children:"Upgrades"}),a.jsx("button",{type:"button",onClick:()=>ee(T),className:"text-red-600 hover:underline",children:"Löschen"})]})]}),T.checked&&a.jsxs("div",{className:"space-y-4 px-5 pb-5 sm:pl-[52px]",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("p",{className:"mb-1 text-xs text-neutral-500 dark:text-neutral-400",children:"Jede Zeile erscheint als eigener Stichpunkt zusammen mit den Bauteilen."}),a.jsx("textarea",{rows:10,value:T.form.description,onChange:Z=>U(T.key,{description:Z.target.value}),onInput:EP,className:Ia})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Aufschlag"}),a.jsxs("div",{className:"flex max-w-md gap-2",children:[a.jsxs("select",{value:T.form.markup_type,onChange:Z=>U(T.key,{markup_type:Z.target.value}),className:"w-40 rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"none",children:"Kein Aufschlag"}),a.jsx("option",{value:"fixed",children:"Fester Betrag (€)"}),a.jsx("option",{value:"percent",children:"Prozent (%)"})]}),a.jsx("input",{type:"number",step:"0.01",min:"0",disabled:T.form.markup_type==="none",value:T.form.markup_value,onChange:Z=>U(T.key,{markup_value:Z.target.value}),className:`${Ia} disabled:opacity-50`})]}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:"Wird auf die Summe der Bauteilpreise aufgeschlagen und ergibt den Gesamtpreis für den Kunden."})]}),a.jsxs("details",{className:"rounded-lg border border-neutral-200 dark:border-neutral-800",children:[a.jsx("summary",{className:"cursor-pointer select-none px-3 py-2 text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Weitere Optionen (Preis-Text, Empfohlen, Sortierung)"}),a.jsxs("div",{className:"space-y-4 border-t border-neutral-200 p-3 dark:border-neutral-800",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Preis-Text (optional)"}),a.jsx("input",{value:T.form.price_text,onChange:Z=>U(T.key,{price_text:Z.target.value}),placeholder:'z. B. "Coming soon" oder "Preis auf Anfrage"',className:Ia}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Ersetzt auf der Kachel den berechneten Preis, solange ausgefüllt."})]}),a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:T.form.is_featured,onChange:Z=>U(T.key,{is_featured:Z.target.checked}),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Als empfohlen hervorheben"]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:T.form.sort_order,onChange:Z=>U(T.key,{sort_order:Z.target.value}),className:`${Ia} max-w-[160px]`})]})]})]}),d[T.key]&&a.jsx("p",{className:"text-sm text-red-600",children:d[T.key]})]})]})]},T.key))}),a.jsxs("div",{className:"sticky bottom-0 flex flex-wrap items-center gap-3 rounded-b-xl border-t border-neutral-200 bg-white px-5 py-3 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("button",{type:"button",onClick:X,disabled:m||!Y,className:"rounded-md bg-brand-500 px-5 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:m?"Speichert…":"Alle speichern"}),a.jsxs("span",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:[Xt," neu, ",F," geändert"]}),b&&a.jsx("span",{className:`text-sm ${b.kind==="error"?"text-red-600":"text-brand-600 dark:text-brand-400"}`,children:b.text})]})]}),$?a.jsxs("details",{className:"rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("summary",{className:"cursor-pointer select-none px-5 py-3 font-bold text-neutral-900 dark:text-white",children:"Alle Pakete (Übersicht)"}),a.jsx("div",{className:"border-t border-neutral-200 p-5 dark:border-neutral-800",children:_d})]}):_d]})}const Fa=[...$b].sort(),AP=120,MP=200;function _P({value:e,onChange:t}){const[n,r]=g.useState(""),s=g.useMemo(()=>{const i=n.trim().toLowerCase();return i?Fa.filter(l=>l.includes(i)).slice(0,MP):Fa.slice(0,AP)},[n]);return a.jsxs("div",{children:[a.jsxs("div",{className:"mb-2 flex items-center gap-3 rounded-md border border-neutral-300 p-2 dark:border-neutral-700",children:[a.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:e?a.jsx(We,{name:e,className:"h-6 w-6"}):a.jsx("span",{className:"text-xs text-neutral-400",children:"?"})}),a.jsxs("div",{className:"text-sm",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:e||"Kein Icon gewählt"}),a.jsxs("p",{className:"text-xs text-neutral-400",children:[Fa.length," Icons verfügbar"]})]})]}),a.jsx("input",{value:n,onChange:i=>r(i.target.value),placeholder:"Icon suchen (z. B. car, shield, zap)…",className:"mb-2 w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("div",{className:"grid max-h-64 grid-cols-6 gap-1 overflow-y-auto rounded-md border border-neutral-200 p-2 sm:grid-cols-8 dark:border-neutral-700",children:[s.map(i=>a.jsx("button",{type:"button",title:i,onClick:()=>t(i),className:`flex h-10 w-10 items-center justify-center rounded-md transition ${e===i?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx(We,{name:i,className:"h-5 w-5"})},i)),s.length===0&&a.jsx("p",{className:"col-span-full py-4 text-center text-sm text-neutral-400",children:"Keine Icons gefunden."})]}),!n&&a.jsxs("p",{className:"mt-1 text-xs text-neutral-400",children:["Tipp: Tippe einen Suchbegriff ein, um alle ",Fa.length," Icons zu durchsuchen."]})]})}const Ff={icon_name:"",title:"",description:"",image_path:"",cta_label:"",cta_url:"",sort_order:0};function LP(){const[e,t]=g.useState([]),[n,r]=g.useState(Ff),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/services").then(t);g.useEffect(u,[]);const c=f=>{i(f.id),r({icon_name:f.icon_name,title:f.title,description:f.description,image_path:f.image_path||"",cta_label:f.cta_label||"",cta_url:f.cta_url||"",sort_order:f.sort_order})},d=()=>{i(null),r(Ff)},h=async f=>{if(f.preventDefault(),o(""),!n.icon_name){o("Bitte ein Icon auswählen");return}const b={...n,sort_order:Number(n.sort_order)};try{s?await A.put(`/services/${s}`,b):await A.post("/services",b),d(),u()}catch(y){o(y.message)}},m=async f=>{confirm("Diese Leistung wirklich löschen?")&&(await A.delete(`/services/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Leistungen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Karten erscheinen auf der öffentlichen Leistungen-Seite. Die 8 mitgelieferten Einträge sind die Standard-Einstellung – du kannst sie bearbeiten, löschen und beliebig neue hinzufügen."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Icon"}),a.jsx("th",{className:"px-4 py-2",children:"Titel"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:a.jsx("div",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(We,{name:f.icon_name,className:"h-5 w-5"})})}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:f.title}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Leistungen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Leistung bearbeiten":"Neue Leistung"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Icon *"}),a.jsx(_P,{value:n.icon_name,onChange:f=>r({...n,icon_name:f})})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.title,onChange:f=>r({...n,title:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung *"}),a.jsx("textarea",{required:!0,rows:4,value:n.description,onChange:f=>r({...n,description:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:n.image_path,onChange:f=>r({...n,image_path:f}),label:"Bild"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Button-Text (optional)"}),a.jsx("input",{value:n.cta_label,onChange:f=>r({...n,cta_label:f.target.value}),placeholder:"z. B. Fahrzeug konfigurieren",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Button-Link (optional)"}),a.jsx("input",{value:n.cta_url,onChange:f=>r({...n,cta_url:f.target.value}),placeholder:"z. B. /fahrzeuge",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const Vf={question_de:"",answer_de:"",question_en:"",answer_en:"",sort_order:0};function DP(){const[e,t]=g.useState([]),[n,r]=g.useState(Vf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/faqs").then(t);g.useEffect(u,[]);const c=f=>{i(f.id),r({question_de:f.question_de,answer_de:f.answer_de,question_en:f.question_en,answer_en:f.answer_en,sort_order:f.sort_order})},d=()=>{i(null),r(Vf)},h=async f=>{f.preventDefault(),o("");const b={...n,sort_order:Number(n.sort_order)};try{s?await A.put(`/faqs/${s}`,b):await A.post("/faqs",b),d(),u()}catch(y){o(y.message)}},m=async f=>{confirm("Diese Frage wirklich löschen?")&&(await A.delete(`/faqs/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Häufig gestellte Fragen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Fragen erscheinen im FAQ-Bereich der Startseite, jeweils in der aktuell gewählten Sprache. Die 6 mitgelieferten Einträge sind die Standard-Einstellung – du kannst sie bearbeiten, löschen und beliebig neue hinzufügen."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Frage (DE)"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:f.question_de}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Fragen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Frage bearbeiten":"Neue Frage"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Frage (Deutsch) *"}),a.jsx("input",{required:!0,value:n.question_de,onChange:f=>r({...n,question_de:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Antwort (Deutsch) *"}),a.jsx("textarea",{required:!0,rows:3,value:n.answer_de,onChange:f=>r({...n,answer_de:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Frage (Englisch) *"}),a.jsx("input",{required:!0,value:n.question_en,onChange:f=>r({...n,question_en:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Antwort (Englisch) *"}),a.jsx("textarea",{required:!0,rows:3,value:n.answer_en,onChange:f=>r({...n,answer_en:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const BP=e=>e==null?"–":new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),zP={ok:"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300",pending:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",error:"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300"};function RP(){const{packageId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(""),[i,l]=g.useState(""),[o,u]=g.useState(""),[c,d]=g.useState(!1),h=()=>A.get(`/packages/${e}/products`).then(n);g.useEffect(()=>{h()},[e]);const m=async y=>{y.preventDefault(),u(""),d(!0);try{await A.post("/products",{package_id:Number(e),source_url:r,name_override:i||null}),s(""),l(""),h()}catch(w){u(w.message)}finally{d(!1)}},f=async y=>{d(!0);try{await A.post(`/products/${y}/refresh-price`,{}),h()}finally{d(!1)}},b=async y=>{confirm("Produkt wirklich entfernen?")&&(await A.delete(`/products/${y}`),h())};return a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(W,{to:"/admin/packages",className:"text-brand-600 hover:underline",children:"← Zurück zu den Paketen"})}),a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Produkte im Paket"}),a.jsxs("form",{onSubmit:m,className:"mb-6 flex flex-wrap items-end gap-3 rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"flex-1 min-w-[240px]",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"audio4cars.de Produkt-URL *"}),a.jsx("input",{required:!0,type:"url",placeholder:"https://www.audio4cars.de/produkt/...",value:r,onChange:y=>s(y.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"w-56",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name überschreiben (optional)"}),a.jsx("input",{value:i,onChange:y=>l(y.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx("button",{disabled:c,type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Hinzufügen"})]}),o&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:o}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Produkt"}),a.jsx("th",{className:"px-4 py-2",children:"Preis"}),a.jsx("th",{className:"px-4 py-2",children:"Status"}),a.jsx("th",{className:"px-4 py-2",children:"Zuletzt aktualisiert"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[t.map(y=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("a",{href:y.source_url,target:"_blank",rel:"noreferrer",className:"font-medium text-neutral-800 hover:underline dark:text-neutral-100",children:y.name_override||y.scraped_name||y.source_url}),y.scrape_status==="error"&&a.jsx("p",{className:"text-xs text-red-500",children:y.scrape_error})]}),a.jsx("td",{className:"px-4 py-2",children:BP(y.scraped_price)}),a.jsx("td",{className:"px-4 py-2",children:a.jsx("span",{className:`rounded-full px-2 py-0.5 text-xs font-medium ${zP[y.scrape_status]}`,children:y.scrape_status})}),a.jsx("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:y.price_updated_at?new Date(y.price_updated_at.replace(" ","T")).toLocaleString("de-DE"):"–"}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{disabled:c,onClick:()=>f(y.id),className:"mr-3 text-brand-600 hover:underline disabled:opacity-60",children:"Preis aktualisieren"}),a.jsx("button",{onClick:()=>b(y.id),className:"text-red-600 hover:underline",children:"Entfernen"})]})]},y.id)),t.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:5,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Produkte im Paket."})})]})]})})]})}const IP=e=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),Of={name:"",description:"",price:0,sort_order:0};function FP(){const{packageId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(Of),[i,l]=g.useState(null),[o,u]=g.useState(""),c=()=>A.get(`/packages/${e}/upgrades`).then(n);g.useEffect(()=>{c()},[e]);const d=b=>{l(b.id),s({name:b.name,description:b.description||"",price:b.price,sort_order:b.sort_order})},h=()=>{l(null),s(Of)},m=async b=>{b.preventDefault(),u("");const y={...r,package_id:Number(e),price:Number(r.price)};try{i?await A.put(`/package-upgrades/${i}`,y):await A.post("/package-upgrades",y),h(),c()}catch(w){u(w.message)}},f=async b=>{confirm("Upgrade wirklich löschen?")&&(await A.delete(`/package-upgrades/${b}`),c())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(W,{to:"/admin/packages",className:"text-brand-600 hover:underline",children:"← Zurück zu den Paketen"})}),a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Optionale Upgrades"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Upgrades erscheinen nicht in der öffentlichen Paketübersicht, sondern erst als Auswahl im Kontaktformular."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Preis"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[t.map(b=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:b.name}),b.description&&a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:b.description})]}),a.jsx("td",{className:"px-4 py-2",children:IP(b.price)}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>d(b),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>f(b.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},b.id)),t.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Upgrades hinterlegt."})})]})]})})]}),a.jsxs("form",{onSubmit:m,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:i?"Upgrade bearbeiten":"Neues Upgrade"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:r.name,onChange:b=>s({...r,name:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("textarea",{rows:2,value:r.description,onChange:b=>s({...r,description:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Preis (€) *"}),a.jsx("input",{required:!0,type:"number",step:"0.01",min:"0",value:r.price,onChange:b=>s({...r,price:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:r.sort_order,onChange:b=>s({...r,sort_order:Number(b.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),o&&a.jsx("p",{className:"text-sm text-red-600",children:o}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:i?"Speichern":"Anlegen"}),i&&a.jsx("button",{type:"button",onClick:h,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const VP=e=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),OP={new:"Neu",in_progress:"In Bearbeitung",done:"Erledigt"},UP={new:"bg-brand-100 text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",in_progress:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",done:"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"},WP=()=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:"h-4 w-4",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2m3 0-.8 12.1a1 1 0 0 1-1 .9H7.8a1 1 0 0 1-1-.9L6 7h12ZM10 11v6M14 11v6"})});function HP(){const{hasPermission:e}=Dt(),[t,n]=g.useState([]),[r,s]=g.useState("all"),i=()=>A.get("/contact").then(n);g.useEffect(()=>{i()},[]);const l=async(h,m)=>{await A.patch(`/contact/${h}`,{status:m}),i()},o=async h=>{confirm("Diese Kontaktanfrage wirklich unwiderruflich löschen?")&&(await A.delete(`/contact/${h}`),i())},u=g.useMemo(()=>({all:t.length,new:t.filter(h=>h.status==="new").length,in_progress:t.filter(h=>h.status==="in_progress").length,done:t.filter(h=>h.status==="done").length}),[t]),c=r==="all"?t:t.filter(h=>h.status===r),d=[{value:"all",label:"Alle"},{value:"new",label:"Neu"},{value:"in_progress",label:"In Bearbeitung"},{value:"done",label:"Erledigt"}];return a.jsxs("div",{children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Kontaktanfragen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Alle Anfragen deiner Kunden. Wähle oben einen Reiter, um nur bestimmte Anfragen zu sehen."}),a.jsx("div",{className:"mb-5 flex flex-wrap gap-2",children:d.map(h=>a.jsxs("button",{onClick:()=>s(h.value),className:`rounded-full px-4 py-1.5 text-sm font-medium transition ${r===h.value?"bg-brand-500 text-white":"bg-neutral-100 text-neutral-600 hover:bg-neutral-200 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700"}`,children:[h.label," (",u[h.value],")"]},h.value))}),a.jsxs("div",{className:"space-y-3",children:[c.map(h=>{var m;return a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-2 flex flex-wrap items-start justify-between gap-2",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-semibold text-neutral-800 dark:text-neutral-100",children:[h.name," · ",h.email,h.phone?` · ${h.phone}`:""]}),h.vin&&a.jsxs("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:["FIN: ",a.jsx("span",{className:"font-mono",children:h.vin})]}),a.jsx("p",{className:"text-xs text-neutral-400",children:new Date(h.created_at.replace(" ","T")).toLocaleString("de-DE")})]}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("select",{value:h.status,onChange:f=>l(h.id,f.target.value),className:`rounded-full border-0 px-3 py-1 text-xs font-medium ${UP[h.status]}`,children:Object.entries(OP).map(([f,b])=>a.jsx("option",{value:f,children:b},f))}),e("contact.delete")&&a.jsx("button",{onClick:()=>o(h.id),"aria-label":"Anfrage löschen",title:"Anfrage löschen",className:"rounded-md p-1.5 text-neutral-400 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20",children:a.jsx(WP,{})})]})]}),(h.brand_name||h.model_name||h.package_name||h.product_name)&&a.jsx("p",{className:"mb-2 text-sm text-neutral-500 dark:text-neutral-400",children:[h.brand_name,h.model_name,h.package_name,h.product_name].filter(Boolean).join(" · ")}),((m=h.selected_upgrades)==null?void 0:m.length)>0&&a.jsxs("div",{className:"mb-2 rounded-md bg-brand-50 p-2 text-sm text-brand-800 dark:bg-brand-900/20 dark:text-brand-200",children:[a.jsx("p",{className:"font-semibold",children:"Gewünschte Upgrades:"}),a.jsx("ul",{className:"list-disc pl-5",children:h.selected_upgrades.map(f=>a.jsxs("li",{children:[f.name," – ",VP(f.price)]},f.id))})]}),h.message&&a.jsx("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:h.message})]},h.id)}),c.length===0&&a.jsx("p",{className:"text-neutral-400",children:r==="all"?"Noch keine Kontaktanfragen eingegangen.":"Keine Anfragen mit diesem Status."})]})]})}var ha={},$P=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},gb={},rt={};let Pd;const GP=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];rt.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};rt.getSymbolTotalCodewords=function(t){return GP[t]};rt.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};rt.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');Pd=t};rt.isKanjiModeEnabled=function(){return typeof Pd<"u"};rt.toSJIS=function(t){return Pd(t)};var yl={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,s){if(e.isValid(r))return r;try{return t(r)}catch{return s}}})(yl);function xb(){this.buffer=[],this.length=0}xb.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n >>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var KP=xb;function ma(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}ma.prototype.set=function(e,t,n,r){const s=e*this.size+t;this.data[s]=n,r&&(this.reservedBit[s]=!0)};ma.prototype.get=function(e,t){return this.data[e*this.size+t]};ma.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n};ma.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var qP=ma,bb={};(function(e){const t=rt.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const s=Math.floor(r/7)+2,i=t(r),l=i===145?26:Math.ceil((i-13)/(2*s-2))*2,o=[i-7];for(let u=1;u =0&&s<=7},e.from=function(s){return e.isValid(s)?parseInt(s,10):void 0},e.getPenaltyN1=function(s){const i=s.size;let l=0,o=0,u=0,c=null,d=null;for(let h=0;h=5&&(l+=t.N1+(o-5)),c=f,o=1),f=s.get(m,h),f===d?u++:(u>=5&&(l+=t.N1+(u-5)),d=f,u=1)}o>=5&&(l+=t.N1+(o-5)),u>=5&&(l+=t.N1+(u-5))}return l},e.getPenaltyN2=function(s){const i=s.size;let l=0;for(let o=0;o =10&&(o===1488||o===93)&&l++,u=u<<1&2047|s.get(d,c),d>=10&&(u===1488||u===93)&&l++}return l*t.N3},e.getPenaltyN4=function(s){let i=0;const l=s.data.length;for(let u=0;u =0;){const l=i[0];for(let u=0;u 0){const i=new Uint8Array(this.degree);return i.set(r,s),i}return r};var XP=Ed,jb={},En={},Td={};Td.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var Bt={};const Nb="[0-9]+",ZP="[A-Z $%*+\\-./:]+";let Qs="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Qs=Qs.replace(/u/g,"\\u");const QP="(?:(?![A-Z0-9 $%*+\\-./:]|"+Qs+`)(?:.|[\r -]))+`;Bt.KANJI=new RegExp(Qs,"g");Bt.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Bt.BYTE=new RegExp(QP,"g");Bt.NUMERIC=new RegExp(Nb,"g");Bt.ALPHANUMERIC=new RegExp(ZP,"g");const JP=new RegExp("^"+Qs+"$"),e4=new RegExp("^"+Nb+"$"),t4=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Bt.testKanji=function(t){return JP.test(t)};Bt.testNumeric=function(t){return e4.test(t)};Bt.testAlphanumeric=function(t){return t4.test(t)};(function(e){const t=Td,n=Bt;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(i,l){if(!i.ccBits)throw new Error("Invalid mode: "+i);if(!t.isValid(l))throw new Error("Invalid version: "+l);return l>=1&&l<10?i.ccBits[0]:l<27?i.ccBits[1]:i.ccBits[2]},e.getBestModeForData=function(i){return n.testNumeric(i)?e.NUMERIC:n.testAlphanumeric(i)?e.ALPHANUMERIC:n.testKanji(i)?e.KANJI:e.BYTE},e.toString=function(i){if(i&&i.id)return i.id;throw new Error("Invalid mode")},e.isValid=function(i){return i&&i.bit&&i.ccBits};function r(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+s)}}e.from=function(i,l){if(e.isValid(i))return i;try{return r(i)}catch{return l}}})(En);(function(e){const t=rt,n=kl,r=yl,s=En,i=Td,l=7973,o=t.getBCHDigit(l);function u(m,f,b){for(let y=1;y<=40;y++)if(f<=e.getCapacity(y,b,m))return y}function c(m,f){return s.getCharCountIndicator(m,f)+4}function d(m,f){let b=0;return m.forEach(function(y){const w=c(y.mode,f);b+=w+y.getBitsLength()}),b}function h(m,f){for(let b=1;b<=40;b++)if(d(m,b)<=e.getCapacity(b,f,s.MIXED))return b}e.from=function(f,b){return i.isValid(f)?parseInt(f,10):b},e.getCapacity=function(f,b,y){if(!i.isValid(f))throw new Error("Invalid QR Code version");typeof y>"u"&&(y=s.BYTE);const w=t.getSymbolTotalCodewords(f),x=n.getTotalCodewordsCount(f,b),p=(w-x)*8;if(y===s.MIXED)return p;const v=p-c(y,f);switch(y){case s.NUMERIC:return Math.floor(v/10*3);case s.ALPHANUMERIC:return Math.floor(v/11*2);case s.KANJI:return Math.floor(v/13);case s.BYTE:default:return Math.floor(v/8)}},e.getBestVersionForData=function(f,b){let y;const w=r.from(b,r.M);if(Array.isArray(f)){if(f.length>1)return h(f,w);if(f.length===0)return 1;y=f[0]}else y=f;return u(y.mode,y.getLength(),w)},e.getEncodedBits=function(f){if(!i.isValid(f)||f<7)throw new Error("Invalid QR Code version");let b=f<<12;for(;t.getBCHDigit(b)-o>=0;)b^=l< =0;)s^=Cb< 0&&(r=this.data.substr(n),s=parseInt(r,10),t.put(s,i*3+1))};var s4=_r;const a4=En,yo=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Lr(e){this.mode=a4.ALPHANUMERIC,this.data=e}Lr.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};Lr.prototype.getLength=function(){return this.data.length};Lr.prototype.getBitsLength=function(){return Lr.getBitsLength(this.data.length)};Lr.prototype.write=function(t){let n;for(n=0;n+2<=this.data.length;n+=2){let r=yo.indexOf(this.data[n])*45;r+=yo.indexOf(this.data[n+1]),t.put(r,11)}this.data.length%2&&t.put(yo.indexOf(this.data[n]),6)};var i4=Lr;const l4=En;function Dr(e){this.mode=l4.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Dr.getBitsLength=function(t){return t*8};Dr.prototype.getLength=function(){return this.data.length};Dr.prototype.getBitsLength=function(){return Dr.getBitsLength(this.data.length)};Dr.prototype.write=function(e){for(let t=0,n=this.data.length;t =33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` -Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}};var d4=Br,Eb={exports:{}};(function(e){var t={single_source_shortest_paths:function(n,r,s){var i={},l={};l[r]=0;var o=t.PriorityQueue.make();o.push(r,0);for(var u,c,d,h,m,f,b,y,w;!o.empty();){u=o.pop(),c=u.value,h=u.cost,m=n[c]||{};for(d in m)m.hasOwnProperty(d)&&(f=m[d],b=h+f,y=l[d],w=typeof l[d]>"u",(w||y>b)&&(l[d]=b,o.push(d,b),i[d]=c))}if(typeof s<"u"&&typeof l[s]>"u"){var x=["Could not find a path from ",r," to ",s,"."].join("");throw new Error(x)}return i},extract_shortest_path_from_predecessor_list:function(n,r){for(var s=[],i=r;i;)s.push(i),n[i],i=n[i];return s.reverse(),s},find_path:function(n,r,s){var i=t.single_source_shortest_paths(n,r,s);return t.extract_shortest_path_from_predecessor_list(i,s)},PriorityQueue:{make:function(n){var r=t.PriorityQueue,s={},i;n=n||{};for(i in r)r.hasOwnProperty(i)&&(s[i]=r[i]);return s.queue=[],s.sorter=n.sorter||r.default_sorter,s},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var s={value:n,cost:r};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Eb);var h4=Eb.exports;(function(e){const t=En,n=s4,r=i4,s=o4,i=d4,l=Bt,o=rt,u=h4;function c(x){return unescape(encodeURIComponent(x)).length}function d(x,p,v){const k=[];let j;for(;(j=x.exec(v))!==null;)k.push({data:j[0],index:j.index,mode:p,length:j[0].length});return k}function h(x){const p=d(l.NUMERIC,t.NUMERIC,x),v=d(l.ALPHANUMERIC,t.ALPHANUMERIC,x);let k,j;return o.isKanjiModeEnabled()?(k=d(l.BYTE,t.BYTE,x),j=d(l.KANJI,t.KANJI,x)):(k=d(l.BYTE_KANJI,t.BYTE,x),j=[]),p.concat(v,k,j).sort(function(S,P){return S.index-P.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function m(x,p){switch(p){case t.NUMERIC:return n.getBitsLength(x);case t.ALPHANUMERIC:return r.getBitsLength(x);case t.KANJI:return i.getBitsLength(x);case t.BYTE:return s.getBitsLength(x)}}function f(x){return x.reduce(function(p,v){const k=p.length-1>=0?p[p.length-1]:null;return k&&k.mode===v.mode?(p[p.length-1].data+=v.data,p):(p.push(v),p)},[])}function b(x){const p=[];for(let v=0;v =0&&o<=6&&(u===0||u===6)||u>=0&&u<=6&&(o===0||o===6)||o>=2&&o<=4&&u>=2&&u<=4?e.set(i+o,l+u,!0,!0):e.set(i+o,l+u,!1,!0))}}function k4(e){const t=e.size;for(let n=8;n >o&1)===1,e.set(s,i,l,!0),e.set(i,s,l,!0)}function jo(e,t,n){const r=e.size,s=b4.getEncodedBits(t,n);let i,l;for(i=0;i<15;i++)l=(s>>i&1)===1,i<6?e.set(i,8,l,!0):i<8?e.set(i+1,8,l,!0):e.set(r-15+i,8,l,!0),i<8?e.set(8,r-i-1,l,!0):i<9?e.set(8,15-i-1+1,l,!0):e.set(8,15-i-1,l,!0);e.set(r-8,8,1,!0)}function N4(e,t){const n=e.size;let r=-1,s=n-1,i=7,l=0;for(let o=n-1;o>0;o-=2)for(o===6&&o--;;){for(let u=0;u<2;u++)if(!e.isReserved(s,o-u)){let c=!1;l >>i&1)===1),e.set(s,o-u,c),i--,i===-1&&(l++,i=7)}if(s+=r,s<0||n<=s){s-=r,r=-r;break}}}function S4(e,t,n){const r=new m4;n.forEach(function(u){r.put(u.mode.bit,4),r.put(u.getLength(),v4.getCharCountIndicator(u.mode,e)),u.write(r)});const s=jl.getSymbolTotalCodewords(e),i=ec.getTotalCodewordsCount(e,t),l=(s-i)*8;for(r.getLengthInBits()+4<=l&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const o=(l-r.getLengthInBits())/8;for(let u=0;u Gr+Zt.products,0),fa=[`${Z.copied.length} Paket(e) kopiert (${Fe} Produkte)`];Z.skipped.length&&fa.push(`übersprungen: ${Z.skipped.join(", ")}`),j({text:`${fa.join(" – ")}.`});const Nl=await E();c(ss(Number(l),Nl)),h({})}catch(Z){j({error:Z.message})}v(!1)}},qe=u.filter(T=>!T.existing&&T.checked).length,R=u.filter(T=>T.existing&&vo(T)).length,Rt=g.useMemo(()=>n.filter(T=>C==="all"||String(T.brand_id)===C).sort((T,G)=>T.name.localeCompare(G.name)),[n,C]),$r=g.useMemo(()=>e.filter(T=>{const G=N.get(T.car_model_id);return!(C!=="all"&&String(G==null?void 0:G.brand_id)!==C||P!=="all"&&String(T.car_model_id)!==P)}),[e,N,C,P]),_d=a.jsxs("div",{children:[a.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[a.jsx("label",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Filtern:"}),a.jsxs("select",{value:C,onChange:T=>{S(T.target.value),M("all")},className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Marken"}),L.map(T=>a.jsx("option",{value:String(T.id),children:T.name},T.id))]}),a.jsxs("select",{value:P,onChange:T=>M(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"all",children:"Alle Modelle"}),Rt.map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]}),(C!=="all"||P!=="all")&&a.jsx("button",{onClick:()=>{S("all"),M("all")},className:"text-sm text-brand-600 hover:underline",children:"Filter zurücksetzen"}),a.jsxs("span",{className:"text-sm text-neutral-400",children:[$r.length," von ",e.length]})]}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Marke / Modell"}),a.jsx("th",{className:"px-4 py-2",children:"Paket"}),a.jsx("th",{className:"px-4 py-2",children:"Aufschlag"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[$r.map(T=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[T.brand_name," ",T.model_name]}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:a.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[T.name,T.is_featured&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Empfohlen"})]})}),a.jsxs("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:[T.markup_type==="fixed"&&`+${T.markup_value} €`,T.markup_type==="percent"&&`+${T.markup_value} %`,(!T.markup_type||T.markup_type==="none")&&"–"]}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx(H,{to:`/admin/packages/${T.id}/products`,className:"mr-3 text-brand-600 hover:underline",children:"Produkte"}),a.jsx(H,{to:`/admin/packages/${T.id}/upgrades`,className:"mr-3 text-brand-600 hover:underline",children:"Upgrades"}),a.jsx("button",{onClick:()=>{if(!z())return;const G=N.get(T.car_model_id);$(G.brand_id,T.car_model_id),window.scrollTo({top:0,behavior:"smooth"})},className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>ne(T),className:"text-red-600 hover:underline",children:"Löschen"})]})]},T.id)),$r.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:e.length===0?"Noch keine Pakete angelegt.":"Keine Pakete für diesen Filter."})})]})]})})]});return a.jsxs("div",{className:"space-y-6",children:[a.jsx("h1",{className:"text-xl font-bold text-neutral-900 dark:text-white",children:"Pakete"}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-3 font-bold text-neutral-900 dark:text-white",children:"Modell wählen"}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsxs("select",{value:s,onChange:T=>_(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Marke wählen…"}),L.map(T=>a.jsx("option",{value:String(T.id),children:T.name},T.id))]}),a.jsxs("select",{value:l,onChange:T=>B(T.target.value),className:"min-w-[220px] rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Modell wählen…"}),U.map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]})]}),!l&&a.jsx("p",{className:"mt-2 text-sm text-neutral-500 dark:text-neutral-400",children:"Modell auswählen, um dessen Pakete anzulegen oder zu bearbeiten – die Standard-Paketstufen stehen dann als Checkliste bereit."})]}),W&&a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"border-b border-neutral-200 px-5 py-4 dark:border-neutral-800",children:[a.jsxs("h2",{className:"font-bold text-neutral-900 dark:text-white",children:["Pakete für ",W.brand_name," ",W.name]}),a.jsx("p",{className:"mt-1 text-sm text-neutral-500 dark:text-neutral-400",children:"Paketstufen anhaken, Beschreibung und Aufschlag ausfüllen, unten alles auf einmal speichern."}),a.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 rounded-lg border border-neutral-200 bg-neutral-50 px-3 py-2.5 dark:border-neutral-800 dark:bg-neutral-950",children:[a.jsx("span",{className:"text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Pakete von anderem Modell kopieren:"}),a.jsxs("select",{value:w,onChange:T=>x(T.target.value),className:"rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"",children:"Quellmodell wählen…"}),n.filter(T=>String(T.id)!==l).sort((T,G)=>`${T.brand_name} ${T.name}`.localeCompare(`${G.brand_name} ${G.name}`)).map(T=>a.jsxs("option",{value:String(T.id),children:[T.brand_name," ",T.name]},T.id))]}),a.jsx("button",{type:"button",onClick:te,disabled:!w||p,className:"rounded-md border border-brand-500 px-3 py-1.5 text-sm font-semibold text-brand-600 hover:bg-brand-50 disabled:opacity-50 dark:hover:bg-brand-900/20",children:p?"Kopiert…":"Kopieren"}),a.jsx("span",{className:"text-xs text-neutral-400",children:"inkl. Produkte, ohne Upgrades"}),k&&a.jsx("span",{className:`w-full text-sm ${k.error?"text-red-600":"text-brand-600 dark:text-brand-400"}`,children:k.error||k.text})]})]}),a.jsx("div",{children:u.map((T,G)=>a.jsxs("div",{children:[T.tierName===null&&G>0&&u[G-1].tierName!==null&&a.jsx("div",{className:"border-t border-neutral-200 bg-neutral-50 px-5 py-2 text-xs font-semibold uppercase tracking-wide text-neutral-500 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-400",children:"Weitere Pakete (alte Namen)"}),a.jsxs("div",{className:`border-t border-neutral-100 dark:border-neutral-800 ${T.checked?"":"opacity-70"}`,children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-5 py-3",children:[a.jsxs("label",{className:"flex cursor-pointer items-center gap-3",children:[a.jsx("input",{type:"checkbox",checked:T.checked,disabled:!!T.existing||m,onChange:Z=>F(T.key,Z.target.checked),className:"h-5 w-5 rounded border-neutral-300 text-brand-600 focus:ring-brand-500 disabled:opacity-60"}),a.jsx("span",{className:"font-semibold text-neutral-900 dark:text-white",children:T.tierName??T.existing.name})]}),T.tierName===null&&a.jsx("span",{className:"text-xs text-neutral-400",children:"(alter Name)"}),T.existing?a.jsx("span",{className:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs font-semibold text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:"Vorhanden"}):T.checked&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Neu"}),T.form.is_featured&&a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-semibold text-brand-700 dark:bg-brand-900/40 dark:text-brand-400",children:"Empfohlen"}),T.existing&&a.jsxs("span",{className:"ml-auto flex items-center gap-3 text-sm",children:[a.jsx(H,{to:`/admin/packages/${T.existing.id}/products`,className:"text-brand-600 hover:underline",children:"Produkte"}),a.jsx(H,{to:`/admin/packages/${T.existing.id}/upgrades`,className:"text-brand-600 hover:underline",children:"Upgrades"}),a.jsx("button",{type:"button",onClick:()=>Y(T),className:"text-red-600 hover:underline",children:"Löschen"})]})]}),T.checked&&a.jsxs("div",{className:"space-y-4 px-5 pb-5 sm:pl-[52px]",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("p",{className:"mb-1 text-xs text-neutral-500 dark:text-neutral-400",children:"Jede Zeile erscheint als eigener Stichpunkt zusammen mit den Bauteilen."}),a.jsx("textarea",{rows:10,value:T.form.description,onChange:Z=>O(T.key,{description:Z.target.value}),onInput:EP,className:Ia})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Aufschlag"}),a.jsxs("div",{className:"flex max-w-md gap-2",children:[a.jsxs("select",{value:T.form.markup_type,onChange:Z=>O(T.key,{markup_type:Z.target.value}),className:"w-40 rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"none",children:"Kein Aufschlag"}),a.jsx("option",{value:"fixed",children:"Fester Betrag (€)"}),a.jsx("option",{value:"percent",children:"Prozent (%)"})]}),a.jsx("input",{type:"number",step:"0.01",min:"0",disabled:T.form.markup_type==="none",value:T.form.markup_value,onChange:Z=>O(T.key,{markup_value:Z.target.value}),className:`${Ia} disabled:opacity-50`})]}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:"Wird auf die Summe der Bauteilpreise aufgeschlagen und ergibt den Gesamtpreis für den Kunden."})]}),a.jsxs("details",{className:"rounded-lg border border-neutral-200 dark:border-neutral-800",children:[a.jsx("summary",{className:"cursor-pointer select-none px-3 py-2 text-sm font-medium text-neutral-600 dark:text-neutral-300",children:"Weitere Optionen (Preis-Text, Empfohlen, Sortierung)"}),a.jsxs("div",{className:"space-y-4 border-t border-neutral-200 p-3 dark:border-neutral-800",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Preis-Text (optional)"}),a.jsx("input",{value:T.form.price_text,onChange:Z=>O(T.key,{price_text:Z.target.value}),placeholder:'z. B. "Coming soon" oder "Preis auf Anfrage"',className:Ia}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Ersetzt auf der Kachel den berechneten Preis, solange ausgefüllt."})]}),a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:T.form.is_featured,onChange:Z=>O(T.key,{is_featured:Z.target.checked}),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Als empfohlen hervorheben"]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:T.form.sort_order,onChange:Z=>O(T.key,{sort_order:Z.target.value}),className:`${Ia} max-w-[160px]`})]})]})]}),d[T.key]&&a.jsx("p",{className:"text-sm text-red-600",children:d[T.key]})]})]})]},T.key))}),a.jsxs("div",{className:"sticky bottom-0 flex flex-wrap items-center gap-3 rounded-b-xl border-t border-neutral-200 bg-white px-5 py-3 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("button",{type:"button",onClick:fe,disabled:m||!q,className:"rounded-md bg-brand-500 px-5 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:m?"Speichert…":"Alle speichern"}),a.jsxs("span",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:[qe," neu, ",R," geändert"]}),b&&a.jsx("span",{className:`text-sm ${b.kind==="error"?"text-red-600":"text-brand-600 dark:text-brand-400"}`,children:b.text})]})]}),W?a.jsxs("details",{className:"rounded-xl border border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("summary",{className:"cursor-pointer select-none px-5 py-3 font-bold text-neutral-900 dark:text-white",children:"Alle Pakete (Übersicht)"}),a.jsx("div",{className:"border-t border-neutral-200 p-5 dark:border-neutral-800",children:_d})]}):_d]})}const Fa=[...$b].sort(),AP=120,MP=200;function _P({value:e,onChange:t}){const[n,r]=g.useState(""),s=g.useMemo(()=>{const i=n.trim().toLowerCase();return i?Fa.filter(l=>l.includes(i)).slice(0,MP):Fa.slice(0,AP)},[n]);return a.jsxs("div",{children:[a.jsxs("div",{className:"mb-2 flex items-center gap-3 rounded-md border border-neutral-300 p-2 dark:border-neutral-700",children:[a.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:e?a.jsx(We,{name:e,className:"h-6 w-6"}):a.jsx("span",{className:"text-xs text-neutral-400",children:"?"})}),a.jsxs("div",{className:"text-sm",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:e||"Kein Icon gewählt"}),a.jsxs("p",{className:"text-xs text-neutral-400",children:[Fa.length," Icons verfügbar"]})]})]}),a.jsx("input",{value:n,onChange:i=>r(i.target.value),placeholder:"Icon suchen (z. B. car, shield, zap)…",className:"mb-2 w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("div",{className:"grid max-h-64 grid-cols-6 gap-1 overflow-y-auto rounded-md border border-neutral-200 p-2 sm:grid-cols-8 dark:border-neutral-700",children:[s.map(i=>a.jsx("button",{type:"button",title:i,onClick:()=>t(i),className:`flex h-10 w-10 items-center justify-center rounded-md transition ${e===i?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`,children:a.jsx(We,{name:i,className:"h-5 w-5"})},i)),s.length===0&&a.jsx("p",{className:"col-span-full py-4 text-center text-sm text-neutral-400",children:"Keine Icons gefunden."})]}),!n&&a.jsxs("p",{className:"mt-1 text-xs text-neutral-400",children:["Tipp: Tippe einen Suchbegriff ein, um alle ",Fa.length," Icons zu durchsuchen."]})]})}const Ff={icon_name:"",title:"",description:"",image_path:"",cta_label:"",cta_url:"",sort_order:0};function LP(){const[e,t]=g.useState([]),[n,r]=g.useState(Ff),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/services").then(t);g.useEffect(u,[]);const c=f=>{i(f.id),r({icon_name:f.icon_name,title:f.title,description:f.description,image_path:f.image_path||"",cta_label:f.cta_label||"",cta_url:f.cta_url||"",sort_order:f.sort_order})},d=()=>{i(null),r(Ff)},h=async f=>{if(f.preventDefault(),o(""),!n.icon_name){o("Bitte ein Icon auswählen");return}const b={...n,sort_order:Number(n.sort_order)};try{s?await A.put(`/services/${s}`,b):await A.post("/services",b),d(),u()}catch(y){o(y.message)}},m=async f=>{confirm("Diese Leistung wirklich löschen?")&&(await A.delete(`/services/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Leistungen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Karten erscheinen auf der öffentlichen Leistungen-Seite. Die 8 mitgelieferten Einträge sind die Standard-Einstellung – du kannst sie bearbeiten, löschen und beliebig neue hinzufügen."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Icon"}),a.jsx("th",{className:"px-4 py-2",children:"Titel"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2",children:a.jsx("div",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-brand-100 text-brand-600 dark:bg-brand-900/40 dark:text-brand-400",children:a.jsx(We,{name:f.icon_name,className:"h-5 w-5"})})}),a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:f.title}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Leistungen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Leistung bearbeiten":"Neue Leistung"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Icon *"}),a.jsx(_P,{value:n.icon_name,onChange:f=>r({...n,icon_name:f})})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:n.title,onChange:f=>r({...n,title:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung *"}),a.jsx("textarea",{required:!0,rows:4,value:n.description,onChange:f=>r({...n,description:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx(vl,{value:n.image_path,onChange:f=>r({...n,image_path:f}),label:"Bild"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Button-Text (optional)"}),a.jsx("input",{value:n.cta_label,onChange:f=>r({...n,cta_label:f.target.value}),placeholder:"z. B. Fahrzeug konfigurieren",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Button-Link (optional)"}),a.jsx("input",{value:n.cta_url,onChange:f=>r({...n,cta_url:f.target.value}),placeholder:"z. B. /fahrzeuge",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const Vf={question_de:"",answer_de:"",question_en:"",answer_en:"",sort_order:0};function DP(){const[e,t]=g.useState([]),[n,r]=g.useState(Vf),[s,i]=g.useState(null),[l,o]=g.useState(""),u=()=>A.get("/faqs").then(t);g.useEffect(u,[]);const c=f=>{i(f.id),r({question_de:f.question_de,answer_de:f.answer_de,question_en:f.question_en,answer_en:f.answer_en,sort_order:f.sort_order})},d=()=>{i(null),r(Vf)},h=async f=>{f.preventDefault(),o("");const b={...n,sort_order:Number(n.sort_order)};try{s?await A.put(`/faqs/${s}`,b):await A.post("/faqs",b),d(),u()}catch(y){o(y.message)}},m=async f=>{confirm("Diese Frage wirklich löschen?")&&(await A.delete(`/faqs/${f}`),u())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Häufig gestellte Fragen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Fragen erscheinen im FAQ-Bereich der Startseite, jeweils in der aktuell gewählten Sprache. Die 6 mitgelieferten Einträge sind die Standard-Einstellung – du kannst sie bearbeiten, löschen und beliebig neue hinzufügen."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Frage (DE)"}),a.jsx("th",{className:"px-4 py-2",children:"Sortierung"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(f=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsx("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:f.question_de}),a.jsx("td",{className:"px-4 py-2",children:f.sort_order}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>c(f),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>m(f.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},f.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Fragen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:h,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:s?"Frage bearbeiten":"Neue Frage"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Frage (Deutsch) *"}),a.jsx("input",{required:!0,value:n.question_de,onChange:f=>r({...n,question_de:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Antwort (Deutsch) *"}),a.jsx("textarea",{required:!0,rows:3,value:n.answer_de,onChange:f=>r({...n,answer_de:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Frage (Englisch) *"}),a.jsx("input",{required:!0,value:n.question_en,onChange:f=>r({...n,question_en:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Antwort (Englisch) *"}),a.jsx("textarea",{required:!0,rows:3,value:n.answer_en,onChange:f=>r({...n,answer_en:f.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:n.sort_order,onChange:f=>r({...n,sort_order:Number(f.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),l&&a.jsx("p",{className:"text-sm text-red-600",children:l}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:s?"Speichern":"Anlegen"}),s&&a.jsx("button",{type:"button",onClick:d,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const BP=e=>e==null?"–":new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),zP={ok:"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300",pending:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",error:"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300"};function RP(){const{packageId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(""),[i,l]=g.useState(""),[o,u]=g.useState(""),[c,d]=g.useState(!1),h=()=>A.get(`/packages/${e}/products`).then(n);g.useEffect(()=>{h()},[e]);const m=async y=>{y.preventDefault(),u(""),d(!0);try{await A.post("/products",{package_id:Number(e),source_url:r,name_override:i||null}),s(""),l(""),h()}catch(w){u(w.message)}finally{d(!1)}},f=async y=>{d(!0);try{await A.post(`/products/${y}/refresh-price`,{}),h()}finally{d(!1)}},b=async y=>{confirm("Produkt wirklich entfernen?")&&(await A.delete(`/products/${y}`),h())};return a.jsxs("div",{children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(H,{to:"/admin/packages",className:"text-brand-600 hover:underline",children:"← Zurück zu den Paketen"})}),a.jsx("h1",{className:"mb-4 text-xl font-bold text-neutral-900 dark:text-white",children:"Produkte im Paket"}),a.jsxs("form",{onSubmit:m,className:"mb-6 flex flex-wrap items-end gap-3 rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"flex-1 min-w-[240px]",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"audio4cars.de Produkt-URL *"}),a.jsx("input",{required:!0,type:"url",placeholder:"https://www.audio4cars.de/produkt/...",value:r,onChange:y=>s(y.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"w-56",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name überschreiben (optional)"}),a.jsx("input",{value:i,onChange:y=>l(y.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsx("button",{disabled:c,type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Hinzufügen"})]}),o&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:o}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Produkt"}),a.jsx("th",{className:"px-4 py-2",children:"Preis"}),a.jsx("th",{className:"px-4 py-2",children:"Status"}),a.jsx("th",{className:"px-4 py-2",children:"Zuletzt aktualisiert"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[t.map(y=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("a",{href:y.source_url,target:"_blank",rel:"noreferrer",className:"font-medium text-neutral-800 hover:underline dark:text-neutral-100",children:y.name_override||y.scraped_name||y.source_url}),y.scrape_status==="error"&&a.jsx("p",{className:"text-xs text-red-500",children:y.scrape_error})]}),a.jsx("td",{className:"px-4 py-2",children:BP(y.scraped_price)}),a.jsx("td",{className:"px-4 py-2",children:a.jsx("span",{className:`rounded-full px-2 py-0.5 text-xs font-medium ${zP[y.scrape_status]}`,children:y.scrape_status})}),a.jsx("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:y.price_updated_at?new Date(y.price_updated_at.replace(" ","T")).toLocaleString("de-DE"):"–"}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{disabled:c,onClick:()=>f(y.id),className:"mr-3 text-brand-600 hover:underline disabled:opacity-60",children:"Preis aktualisieren"}),a.jsx("button",{onClick:()=>b(y.id),className:"text-red-600 hover:underline",children:"Entfernen"})]})]},y.id)),t.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:5,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Produkte im Paket."})})]})]})})]})}const IP=e=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),Of={name:"",description:"",price:0,sort_order:0};function FP(){const{packageId:e}=Yn(),[t,n]=g.useState([]),[r,s]=g.useState(Of),[i,l]=g.useState(null),[o,u]=g.useState(""),c=()=>A.get(`/packages/${e}/upgrades`).then(n);g.useEffect(()=>{c()},[e]);const d=b=>{l(b.id),s({name:b.name,description:b.description||"",price:b.price,sort_order:b.sort_order})},h=()=>{l(null),s(Of)},m=async b=>{b.preventDefault(),u("");const y={...r,package_id:Number(e),price:Number(r.price)};try{i?await A.put(`/package-upgrades/${i}`,y):await A.post("/package-upgrades",y),h(),c()}catch(w){u(w.message)}},f=async b=>{confirm("Upgrade wirklich löschen?")&&(await A.delete(`/package-upgrades/${b}`),c())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("p",{className:"mb-2 text-sm",children:a.jsx(H,{to:"/admin/packages",className:"text-brand-600 hover:underline",children:"← Zurück zu den Paketen"})}),a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Optionale Upgrades"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Diese Upgrades erscheinen nicht in der öffentlichen Paketübersicht, sondern erst als Auswahl im Kontaktformular."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Preis"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[t.map(b=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:b.name}),b.description&&a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:b.description})]}),a.jsx("td",{className:"px-4 py-2",children:IP(b.price)}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>d(b),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>f(b.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},b.id)),t.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Upgrades hinterlegt."})})]})]})})]}),a.jsxs("form",{onSubmit:m,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:i?"Upgrade bearbeiten":"Neues Upgrade"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:r.name,onChange:b=>s({...r,name:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("textarea",{rows:2,value:r.description,onChange:b=>s({...r,description:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Preis (€) *"}),a.jsx("input",{required:!0,type:"number",step:"0.01",min:"0",value:r.price,onChange:b=>s({...r,price:b.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Sortierung"}),a.jsx("input",{type:"number",value:r.sort_order,onChange:b=>s({...r,sort_order:Number(b.target.value)}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),o&&a.jsx("p",{className:"text-sm text-red-600",children:o}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:i?"Speichern":"Anlegen"}),i&&a.jsx("button",{type:"button",onClick:h,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const VP=e=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),OP={new:"Neu",in_progress:"In Bearbeitung",done:"Erledigt"},UP={new:"bg-brand-100 text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",in_progress:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",done:"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"},WP=()=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",className:"h-4 w-4",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2m3 0-.8 12.1a1 1 0 0 1-1 .9H7.8a1 1 0 0 1-1-.9L6 7h12ZM10 11v6M14 11v6"})});function HP(){const{hasPermission:e}=Bt(),[t,n]=g.useState([]),[r,s]=g.useState("all"),i=()=>A.get("/contact").then(n);g.useEffect(()=>{i()},[]);const l=async(h,m)=>{await A.patch(`/contact/${h}`,{status:m}),i()},o=async h=>{confirm("Diese Kontaktanfrage wirklich unwiderruflich löschen?")&&(await A.delete(`/contact/${h}`),i())},u=g.useMemo(()=>({all:t.length,new:t.filter(h=>h.status==="new").length,in_progress:t.filter(h=>h.status==="in_progress").length,done:t.filter(h=>h.status==="done").length}),[t]),c=r==="all"?t:t.filter(h=>h.status===r),d=[{value:"all",label:"Alle"},{value:"new",label:"Neu"},{value:"in_progress",label:"In Bearbeitung"},{value:"done",label:"Erledigt"}];return a.jsxs("div",{children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Kontaktanfragen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Alle Anfragen deiner Kunden. Wähle oben einen Reiter, um nur bestimmte Anfragen zu sehen."}),a.jsx("div",{className:"mb-5 flex flex-wrap gap-2",children:d.map(h=>a.jsxs("button",{onClick:()=>s(h.value),className:`rounded-full px-4 py-1.5 text-sm font-medium transition ${r===h.value?"bg-brand-500 text-white":"bg-neutral-100 text-neutral-600 hover:bg-neutral-200 dark:bg-neutral-800 dark:text-neutral-300 dark:hover:bg-neutral-700"}`,children:[h.label," (",u[h.value],")"]},h.value))}),a.jsxs("div",{className:"space-y-3",children:[c.map(h=>{var m;return a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-2 flex flex-wrap items-start justify-between gap-2",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-semibold text-neutral-800 dark:text-neutral-100",children:[h.name," · ",h.email,h.phone?` · ${h.phone}`:""]}),h.vin&&a.jsxs("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:["FIN: ",a.jsx("span",{className:"font-mono",children:h.vin})]}),a.jsx("p",{className:"text-xs text-neutral-400",children:new Date(h.created_at.replace(" ","T")).toLocaleString("de-DE")})]}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("select",{value:h.status,onChange:f=>l(h.id,f.target.value),className:`rounded-full border-0 px-3 py-1 text-xs font-medium ${UP[h.status]}`,children:Object.entries(OP).map(([f,b])=>a.jsx("option",{value:f,children:b},f))}),e("contact.delete")&&a.jsx("button",{onClick:()=>o(h.id),"aria-label":"Anfrage löschen",title:"Anfrage löschen",className:"rounded-md p-1.5 text-neutral-400 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20",children:a.jsx(WP,{})})]})]}),(h.brand_name||h.model_name||h.package_name||h.product_name)&&a.jsx("p",{className:"mb-2 text-sm text-neutral-500 dark:text-neutral-400",children:[h.brand_name,h.model_name,h.package_name,h.product_name].filter(Boolean).join(" · ")}),((m=h.selected_upgrades)==null?void 0:m.length)>0&&a.jsxs("div",{className:"mb-2 rounded-md bg-brand-50 p-2 text-sm text-brand-800 dark:bg-brand-900/20 dark:text-brand-200",children:[a.jsx("p",{className:"font-semibold",children:"Gewünschte Upgrades:"}),a.jsx("ul",{className:"list-disc pl-5",children:h.selected_upgrades.map(f=>a.jsxs("li",{children:[f.name," – ",VP(f.price)]},f.id))})]}),h.message&&a.jsx("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:h.message})]},h.id)}),c.length===0&&a.jsx("p",{className:"text-neutral-400",children:r==="all"?"Noch keine Kontaktanfragen eingegangen.":"Keine Anfragen mit diesem Status."})]})]})}var ha={},$P=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},gb={},st={};let Pd;const GP=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];st.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};st.getSymbolTotalCodewords=function(t){return GP[t]};st.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};st.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');Pd=t};st.isKanjiModeEnabled=function(){return typeof Pd<"u"};st.toSJIS=function(t){return Pd(t)};var yl={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,s){if(e.isValid(r))return r;try{return t(r)}catch{return s}}})(yl);function xb(){this.buffer=[],this.length=0}xb.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n >>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var KP=xb;function ma(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}ma.prototype.set=function(e,t,n,r){const s=e*this.size+t;this.data[s]=n,r&&(this.reservedBit[s]=!0)};ma.prototype.get=function(e,t){return this.data[e*this.size+t]};ma.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n};ma.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var qP=ma,bb={};(function(e){const t=st.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const s=Math.floor(r/7)+2,i=t(r),l=i===145?26:Math.ceil((i-13)/(2*s-2))*2,o=[i-7];for(let u=1;u =0&&s<=7},e.from=function(s){return e.isValid(s)?parseInt(s,10):void 0},e.getPenaltyN1=function(s){const i=s.size;let l=0,o=0,u=0,c=null,d=null;for(let h=0;h=5&&(l+=t.N1+(o-5)),c=f,o=1),f=s.get(m,h),f===d?u++:(u>=5&&(l+=t.N1+(u-5)),d=f,u=1)}o>=5&&(l+=t.N1+(o-5)),u>=5&&(l+=t.N1+(u-5))}return l},e.getPenaltyN2=function(s){const i=s.size;let l=0;for(let o=0;o =10&&(o===1488||o===93)&&l++,u=u<<1&2047|s.get(d,c),d>=10&&(u===1488||u===93)&&l++}return l*t.N3},e.getPenaltyN4=function(s){let i=0;const l=s.data.length;for(let u=0;u =0;){const l=i[0];for(let u=0;u 0){const i=new Uint8Array(this.degree);return i.set(r,s),i}return r};var XP=Ed,jb={},En={},Td={};Td.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var zt={};const Nb="[0-9]+",ZP="[A-Z $%*+\\-./:]+";let Qs="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Qs=Qs.replace(/u/g,"\\u");const QP="(?:(?![A-Z0-9 $%*+\\-./:]|"+Qs+`)(?:.|[\r +]))+`;zt.KANJI=new RegExp(Qs,"g");zt.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");zt.BYTE=new RegExp(QP,"g");zt.NUMERIC=new RegExp(Nb,"g");zt.ALPHANUMERIC=new RegExp(ZP,"g");const JP=new RegExp("^"+Qs+"$"),e4=new RegExp("^"+Nb+"$"),t4=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");zt.testKanji=function(t){return JP.test(t)};zt.testNumeric=function(t){return e4.test(t)};zt.testAlphanumeric=function(t){return t4.test(t)};(function(e){const t=Td,n=zt;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(i,l){if(!i.ccBits)throw new Error("Invalid mode: "+i);if(!t.isValid(l))throw new Error("Invalid version: "+l);return l>=1&&l<10?i.ccBits[0]:l<27?i.ccBits[1]:i.ccBits[2]},e.getBestModeForData=function(i){return n.testNumeric(i)?e.NUMERIC:n.testAlphanumeric(i)?e.ALPHANUMERIC:n.testKanji(i)?e.KANJI:e.BYTE},e.toString=function(i){if(i&&i.id)return i.id;throw new Error("Invalid mode")},e.isValid=function(i){return i&&i.bit&&i.ccBits};function r(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+s)}}e.from=function(i,l){if(e.isValid(i))return i;try{return r(i)}catch{return l}}})(En);(function(e){const t=st,n=kl,r=yl,s=En,i=Td,l=7973,o=t.getBCHDigit(l);function u(m,f,b){for(let y=1;y<=40;y++)if(f<=e.getCapacity(y,b,m))return y}function c(m,f){return s.getCharCountIndicator(m,f)+4}function d(m,f){let b=0;return m.forEach(function(y){const w=c(y.mode,f);b+=w+y.getBitsLength()}),b}function h(m,f){for(let b=1;b<=40;b++)if(d(m,b)<=e.getCapacity(b,f,s.MIXED))return b}e.from=function(f,b){return i.isValid(f)?parseInt(f,10):b},e.getCapacity=function(f,b,y){if(!i.isValid(f))throw new Error("Invalid QR Code version");typeof y>"u"&&(y=s.BYTE);const w=t.getSymbolTotalCodewords(f),x=n.getTotalCodewordsCount(f,b),p=(w-x)*8;if(y===s.MIXED)return p;const v=p-c(y,f);switch(y){case s.NUMERIC:return Math.floor(v/10*3);case s.ALPHANUMERIC:return Math.floor(v/11*2);case s.KANJI:return Math.floor(v/13);case s.BYTE:default:return Math.floor(v/8)}},e.getBestVersionForData=function(f,b){let y;const w=r.from(b,r.M);if(Array.isArray(f)){if(f.length>1)return h(f,w);if(f.length===0)return 1;y=f[0]}else y=f;return u(y.mode,y.getLength(),w)},e.getEncodedBits=function(f){if(!i.isValid(f)||f<7)throw new Error("Invalid QR Code version");let b=f<<12;for(;t.getBCHDigit(b)-o>=0;)b^=l< =0;)s^=Cb< 0&&(r=this.data.substr(n),s=parseInt(r,10),t.put(s,i*3+1))};var s4=_r;const a4=En,yo=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Lr(e){this.mode=a4.ALPHANUMERIC,this.data=e}Lr.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};Lr.prototype.getLength=function(){return this.data.length};Lr.prototype.getBitsLength=function(){return Lr.getBitsLength(this.data.length)};Lr.prototype.write=function(t){let n;for(n=0;n+2<=this.data.length;n+=2){let r=yo.indexOf(this.data[n])*45;r+=yo.indexOf(this.data[n+1]),t.put(r,11)}this.data.length%2&&t.put(yo.indexOf(this.data[n]),6)};var i4=Lr;const l4=En;function Dr(e){this.mode=l4.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Dr.getBitsLength=function(t){return t*8};Dr.prototype.getLength=function(){return this.data.length};Dr.prototype.getBitsLength=function(){return Dr.getBitsLength(this.data.length)};Dr.prototype.write=function(e){for(let t=0,n=this.data.length;t =33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` +Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}};var d4=Br,Eb={exports:{}};(function(e){var t={single_source_shortest_paths:function(n,r,s){var i={},l={};l[r]=0;var o=t.PriorityQueue.make();o.push(r,0);for(var u,c,d,h,m,f,b,y,w;!o.empty();){u=o.pop(),c=u.value,h=u.cost,m=n[c]||{};for(d in m)m.hasOwnProperty(d)&&(f=m[d],b=h+f,y=l[d],w=typeof l[d]>"u",(w||y>b)&&(l[d]=b,o.push(d,b),i[d]=c))}if(typeof s<"u"&&typeof l[s]>"u"){var x=["Could not find a path from ",r," to ",s,"."].join("");throw new Error(x)}return i},extract_shortest_path_from_predecessor_list:function(n,r){for(var s=[],i=r;i;)s.push(i),n[i],i=n[i];return s.reverse(),s},find_path:function(n,r,s){var i=t.single_source_shortest_paths(n,r,s);return t.extract_shortest_path_from_predecessor_list(i,s)},PriorityQueue:{make:function(n){var r=t.PriorityQueue,s={},i;n=n||{};for(i in r)r.hasOwnProperty(i)&&(s[i]=r[i]);return s.queue=[],s.sorter=n.sorter||r.default_sorter,s},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var s={value:n,cost:r};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Eb);var h4=Eb.exports;(function(e){const t=En,n=s4,r=i4,s=o4,i=d4,l=zt,o=st,u=h4;function c(x){return unescape(encodeURIComponent(x)).length}function d(x,p,v){const k=[];let j;for(;(j=x.exec(v))!==null;)k.push({data:j[0],index:j.index,mode:p,length:j[0].length});return k}function h(x){const p=d(l.NUMERIC,t.NUMERIC,x),v=d(l.ALPHANUMERIC,t.ALPHANUMERIC,x);let k,j;return o.isKanjiModeEnabled()?(k=d(l.BYTE,t.BYTE,x),j=d(l.KANJI,t.KANJI,x)):(k=d(l.BYTE_KANJI,t.BYTE,x),j=[]),p.concat(v,k,j).sort(function(S,P){return S.index-P.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function m(x,p){switch(p){case t.NUMERIC:return n.getBitsLength(x);case t.ALPHANUMERIC:return r.getBitsLength(x);case t.KANJI:return i.getBitsLength(x);case t.BYTE:return s.getBitsLength(x)}}function f(x){return x.reduce(function(p,v){const k=p.length-1>=0?p[p.length-1]:null;return k&&k.mode===v.mode?(p[p.length-1].data+=v.data,p):(p.push(v),p)},[])}function b(x){const p=[];for(let v=0;v =0&&o<=6&&(u===0||u===6)||u>=0&&u<=6&&(o===0||o===6)||o>=2&&o<=4&&u>=2&&u<=4?e.set(i+o,l+u,!0,!0):e.set(i+o,l+u,!1,!0))}}function k4(e){const t=e.size;for(let n=8;n >o&1)===1,e.set(s,i,l,!0),e.set(i,s,l,!0)}function jo(e,t,n){const r=e.size,s=b4.getEncodedBits(t,n);let i,l;for(i=0;i<15;i++)l=(s>>i&1)===1,i<6?e.set(i,8,l,!0):i<8?e.set(i+1,8,l,!0):e.set(r-15+i,8,l,!0),i<8?e.set(8,r-i-1,l,!0):i<9?e.set(8,15-i-1+1,l,!0):e.set(8,15-i-1,l,!0);e.set(r-8,8,1,!0)}function N4(e,t){const n=e.size;let r=-1,s=n-1,i=7,l=0;for(let o=n-1;o>0;o-=2)for(o===6&&o--;;){for(let u=0;u<2;u++)if(!e.isReserved(s,o-u)){let c=!1;l >>i&1)===1),e.set(s,o-u,c),i--,i===-1&&(l++,i=7)}if(s+=r,s<0||n<=s){s-=r,r=-r;break}}}function S4(e,t,n){const r=new m4;n.forEach(function(u){r.put(u.mode.bit,4),r.put(u.getLength(),v4.getCharCountIndicator(u.mode,e)),u.write(r)});const s=jl.getSymbolTotalCodewords(e),i=ec.getTotalCodewordsCount(e,t),l=(s-i)*8;for(r.getLengthInBits()+4<=l&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const o=(l-r.getLengthInBits())/8;for(let u=0;u =7&&j4(u,t),N4(u,l),isNaN(r)&&(r=Ju.getBestMask(u,jo.bind(null,u,n))),Ju.applyMask(r,u),jo(u,n,r),{modules:u,version:t,errorCorrectionLevel:n,maskPattern:r,segments:s}}gb.create=function(t,n){if(typeof t>"u"||t==="")throw new Error("No input text");let r=ko.M,s,i;return typeof n<"u"&&(r=ko.from(n.errorCorrectionLevel,ko.M),s=Gi.from(n.version),i=Ju.from(n.maskPattern),n.toSJISFunc&&jl.setToSJISFunction(n.toSJISFunc)),P4(t,s,r,i)};var Tb={},Ad={};(function(e){function t(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let r=n.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+n);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(i){return[i,i]}))),r.length===6&&r.push("F","F");const s=parseInt(r.join(""),16);return{r:s>>24&255,g:s>>16&255,b:s>>8&255,a:s&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const s=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,i=r.width&&r.width>=21?r.width:void 0,l=r.scale||4;return{width:i,scale:i?4:l,margin:s,color:{dark:t(r.color.dark||"#000000ff"),light:t(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,s){return s.width&&s.width>=r+s.margin*2?s.width/(r+s.margin*2):s.scale},e.getImageWidth=function(r,s){const i=e.getScale(r,s);return Math.floor((r+s.margin*2)*i)},e.qrToImageData=function(r,s,i){const l=s.modules.size,o=s.modules.data,u=e.getScale(l,i),c=Math.floor((l+i.margin*2)*u),d=i.margin*u,h=[i.color.light,i.color.dark];for(let m=0;m =d&&f>=d&&m "u"&&(!l||!l.getContext)&&(u=l,l=void 0),l||(c=r()),u=t.getOptions(u);const d=t.getImageWidth(i.modules.size,u),h=c.getContext("2d"),m=h.createImageData(d,d);return t.qrToImageData(m.data,i,u),n(h,c,d),h.putImageData(m,0,0),c},e.renderToDataURL=function(i,l,o){let u=o;typeof u>"u"&&(!l||!l.getContext)&&(u=l,l=void 0),u||(u={});const c=e.render(i,l,u),d=u.type||"image/png",h=u.rendererOpts||{};return c.toDataURL(d,h.quality)}})(Tb);var Ab={};const E4=Ad;function Hf(e,t){const n=e.a/255,r=t+'="'+e.hex+'"';return n<1?r+" "+t+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function No(e,t,n){let r=e+t;return typeof n<"u"&&(r+=" "+n),r}function T4(e,t,n){let r="",s=0,i=!1,l=0;for(let o=0;o 0&&u>0&&e[o-1]||(r+=i?No("M",u+n,.5+c+n):No("m",s,0),s=0,i=!1),u+1 ':"",c=" ',d='viewBox="0 0 '+o+" "+o+'"',m=' -`;return typeof r=="function"&&r(null,m),m};const A4=$P,tc=gb,Mb=Tb,M4=Ab;function Md(e,t,n,r,s){const i=[].slice.call(arguments,1),l=i.length,o=typeof i[l-1]=="function";if(!o&&!A4())throw new Error("Callback required as last argument");if(o){if(l<2)throw new Error("Too few arguments provided");l===2?(s=n,n=t,t=r=void 0):l===3&&(t.getContext&&typeof s>"u"?(s=r,r=void 0):(s=r,r=n,n=t,t=void 0))}else{if(l<1)throw new Error("Too few arguments provided");return l===1?(n=t,t=r=void 0):l===2&&!t.getContext&&(r=n,n=t,t=void 0),new Promise(function(u,c){try{const d=tc.create(n,r);u(e(d,t,r))}catch(d){c(d)}})}try{const u=tc.create(n,r);s(null,e(u,t,r))}catch(u){s(u)}}ha.create=tc.create;ha.toCanvas=Md.bind(null,Mb.render);ha.toDataURL=Md.bind(null,Mb.renderToDataURL);ha.toString=Md.bind(null,function(e,t,n){return M4.render(e,n)});const $f={current_password:"",new_password:"",new_password_confirmation:"",two_factor_code:""};function _4(){const{user:e,refreshUser:t}=Dt(),[n,r]=g.useState("idle"),[s,i]=g.useState(""),[l,o]=g.useState(""),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState([]),[b,y]=g.useState(""),[w,x]=g.useState(!1),[p,v]=g.useState($f),[k,j]=g.useState(""),[C,S]=g.useState(""),[P,M]=g.useState(!1),N=async R=>{if(R.preventDefault(),j(""),S(""),p.new_password!==p.new_password_confirmation){j("Die neuen Passwörter stimmen nicht überein");return}M(!0);try{await A.post("/auth/change-password",p),v($f),S("Passwort erfolgreich geändert.")}catch(K){j(K.message)}finally{M(!1)}},E=async()=>{y(""),x(!0);try{const R=await A.get("/auth/2fa/setup");o(R.secret),i(await ha.toDataURL(R.otpauth_url)),c(""),r("setup")}catch(R){y(R.message)}finally{x(!1)}},B=async R=>{R.preventDefault(),y(""),x(!0);try{const K=await A.post("/auth/2fa/enable",{code:u});f(K.recovery_codes),r("recovery-codes"),await t()}catch(K){y(K.message)}finally{x(!1)}},O=()=>{r("idle"),f([]),h("")},$=async R=>{R.preventDefault(),y(""),x(!0);try{await A.post("/auth/2fa/disable",{password:d}),h(""),r("idle"),await t()}catch(K){y(K.message)}finally{x(!1)}},Y=async R=>{R.preventDefault(),y(""),x(!0);try{const K=await A.post("/auth/2fa/recovery-codes",{password:d});f(K.recovery_codes),r("recovery-codes")}catch(K){y(K.message)}finally{x(!1)}};return a.jsxs("div",{className:"max-w-xl",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Mein Konto"}),a.jsxs("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:["Angemeldet als ",a.jsx("strong",{children:e==null?void 0:e.username}),e!=null&&e.is_super_admin?" (Super-Admin)":"","."]}),a.jsxs("div",{className:"mb-6 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Passwort ändern"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:["Vergib ein neues Passwort für dein Konto.",(e==null?void 0:e.two_factor_enabled)&&" Da 2FA aktiv ist, musst du die Änderung zusätzlich mit deinem Code bestätigen."]}),a.jsxs("form",{onSubmit:N,children:[a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Aktuelles Passwort"}),a.jsx("input",{type:"password",value:p.current_password,onChange:R=>v({...p,current_password:R.target.value}),required:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Neues Passwort"}),a.jsx("input",{type:"password",value:p.new_password,onChange:R=>v({...p,new_password:R.target.value}),required:!0,minLength:8,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Neues Passwort wiederholen"}),a.jsx("input",{type:"password",value:p.new_password_confirmation,onChange:R=>v({...p,new_password_confirmation:R.target.value}),required:!0,minLength:8,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),(e==null?void 0:e.two_factor_enabled)&&a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"2FA-Code zur Bestätigung"}),a.jsx("input",{value:p.two_factor_code,onChange:R=>v({...p,two_factor_code:R.target.value}),required:!0,inputMode:"numeric",placeholder:"123456 oder Wiederherstellungscode",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),k&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:k}),C&&a.jsx("p",{className:"mb-4 text-sm text-green-600 dark:text-green-400",children:C}),a.jsx("button",{type:"submit",disabled:P,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:P?"Wird geändert…":"Passwort ändern"})]})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Zwei-Faktor-Authentifizierung"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Schützt dein Konto zusätzlich mit einem Code aus der Google Authenticator App."}),n==="idle"&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:"mb-4 text-sm",children:["Status:"," ",e!=null&&e.two_factor_enabled?a.jsx("span",{className:"font-semibold text-green-600 dark:text-green-400",children:"Aktiv"}):a.jsx("span",{className:"font-semibold text-neutral-500 dark:text-neutral-400",children:"Nicht aktiv"})]}),e!=null&&e.two_factor_enabled?a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx("button",{onClick:()=>{r("regenerate"),y("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:"Neue Wiederherstellungscodes erzeugen"}),a.jsx("button",{onClick:()=>{r("disable"),y("")},className:"rounded-md border border-red-300 px-4 py-2 text-sm font-medium text-red-600 hover:bg-red-50 dark:border-red-900 dark:hover:bg-red-900/20",children:"2FA deaktivieren"})]}):a.jsx("button",{onClick:E,disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"2FA aktivieren"})]}),n==="setup"&&a.jsxs("form",{onSubmit:B,children:[a.jsxs("ol",{className:"mb-4 list-decimal space-y-2 pl-5 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("li",{children:"Öffne die Google Authenticator App (oder eine kompatible App)."}),a.jsx("li",{children:"Scanne den folgenden QR-Code:"})]}),a.jsx("div",{className:"mb-4 flex justify-center",children:s&&a.jsx("img",{src:s,alt:"QR-Code für Zwei-Faktor-Authentifizierung",className:"h-48 w-48 rounded-lg border border-neutral-200 dark:border-neutral-700"})}),a.jsxs("p",{className:"mb-4 text-center text-xs text-neutral-500 dark:text-neutral-400",children:["Geht das Scannen nicht? Gib diesen Code manuell ein: ",a.jsx("br",{}),a.jsx("code",{className:"mt-1 inline-block rounded bg-neutral-100 px-2 py-1 font-mono tracking-wider dark:bg-neutral-800",children:l})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Bestätigungscode aus der App"}),a.jsx("input",{value:u,onChange:R=>c(R.target.value),required:!0,autoFocus:!0,inputMode:"numeric",placeholder:"123456",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-center text-lg tracking-widest dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Bestätigen & aktivieren"}),a.jsx("button",{type:"button",onClick:()=>r("idle"),className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]}),n==="recovery-codes"&&a.jsxs("div",{children:[a.jsx("p",{className:"mb-3 text-sm font-semibold text-neutral-900 dark:text-white",children:"Wiederherstellungscodes – jetzt sicher speichern!"}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Jeder Code funktioniert einmalig, falls du keinen Zugriff mehr auf die Authenticator-App hast. Diese Codes werden nur jetzt angezeigt."}),a.jsx("div",{className:"mb-4 grid grid-cols-2 gap-2 rounded-md bg-neutral-100 p-4 font-mono text-sm dark:bg-neutral-800",children:m.map(R=>a.jsx("span",{children:R},R))}),a.jsx("button",{onClick:O,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Ich habe die Codes gespeichert"})]}),n==="disable"&&a.jsxs("form",{onSubmit:$,children:[a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort zur Bestätigung"}),a.jsx("input",{type:"password",value:d,onChange:R=>h(R.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-60",children:"2FA jetzt deaktivieren"}),a.jsx("button",{type:"button",onClick:()=>{r("idle"),h("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]}),n==="regenerate"&&a.jsxs("form",{onSubmit:Y,children:[a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Die bisherigen Wiederherstellungscodes werden ungültig."}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort zur Bestätigung"}),a.jsx("input",{type:"password",value:d,onChange:R=>h(R.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Neue Codes erzeugen"}),a.jsx("button",{type:"button",onClick:()=>{r("idle"),h("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})]})}const Gf={username:"",password:"",is_super_admin:!1,permissions:[],group_ids:[]};function L4(){const{user:e,hasPermission:t}=Dt(),[n,r]=g.useState([]),[s,i]=g.useState([]),[l,o]=g.useState([]),[u,c]=g.useState(Gf),[d,h]=g.useState(null),[m,f]=g.useState(""),b=()=>{A.get("/admin-users").then(r),A.get("/permissions/catalog").then(i),(t("permission_groups.manage")||t("users.manage"))&&A.get("/permission-groups").then(o)};g.useEffect(b,[]);const y=j=>{h(j.id),c({username:j.username,password:"",is_super_admin:j.is_super_admin,permissions:j.permissions,group_ids:j.groups.map(C=>C.id)})},w=()=>{h(null),c(Gf)},x=j=>{c(C=>({...C,permissions:C.permissions.includes(j)?C.permissions.filter(S=>S!==j):[...C.permissions,j]}))},p=j=>{c(C=>({...C,group_ids:C.group_ids.includes(j)?C.group_ids.filter(S=>S!==j):[...C.group_ids,j]}))},v=async j=>{j.preventDefault(),f("");try{if(d)await A.put(`/admin-users/${d}`,u);else{if(u.password.length<8){f("Passwort muss mindestens 8 Zeichen lang sein");return}await A.post("/admin-users",u)}w(),b()}catch(C){f(C.message)}},k=async j=>{if(confirm("Diesen Benutzer wirklich löschen?"))try{await A.delete(`/admin-users/${j}`),b()}catch(C){alert(C.message)}};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Benutzer"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Jeder Mitarbeiter bekommt ein eigenes Konto mit genau den Rechten, die er braucht."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Benutzername"}),a.jsx("th",{className:"px-4 py-2",children:"Rolle"}),a.jsx("th",{className:"px-4 py-2",children:"Berechtigungsgruppen"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[n.map(j=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:[j.username,j.id===(e==null?void 0:e.id)&&a.jsx("span",{className:"ml-1 text-xs text-neutral-400",children:"(du)"})]}),a.jsx("td",{className:"px-4 py-2",children:j.is_super_admin?a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-medium text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",children:"Super-Admin"}):a.jsxs("span",{className:"text-neutral-500 dark:text-neutral-400",children:[j.permissions.length," Einzelrechte"]})}),a.jsx("td",{className:"px-4 py-2",children:a.jsxs("div",{className:"flex flex-wrap gap-1",children:[j.groups.map(C=>a.jsx("span",{className:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:C.name},C.id)),j.groups.length===0&&"–"]})}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>y(j),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),j.id!==(e==null?void 0:e.id)&&a.jsx("button",{onClick:()=>k(j.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},j.id)),n.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Benutzer angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:v,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:d?"Benutzer bearbeiten":"Neuer Benutzer"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername *"}),a.jsx("input",{required:!0,value:u.username,onChange:j=>c({...u,username:j.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",d?"(leer lassen = unverändert)":"*"]}),a.jsx("input",{type:"password",required:!d,value:u.password,onChange:j=>c({...u,password:j.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),(e==null?void 0:e.is_super_admin)&&a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.is_super_admin,onChange:j=>c({...u,is_super_admin:j.target.checked}),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Super-Admin (hat automatisch alle Rechte)"]}),!u.is_super_admin&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Einzelne Berechtigungen"}),a.jsx("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:s.map(j=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.permissions.includes(j.key),onChange:()=>x(j.key),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),j.label]},j.key))})]}),a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Berechtigungsgruppen"}),a.jsxs("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:[l.map(j=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.group_ids.includes(j.id),onChange:()=>p(j.id),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),j.name]},j.id)),l.length===0&&a.jsx("p",{className:"text-sm text-neutral-400",children:"Noch keine Berechtigungsgruppen angelegt."})]})]})]}),m&&a.jsx("p",{className:"text-sm text-red-600",children:m}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:d?"Speichern":"Anlegen"}),d&&a.jsx("button",{type:"button",onClick:w,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const Kf={name:"",description:"",permissions:[]};function D4(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(Kf),[l,o]=g.useState(null),[u,c]=g.useState(""),d=()=>{A.get("/permission-groups").then(t),A.get("/permissions/catalog").then(r)};g.useEffect(d,[]);const h=w=>{o(w.id),i({name:w.name,description:w.description||"",permissions:w.permissions})},m=()=>{o(null),i(Kf)},f=w=>{i(x=>({...x,permissions:x.permissions.includes(w)?x.permissions.filter(p=>p!==w):[...x.permissions,w]}))},b=async w=>{w.preventDefault(),c("");try{l?await A.put(`/permission-groups/${l}`,s):await A.post("/permission-groups",s),m(),d()}catch(x){c(x.message)}},y=async w=>{confirm("Diese Berechtigungsgruppe wirklich löschen? Benutzer behalten ihre sonstigen Rechte.")&&(await A.delete(`/permission-groups/${w}`),d())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Berechtigungsgruppen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:'Fasse mehrere Berechtigungen zu einer Gruppe zusammen (z. B. „Werkstatt"), die du dann bequem einem oder mehreren Benutzern zuweisen kannst.'}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Berechtigungen"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(w=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:w.name}),w.description&&a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:w.description})]}),a.jsxs("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:[w.permissions.length," von ",n.length]}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>h(w),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>y(w.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},w.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Berechtigungsgruppen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:b,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Gruppe bearbeiten":"Neue Gruppe"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:s.name,onChange:w=>i({...s,name:w.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("textarea",{rows:2,value:s.description,onChange:w=>i({...s,description:w.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Berechtigungen"}),a.jsx("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:n.map(w=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:s.permissions.includes(w.key),onChange:()=>f(w.key),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),w.label]},w.key))})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:m,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const B4=[{to:"/admin/settings/website",label:"Website"},{to:"/admin/settings/email",label:"E-Mail"},{to:"/admin/settings/database",label:"Datenbank"},{to:"/admin/settings/export-import",label:"Export & Import"},{to:"/admin/settings/maintenance",label:"Wartungsmodus"},{to:"/admin/settings/reset",label:"Zurücksetzen"}];function z4(){const e=({isActive:t})=>`rounded-md px-4 py-2 text-sm font-medium transition ${t?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`;return a.jsxs("div",{children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Einstellungen"}),a.jsx("p",{className:"mb-5 text-sm text-neutral-500 dark:text-neutral-400",children:"Werkzeuge rund um Datenbank, Server-Umzug und Zurücksetzen dieser Seite."}),a.jsx("nav",{className:"mb-6 flex flex-wrap gap-2",children:B4.map(t=>a.jsx(ug,{to:t.to,className:e,children:t.label},t.to))}),a.jsx(hl,{})]})}const R4={phone:"",whatsapp:"",contact_email:"",hero_image_path:"",ga_measurement_id:"",package_card_theme:"graphite",package_card_layout:"strip"},I4=[{value:"graphite",label:"Graphite Green",description:"Graphit über Bronze/Silber/Gold/Platin bis zur Onyx-Krönung."},{value:"deep-blue",label:"Deep Blue Luxury",description:"Kühles Blau, das sich über Grün zu Gold erwärmt."},{value:"warm-bronze",label:"Warm Bronze",description:"Durchgehend warmes Kupfer/Bronze/Amber bis zum Gold."}],F4=[{value:"grid",label:"Raster",description:"Breite Kacheln, die responsiv in mehrere Zeilen umbrechen."},{value:"strip",label:"Scroll-Band",description:"Schmale, hochkant Kacheln in einer horizontal scrollbaren Reihe."},{value:"coverflow",label:"3D-Coverflow",description:"Kacheln drehen sich beim Wischen räumlich – die mittlere steht im Fokus."}];function V4(){const[e,t]=g.useState(R4),[n,r]=g.useState(!0),[s,i]=g.useState(!1),[l,o]=g.useState(!1),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState(""),[b,y]=g.useState(!1),[w,x]=g.useState(!1),[p,v]=g.useState(""),[k,j]=g.useState(!1),[C,S]=g.useState(""),[P,M]=g.useState(""),[N,E]=g.useState(!1),[B,O]=g.useState(null),[$,Y]=g.useState(!1),[R,K]=g.useState(""),[_,D]=g.useState(!1),[z,U]=g.useState(!1);g.useEffect(()=>{A.get("/site-settings").then(F=>t({phone:F.phone||"",whatsapp:F.whatsapp||"",contact_email:F.contact_email||"",hero_image_path:F.hero_image_path||"",ga_measurement_id:F.ga_measurement_id||"",package_card_theme:F.package_card_theme||"graphite",package_card_layout:F.package_card_layout||"strip"})).finally(()=>r(!1)),A.get("/settings/analytics").then(F=>{h(F.ga_property_id||""),y(F.has_credentials)}),q()},[]);const q=()=>{A.get("/settings/google-reviews").then(F=>{S(F.place_id||""),E(F.has_api_key),O(F)})},X=async()=>{Y(!0),K(""),D(!1);try{const F=await A.post("/settings/google-reviews",{place_id:C,api_key:P});E(F.has_api_key),O(F),M(""),D(!0)}catch(F){K(F.message)}finally{Y(!1)}},ee=async()=>{U(!0),K("");try{const F=await A.post("/settings/google-reviews/refresh",{});O(F)}catch(F){K(F.message),q()}finally{U(!1)}},Ne=async()=>{x(!0),v(""),j(!1);try{const F=await A.post("/settings/analytics",{ga_property_id:d,service_account_json:m});y(F.has_credentials),f(""),j(!0)}catch(F){v(F.message)}finally{x(!1)}},de=(F,zt)=>{t($r=>({...$r,[F]:zt})),o(!1)},Xt=async F=>{F.preventDefault(),i(!0),c(""),o(!1);try{await A.post("/site-settings",e),o(!0)}catch(zt){c(zt.message)}finally{i(!1)}};return n?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:Xt,className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Startseiten-Bild"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Das große Hero-Bild ganz oben auf der Startseite. Ohne eigenes Bild wird das Standardbild verwendet."}),a.jsx(vl,{value:e.hero_image_path,onChange:F=>de("hero_image_path",F),label:"Bild"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Kontaktdaten"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wird im Header, Footer und auf der Kontaktseite angezeigt."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Telefon"}),a.jsx("input",{value:e.phone,onChange:F=>de("phone",F.target.value),placeholder:"09373 20 62 390",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"WhatsApp Business Nummer"}),a.jsx("input",{value:e.whatsapp,onChange:F=>de("whatsapp",F.target.value),placeholder:"z. B. 09373 20 62 390",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Leer lassen, um den WhatsApp-Link im Header auszublenden."})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"E-Mail"}),a.jsx("input",{type:"email",value:e.contact_email,onChange:F=>de("contact_email",F.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Paket-Kachel-Design"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Bestimmt die Farbgebung der Paket-Stufen auf jeder Fahrzeug-Modell-Seite (von der günstigsten bis zur teuersten Option)."}),a.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:I4.map(F=>a.jsxs("label",{className:`cursor-pointer rounded-lg border p-3 text-sm transition ${e.package_card_theme===F.value?"border-brand-500 ring-2 ring-brand-500/40":"border-neutral-300 hover:border-neutral-400 dark:border-neutral-700 dark:hover:border-neutral-600"}`,children:[a.jsx("input",{type:"radio",name:"package_card_theme",value:F.value,checked:e.package_card_theme===F.value,onChange:zt=>de("package_card_theme",zt.target.value),className:"sr-only"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:F.label}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:F.description})]},F.value))})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Kachel-Layout"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Bestimmt, wie die Paket-Stufen auf jeder Fahrzeug-Modell-Seite angeordnet werden."}),a.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:F4.map(F=>a.jsxs("label",{className:`cursor-pointer rounded-lg border p-3 text-sm transition ${e.package_card_layout===F.value?"border-brand-500 ring-2 ring-brand-500/40":"border-neutral-300 hover:border-neutral-400 dark:border-neutral-700 dark:hover:border-neutral-600"}`,children:[a.jsx("input",{type:"radio",name:"package_card_layout",value:F.value,checked:e.package_card_layout===F.value,onChange:zt=>de("package_card_layout",zt.target.value),className:"sr-only"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:F.label}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:F.description})]},F.value))})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wird erst geladen, nachdem ein Besucher der Statistik-Kategorie im Cookie-Banner zugestimmt hat. Leer lassen, um Google Analytics zu deaktivieren."}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Measurement-ID"}),a.jsx("input",{value:e.ga_measurement_id,onChange:F=>de("ga_measurement_id",F.target.value),placeholder:"G-XXXXXXXXXX",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mt-5 border-t border-neutral-200 pt-5 dark:border-neutral-800",children:[a.jsx("h3",{className:"mb-1 text-sm font-semibold text-neutral-900 dark:text-white",children:"Dashboard-Anbindung (optional)"}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Zeigt Besucherzahlen direkt in deinem Admin-Dashboard an. Braucht ein Google-Cloud-Service-Account mit Lesezugriff auf diese GA4-Property."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Property-ID"}),a.jsx("input",{value:d,onChange:F=>{h(F.target.value),j(!1)},placeholder:"z. B. 123456789",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Nicht die Measurement-ID (G-...) - zu finden unter GA4 → Verwaltung → Property-Details."})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Service-Account-JSON-Schlüssel ",b?"(leer lassen = unverändert)":""]}),a.jsx("textarea",{rows:4,value:m,onChange:F=>{f(F.target.value),j(!1)},placeholder:b?'{ "type": "service_account", ... } (bereits hinterlegt)':'{ "type": "service_account", ... }',className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 font-mono text-xs dark:border-neutral-700 dark:bg-neutral-900"})]})]}),p&&a.jsx("p",{className:"mt-2 text-sm text-red-600",children:p}),k&&a.jsx("p",{className:"mt-2 text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"button",onClick:Ne,disabled:w,className:"mt-3 rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:w?"Speichere…":"Dashboard-Anbindung speichern"})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google-Rezensionen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Zeigt die echte Google-Bewertung und die aktuellsten Rezensionen auf der Startseite an, statt der fest eingetragenen Beispiel-Texte. Wird einmal täglich automatisch aktualisiert (nie bei einem Seitenbesuch selbst) – die Seite zeigt also immer den letzten erfolgreich abgerufenen Stand."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Place-ID"}),a.jsx("input",{value:C,onChange:F=>{S(F.target.value),D(!1)},placeholder:"z. B. ChIJN1t_tDeuEmsRUsoyG83frY4",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("p",{className:"mt-1 text-xs text-neutral-400",children:["Eindeutige Google-Kennung eures Eintrags – zu finden über den"," ",a.jsx("a",{href:"https://developers.google.com/maps/documentation/places/web-service/place-id#find-id",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-600",children:"Google Place ID Finder"}),"."]})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Places-API-Key ",N?"(leer lassen = unverändert)":""]}),a.jsx("input",{value:P,onChange:F=>{M(F.target.value),D(!1)},placeholder:N?"••••••••••••••••••••• (bereits hinterlegt)":"AIzaSy…",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 font-mono text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Aus der Google-Cloud-Console, mit aktivierter „Places API (New)“."})]})]}),R&&a.jsx("p",{className:"mt-3 text-sm text-red-600",children:R}),_&&a.jsx("p",{className:"mt-3 text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[a.jsx("button",{type:"button",onClick:X,disabled:$,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:$?"Speichere…":"Google-Rezensionen-Einstellungen speichern"}),a.jsx("button",{type:"button",onClick:ee,disabled:z||!C||!N,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:z?"Aktualisiere…":"Jetzt aktualisieren"})]}),B&&a.jsxs("div",{className:"mt-4 rounded-md bg-neutral-50 p-3 text-sm dark:bg-neutral-800/50",children:[B.rating!=null?a.jsxs("p",{className:"text-neutral-700 dark:text-neutral-300",children:["Aktuell hinterlegt: ",a.jsxs("strong",{children:[B.rating," ★"]})," (",B.rating_count," Bewertungen)",B.updated_at&&a.jsxs(a.Fragment,{children:[" – zuletzt aktualisiert am ",new Date(B.updated_at.replace(" ","T")).toLocaleString("de-DE")]})]}):a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:"Noch keine erfolgreiche Aktualisierung – die Startseite zeigt bis dahin weiter die Beispiel-Rezensionen."}),B.error&&a.jsxs("p",{className:"mt-1 text-red-600",children:["Letzter Fehler: ",B.error]})]})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),l&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:s,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:s?"Speichere…":"Speichern"})]})}const O4={mail_host:"",mail_port:587,mail_username:"",mail_password:"",mail_encryption:"tls",mail_from_email:"",mail_from_name:"",mail_notify_email:"",mail_customer_subject:"",mail_customer_body:"",mail_owner_subject:"",mail_owner_body:""},U4=[["{{name}}","Name des Kunden"],["{{email}}","E-Mail des Kunden"],["{{phone}}","Telefonnummer"],["{{vin}}","Fahrgestellnummer (FIN)"],["{{message}}","Nachricht des Kunden"],["{{brand}}","Marke"],["{{model}}","Modell"],["{{package}}","Paket"],["{{product}}","Produkt"],["{{upgrades}}","Gewählte Upgrades"]];function qf(){return a.jsx("div",{className:"mt-3 flex flex-wrap gap-1.5",children:U4.map(([e,t])=>a.jsx("span",{title:t,className:"rounded-md bg-neutral-100 px-2 py-1 font-mono text-xs text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:e},e))})}function W4(){const[e,t]=g.useState(O4),[n,r]=g.useState(!1),[s,i]=g.useState(!0),[l,o]=g.useState(!1),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(!1),[w,x]=g.useState(""),[p,v]=g.useState(""),[k,j]=g.useState(""),[C,S]=g.useState(null);g.useEffect(()=>{A.get("/settings/mail").then(E=>{t({...E,mail_password:""}),r(E.has_password)}).finally(()=>i(!1))},[]);const P=(E,B)=>{t(O=>({...O,[E]:B})),f(!1)},M=async E=>{E.preventDefault(),c(!0),h(""),f(!1);try{const B=await A.post("/settings/mail",e);t({...B,mail_password:""}),r(B.has_password),f(!0)}catch(B){h(B.message)}finally{c(!1)}},N=async()=>{y(!0),x(""),v(""),j(""),S(null);try{const E=await A.post("/settings/mail/test",e);v(`Testmail gesendet an ${E.sent_to}. Der Server hat die Mail angenommen - prüfe auch den Spam-Ordner, das ist noch keine Garantie für die Zustellung.`),j(E.warning||""),S(E.smtp_log||null)}catch(E){x(E.message)}finally{y(!1)}};return s?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:M,className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"SMTP-Server"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Zugangsdaten deines Mail-Postfachs oder Transactional-Mail-Anbieters. Solange kein Server eingetragen ist, werden keine E-Mails verschickt (Kontaktanfragen werden trotzdem in der Datenbank gespeichert)."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-[1fr_120px]",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Server (Host)"}),a.jsx("input",{value:e.mail_host,onChange:E=>P("mail_host",E.target.value),placeholder:"smtp.beispiel.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Port"}),a.jsx("input",{type:"number",value:e.mail_port,onChange:E=>P("mail_port",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Verschlüsselung"}),a.jsxs("select",{value:e.mail_encryption,onChange:E=>P("mail_encryption",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"tls",children:"STARTTLS"}),a.jsx("option",{value:"ssl",children:"SSL"}),a.jsx("option",{value:"none",children:"Keine"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername"}),a.jsx("input",{value:e.mail_username,onChange:E=>P("mail_username",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",n?"(leer lassen = unverändert)":""]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("input",{type:l?"text":"password",value:e.mail_password,onChange:E=>P("mail_password",E.target.value),placeholder:n?"••••••••":"",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{type:"button",onClick:()=>o(E=>!E),className:"shrink-0 rounded-md border border-neutral-300 px-3 text-sm dark:border-neutral-700",children:l?"Verbergen":"Anzeigen"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Absender-E-Mail"}),a.jsx("input",{type:"email",value:e.mail_from_email,onChange:E=>P("mail_from_email",E.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Absender-Name"}),a.jsx("input",{value:e.mail_from_name,onChange:E=>P("mail_from_name",E.target.value),placeholder:"HifiPlanet",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsxs("div",{className:"mt-4 border-t border-neutral-200 pt-4 dark:border-neutral-800",children:[w&&a.jsx("p",{className:"mb-2 whitespace-pre-wrap text-sm text-red-600",children:w}),p&&a.jsx("p",{className:"mb-2 text-sm text-green-600 dark:text-green-400",children:p}),k&&a.jsx("p",{className:"mb-2 rounded-md bg-amber-50 p-2 text-sm text-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:k}),a.jsx("button",{type:"button",onClick:N,disabled:b,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:b?"Sende Testmail…":"Verbindung testen"}),C&&C.length>0&&a.jsxs("details",{className:"mt-3",children:[a.jsx("summary",{className:"cursor-pointer text-xs text-neutral-500 dark:text-neutral-400",children:"SMTP-Protokoll anzeigen"}),a.jsx("pre",{className:"mt-2 max-h-64 overflow-auto rounded-md bg-neutral-900 p-3 text-xs text-neutral-200",children:C.join(` -`)})]})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Empfänger"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"An diese Adresse geht die Benachrichtigung bei jeder neuen Kontaktanfrage."}),a.jsx("input",{type:"email",value:e.mail_notify_email,onChange:E=>P("mail_notify_email",E.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"E-Mail an den Kunden (Bestätigung)"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Geht automatisch an den Kunden, sobald er eine Kontaktanfrage abschickt."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Betreff"}),a.jsx("input",{value:e.mail_customer_subject,onChange:E=>P("mail_customer_subject",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Text"}),a.jsx("textarea",{rows:8,value:e.mail_customer_body,onChange:E=>P("mail_customer_body",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsx(qf,{})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"E-Mail an den Shop (Benachrichtigung)"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Geht an die oben eingestellte Empfänger-Adresse, sobald eine neue Kontaktanfrage eingeht."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Betreff"}),a.jsx("input",{value:e.mail_owner_subject,onChange:E=>P("mail_owner_subject",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Text"}),a.jsx("textarea",{rows:8,value:e.mail_owner_body,onChange:E=>P("mail_owner_body",E.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsx(qf,{})]}),d&&a.jsx("p",{className:"text-sm text-red-600",children:d}),m&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:u,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:u?"Speichere…":"Speichern"})]})}function H4(){const[e,t]=g.useState({host:"",name:"",user:"",password:"",charset:"utf8mb4"}),[n,r]=g.useState(!1),[s,i]=g.useState(!0),[l,o]=g.useState(!1),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(null),[w,x]=g.useState(!0),[p,v]=g.useState(!1),[k,j]=g.useState(null),C=()=>{i(!0),A.get("/settings/database").then(N=>{t({...N.config,password:""}),r(N.has_password)}).finally(()=>i(!1))},S=()=>{x(!0),A.get("/settings/schema-check").then(y).catch(N=>y({ok:!1,error:N.message,tables:[]})).finally(()=>x(!1))};g.useEffect(()=>{C(),S()},[]);const P=async()=>{v(!0),j(null);try{const N=await A.post("/settings/schema-migrate",{});j(N.actions),y(N.report)}catch(N){j(["Fehler: "+N.message])}finally{v(!1)}},M=async N=>{N.preventDefault(),c(!0),h(""),f(!1);try{await A.post("/settings/database",e),f(!0),t(E=>({...E,password:""})),r(!0),S()}catch(E){h(E.message)}finally{c(!1)}};return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Datenbank-Zugangsdaten"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wichtig für einen Umzug auf einen anderen Server/Webspace: Trage hier die Zugangsdaten der dortigen Datenbank ein. Die Verbindung wird vor dem Speichern getestet, damit du dich nicht aussperrst."}),s?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:M,className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Host *"}),a.jsx("input",{required:!0,value:e.host,onChange:N=>t({...e,host:N.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Datenbankname *"}),a.jsx("input",{required:!0,value:e.name,onChange:N=>t({...e,name:N.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzer *"}),a.jsx("input",{required:!0,value:e.user,onChange:N=>t({...e,user:N.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",n?"(leer lassen = unverändert)":""]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("input",{type:l?"text":"password",value:e.password,onChange:N=>t({...e,password:N.target.value}),placeholder:n?"••••••••":"",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{type:"button",onClick:()=>o(N=>!N),className:"shrink-0 rounded-md border border-neutral-300 px-3 text-sm dark:border-neutral-700",children:l?"Verbergen":"Anzeigen"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Zeichensatz"}),a.jsx("input",{value:e.charset,onChange:N=>t({...e,charset:N.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),d&&a.jsx("p",{className:"text-sm text-red-600",children:d}),m&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Verbindung erfolgreich getestet und gespeichert."}),a.jsx("button",{type:"submit",disabled:u,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:u?"Teste & speichere…":"Verbindung testen & speichern"})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[a.jsx("h2",{className:"font-semibold text-neutral-900 dark:text-white",children:"Datenbankstruktur"}),!w&&b&&a.jsx("span",{className:`rounded-full px-3 py-1 text-xs font-semibold ${b.ok?"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300":"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300"}`,children:b.ok?"Datenbank OK":"Datenbank nicht OK"})]}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Prüft, ob diese Datenbank alle Tabellen und Spalten hat, die der aktuelle Code-Stand braucht – wichtig, wenn deine Live-Version auf einem anderen Server einen älteren Stand hat."}),w&&a.jsx("p",{className:"text-sm text-neutral-400",children:"Prüfe…"}),!w&&b&&!b.ok&&a.jsx("ul",{className:"mb-4 space-y-1 rounded-md bg-red-50 p-3 text-sm text-red-800 dark:bg-red-900/20 dark:text-red-300",children:b.tables.filter(N=>!N.ok).map(N=>a.jsx("li",{children:N.exists?a.jsxs(a.Fragment,{children:["Tabelle ",a.jsx("code",{className:"font-mono",children:N.table}),": Spalte(n) fehlen – ",N.missing_columns.join(", ")]}):a.jsxs(a.Fragment,{children:["Tabelle ",a.jsx("code",{className:"font-mono",children:N.table})," fehlt komplett"]})},N.table))}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx("button",{onClick:S,disabled:w,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:"Erneut prüfen"}),b&&!b.ok&&a.jsx("button",{onClick:P,disabled:p,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:p?"Aktualisiere…":"Datenbankstruktur aktualisieren"})]}),k&&a.jsx("ul",{className:"mt-3 space-y-1 rounded-md bg-neutral-50 p-3 text-sm text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300",children:k.map((N,E)=>a.jsx("li",{children:N},E))})]})]})}const Ua=[{key:"catalog",label:"Fahrzeug-Katalog",hint:"Marken, Modelle, Pakete, Produkte, Upgrades",tables:["brands","car_models","packages","package_products","package_upgrades"]},{key:"services",label:"Leistungen",hint:"Die Leistungen-Übersicht",tables:["services"]},{key:"faqs",label:"FAQs",hint:"Häufig gestellte Fragen",tables:["faqs"]},{key:"gallery",label:"Bildergalerie",hint:"Galerie-Marken, Projekte und Fotos (inkl. Bilder)",tables:["gallery_brands","gallery_projects","gallery_photos"]}],_b={brands:"Marken",car_models:"Modelle",packages:"Pakete",package_products:"Produkte",package_upgrades:"Upgrades",services:"Leistungen",faqs:"FAQs",gallery_brands:"Galerie-Marken",gallery_projects:"Galerie-Projekte",gallery_photos:"Galerie-Fotos"},$4=(e,t)=>{if(!e)return null;const n=t.map(r=>[r,Array.isArray(e[r])?e[r].length:0]).filter(([,r])=>r>0).map(([r,s])=>`${s} ${_b[r]||r}`);return n.length?n.join(", "):"leer in dieser Datei"};function G4(){const[e,t]=g.useState(null),[n,r]=g.useState(null),[s,i]=g.useState(""),[l,o]=g.useState(()=>new Set(Ua.map(k=>k.key))),[u,c]=g.useState(!1),[d,h]=g.useState(!1),[m,f]=g.useState(null),[b,y]=g.useState(""),w=async k=>{var C;const j=((C=k.target.files)==null?void 0:C[0])||null;if(t(j),f(null),y(""),r(null),i(""),o(new Set(Ua.map(S=>S.key))),!!j)try{const S=await j.text(),P=JSON.parse(S);if(!P||typeof P.data!="object")throw new Error("kein gültiges Export-Format");r(P.data)}catch{i("Datei konnte nicht gelesen werden – Vorschau der Inhalte nicht möglich. Import würde trotzdem versucht (alle Bereiche).")}},x=k=>{o(j=>{const C=new Set(j);return C.has(k)?C.delete(k):C.add(k),C})},p=async k=>{if(k.preventDefault(),!(!e||!u||l.size===0)){h(!0),y(""),f(null);try{const j=new FormData;j.append("file",e),j.append("sections",JSON.stringify([...l]));const C=await A.post("/settings/import",j);f(C),t(null),r(null),c(!1),k.target.reset()}catch(j){y(j.message)}finally{h(!1)}}},v=Ua.filter(k=>l.has(k.key)).map(k=>k.label);return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Daten exportieren"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:["Lädt eine Datei mit allen Marken, Modellen, Paketen, Produkten, Upgrades, Leistungen, FAQs und der kompletten Bildergalerie (inkl. Bilder) herunter. Benutzerkonten und Kontaktanfragen sind bewusst",a.jsx("strong",{children:" nicht"})," enthalten."]}),a.jsx("a",{href:`${cg}/settings/export`,className:"inline-block rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Jetzt exportieren"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Daten importieren"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Lädt eine zuvor exportierte Datei auf diesen Server. Ersetzt dabei die ausgewählten Bereiche komplett durch den Inhalt der Datei – das kann nicht rückgängig gemacht werden. Kontaktanfragen und Benutzerkonten bleiben immer unangetastet."}),a.jsxs("form",{onSubmit:p,className:"space-y-4",children:[a.jsx("input",{type:"file",accept:"application/json,.json",onChange:w,className:"text-sm"}),e&&a.jsxs("div",{className:"rounded-lg border border-neutral-200 dark:border-neutral-700",children:[a.jsx("div",{className:"border-b border-neutral-200 px-4 py-2 text-xs font-semibold uppercase tracking-wide text-neutral-500 dark:border-neutral-700 dark:text-neutral-400",children:"Was soll importiert werden?"}),s&&a.jsx("p",{className:"px-4 pt-3 text-sm text-amber-600 dark:text-amber-400",children:s}),a.jsx("div",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:Ua.map(k=>a.jsxs("label",{className:"flex cursor-pointer items-start gap-3 px-4 py-3 hover:bg-neutral-50 dark:hover:bg-neutral-800/50",children:[a.jsx("input",{type:"checkbox",checked:l.has(k.key),onChange:()=>x(k.key),className:"mt-0.5 h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),a.jsxs("span",{className:"flex-1",children:[a.jsx("span",{className:"block text-sm font-medium text-neutral-800 dark:text-neutral-100",children:k.label}),a.jsx("span",{className:"block text-xs text-neutral-500 dark:text-neutral-400",children:n?$4(n,k.tables):k.hint})]})]},k.key))})]}),a.jsxs("label",{className:"flex items-start gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u,onChange:k=>c(k.target.checked),className:"mt-0.5 h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Mir ist bewusst, dass dies"," ",v.length?a.jsx("strong",{children:v.join(", ")}):"die ausgewählten Bereiche"," auf diesem Server unwiderruflich ersetzt."]}),a.jsx("button",{type:"submit",disabled:!e||!u||d||l.size===0,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-50",children:d?"Importiere…":"Importieren"})]}),b&&a.jsx("p",{className:"mt-3 text-sm text-red-600",children:b}),m&&a.jsxs("div",{className:"mt-3 rounded-md bg-green-50 p-3 text-sm text-green-800 dark:bg-green-900/20 dark:text-green-300",children:[a.jsx("p",{className:"mb-1 font-semibold",children:"Import erfolgreich:"}),a.jsxs("ul",{className:"list-disc pl-5",children:[Object.entries(m.counts).map(([k,j])=>a.jsxs("li",{children:[j," ",_b[k]||k]},k)),m.images_restored>0&&a.jsxs("li",{children:[m.images_restored," Bilder wiederhergestellt"]})]})]})]})]})}const K4={global:{enabled:!1,message:""},services:{enabled:!1,message:""},vehicles:{enabled:!1,message:""}};function q4(){const[e,t]=g.useState(K4),[n,r]=g.useState(!0),[s,i]=g.useState(!1),[l,o]=g.useState(!1),[u,c]=g.useState("");g.useEffect(()=>{A.get("/maintenance").then(f=>{t({global:{enabled:f.global.enabled,message:f.global.message||""},services:{enabled:f.services.enabled,message:f.services.message||""},vehicles:{enabled:f.vehicles.enabled,message:f.vehicles.message||""}})}).finally(()=>r(!1))},[]);const d=(f,b,y)=>{t(w=>({...w,[f]:{...w[f],[b]:y}})),o(!1)},h=async f=>{f.preventDefault(),i(!0),c(""),o(!1);try{const b=await A.post("/maintenance",e);t({global:{enabled:b.global.enabled,message:b.global.message||""},services:{enabled:b.services.enabled,message:b.services.message||""},vehicles:{enabled:b.vehicles.enabled,message:b.vehicles.message||""}}),o(!0)}catch(b){c(b.message)}finally{i(!1)}},m=[{key:"global",title:"Gesamte Seite",hint:"Besucher sehen nur noch eine Wartungsmeldung – egal welche Seite sie aufrufen. Das Admin-Panel bleibt für dich erreichbar."},{key:"services",title:"Nur Leistungen",hint:"Nur die Leistungen-Seite zeigt eine Wartungsmeldung, der Rest der Website funktioniert normal."},{key:"vehicles",title:"Nur Fahrzeugkatalog",hint:"Nur die Fahrzeugauswahl (Marke → Modell → Pakete) zeigt eine Wartungsmeldung, der Rest der Website funktioniert normal."}];return n?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:h,className:"max-w-2xl space-y-6",children:[a.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:'Ist "Gesamte Seite" aktiv, gewinnt das immer – die beiden anderen Schalter spielen dann keine Rolle mehr.'}),m.map(f=>a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[a.jsx("h2",{className:"font-semibold text-neutral-900 dark:text-white",children:f.title}),a.jsxs("label",{className:"relative inline-flex cursor-pointer items-center",children:[a.jsx("input",{type:"checkbox",checked:e[f.key].enabled,onChange:b=>d(f.key,"enabled",b.target.checked),className:"peer sr-only"}),a.jsx("div",{className:"h-6 w-11 rounded-full bg-neutral-200 transition peer-checked:bg-brand-500 dark:bg-neutral-700"}),a.jsx("div",{className:"absolute left-1 top-1 h-4 w-4 rounded-full bg-white transition peer-checked:translate-x-5"})]})]}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:f.hint}),a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Eigene Nachricht (optional)"}),a.jsx("textarea",{rows:2,value:e[f.key].message,onChange:b=>d(f.key,"message",b.target.value),placeholder:"z. B. Wir aktualisieren gerade unser Angebot. Schau bald wieder vorbei!",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]},f.key)),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),l&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:s,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:s?"Speichere…":"Speichern"})]})}function Y4(){const[e,t]=g.useState(!1),[n,r]=g.useState(""),[s,i]=g.useState(!1),[l,o]=g.useState(""),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(""),[w,x]=g.useState(!1),[p,v]=g.useState(""),k=async()=>{if(confirm("Alle aktuellen Leistungen werden gelöscht und durch die 8 Standard-Leistungen ersetzt. Fortfahren?")){t(!0),r("");try{const M=await A.post("/settings/reset-services",{});r(`${M.count} Standard-Leistungen wiederhergestellt.`)}catch(M){r("Fehler: "+M.message)}finally{t(!1)}}},j=async()=>{if(confirm("Alle aktuellen FAQ-Einträge werden gelöscht und durch die 6 Standard-Fragen ersetzt. Fortfahren?")){i(!0),o("");try{const M=await A.post("/settings/reset-faqs",{});o(`${M.count} Standard-Fragen wiederhergestellt.`)}catch(M){o("Fehler: "+M.message)}finally{i(!1)}}},C=async()=>{if(confirm("Die komplette Bildergalerie wird gelöscht und durch die 13 Marken/29 Projekte/207 Fotos der alten hifi-planet.de-Seite ersetzt. Fortfahren?")){c(!0),h("");try{const M=await A.post("/settings/reset-gallery",{});h(`${M.photos} Fotos wiederhergestellt.`)}catch(M){h("Fehler: "+M.message)}finally{c(!1)}}},S=async()=>{if(confirm("Alle Marken, Modelle, Pakete, Produkte und Upgrades werden unwiderruflich gelöscht. Leistungen und Kontaktanfragen bleiben erhalten. Fortfahren?")){f(!0),y("");try{const M=await A.post("/settings/reset-catalog",{});y(`Fahrzeugkatalog geleert (${M.brands_removed} Marken entfernt).`)}catch(M){y("Fehler: "+M.message)}finally{f(!1)}}},P=async()=>{if(confirm("WIRKLICH ALLES zurücksetzen? Marken, Modelle, Pakete, Produkte und Upgrades werden gelöscht, Leistungen, FAQs und die Bildergalerie auf Standard zurückgesetzt. Kontaktanfragen und Benutzerkonten bleiben erhalten. Das kann nicht rückgängig gemacht werden!")){x(!0),v("");try{const M=await A.post("/settings/reset-all",{});v(`Erledigt: ${M.brands_removed} Marken entfernt, ${M.services_reset} Standard-Leistungen, ${M.faqs_reset} Standard-Fragen und ${M.gallery_photos_reset} Galerie-Fotos wiederhergestellt.`)}catch(M){v("Fehler: "+M.message)}finally{x(!1)}}};return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Leistungen zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Leistungen-Karten und stellt die 8 mitgelieferten Standard-Leistungen wieder her. Marken, Modelle und Pakete bleiben unangetastet."}),a.jsx("button",{onClick:k,disabled:e,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:e?"Setze zurück…":"Leistungen auf Standard zurücksetzen"}),n&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:n})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur FAQs zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Fragen und stellt die 6 mitgelieferten Standard-Fragen (Deutsch & Englisch) wieder her. Leistungen, Marken, Modelle und Pakete bleiben unangetastet."}),a.jsx("button",{onClick:j,disabled:s,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:s?"Setze zurück…":"FAQs auf Standard zurücksetzen"}),l&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:l})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Bildergalerie zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Galerie-Marken, -Projekte und -Fotos und stellt die komplette Galerie der alten hifi-planet.de-Seite wieder her (13 Marken, 29 Projekte, 207 Fotos). Fahrzeugkatalog, Leistungen und FAQs bleiben unangetastet."}),a.jsx("button",{onClick:C,disabled:u,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:u?"Setze zurück…":"Galerie auf Standard zurücksetzen"}),d&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:d})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Fahrzeugkatalog leeren"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle Marken, Modelle, Pakete, Produkte und Upgrades unwiderruflich. Leistungen, Kontaktanfragen und Benutzerkonten bleiben erhalten."}),a.jsx("button",{onClick:S,disabled:m,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:m?"Leere…":"Fahrzeugkatalog leeren"}),b&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:b})]}),a.jsxs("section",{className:"rounded-xl border border-red-300 bg-red-50/40 p-6 dark:border-red-900 dark:bg-red-900/10",children:[a.jsx("h2",{className:"mb-1 font-semibold text-red-700 dark:text-red-300",children:"Alles zurücksetzen"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-600 dark:text-neutral-300",children:["Kombiniert alles: Fahrzeugkatalog wird komplett geleert ",a.jsx("strong",{children:"und"})," Leistungen, FAQs sowie die Bildergalerie werden auf Standard zurückgesetzt. Kontaktanfragen und Benutzerkonten bleiben erhalten. Nicht rückgängig zu machen."]}),a.jsx("button",{onClick:P,disabled:w,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-50",children:w?"Setze zurück…":"Wirklich alles zurücksetzen"}),p&&a.jsx("p",{className:"mt-3 text-sm text-neutral-700 dark:text-neutral-300",children:p})]})]})}function X4(){return a.jsxs(a.Fragment,{children:[a.jsx(cw,{}),a.jsx(mw,{}),a.jsx(fw,{children:a.jsxs(qk,{children:[a.jsx(G,{path:"/setup",element:a.jsx(mP,{})}),a.jsxs(G,{element:a.jsx(mC,{}),children:[a.jsx(G,{path:"/",element:a.jsx(DC,{})}),a.jsx(G,{path:"/fahrzeuge",element:a.jsx(BC,{})}),a.jsx(G,{path:"/fahrzeuge/:brandSlug",element:a.jsx(zC,{})}),a.jsx(G,{path:"/fahrzeuge/:brandSlug/:modelSlug",element:a.jsx(XC,{})}),a.jsx(G,{path:"/galerie",element:a.jsx(ZC,{})}),a.jsx(G,{path:"/galerie/:brandSlug",element:a.jsx(QC,{})}),a.jsx(G,{path:"/galerie/:brandSlug/:projectSlug",element:a.jsx(eP,{})}),a.jsx(G,{path:"/leistungen",element:a.jsx(tP,{})}),a.jsx(G,{path:"/kontakt",element:a.jsx(lP,{})}),a.jsx(G,{path:"/impressum",element:a.jsx(oP,{})}),a.jsx(G,{path:"/datenschutz",element:a.jsx(uP,{})}),a.jsx(G,{path:"/agb",element:a.jsx(cP,{})})]}),a.jsx(G,{path:"/admin/login",element:a.jsx(fP,{})}),a.jsx(G,{path:"/admin",element:a.jsx(xC,{}),children:a.jsxs(G,{element:a.jsx(gC,{}),children:[a.jsx(G,{index:!0,element:a.jsx(bP,{})}),a.jsx(G,{path:"account",element:a.jsx(_4,{})}),a.jsx(G,{path:"brands",element:a.jsx(Ve,{permission:"brands.manage",children:a.jsx(vP,{})})}),a.jsx(G,{path:"models",element:a.jsx(Ve,{permission:"models.manage",children:a.jsx(yP,{})})}),a.jsx(G,{path:"gallery-brands",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(kP,{})})}),a.jsx(G,{path:"gallery-projects",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(wP,{})})}),a.jsx(G,{path:"gallery-projects/:projectId/photos",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(jP,{})})}),a.jsx(G,{path:"packages",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(TP,{})})}),a.jsx(G,{path:"packages/:packageId/products",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(RP,{})})}),a.jsx(G,{path:"packages/:packageId/upgrades",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(FP,{})})}),a.jsx(G,{path:"services",element:a.jsx(Ve,{permission:"services.manage",children:a.jsx(LP,{})})}),a.jsx(G,{path:"faqs",element:a.jsx(Ve,{permission:"content.manage",children:a.jsx(DP,{})})}),a.jsx(G,{path:"contact-requests",element:a.jsx(Ve,{permission:"contact.manage",children:a.jsx(HP,{})})}),a.jsx(G,{path:"users",element:a.jsx(Ve,{permission:"users.manage",children:a.jsx(L4,{})})}),a.jsx(G,{path:"permission-groups",element:a.jsx(Ve,{permission:"permission_groups.manage",children:a.jsx(D4,{})})}),a.jsxs(G,{path:"settings",element:a.jsx(Ve,{permission:"settings.manage",children:a.jsx(z4,{})}),children:[a.jsx(G,{index:!0,element:a.jsx(Gs,{to:"website",replace:!0})}),a.jsx(G,{path:"website",element:a.jsx(V4,{})}),a.jsx(G,{path:"email",element:a.jsx(W4,{})}),a.jsx(G,{path:"database",element:a.jsx(H4,{})}),a.jsx(G,{path:"export-import",element:a.jsx(G4,{})}),a.jsx(G,{path:"maintenance",element:a.jsx(q4,{})}),a.jsx(G,{path:"reset",element:a.jsx(Y4,{})})]})]})})]})})]})}So.createRoot(document.getElementById("root")).render(a.jsx(Gb.StrictMode,{children:a.jsx(rw,{basename:"/".replace(/\/$/,"")||"/",children:a.jsx(gw,{children:a.jsx(kw,{children:a.jsx(Tw,{children:a.jsx(X4,{})})})})})})); +`;return typeof r=="function"&&r(null,m),m};const A4=$P,tc=gb,Mb=Tb,M4=Ab;function Md(e,t,n,r,s){const i=[].slice.call(arguments,1),l=i.length,o=typeof i[l-1]=="function";if(!o&&!A4())throw new Error("Callback required as last argument");if(o){if(l<2)throw new Error("Too few arguments provided");l===2?(s=n,n=t,t=r=void 0):l===3&&(t.getContext&&typeof s>"u"?(s=r,r=void 0):(s=r,r=n,n=t,t=void 0))}else{if(l<1)throw new Error("Too few arguments provided");return l===1?(n=t,t=r=void 0):l===2&&!t.getContext&&(r=n,n=t,t=void 0),new Promise(function(u,c){try{const d=tc.create(n,r);u(e(d,t,r))}catch(d){c(d)}})}try{const u=tc.create(n,r);s(null,e(u,t,r))}catch(u){s(u)}}ha.create=tc.create;ha.toCanvas=Md.bind(null,Mb.render);ha.toDataURL=Md.bind(null,Mb.renderToDataURL);ha.toString=Md.bind(null,function(e,t,n){return M4.render(e,n)});const $f={current_password:"",new_password:"",new_password_confirmation:"",two_factor_code:""};function _4(){const{user:e,refreshUser:t}=Bt(),[n,r]=g.useState("idle"),[s,i]=g.useState(""),[l,o]=g.useState(""),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState([]),[b,y]=g.useState(""),[w,x]=g.useState(!1),[p,v]=g.useState($f),[k,j]=g.useState(""),[C,S]=g.useState(""),[P,M]=g.useState(!1),E=async z=>{if(z.preventDefault(),j(""),S(""),p.new_password!==p.new_password_confirmation){j("Die neuen Passwörter stimmen nicht überein");return}M(!0);try{await A.post("/auth/change-password",p),v($f),S("Passwort erfolgreich geändert.")}catch($){j($.message)}finally{M(!1)}},N=async()=>{y(""),x(!0);try{const z=await A.get("/auth/2fa/setup");o(z.secret),i(await ha.toDataURL(z.otpauth_url)),c(""),r("setup")}catch(z){y(z.message)}finally{x(!1)}},L=async z=>{z.preventDefault(),y(""),x(!0);try{const $=await A.post("/auth/2fa/enable",{code:u});f($.recovery_codes),r("recovery-codes"),await t()}catch($){y($.message)}finally{x(!1)}},U=()=>{r("idle"),f([]),h("")},W=async z=>{z.preventDefault(),y(""),x(!0);try{await A.post("/auth/2fa/disable",{password:d}),h(""),r("idle"),await t()}catch($){y($.message)}finally{x(!1)}},q=async z=>{z.preventDefault(),y(""),x(!0);try{const $=await A.post("/auth/2fa/recovery-codes",{password:d});f($.recovery_codes),r("recovery-codes")}catch($){y($.message)}finally{x(!1)}};return a.jsxs("div",{className:"max-w-xl",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Mein Konto"}),a.jsxs("p",{className:"mb-6 text-sm text-neutral-500 dark:text-neutral-400",children:["Angemeldet als ",a.jsx("strong",{children:e==null?void 0:e.username}),e!=null&&e.is_super_admin?" (Super-Admin)":"","."]}),a.jsxs("div",{className:"mb-6 rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Passwort ändern"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:["Vergib ein neues Passwort für dein Konto.",(e==null?void 0:e.two_factor_enabled)&&" Da 2FA aktiv ist, musst du die Änderung zusätzlich mit deinem Code bestätigen."]}),a.jsxs("form",{onSubmit:E,children:[a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Aktuelles Passwort"}),a.jsx("input",{type:"password",value:p.current_password,onChange:z=>v({...p,current_password:z.target.value}),required:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Neues Passwort"}),a.jsx("input",{type:"password",value:p.new_password,onChange:z=>v({...p,new_password:z.target.value}),required:!0,minLength:8,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Neues Passwort wiederholen"}),a.jsx("input",{type:"password",value:p.new_password_confirmation,onChange:z=>v({...p,new_password_confirmation:z.target.value}),required:!0,minLength:8,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),(e==null?void 0:e.two_factor_enabled)&&a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"2FA-Code zur Bestätigung"}),a.jsx("input",{value:p.two_factor_code,onChange:z=>v({...p,two_factor_code:z.target.value}),required:!0,inputMode:"numeric",placeholder:"123456 oder Wiederherstellungscode",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),k&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:k}),C&&a.jsx("p",{className:"mb-4 text-sm text-green-600 dark:text-green-400",children:C}),a.jsx("button",{type:"submit",disabled:P,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:P?"Wird geändert…":"Passwort ändern"})]})]}),a.jsxs("div",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Zwei-Faktor-Authentifizierung"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Schützt dein Konto zusätzlich mit einem Code aus der Google Authenticator App."}),n==="idle"&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:"mb-4 text-sm",children:["Status:"," ",e!=null&&e.two_factor_enabled?a.jsx("span",{className:"font-semibold text-green-600 dark:text-green-400",children:"Aktiv"}):a.jsx("span",{className:"font-semibold text-neutral-500 dark:text-neutral-400",children:"Nicht aktiv"})]}),e!=null&&e.two_factor_enabled?a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx("button",{onClick:()=>{r("regenerate"),y("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:"Neue Wiederherstellungscodes erzeugen"}),a.jsx("button",{onClick:()=>{r("disable"),y("")},className:"rounded-md border border-red-300 px-4 py-2 text-sm font-medium text-red-600 hover:bg-red-50 dark:border-red-900 dark:hover:bg-red-900/20",children:"2FA deaktivieren"})]}):a.jsx("button",{onClick:N,disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"2FA aktivieren"})]}),n==="setup"&&a.jsxs("form",{onSubmit:L,children:[a.jsxs("ol",{className:"mb-4 list-decimal space-y-2 pl-5 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("li",{children:"Öffne die Google Authenticator App (oder eine kompatible App)."}),a.jsx("li",{children:"Scanne den folgenden QR-Code:"})]}),a.jsx("div",{className:"mb-4 flex justify-center",children:s&&a.jsx("img",{src:s,alt:"QR-Code für Zwei-Faktor-Authentifizierung",className:"h-48 w-48 rounded-lg border border-neutral-200 dark:border-neutral-700"})}),a.jsxs("p",{className:"mb-4 text-center text-xs text-neutral-500 dark:text-neutral-400",children:["Geht das Scannen nicht? Gib diesen Code manuell ein: ",a.jsx("br",{}),a.jsx("code",{className:"mt-1 inline-block rounded bg-neutral-100 px-2 py-1 font-mono tracking-wider dark:bg-neutral-800",children:l})]}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Bestätigungscode aus der App"}),a.jsx("input",{value:u,onChange:z=>c(z.target.value),required:!0,autoFocus:!0,inputMode:"numeric",placeholder:"123456",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-center text-lg tracking-widest dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Bestätigen & aktivieren"}),a.jsx("button",{type:"button",onClick:()=>r("idle"),className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]}),n==="recovery-codes"&&a.jsxs("div",{children:[a.jsx("p",{className:"mb-3 text-sm font-semibold text-neutral-900 dark:text-white",children:"Wiederherstellungscodes – jetzt sicher speichern!"}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Jeder Code funktioniert einmalig, falls du keinen Zugriff mehr auf die Authenticator-App hast. Diese Codes werden nur jetzt angezeigt."}),a.jsx("div",{className:"mb-4 grid grid-cols-2 gap-2 rounded-md bg-neutral-100 p-4 font-mono text-sm dark:bg-neutral-800",children:m.map(z=>a.jsx("span",{children:z},z))}),a.jsx("button",{onClick:U,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Ich habe die Codes gespeichert"})]}),n==="disable"&&a.jsxs("form",{onSubmit:W,children:[a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort zur Bestätigung"}),a.jsx("input",{type:"password",value:d,onChange:z=>h(z.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-60",children:"2FA jetzt deaktivieren"}),a.jsx("button",{type:"button",onClick:()=>{r("idle"),h("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]}),n==="regenerate"&&a.jsxs("form",{onSubmit:q,children:[a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Die bisherigen Wiederherstellungscodes werden ungültig."}),a.jsxs("div",{className:"mb-4",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Passwort zur Bestätigung"}),a.jsx("input",{type:"password",value:d,onChange:z=>h(z.target.value),required:!0,autoFocus:!0,className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),b&&a.jsx("p",{className:"mb-4 text-sm text-red-600",children:b}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",disabled:w,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-60",children:"Neue Codes erzeugen"}),a.jsx("button",{type:"button",onClick:()=>{r("idle"),h("")},className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})]})}const Gf={username:"",password:"",is_super_admin:!1,permissions:[],group_ids:[]};function L4(){const{user:e,hasPermission:t}=Bt(),[n,r]=g.useState([]),[s,i]=g.useState([]),[l,o]=g.useState([]),[u,c]=g.useState(Gf),[d,h]=g.useState(null),[m,f]=g.useState(""),b=()=>{A.get("/admin-users").then(r),A.get("/permissions/catalog").then(i),(t("permission_groups.manage")||t("users.manage"))&&A.get("/permission-groups").then(o)};g.useEffect(b,[]);const y=j=>{h(j.id),c({username:j.username,password:"",is_super_admin:j.is_super_admin,permissions:j.permissions,group_ids:j.groups.map(C=>C.id)})},w=()=>{h(null),c(Gf)},x=j=>{c(C=>({...C,permissions:C.permissions.includes(j)?C.permissions.filter(S=>S!==j):[...C.permissions,j]}))},p=j=>{c(C=>({...C,group_ids:C.group_ids.includes(j)?C.group_ids.filter(S=>S!==j):[...C.group_ids,j]}))},v=async j=>{j.preventDefault(),f("");try{if(d)await A.put(`/admin-users/${d}`,u);else{if(u.password.length<8){f("Passwort muss mindestens 8 Zeichen lang sein");return}await A.post("/admin-users",u)}w(),b()}catch(C){f(C.message)}},k=async j=>{if(confirm("Diesen Benutzer wirklich löschen?"))try{await A.delete(`/admin-users/${j}`),b()}catch(C){alert(C.message)}};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Benutzer"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Jeder Mitarbeiter bekommt ein eigenes Konto mit genau den Rechten, die er braucht."}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Benutzername"}),a.jsx("th",{className:"px-4 py-2",children:"Rolle"}),a.jsx("th",{className:"px-4 py-2",children:"Berechtigungsgruppen"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[n.map(j=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2 font-medium text-neutral-800 dark:text-neutral-100",children:[j.username,j.id===(e==null?void 0:e.id)&&a.jsx("span",{className:"ml-1 text-xs text-neutral-400",children:"(du)"})]}),a.jsx("td",{className:"px-4 py-2",children:j.is_super_admin?a.jsx("span",{className:"rounded-full bg-brand-100 px-2 py-0.5 text-xs font-medium text-brand-700 dark:bg-brand-900/40 dark:text-brand-300",children:"Super-Admin"}):a.jsxs("span",{className:"text-neutral-500 dark:text-neutral-400",children:[j.permissions.length," Einzelrechte"]})}),a.jsx("td",{className:"px-4 py-2",children:a.jsxs("div",{className:"flex flex-wrap gap-1",children:[j.groups.map(C=>a.jsx("span",{className:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:C.name},C.id)),j.groups.length===0&&"–"]})}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>y(j),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),j.id!==(e==null?void 0:e.id)&&a.jsx("button",{onClick:()=>k(j.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},j.id)),n.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:4,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Benutzer angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:v,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:d?"Benutzer bearbeiten":"Neuer Benutzer"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername *"}),a.jsx("input",{required:!0,value:u.username,onChange:j=>c({...u,username:j.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",d?"(leer lassen = unverändert)":"*"]}),a.jsx("input",{type:"password",required:!d,value:u.password,onChange:j=>c({...u,password:j.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),(e==null?void 0:e.is_super_admin)&&a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.is_super_admin,onChange:j=>c({...u,is_super_admin:j.target.checked}),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Super-Admin (hat automatisch alle Rechte)"]}),!u.is_super_admin&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Einzelne Berechtigungen"}),a.jsx("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:s.map(j=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.permissions.includes(j.key),onChange:()=>x(j.key),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),j.label]},j.key))})]}),a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Berechtigungsgruppen"}),a.jsxs("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:[l.map(j=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u.group_ids.includes(j.id),onChange:()=>p(j.id),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),j.name]},j.id)),l.length===0&&a.jsx("p",{className:"text-sm text-neutral-400",children:"Noch keine Berechtigungsgruppen angelegt."})]})]})]}),m&&a.jsx("p",{className:"text-sm text-red-600",children:m}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:d?"Speichern":"Anlegen"}),d&&a.jsx("button",{type:"button",onClick:w,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const Kf={name:"",description:"",permissions:[]};function D4(){const[e,t]=g.useState([]),[n,r]=g.useState([]),[s,i]=g.useState(Kf),[l,o]=g.useState(null),[u,c]=g.useState(""),d=()=>{A.get("/permission-groups").then(t),A.get("/permissions/catalog").then(r)};g.useEffect(d,[]);const h=w=>{o(w.id),i({name:w.name,description:w.description||"",permissions:w.permissions})},m=()=>{o(null),i(Kf)},f=w=>{i(x=>({...x,permissions:x.permissions.includes(w)?x.permissions.filter(p=>p!==w):[...x.permissions,w]}))},b=async w=>{w.preventDefault(),c("");try{l?await A.put(`/permission-groups/${l}`,s):await A.post("/permission-groups",s),m(),d()}catch(x){c(x.message)}},y=async w=>{confirm("Diese Berechtigungsgruppe wirklich löschen? Benutzer behalten ihre sonstigen Rechte.")&&(await A.delete(`/permission-groups/${w}`),d())};return a.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[a.jsxs("div",{className:"lg:col-span-2",children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Berechtigungsgruppen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:'Fasse mehrere Berechtigungen zu einer Gruppe zusammen (z. B. „Werkstatt"), die du dann bequem einem oder mehreren Benutzern zuweisen kannst.'}),a.jsx("div",{className:"overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-800",children:a.jsxs("table",{className:"w-full text-left text-sm",children:[a.jsx("thead",{className:"bg-neutral-50 text-neutral-500 dark:bg-neutral-900 dark:text-neutral-400",children:a.jsxs("tr",{children:[a.jsx("th",{className:"px-4 py-2",children:"Name"}),a.jsx("th",{className:"px-4 py-2",children:"Berechtigungen"}),a.jsx("th",{className:"px-4 py-2 text-right",children:"Aktionen"})]})}),a.jsxs("tbody",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:[e.map(w=>a.jsxs("tr",{className:"bg-white dark:bg-neutral-950",children:[a.jsxs("td",{className:"px-4 py-2",children:[a.jsx("p",{className:"font-medium text-neutral-800 dark:text-neutral-100",children:w.name}),w.description&&a.jsx("p",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:w.description})]}),a.jsxs("td",{className:"px-4 py-2 text-neutral-500 dark:text-neutral-400",children:[w.permissions.length," von ",n.length]}),a.jsxs("td",{className:"px-4 py-2 text-right",children:[a.jsx("button",{onClick:()=>h(w),className:"mr-3 text-brand-600 hover:underline",children:"Bearbeiten"}),a.jsx("button",{onClick:()=>y(w.id),className:"text-red-600 hover:underline",children:"Löschen"})]})]},w.id)),e.length===0&&a.jsx("tr",{children:a.jsx("td",{colSpan:3,className:"px-4 py-6 text-center text-neutral-400",children:"Noch keine Berechtigungsgruppen angelegt."})})]})]})})]}),a.jsxs("form",{onSubmit:b,className:"h-fit space-y-4 rounded-xl border border-neutral-200 bg-white p-5 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"font-bold text-neutral-900 dark:text-white",children:l?"Gruppe bearbeiten":"Neue Gruppe"}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Name *"}),a.jsx("input",{required:!0,value:s.name,onChange:w=>i({...s,name:w.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Beschreibung"}),a.jsx("textarea",{rows:2,value:s.description,onChange:w=>i({...s,description:w.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"mb-1 text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Berechtigungen"}),a.jsx("div",{className:"space-y-1.5 rounded-md border border-neutral-200 p-3 dark:border-neutral-700",children:n.map(w=>a.jsxs("label",{className:"flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:s.permissions.includes(w.key),onChange:()=>f(w.key),className:"h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),w.label]},w.key))})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("button",{type:"submit",className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:l?"Speichern":"Anlegen"}),l&&a.jsx("button",{type:"button",onClick:m,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm dark:border-neutral-700",children:"Abbrechen"})]})]})]})}const B4=[{to:"/admin/settings/website",label:"Website"},{to:"/admin/settings/email",label:"E-Mail"},{to:"/admin/settings/database",label:"Datenbank"},{to:"/admin/settings/export-import",label:"Export & Import"},{to:"/admin/settings/maintenance",label:"Wartungsmodus"},{to:"/admin/settings/reset",label:"Zurücksetzen"}];function z4(){const e=({isActive:t})=>`rounded-md px-4 py-2 text-sm font-medium transition ${t?"bg-brand-500 text-white":"text-neutral-600 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800"}`;return a.jsxs("div",{children:[a.jsx("h1",{className:"mb-1 text-xl font-bold text-neutral-900 dark:text-white",children:"Einstellungen"}),a.jsx("p",{className:"mb-5 text-sm text-neutral-500 dark:text-neutral-400",children:"Werkzeuge rund um Datenbank, Server-Umzug und Zurücksetzen dieser Seite."}),a.jsx("nav",{className:"mb-6 flex flex-wrap gap-2",children:B4.map(t=>a.jsx(ug,{to:t.to,className:e,children:t.label},t.to))}),a.jsx(hl,{})]})}const R4={phone:"",whatsapp:"",contact_email:"",hero_image_path:"",ga_measurement_id:"",package_card_theme:"graphite",package_card_layout:"strip",package_wheel_hint_interval:8},I4=[{value:"graphite",label:"Graphite Green",description:"Graphit über Bronze/Silber/Gold/Platin bis zur Onyx-Krönung."},{value:"deep-blue",label:"Deep Blue Luxury",description:"Kühles Blau, das sich über Grün zu Gold erwärmt."},{value:"warm-bronze",label:"Warm Bronze",description:"Durchgehend warmes Kupfer/Bronze/Amber bis zum Gold."}],F4=[{value:"grid",label:"Raster",description:"Breite Kacheln, die responsiv in mehrere Zeilen umbrechen."},{value:"strip",label:"Scroll-Band",description:"Schmale, hochkant Kacheln in einer horizontal scrollbaren Reihe."},{value:"coverflow",label:"3D-Coverflow",description:"Kacheln drehen sich beim Wischen räumlich – die mittlere steht im Fokus."}];function V4(){const[e,t]=g.useState(R4),[n,r]=g.useState(!0),[s,i]=g.useState(!1),[l,o]=g.useState(!1),[u,c]=g.useState(""),[d,h]=g.useState(""),[m,f]=g.useState(""),[b,y]=g.useState(!1),[w,x]=g.useState(!1),[p,v]=g.useState(""),[k,j]=g.useState(!1),[C,S]=g.useState(""),[P,M]=g.useState(""),[E,N]=g.useState(!1),[L,U]=g.useState(null),[W,q]=g.useState(!1),[z,$]=g.useState(""),[_,B]=g.useState(!1),[F,O]=g.useState(!1);g.useEffect(()=>{A.get("/site-settings").then(R=>t({phone:R.phone||"",whatsapp:R.whatsapp||"",contact_email:R.contact_email||"",hero_image_path:R.hero_image_path||"",ga_measurement_id:R.ga_measurement_id||"",package_card_theme:R.package_card_theme||"graphite",package_card_layout:R.package_card_layout||"strip",package_wheel_hint_interval:R.package_wheel_hint_interval||8})).finally(()=>r(!1)),A.get("/settings/analytics").then(R=>{h(R.ga_property_id||""),y(R.has_credentials)}),X()},[]);const X=()=>{A.get("/settings/google-reviews").then(R=>{S(R.place_id||""),N(R.has_api_key),U(R)})},fe=async()=>{q(!0),$(""),B(!1);try{const R=await A.post("/settings/google-reviews",{place_id:C,api_key:P});N(R.has_api_key),U(R),M(""),B(!0)}catch(R){$(R.message)}finally{q(!1)}},Y=async()=>{O(!0),$("");try{const R=await A.post("/settings/google-reviews/refresh",{});U(R)}catch(R){$(R.message),X()}finally{O(!1)}},ne=async()=>{x(!0),v(""),j(!1);try{const R=await A.post("/settings/analytics",{ga_property_id:d,service_account_json:m});y(R.has_credentials),f(""),j(!0)}catch(R){v(R.message)}finally{x(!1)}},te=(R,Rt)=>{t($r=>({...$r,[R]:Rt})),o(!1)},qe=async R=>{R.preventDefault(),i(!0),c(""),o(!1);try{await A.post("/site-settings",e),o(!0)}catch(Rt){c(Rt.message)}finally{i(!1)}};return n?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:qe,className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Startseiten-Bild"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Das große Hero-Bild ganz oben auf der Startseite. Ohne eigenes Bild wird das Standardbild verwendet."}),a.jsx(vl,{value:e.hero_image_path,onChange:R=>te("hero_image_path",R),label:"Bild"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Kontaktdaten"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wird im Header, Footer und auf der Kontaktseite angezeigt."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Telefon"}),a.jsx("input",{value:e.phone,onChange:R=>te("phone",R.target.value),placeholder:"09373 20 62 390",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"WhatsApp Business Nummer"}),a.jsx("input",{value:e.whatsapp,onChange:R=>te("whatsapp",R.target.value),placeholder:"z. B. 09373 20 62 390",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Leer lassen, um den WhatsApp-Link im Header auszublenden."})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"E-Mail"}),a.jsx("input",{type:"email",value:e.contact_email,onChange:R=>te("contact_email",R.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Paket-Kachel-Design"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Bestimmt die Farbgebung der Paket-Stufen auf jeder Fahrzeug-Modell-Seite (von der günstigsten bis zur teuersten Option)."}),a.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:I4.map(R=>a.jsxs("label",{className:`cursor-pointer rounded-lg border p-3 text-sm transition ${e.package_card_theme===R.value?"border-brand-500 ring-2 ring-brand-500/40":"border-neutral-300 hover:border-neutral-400 dark:border-neutral-700 dark:hover:border-neutral-600"}`,children:[a.jsx("input",{type:"radio",name:"package_card_theme",value:R.value,checked:e.package_card_theme===R.value,onChange:Rt=>te("package_card_theme",Rt.target.value),className:"sr-only"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:R.label}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:R.description})]},R.value))})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Kachel-Layout"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Bestimmt, wie die Paket-Stufen auf jeder Fahrzeug-Modell-Seite angeordnet werden."}),a.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:F4.map(R=>a.jsxs("label",{className:`cursor-pointer rounded-lg border p-3 text-sm transition ${e.package_card_layout===R.value?"border-brand-500 ring-2 ring-brand-500/40":"border-neutral-300 hover:border-neutral-400 dark:border-neutral-700 dark:hover:border-neutral-600"}`,children:[a.jsx("input",{type:"radio",name:"package_card_layout",value:R.value,checked:e.package_card_layout===R.value,onChange:Rt=>te("package_card_layout",Rt.target.value),className:"sr-only"}),a.jsx("p",{className:"font-semibold text-neutral-900 dark:text-white",children:R.label}),a.jsx("p",{className:"mt-1 text-xs text-neutral-500 dark:text-neutral-400",children:R.description})]},R.value))}),a.jsxs("div",{className:"mt-5 max-w-xs",children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Mausrad-Hinweis: Wiederholung (Sekunden)"}),a.jsx("input",{type:"number",min:"2",max:"120",value:e.package_wheel_hint_interval,onChange:R=>te("package_wheel_hint_interval",R.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:'Nur bei Scroll-Band/3D-Coverflow: Solange ein Besucher noch auf der ersten Kachel steht, wird der "mit dem Mausrad blättern"-Hinweis in diesem Abstand wiederholt.'})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google Analytics"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wird erst geladen, nachdem ein Besucher der Statistik-Kategorie im Cookie-Banner zugestimmt hat. Leer lassen, um Google Analytics zu deaktivieren."}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Measurement-ID"}),a.jsx("input",{value:e.ga_measurement_id,onChange:R=>te("ga_measurement_id",R.target.value),placeholder:"G-XXXXXXXXXX",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{className:"mt-5 border-t border-neutral-200 pt-5 dark:border-neutral-800",children:[a.jsx("h3",{className:"mb-1 text-sm font-semibold text-neutral-900 dark:text-white",children:"Dashboard-Anbindung (optional)"}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:"Zeigt Besucherzahlen direkt in deinem Admin-Dashboard an. Braucht ein Google-Cloud-Service-Account mit Lesezugriff auf diese GA4-Property."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Property-ID"}),a.jsx("input",{value:d,onChange:R=>{h(R.target.value),j(!1)},placeholder:"z. B. 123456789",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Nicht die Measurement-ID (G-...) - zu finden unter GA4 → Verwaltung → Property-Details."})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Service-Account-JSON-Schlüssel ",b?"(leer lassen = unverändert)":""]}),a.jsx("textarea",{rows:4,value:m,onChange:R=>{f(R.target.value),j(!1)},placeholder:b?'{ "type": "service_account", ... } (bereits hinterlegt)':'{ "type": "service_account", ... }',className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 font-mono text-xs dark:border-neutral-700 dark:bg-neutral-900"})]})]}),p&&a.jsx("p",{className:"mt-2 text-sm text-red-600",children:p}),k&&a.jsx("p",{className:"mt-2 text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"button",onClick:ne,disabled:w,className:"mt-3 rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:w?"Speichere…":"Dashboard-Anbindung speichern"})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Google-Rezensionen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Zeigt die echte Google-Bewertung und die aktuellsten Rezensionen auf der Startseite an, statt der fest eingetragenen Beispiel-Texte. Wird einmal täglich automatisch aktualisiert (nie bei einem Seitenbesuch selbst) – die Seite zeigt also immer den letzten erfolgreich abgerufenen Stand."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Place-ID"}),a.jsx("input",{value:C,onChange:R=>{S(R.target.value),B(!1)},placeholder:"z. B. ChIJN1t_tDeuEmsRUsoyG83frY4",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsxs("p",{className:"mt-1 text-xs text-neutral-400",children:["Eindeutige Google-Kennung eures Eintrags – zu finden über den"," ",a.jsx("a",{href:"https://developers.google.com/maps/documentation/places/web-service/place-id#find-id",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-brand-600",children:"Google Place ID Finder"}),"."]})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Places-API-Key ",E?"(leer lassen = unverändert)":""]}),a.jsx("input",{value:P,onChange:R=>{M(R.target.value),B(!1)},placeholder:E?"••••••••••••••••••••• (bereits hinterlegt)":"AIzaSy…",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 font-mono text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("p",{className:"mt-1 text-xs text-neutral-400",children:"Aus der Google-Cloud-Console, mit aktivierter „Places API (New)“."})]})]}),z&&a.jsx("p",{className:"mt-3 text-sm text-red-600",children:z}),_&&a.jsx("p",{className:"mt-3 text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[a.jsx("button",{type:"button",onClick:fe,disabled:W,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:W?"Speichere…":"Google-Rezensionen-Einstellungen speichern"}),a.jsx("button",{type:"button",onClick:Y,disabled:F||!C||!E,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:F?"Aktualisiere…":"Jetzt aktualisieren"})]}),L&&a.jsxs("div",{className:"mt-4 rounded-md bg-neutral-50 p-3 text-sm dark:bg-neutral-800/50",children:[L.rating!=null?a.jsxs("p",{className:"text-neutral-700 dark:text-neutral-300",children:["Aktuell hinterlegt: ",a.jsxs("strong",{children:[L.rating," ★"]})," (",L.rating_count," Bewertungen)",L.updated_at&&a.jsxs(a.Fragment,{children:[" – zuletzt aktualisiert am ",new Date(L.updated_at.replace(" ","T")).toLocaleString("de-DE")]})]}):a.jsx("p",{className:"text-neutral-500 dark:text-neutral-400",children:"Noch keine erfolgreiche Aktualisierung – die Startseite zeigt bis dahin weiter die Beispiel-Rezensionen."}),L.error&&a.jsxs("p",{className:"mt-1 text-red-600",children:["Letzter Fehler: ",L.error]})]})]}),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),l&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:s,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:s?"Speichere…":"Speichern"})]})}const O4={mail_host:"",mail_port:587,mail_username:"",mail_password:"",mail_encryption:"tls",mail_from_email:"",mail_from_name:"",mail_notify_email:"",mail_customer_subject:"",mail_customer_body:"",mail_owner_subject:"",mail_owner_body:""},U4=[["{{name}}","Name des Kunden"],["{{email}}","E-Mail des Kunden"],["{{phone}}","Telefonnummer"],["{{vin}}","Fahrgestellnummer (FIN)"],["{{message}}","Nachricht des Kunden"],["{{brand}}","Marke"],["{{model}}","Modell"],["{{package}}","Paket"],["{{product}}","Produkt"],["{{upgrades}}","Gewählte Upgrades"]];function qf(){return a.jsx("div",{className:"mt-3 flex flex-wrap gap-1.5",children:U4.map(([e,t])=>a.jsx("span",{title:t,className:"rounded-md bg-neutral-100 px-2 py-1 font-mono text-xs text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:e},e))})}function W4(){const[e,t]=g.useState(O4),[n,r]=g.useState(!1),[s,i]=g.useState(!0),[l,o]=g.useState(!1),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(!1),[w,x]=g.useState(""),[p,v]=g.useState(""),[k,j]=g.useState(""),[C,S]=g.useState(null);g.useEffect(()=>{A.get("/settings/mail").then(N=>{t({...N,mail_password:""}),r(N.has_password)}).finally(()=>i(!1))},[]);const P=(N,L)=>{t(U=>({...U,[N]:L})),f(!1)},M=async N=>{N.preventDefault(),c(!0),h(""),f(!1);try{const L=await A.post("/settings/mail",e);t({...L,mail_password:""}),r(L.has_password),f(!0)}catch(L){h(L.message)}finally{c(!1)}},E=async()=>{y(!0),x(""),v(""),j(""),S(null);try{const N=await A.post("/settings/mail/test",e);v(`Testmail gesendet an ${N.sent_to}. Der Server hat die Mail angenommen - prüfe auch den Spam-Ordner, das ist noch keine Garantie für die Zustellung.`),j(N.warning||""),S(N.smtp_log||null)}catch(N){x(N.message)}finally{y(!1)}};return s?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:M,className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"SMTP-Server"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Zugangsdaten deines Mail-Postfachs oder Transactional-Mail-Anbieters. Solange kein Server eingetragen ist, werden keine E-Mails verschickt (Kontaktanfragen werden trotzdem in der Datenbank gespeichert)."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-[1fr_120px]",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Server (Host)"}),a.jsx("input",{value:e.mail_host,onChange:N=>P("mail_host",N.target.value),placeholder:"smtp.beispiel.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Port"}),a.jsx("input",{type:"number",value:e.mail_port,onChange:N=>P("mail_port",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Verschlüsselung"}),a.jsxs("select",{value:e.mail_encryption,onChange:N=>P("mail_encryption",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900",children:[a.jsx("option",{value:"tls",children:"STARTTLS"}),a.jsx("option",{value:"ssl",children:"SSL"}),a.jsx("option",{value:"none",children:"Keine"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzername"}),a.jsx("input",{value:e.mail_username,onChange:N=>P("mail_username",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",n?"(leer lassen = unverändert)":""]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("input",{type:l?"text":"password",value:e.mail_password,onChange:N=>P("mail_password",N.target.value),placeholder:n?"••••••••":"",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{type:"button",onClick:()=>o(N=>!N),className:"shrink-0 rounded-md border border-neutral-300 px-3 text-sm dark:border-neutral-700",children:l?"Verbergen":"Anzeigen"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Absender-E-Mail"}),a.jsx("input",{type:"email",value:e.mail_from_email,onChange:N=>P("mail_from_email",N.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Absender-Name"}),a.jsx("input",{value:e.mail_from_name,onChange:N=>P("mail_from_name",N.target.value),placeholder:"HifiPlanet",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsxs("div",{className:"mt-4 border-t border-neutral-200 pt-4 dark:border-neutral-800",children:[w&&a.jsx("p",{className:"mb-2 whitespace-pre-wrap text-sm text-red-600",children:w}),p&&a.jsx("p",{className:"mb-2 text-sm text-green-600 dark:text-green-400",children:p}),k&&a.jsx("p",{className:"mb-2 rounded-md bg-amber-50 p-2 text-sm text-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:k}),a.jsx("button",{type:"button",onClick:E,disabled:b,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:b?"Sende Testmail…":"Verbindung testen"}),C&&C.length>0&&a.jsxs("details",{className:"mt-3",children:[a.jsx("summary",{className:"cursor-pointer text-xs text-neutral-500 dark:text-neutral-400",children:"SMTP-Protokoll anzeigen"}),a.jsx("pre",{className:"mt-2 max-h-64 overflow-auto rounded-md bg-neutral-900 p-3 text-xs text-neutral-200",children:C.join(` +`)})]})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Empfänger"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"An diese Adresse geht die Benachrichtigung bei jeder neuen Kontaktanfrage."}),a.jsx("input",{type:"email",value:e.mail_notify_email,onChange:N=>P("mail_notify_email",N.target.value),placeholder:"info@hifi-planet-amorbach.de",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"E-Mail an den Kunden (Bestätigung)"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Geht automatisch an den Kunden, sobald er eine Kontaktanfrage abschickt."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Betreff"}),a.jsx("input",{value:e.mail_customer_subject,onChange:N=>P("mail_customer_subject",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Text"}),a.jsx("textarea",{rows:8,value:e.mail_customer_body,onChange:N=>P("mail_customer_body",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsx(qf,{})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"E-Mail an den Shop (Benachrichtigung)"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Geht an die oben eingestellte Empfänger-Adresse, sobald eine neue Kontaktanfrage eingeht."}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Betreff"}),a.jsx("input",{value:e.mail_owner_subject,onChange:N=>P("mail_owner_subject",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Text"}),a.jsx("textarea",{rows:8,value:e.mail_owner_body,onChange:N=>P("mail_owner_body",N.target.value),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]})]}),a.jsx(qf,{})]}),d&&a.jsx("p",{className:"text-sm text-red-600",children:d}),m&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:u,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:u?"Speichere…":"Speichern"})]})}function H4(){const[e,t]=g.useState({host:"",name:"",user:"",password:"",charset:"utf8mb4"}),[n,r]=g.useState(!1),[s,i]=g.useState(!0),[l,o]=g.useState(!1),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(null),[w,x]=g.useState(!0),[p,v]=g.useState(!1),[k,j]=g.useState(null),C=()=>{i(!0),A.get("/settings/database").then(E=>{t({...E.config,password:""}),r(E.has_password)}).finally(()=>i(!1))},S=()=>{x(!0),A.get("/settings/schema-check").then(y).catch(E=>y({ok:!1,error:E.message,tables:[]})).finally(()=>x(!1))};g.useEffect(()=>{C(),S()},[]);const P=async()=>{v(!0),j(null);try{const E=await A.post("/settings/schema-migrate",{});j(E.actions),y(E.report)}catch(E){j(["Fehler: "+E.message])}finally{v(!1)}},M=async E=>{E.preventDefault(),c(!0),h(""),f(!1);try{await A.post("/settings/database",e),f(!0),t(N=>({...N,password:""})),r(!0),S()}catch(N){h(N.message)}finally{c(!1)}};return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Datenbank-Zugangsdaten"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Wichtig für einen Umzug auf einen anderen Server/Webspace: Trage hier die Zugangsdaten der dortigen Datenbank ein. Die Verbindung wird vor dem Speichern getestet, damit du dich nicht aussperrst."}),s?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:M,className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Host *"}),a.jsx("input",{required:!0,value:e.host,onChange:E=>t({...e,host:E.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Datenbankname *"}),a.jsx("input",{required:!0,value:e.name,onChange:E=>t({...e,name:E.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Benutzer *"}),a.jsx("input",{required:!0,value:e.user,onChange:E=>t({...e,user:E.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),a.jsxs("div",{children:[a.jsxs("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:["Passwort ",n?"(leer lassen = unverändert)":""]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx("input",{type:l?"text":"password",value:e.password,onChange:E=>t({...e,password:E.target.value}),placeholder:n?"••••••••":"",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"}),a.jsx("button",{type:"button",onClick:()=>o(E=>!E),className:"shrink-0 rounded-md border border-neutral-300 px-3 text-sm dark:border-neutral-700",children:l?"Verbergen":"Anzeigen"})]})]}),a.jsxs("div",{children:[a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Zeichensatz"}),a.jsx("input",{value:e.charset,onChange:E=>t({...e,charset:E.target.value}),className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]}),d&&a.jsx("p",{className:"text-sm text-red-600",children:d}),m&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Verbindung erfolgreich getestet und gespeichert."}),a.jsx("button",{type:"submit",disabled:u,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:u?"Teste & speichere…":"Verbindung testen & speichern"})]})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[a.jsx("h2",{className:"font-semibold text-neutral-900 dark:text-white",children:"Datenbankstruktur"}),!w&&b&&a.jsx("span",{className:`rounded-full px-3 py-1 text-xs font-semibold ${b.ok?"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300":"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300"}`,children:b.ok?"Datenbank OK":"Datenbank nicht OK"})]}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Prüft, ob diese Datenbank alle Tabellen und Spalten hat, die der aktuelle Code-Stand braucht – wichtig, wenn deine Live-Version auf einem anderen Server einen älteren Stand hat."}),w&&a.jsx("p",{className:"text-sm text-neutral-400",children:"Prüfe…"}),!w&&b&&!b.ok&&a.jsx("ul",{className:"mb-4 space-y-1 rounded-md bg-red-50 p-3 text-sm text-red-800 dark:bg-red-900/20 dark:text-red-300",children:b.tables.filter(E=>!E.ok).map(E=>a.jsx("li",{children:E.exists?a.jsxs(a.Fragment,{children:["Tabelle ",a.jsx("code",{className:"font-mono",children:E.table}),": Spalte(n) fehlen – ",E.missing_columns.join(", ")]}):a.jsxs(a.Fragment,{children:["Tabelle ",a.jsx("code",{className:"font-mono",children:E.table})," fehlt komplett"]})},E.table))}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx("button",{onClick:S,disabled:w,className:"rounded-md border border-neutral-300 px-4 py-2 text-sm font-medium hover:bg-neutral-50 disabled:opacity-50 dark:border-neutral-700 dark:hover:bg-neutral-800",children:"Erneut prüfen"}),b&&!b.ok&&a.jsx("button",{onClick:P,disabled:p,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:p?"Aktualisiere…":"Datenbankstruktur aktualisieren"})]}),k&&a.jsx("ul",{className:"mt-3 space-y-1 rounded-md bg-neutral-50 p-3 text-sm text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300",children:k.map((E,N)=>a.jsx("li",{children:E},N))})]})]})}const Ua=[{key:"catalog",label:"Fahrzeug-Katalog",hint:"Marken, Modelle, Pakete, Produkte, Upgrades",tables:["brands","car_models","packages","package_products","package_upgrades"]},{key:"services",label:"Leistungen",hint:"Die Leistungen-Übersicht",tables:["services"]},{key:"faqs",label:"FAQs",hint:"Häufig gestellte Fragen",tables:["faqs"]},{key:"gallery",label:"Bildergalerie",hint:"Galerie-Marken, Projekte und Fotos (inkl. Bilder)",tables:["gallery_brands","gallery_projects","gallery_photos"]}],_b={brands:"Marken",car_models:"Modelle",packages:"Pakete",package_products:"Produkte",package_upgrades:"Upgrades",services:"Leistungen",faqs:"FAQs",gallery_brands:"Galerie-Marken",gallery_projects:"Galerie-Projekte",gallery_photos:"Galerie-Fotos"},$4=(e,t)=>{if(!e)return null;const n=t.map(r=>[r,Array.isArray(e[r])?e[r].length:0]).filter(([,r])=>r>0).map(([r,s])=>`${s} ${_b[r]||r}`);return n.length?n.join(", "):"leer in dieser Datei"};function G4(){const[e,t]=g.useState(null),[n,r]=g.useState(null),[s,i]=g.useState(""),[l,o]=g.useState(()=>new Set(Ua.map(k=>k.key))),[u,c]=g.useState(!1),[d,h]=g.useState(!1),[m,f]=g.useState(null),[b,y]=g.useState(""),w=async k=>{var C;const j=((C=k.target.files)==null?void 0:C[0])||null;if(t(j),f(null),y(""),r(null),i(""),o(new Set(Ua.map(S=>S.key))),!!j)try{const S=await j.text(),P=JSON.parse(S);if(!P||typeof P.data!="object")throw new Error("kein gültiges Export-Format");r(P.data)}catch{i("Datei konnte nicht gelesen werden – Vorschau der Inhalte nicht möglich. Import würde trotzdem versucht (alle Bereiche).")}},x=k=>{o(j=>{const C=new Set(j);return C.has(k)?C.delete(k):C.add(k),C})},p=async k=>{if(k.preventDefault(),!(!e||!u||l.size===0)){h(!0),y(""),f(null);try{const j=new FormData;j.append("file",e),j.append("sections",JSON.stringify([...l]));const C=await A.post("/settings/import",j);f(C),t(null),r(null),c(!1),k.target.reset()}catch(j){y(j.message)}finally{h(!1)}}},v=Ua.filter(k=>l.has(k.key)).map(k=>k.label);return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Daten exportieren"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:["Lädt eine Datei mit allen Marken, Modellen, Paketen, Produkten, Upgrades, Leistungen, FAQs und der kompletten Bildergalerie (inkl. Bilder) herunter. Benutzerkonten und Kontaktanfragen sind bewusst",a.jsx("strong",{children:" nicht"})," enthalten."]}),a.jsx("a",{href:`${cg}/settings/export`,className:"inline-block rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600",children:"Jetzt exportieren"})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Daten importieren"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Lädt eine zuvor exportierte Datei auf diesen Server. Ersetzt dabei die ausgewählten Bereiche komplett durch den Inhalt der Datei – das kann nicht rückgängig gemacht werden. Kontaktanfragen und Benutzerkonten bleiben immer unangetastet."}),a.jsxs("form",{onSubmit:p,className:"space-y-4",children:[a.jsx("input",{type:"file",accept:"application/json,.json",onChange:w,className:"text-sm"}),e&&a.jsxs("div",{className:"rounded-lg border border-neutral-200 dark:border-neutral-700",children:[a.jsx("div",{className:"border-b border-neutral-200 px-4 py-2 text-xs font-semibold uppercase tracking-wide text-neutral-500 dark:border-neutral-700 dark:text-neutral-400",children:"Was soll importiert werden?"}),s&&a.jsx("p",{className:"px-4 pt-3 text-sm text-amber-600 dark:text-amber-400",children:s}),a.jsx("div",{className:"divide-y divide-neutral-100 dark:divide-neutral-800",children:Ua.map(k=>a.jsxs("label",{className:"flex cursor-pointer items-start gap-3 px-4 py-3 hover:bg-neutral-50 dark:hover:bg-neutral-800/50",children:[a.jsx("input",{type:"checkbox",checked:l.has(k.key),onChange:()=>x(k.key),className:"mt-0.5 h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),a.jsxs("span",{className:"flex-1",children:[a.jsx("span",{className:"block text-sm font-medium text-neutral-800 dark:text-neutral-100",children:k.label}),a.jsx("span",{className:"block text-xs text-neutral-500 dark:text-neutral-400",children:n?$4(n,k.tables):k.hint})]})]},k.key))})]}),a.jsxs("label",{className:"flex items-start gap-2 text-sm text-neutral-700 dark:text-neutral-300",children:[a.jsx("input",{type:"checkbox",checked:u,onChange:k=>c(k.target.checked),className:"mt-0.5 h-4 w-4 rounded border-neutral-300 text-brand-600 focus:ring-brand-500"}),"Mir ist bewusst, dass dies"," ",v.length?a.jsx("strong",{children:v.join(", ")}):"die ausgewählten Bereiche"," auf diesem Server unwiderruflich ersetzt."]}),a.jsx("button",{type:"submit",disabled:!e||!u||d||l.size===0,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-50",children:d?"Importiere…":"Importieren"})]}),b&&a.jsx("p",{className:"mt-3 text-sm text-red-600",children:b}),m&&a.jsxs("div",{className:"mt-3 rounded-md bg-green-50 p-3 text-sm text-green-800 dark:bg-green-900/20 dark:text-green-300",children:[a.jsx("p",{className:"mb-1 font-semibold",children:"Import erfolgreich:"}),a.jsxs("ul",{className:"list-disc pl-5",children:[Object.entries(m.counts).map(([k,j])=>a.jsxs("li",{children:[j," ",_b[k]||k]},k)),m.images_restored>0&&a.jsxs("li",{children:[m.images_restored," Bilder wiederhergestellt"]})]})]})]})]})}const K4={global:{enabled:!1,message:""},services:{enabled:!1,message:""},vehicles:{enabled:!1,message:""}};function q4(){const[e,t]=g.useState(K4),[n,r]=g.useState(!0),[s,i]=g.useState(!1),[l,o]=g.useState(!1),[u,c]=g.useState("");g.useEffect(()=>{A.get("/maintenance").then(f=>{t({global:{enabled:f.global.enabled,message:f.global.message||""},services:{enabled:f.services.enabled,message:f.services.message||""},vehicles:{enabled:f.vehicles.enabled,message:f.vehicles.message||""}})}).finally(()=>r(!1))},[]);const d=(f,b,y)=>{t(w=>({...w,[f]:{...w[f],[b]:y}})),o(!1)},h=async f=>{f.preventDefault(),i(!0),c(""),o(!1);try{const b=await A.post("/maintenance",e);t({global:{enabled:b.global.enabled,message:b.global.message||""},services:{enabled:b.services.enabled,message:b.services.message||""},vehicles:{enabled:b.vehicles.enabled,message:b.vehicles.message||""}}),o(!0)}catch(b){c(b.message)}finally{i(!1)}},m=[{key:"global",title:"Gesamte Seite",hint:"Besucher sehen nur noch eine Wartungsmeldung – egal welche Seite sie aufrufen. Das Admin-Panel bleibt für dich erreichbar."},{key:"services",title:"Nur Leistungen",hint:"Nur die Leistungen-Seite zeigt eine Wartungsmeldung, der Rest der Website funktioniert normal."},{key:"vehicles",title:"Nur Fahrzeugkatalog",hint:"Nur die Fahrzeugauswahl (Marke → Modell → Pakete) zeigt eine Wartungsmeldung, der Rest der Website funktioniert normal."}];return n?a.jsx("p",{className:"text-sm text-neutral-400",children:"Lädt…"}):a.jsxs("form",{onSubmit:h,className:"max-w-2xl space-y-6",children:[a.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:'Ist "Gesamte Seite" aktiv, gewinnt das immer – die beiden anderen Schalter spielen dann keine Rolle mehr.'}),m.map(f=>a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[a.jsx("h2",{className:"font-semibold text-neutral-900 dark:text-white",children:f.title}),a.jsxs("label",{className:"relative inline-flex cursor-pointer items-center",children:[a.jsx("input",{type:"checkbox",checked:e[f.key].enabled,onChange:b=>d(f.key,"enabled",b.target.checked),className:"peer sr-only"}),a.jsx("div",{className:"h-6 w-11 rounded-full bg-neutral-200 transition peer-checked:bg-brand-500 dark:bg-neutral-700"}),a.jsx("div",{className:"absolute left-1 top-1 h-4 w-4 rounded-full bg-white transition peer-checked:translate-x-5"})]})]}),a.jsx("p",{className:"mb-3 text-sm text-neutral-500 dark:text-neutral-400",children:f.hint}),a.jsx("label",{className:"mb-1 block text-sm font-medium text-neutral-700 dark:text-neutral-300",children:"Eigene Nachricht (optional)"}),a.jsx("textarea",{rows:2,value:e[f.key].message,onChange:b=>d(f.key,"message",b.target.value),placeholder:"z. B. Wir aktualisieren gerade unser Angebot. Schau bald wieder vorbei!",className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-2 text-sm dark:border-neutral-700 dark:bg-neutral-900"})]},f.key)),u&&a.jsx("p",{className:"text-sm text-red-600",children:u}),l&&a.jsx("p",{className:"text-sm text-green-600 dark:text-green-400",children:"Gespeichert."}),a.jsx("button",{type:"submit",disabled:s,className:"rounded-md bg-brand-500 px-4 py-2 text-sm font-semibold text-white hover:bg-brand-600 disabled:opacity-50",children:s?"Speichere…":"Speichern"})]})}function Y4(){const[e,t]=g.useState(!1),[n,r]=g.useState(""),[s,i]=g.useState(!1),[l,o]=g.useState(""),[u,c]=g.useState(!1),[d,h]=g.useState(""),[m,f]=g.useState(!1),[b,y]=g.useState(""),[w,x]=g.useState(!1),[p,v]=g.useState(""),k=async()=>{if(confirm("Alle aktuellen Leistungen werden gelöscht und durch die 8 Standard-Leistungen ersetzt. Fortfahren?")){t(!0),r("");try{const M=await A.post("/settings/reset-services",{});r(`${M.count} Standard-Leistungen wiederhergestellt.`)}catch(M){r("Fehler: "+M.message)}finally{t(!1)}}},j=async()=>{if(confirm("Alle aktuellen FAQ-Einträge werden gelöscht und durch die 6 Standard-Fragen ersetzt. Fortfahren?")){i(!0),o("");try{const M=await A.post("/settings/reset-faqs",{});o(`${M.count} Standard-Fragen wiederhergestellt.`)}catch(M){o("Fehler: "+M.message)}finally{i(!1)}}},C=async()=>{if(confirm("Die komplette Bildergalerie wird gelöscht und durch die 13 Marken/29 Projekte/207 Fotos der alten hifi-planet.de-Seite ersetzt. Fortfahren?")){c(!0),h("");try{const M=await A.post("/settings/reset-gallery",{});h(`${M.photos} Fotos wiederhergestellt.`)}catch(M){h("Fehler: "+M.message)}finally{c(!1)}}},S=async()=>{if(confirm("Alle Marken, Modelle, Pakete, Produkte und Upgrades werden unwiderruflich gelöscht. Leistungen und Kontaktanfragen bleiben erhalten. Fortfahren?")){f(!0),y("");try{const M=await A.post("/settings/reset-catalog",{});y(`Fahrzeugkatalog geleert (${M.brands_removed} Marken entfernt).`)}catch(M){y("Fehler: "+M.message)}finally{f(!1)}}},P=async()=>{if(confirm("WIRKLICH ALLES zurücksetzen? Marken, Modelle, Pakete, Produkte und Upgrades werden gelöscht, Leistungen, FAQs und die Bildergalerie auf Standard zurückgesetzt. Kontaktanfragen und Benutzerkonten bleiben erhalten. Das kann nicht rückgängig gemacht werden!")){x(!0),v("");try{const M=await A.post("/settings/reset-all",{});v(`Erledigt: ${M.brands_removed} Marken entfernt, ${M.services_reset} Standard-Leistungen, ${M.faqs_reset} Standard-Fragen und ${M.gallery_photos_reset} Galerie-Fotos wiederhergestellt.`)}catch(M){v("Fehler: "+M.message)}finally{x(!1)}}};return a.jsxs("div",{className:"max-w-2xl space-y-6",children:[a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Leistungen zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Leistungen-Karten und stellt die 8 mitgelieferten Standard-Leistungen wieder her. Marken, Modelle und Pakete bleiben unangetastet."}),a.jsx("button",{onClick:k,disabled:e,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:e?"Setze zurück…":"Leistungen auf Standard zurücksetzen"}),n&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:n})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur FAQs zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Fragen und stellt die 6 mitgelieferten Standard-Fragen (Deutsch & Englisch) wieder her. Leistungen, Marken, Modelle und Pakete bleiben unangetastet."}),a.jsx("button",{onClick:j,disabled:s,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:s?"Setze zurück…":"FAQs auf Standard zurücksetzen"}),l&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:l})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Bildergalerie zurücksetzen"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle aktuellen Galerie-Marken, -Projekte und -Fotos und stellt die komplette Galerie der alten hifi-planet.de-Seite wieder her (13 Marken, 29 Projekte, 207 Fotos). Fahrzeugkatalog, Leistungen und FAQs bleiben unangetastet."}),a.jsx("button",{onClick:C,disabled:u,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:u?"Setze zurück…":"Galerie auf Standard zurücksetzen"}),d&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:d})]}),a.jsxs("section",{className:"rounded-xl border border-neutral-200 bg-white p-6 dark:border-neutral-800 dark:bg-neutral-900",children:[a.jsx("h2",{className:"mb-1 font-semibold text-neutral-900 dark:text-white",children:"Nur Fahrzeugkatalog leeren"}),a.jsx("p",{className:"mb-4 text-sm text-neutral-500 dark:text-neutral-400",children:"Löscht alle Marken, Modelle, Pakete, Produkte und Upgrades unwiderruflich. Leistungen, Kontaktanfragen und Benutzerkonten bleiben erhalten."}),a.jsx("button",{onClick:S,disabled:m,className:"rounded-md border border-red-300 px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:hover:bg-red-900/20",children:m?"Leere…":"Fahrzeugkatalog leeren"}),b&&a.jsx("p",{className:"mt-3 text-sm text-neutral-600 dark:text-neutral-300",children:b})]}),a.jsxs("section",{className:"rounded-xl border border-red-300 bg-red-50/40 p-6 dark:border-red-900 dark:bg-red-900/10",children:[a.jsx("h2",{className:"mb-1 font-semibold text-red-700 dark:text-red-300",children:"Alles zurücksetzen"}),a.jsxs("p",{className:"mb-4 text-sm text-neutral-600 dark:text-neutral-300",children:["Kombiniert alles: Fahrzeugkatalog wird komplett geleert ",a.jsx("strong",{children:"und"})," Leistungen, FAQs sowie die Bildergalerie werden auf Standard zurückgesetzt. Kontaktanfragen und Benutzerkonten bleiben erhalten. Nicht rückgängig zu machen."]}),a.jsx("button",{onClick:P,disabled:w,className:"rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700 disabled:opacity-50",children:w?"Setze zurück…":"Wirklich alles zurücksetzen"}),p&&a.jsx("p",{className:"mt-3 text-sm text-neutral-700 dark:text-neutral-300",children:p})]})]})}function X4(){return a.jsxs(a.Fragment,{children:[a.jsx(cw,{}),a.jsx(mw,{}),a.jsx(fw,{children:a.jsxs(qk,{children:[a.jsx(K,{path:"/setup",element:a.jsx(mP,{})}),a.jsxs(K,{element:a.jsx(mC,{}),children:[a.jsx(K,{path:"/",element:a.jsx(DC,{})}),a.jsx(K,{path:"/fahrzeuge",element:a.jsx(BC,{})}),a.jsx(K,{path:"/fahrzeuge/:brandSlug",element:a.jsx(zC,{})}),a.jsx(K,{path:"/fahrzeuge/:brandSlug/:modelSlug",element:a.jsx(XC,{})}),a.jsx(K,{path:"/galerie",element:a.jsx(ZC,{})}),a.jsx(K,{path:"/galerie/:brandSlug",element:a.jsx(QC,{})}),a.jsx(K,{path:"/galerie/:brandSlug/:projectSlug",element:a.jsx(eP,{})}),a.jsx(K,{path:"/leistungen",element:a.jsx(tP,{})}),a.jsx(K,{path:"/kontakt",element:a.jsx(lP,{})}),a.jsx(K,{path:"/impressum",element:a.jsx(oP,{})}),a.jsx(K,{path:"/datenschutz",element:a.jsx(uP,{})}),a.jsx(K,{path:"/agb",element:a.jsx(cP,{})})]}),a.jsx(K,{path:"/admin/login",element:a.jsx(fP,{})}),a.jsx(K,{path:"/admin",element:a.jsx(xC,{}),children:a.jsxs(K,{element:a.jsx(gC,{}),children:[a.jsx(K,{index:!0,element:a.jsx(bP,{})}),a.jsx(K,{path:"account",element:a.jsx(_4,{})}),a.jsx(K,{path:"brands",element:a.jsx(Ve,{permission:"brands.manage",children:a.jsx(vP,{})})}),a.jsx(K,{path:"models",element:a.jsx(Ve,{permission:"models.manage",children:a.jsx(yP,{})})}),a.jsx(K,{path:"gallery-brands",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(kP,{})})}),a.jsx(K,{path:"gallery-projects",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(wP,{})})}),a.jsx(K,{path:"gallery-projects/:projectId/photos",element:a.jsx(Ve,{permission:"gallery.manage",children:a.jsx(jP,{})})}),a.jsx(K,{path:"packages",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(TP,{})})}),a.jsx(K,{path:"packages/:packageId/products",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(RP,{})})}),a.jsx(K,{path:"packages/:packageId/upgrades",element:a.jsx(Ve,{permission:"packages.manage",children:a.jsx(FP,{})})}),a.jsx(K,{path:"services",element:a.jsx(Ve,{permission:"services.manage",children:a.jsx(LP,{})})}),a.jsx(K,{path:"faqs",element:a.jsx(Ve,{permission:"content.manage",children:a.jsx(DP,{})})}),a.jsx(K,{path:"contact-requests",element:a.jsx(Ve,{permission:"contact.manage",children:a.jsx(HP,{})})}),a.jsx(K,{path:"users",element:a.jsx(Ve,{permission:"users.manage",children:a.jsx(L4,{})})}),a.jsx(K,{path:"permission-groups",element:a.jsx(Ve,{permission:"permission_groups.manage",children:a.jsx(D4,{})})}),a.jsxs(K,{path:"settings",element:a.jsx(Ve,{permission:"settings.manage",children:a.jsx(z4,{})}),children:[a.jsx(K,{index:!0,element:a.jsx(Gs,{to:"website",replace:!0})}),a.jsx(K,{path:"website",element:a.jsx(V4,{})}),a.jsx(K,{path:"email",element:a.jsx(W4,{})}),a.jsx(K,{path:"database",element:a.jsx(H4,{})}),a.jsx(K,{path:"export-import",element:a.jsx(G4,{})}),a.jsx(K,{path:"maintenance",element:a.jsx(q4,{})}),a.jsx(K,{path:"reset",element:a.jsx(Y4,{})})]})]})})]})})]})}So.createRoot(document.getElementById("root")).render(a.jsx(Gb.StrictMode,{children:a.jsx(rw,{basename:"/".replace(/\/$/,"")||"/",children:a.jsx(gw,{children:a.jsx(kw,{children:a.jsx(Tw,{children:a.jsx(X4,{})})})})})})); diff --git a/hifi/assets/index-Cys8aTN9.css b/hifi/assets/index-Cys8aTN9.css new file mode 100644 index 0000000..28ae000 --- /dev/null +++ b/hifi/assets/index-Cys8aTN9.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-5{bottom:-1.25rem}.-left-1\/3{left:-33.333333%}.-right-1{right:-.25rem}.-right-\[60px\]{right:-60px}.-top-1{top:-.25rem}.-top-3{top:-.75rem}.-top-\[60px\]{top:-60px}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3\.5{left:.875rem}.left-5{left:1.25rem}.left-6{left:1.5rem}.left-\[14px\]{left:14px}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-8{top:2rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[200\]{z-index:200}.z-\[60\]{z-index:60}.order-1{order:1}.order-2{order:2}.col-span-full{grid-column:1 / -1}.mx-auto{margin-left:auto;margin-right:auto}.-mt-\[89px\]{margin-top:-89px}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-3{margin-right:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-6{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-square{aspect-ratio:1 / 1}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[17px\]{height:17px}.h-\[18px\]{height:18px}.h-\[190px\]{height:190px}.h-\[210px\]{height:210px}.h-\[22px\]{height:22px}.h-\[46px\]{height:46px}.h-dvh{height:100dvh}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:16rem}.max-h-\[85vh\]{max-height:85vh}.min-h-\[420px\]{min-height:420px}.min-h-\[560px\]{min-height:560px}.min-h-\[70vh\]{min-height:70vh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[17px\]{width:17px}.w-\[18px\]{width:18px}.w-\[190px\]{width:190px}.w-\[22px\]{width:22px}.w-\[230px\]{width:230px}.w-\[46px\]{width:46px}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-\[190px\]{min-width:190px}.min-w-\[220px\]{min-width:220px}.min-w-\[240px\]{min-width:240px}.min-w-\[9rem\]{min-width:9rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[160px\]{max-width:160px}.max-w-\[1880px\]{max-width:1880px}.max-w-\[240px\]{max-width:240px}.max-w-\[520px\]{max-width:520px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-\[190px\]{flex-basis:190px}.origin-left{transform-origin:left}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-12{--tw-rotate: 12deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.touch-pan-y{--tw-pan-y: pan-y;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-start{scroll-snap-align:start}.snap-center{scroll-snap-align:center}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[18px\]{gap:18px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(4rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-neutral-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(245 245 245 / var(--tw-divide-opacity, 1))}.divide-neutral-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 229 229 / var(--tw-divide-opacity, 1))}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[18px\]{border-radius:18px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0px}.border-\[1\.5px\]{border-width:1.5px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-brand-300{--tw-border-opacity: 1;border-color:rgb(182 227 130 / var(--tw-border-opacity, 1))}.border-brand-500{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.border-neutral-100{--tw-border-opacity: 1;border-color:rgb(245 245 245 / var(--tw-border-opacity, 1))}.border-neutral-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.border-neutral-300{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/55{background-color:#0000008c}.bg-black\/60{background-color:#0009}.bg-black\/90{background-color:#000000e6}.bg-brand-100{--tw-bg-opacity: 1;background-color:rgb(233 246 218 / var(--tw-bg-opacity, 1))}.bg-brand-400{--tw-bg-opacity: 1;background-color:rgb(146 212 68 / var(--tw-bg-opacity, 1))}.bg-brand-50{--tw-bg-opacity: 1;background-color:rgb(245 251 238 / var(--tw-bg-opacity, 1))}.bg-brand-500{--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.bg-brand-500\/60{background-color:#6ba62699}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-neutral-100{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.bg-neutral-200{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.bg-neutral-300{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.bg-neutral-400{--tw-bg-opacity: 1;background-color:rgb(163 163 163 / var(--tw-bg-opacity, 1))}.bg-neutral-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.bg-neutral-900\/10{background-color:#1717171a}.bg-neutral-900\/85{background-color:#171717d9}.bg-neutral-950{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/40{background-color:#fef2f266}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/90{background-color:#ffffffe6}.bg-white\/95{background-color:#fffffff2}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/85{--tw-gradient-from: rgb(0 0 0 / .85) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-neutral-950{--tw-gradient-from: #0a0a0a var(--tw-gradient-from-position);--tw-gradient-to: rgb(10 10 10 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-black\/10{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / .1) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-neutral-950\/80{--tw-gradient-to: rgb(10 10 10 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(10 10 10 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/40{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-neutral-950\/40{--tw-gradient-to: rgb(10 10 10 / .4) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[22px\]{padding:22px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[22px\]{padding-top:22px;padding-bottom:22px}.py-\[26px\]{padding-top:26px;padding-bottom:26px}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-\[42px\]{padding-left:42px}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[34px\]{font-size:34px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-\[1\.08\]{line-height:1.08}.leading-\[1\.4\]{line-height:1.4}.leading-\[1\.55\]{line-height:1.55}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-\[2px\]{letter-spacing:2px}.tracking-\[3px\]{letter-spacing:3px}.tracking-\[6px\]{letter-spacing:6px}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-brand-400{--tw-text-opacity: 1;color:rgb(146 212 68 / var(--tw-text-opacity, 1))}.text-brand-500{--tw-text-opacity: 1;color:rgb(107 166 38 / var(--tw-text-opacity, 1))}.text-brand-500\/10{color:#6ba6261a}.text-brand-600{--tw-text-opacity: 1;color:rgb(88 137 31 / var(--tw-text-opacity, 1))}.text-brand-700{--tw-text-opacity: 1;color:rgb(72 112 26 / var(--tw-text-opacity, 1))}.text-brand-800{--tw-text-opacity: 1;color:rgb(59 91 21 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.text-neutral-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.text-neutral-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-neutral-800{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-white\/80{color:#fffc}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_-8px_24px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow: 0 -8px 24px rgba(0,0,0,.08);--tw-shadow-colored: 0 -8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(107\,166\,38\,0\.7\)\]{--tw-shadow: 0 0 10px rgba(107,166,38,.7);--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-brand-500\/30{--tw-shadow-color: rgb(107 166 38 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-neutral-900\/20{--tw-shadow-color: rgb(23 23 23 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-brand-500\/40{--tw-ring-color: rgb(107 166 38 / .4)}.ring-neutral-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(212 212 212 / var(--tw-ring-opacity, 1))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.ring-white\/50{--tw-ring-color: rgb(255 255 255 / .5)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\,box-shadow\]{transition-property:filter,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-transform{will-change:transform}.\[scrollbar-width\:none\]{scrollbar-width:none}html{scroll-behavior:smooth}.marquee-viewport{-webkit-mask-image:linear-gradient(to right,transparent,black 6%,black 94%,transparent);mask-image:linear-gradient(to right,transparent,black 6%,black 94%,transparent)}.page-texture{background-color:#f6f5f0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px}.dark .page-texture{background-color:#0a0b07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.14 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.kf-page{--kf-pagebg: linear-gradient(120deg, #eef0ea 0%, #f6f8f3 45%, #fbfcf9 100%);--kf-card: #ffffff;--kf-cardbrd: #e4e8dc;--kf-text: #23271d;--kf-text2: #2a2e24;--kf-muted: #6c7360;--kf-label: #838a72;--kf-field: #fafcf6;--kf-fieldbrd: #dde2d3;--kf-fieldicon: #a7ad9d;--kf-accent: #a4d417;--kf-accent2: #8ec21a;--kf-accentsoft: #f2f8df;--kf-pill: #ffffff;--kf-pillbrd: #dfe4d6;--kf-shadow: 0 24px 60px rgba(60, 70, 40, .08);--kf-shadow2: 0 16px 40px rgba(60, 70, 40, .06);--kf-divider: #e8ecdf;--kf-topo: #d7dccd;--kf-pkgbg: #f4fbe4;--kf-pkgbrd: #cfe89a;--kf-btntext: #1f2417;--kf-scrim: linear-gradient(90deg, rgba(244, 246, 241, .35) 0%, rgba(244, 246, 241, .55) 55%, rgba(246, 248, 243, 1) 100%)}.dark .kf-page{--kf-pagebg: linear-gradient(120deg, #181b0f 0%, #111409 45%, #0a0c06 100%);--kf-card: #14170e;--kf-cardbrd: rgba(168, 225, 12, .16);--kf-text: #f3f6ea;--kf-text2: #e8ece0;--kf-muted: #9aa38c;--kf-label: #8f987f;--kf-field: rgba(0, 0, 0, .35);--kf-fieldbrd: #2c3323;--kf-fieldicon: #5f6852;--kf-accent: #a8e10c;--kf-accent2: #b6e619;--kf-accentsoft: rgba(168, 225, 12, .1);--kf-pill: #14170e;--kf-pillbrd: rgba(168, 225, 12, .28);--kf-shadow: 0 24px 60px rgba(0, 0, 0, .55);--kf-shadow2: 0 16px 40px rgba(0, 0, 0, .45);--kf-divider: rgba(168, 225, 12, .15);--kf-pkgbg: rgba(168, 225, 12, .08);--kf-pkgbrd: rgba(168, 225, 12, .4);--kf-btntext: #0f1208}.kontakt-sektion{background-image:url(/assets/bg-light-C_7mxjWZ.png);background-size:cover;background-position:center}.dark .kontakt-sektion{background-image:url(/assets/bg-dark-DX_vTCv2.png)}.kf-page input::-moz-placeholder,.kf-page textarea::-moz-placeholder{color:var(--kf-fieldicon)}.kf-page input::placeholder,.kf-page textarea::placeholder{color:var(--kf-fieldicon)}.kf-page input:focus,.kf-page textarea:focus{border-color:var(--kf-accent)!important;box-shadow:0 0 0 3px #a4d41733}.grain-band{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px}.dark .grain-band{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.14 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}html.hifi-cursor-on,html.hifi-cursor-on *{cursor:none!important}html.hifi-cursor-on :is(input,textarea,[contenteditable=true]){cursor:auto!important}.hifi-cursor{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:99999;opacity:1;transition:opacity .2s ease}.hifi-cursor[data-hidden=true]{opacity:0}.hifi-cursor__core{position:fixed;top:0;left:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:9999px;background:#7fd44a;box-shadow:0 0 0 1.5px #ffffffe6,0 0 10px #7fd44abf;transition:width .18s ease,height .18s ease,margin .18s ease,background-color .18s ease,opacity .15s ease}.hifi-cursor__orbit{position:fixed;top:0;left:0;opacity:0;transition:opacity .18s ease}.hifi-cursor__ring{position:absolute;width:38px;height:15px;margin:-7.5px 0 0 -19px;border:1px solid rgba(139,234,60,.85);border-radius:50%;transform:rotate(-24deg) scale(.6);transition:transform .22s ease}.hifi-cursor__sat{position:absolute;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:9999px;background:#eaffdb;box-shadow:0 0 6px #8bea3ce6}.hifi-cursor[data-state=hover] .hifi-cursor__orbit{opacity:1}.hifi-cursor[data-state=hover] .hifi-cursor__core{width:16px;height:16px;margin:-8px 0 0 -8px;background:#8bea3c;box-shadow:0 0 0 1.5px #fffffff2,0 0 12px #8bea3cd9}.hifi-cursor[data-state=hover] .hifi-cursor__ring{transform:rotate(-24deg) scale(1.45)}.hifi-cursor[data-state=text] .hifi-cursor__core,.hifi-cursor[data-state=text] .hifi-cursor__orbit{opacity:0}.hifi-cursor[data-down=true] .hifi-cursor__core{width:20px;height:20px;margin:-10px 0 0 -10px}.hifi-cursor__pulse{position:fixed;top:0;left:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:9999px;border:1.5px solid rgba(139,234,60,.9);opacity:0}.hifi-cursor__pulse.is-live{animation:hifi-cursor-pulse .45s ease-out forwards}@keyframes hifi-cursor-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[var\(--kf-accent\)\]:hover{border-color:var(--kf-accent)}.hover\:border-brand-500:hover{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.hover\:border-neutral-400:hover{--tw-border-opacity: 1;border-color:rgb(163 163 163 / var(--tw-border-opacity, 1))}.hover\:bg-\[var\(--kf-accentsoft\)\]:hover{background-color:var(--kf-accentsoft)}.hover\:bg-brand-400:hover{--tw-bg-opacity: 1;background-color:rgb(146 212 68 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-50:hover{--tw-bg-opacity: 1;background-color:rgb(245 251 238 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-600:hover{--tw-bg-opacity: 1;background-color:rgb(88 137 31 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-100:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:text-brand-500:hover{--tw-text-opacity: 1;color:rgb(107 166 38 / var(--tw-text-opacity, 1))}.hover\:text-brand-600:hover{--tw-text-opacity: 1;color:rgb(88 137 31 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-brand-500:focus{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-brand-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 166 38 / var(--tw-ring-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:from-black\/95{--tw-gradient-from: rgb(0 0 0 / .95) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.peer:checked~.peer-checked\:translate-x-5{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:bg-brand-500{--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}.dark\:divide-neutral-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(38 38 38 / var(--tw-divide-opacity, 1))}.dark\:border-brand-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(48 75 17 / var(--tw-border-opacity, 1))}.dark\:border-neutral-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:border-neutral-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.dark\:border-red-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/40:is(.dark *){background-color:#78350f66}.dark\:bg-brand-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.dark\:bg-brand-900\/20:is(.dark *){background-color:#304b1133}.dark\:bg-brand-900\/40:is(.dark *){background-color:#304b1166}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/40:is(.dark *){background-color:#14532d66}.dark\:bg-neutral-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-800\/50:is(.dark *){background-color:#26262680}.dark\:bg-neutral-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-900\/40:is(.dark *){background-color:#17171766}.dark\:bg-neutral-900\/95:is(.dark *){background-color:#171717f2}.dark\:bg-neutral-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-950\/90:is(.dark *){background-color:#0a0a0ae6}.dark\:bg-neutral-950\/95:is(.dark *){background-color:#0a0a0af2}.dark\:bg-red-900\/10:is(.dark *){background-color:#7f1d1d1a}.dark\:bg-red-900\/20:is(.dark *){background-color:#7f1d1d33}.dark\:bg-red-900\/40:is(.dark *){background-color:#7f1d1d66}.dark\:bg-slate-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-brand-200:is(.dark *){--tw-text-opacity: 1;color:rgb(211 238 180 / var(--tw-text-opacity, 1))}.dark\:text-brand-300:is(.dark *){--tw-text-opacity: 1;color:rgb(182 227 130 / var(--tw-text-opacity, 1))}.dark\:text-brand-400:is(.dark *){--tw-text-opacity: 1;color:rgb(146 212 68 / var(--tw-text-opacity, 1))}.dark\:text-brand-400\/10:is(.dark *){color:#92d4441a}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.dark\:text-neutral-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:text-neutral-500:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.dark\:text-neutral-600:is(.dark *){--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:shadow-black\/40:is(.dark *){--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:ring-neutral-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(82 82 82 / var(--tw-ring-opacity, 1))}.dark\:ring-neutral-900:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(23 23 23 / var(--tw-ring-opacity, 1))}.dark\:hover\:border-neutral-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-brand-900\/20:hover:is(.dark *){background-color:#304b1133}.dark\:hover\:bg-neutral-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-neutral-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-neutral-800\/50:hover:is(.dark *){background-color:#26262680}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}@media (min-width: 640px){.sm\:left-4{left:1rem}.sm\:left-8{left:2rem}.sm\:right-4{right:1rem}.sm\:top-\[65px\]{top:65px}.sm\:-mt-\[97px\]{margin-top:-97px}.sm\:block{display:block}.sm\:hidden{display:none}.sm\:h-16{height:4rem}.sm\:h-20{height:5rem}.sm\:min-h-\[640px\]{min-height:640px}.sm\:min-h-\[85vh\]{min-height:85vh}.sm\:w-72{width:18rem}.sm\:w-auto{width:auto}.sm\:flex-none{flex:none}.sm\:shrink-0{flex-shrink:0}.sm\:basis-\[210px\]{flex-basis:210px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-\[1fr_120px\]{grid-template-columns:1fr 120px}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:p-10{padding:2.5rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\:py-\[34px\]{padding-top:34px;padding-bottom:34px}.sm\:pl-8{padding-left:2rem}.sm\:pl-\[52px\]{padding-left:52px}.sm\:pt-14{padding-top:3.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-\[46px\]{font-size:46px}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 641px){.min-\[641px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.min-\[641px\]\:border-b-0{border-bottom-width:0px}.min-\[641px\]\:border-r{border-right-width:1px}.min-\[641px\]\:last\:border-r-0:last-child{border-right-width:0px}}@media (min-width: 768px){.md\:order-1{order:1}.md\:order-2{order:2}.md\:mx-0{margin-left:0;margin-right:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-left{text-align:left}}@media (min-width: 901px){.min-\[901px\]\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 981px){.min-\[981px\]\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr)}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:w-80{width:20rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:text-\[60px\]{font-size:60px}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none} diff --git a/hifi/assets/index-DK8bkdcK.css b/hifi/assets/index-DK8bkdcK.css deleted file mode 100644 index 291a943..0000000 --- a/hifi/assets/index-DK8bkdcK.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-5{bottom:-1.25rem}.-left-1\/3{left:-33.333333%}.-right-1{right:-.25rem}.-right-\[60px\]{right:-60px}.-top-1{top:-.25rem}.-top-3{top:-.75rem}.-top-\[60px\]{top:-60px}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3\.5{left:.875rem}.left-5{left:1.25rem}.left-6{left:1.5rem}.left-\[14px\]{left:14px}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-8{top:2rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[200\]{z-index:200}.z-\[60\]{z-index:60}.order-1{order:1}.order-2{order:2}.col-span-full{grid-column:1 / -1}.mx-auto{margin-left:auto;margin-right:auto}.-mt-\[89px\]{margin-top:-89px}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-3{margin-right:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-6{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-square{aspect-ratio:1 / 1}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[17px\]{height:17px}.h-\[18px\]{height:18px}.h-\[190px\]{height:190px}.h-\[210px\]{height:210px}.h-\[22px\]{height:22px}.h-\[46px\]{height:46px}.h-dvh{height:100dvh}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:16rem}.max-h-\[85vh\]{max-height:85vh}.min-h-\[420px\]{min-height:420px}.min-h-\[560px\]{min-height:560px}.min-h-\[70vh\]{min-height:70vh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[17px\]{width:17px}.w-\[18px\]{width:18px}.w-\[190px\]{width:190px}.w-\[22px\]{width:22px}.w-\[230px\]{width:230px}.w-\[46px\]{width:46px}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-\[190px\]{min-width:190px}.min-w-\[220px\]{min-width:220px}.min-w-\[240px\]{min-width:240px}.min-w-\[9rem\]{min-width:9rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[160px\]{max-width:160px}.max-w-\[1880px\]{max-width:1880px}.max-w-\[240px\]{max-width:240px}.max-w-\[520px\]{max-width:520px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-\[190px\]{flex-basis:190px}.origin-left{transform-origin:left}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-12{--tw-rotate: 12deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.touch-pan-y{--tw-pan-y: pan-y;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-start{scroll-snap-align:start}.snap-center{scroll-snap-align:center}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[18px\]{gap:18px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(4rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-neutral-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(245 245 245 / var(--tw-divide-opacity, 1))}.divide-neutral-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 229 229 / var(--tw-divide-opacity, 1))}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[18px\]{border-radius:18px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0px}.border-\[1\.5px\]{border-width:1.5px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-brand-300{--tw-border-opacity: 1;border-color:rgb(182 227 130 / var(--tw-border-opacity, 1))}.border-brand-500{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.border-neutral-100{--tw-border-opacity: 1;border-color:rgb(245 245 245 / var(--tw-border-opacity, 1))}.border-neutral-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.border-neutral-300{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/55{background-color:#0000008c}.bg-black\/60{background-color:#0009}.bg-black\/90{background-color:#000000e6}.bg-brand-100{--tw-bg-opacity: 1;background-color:rgb(233 246 218 / var(--tw-bg-opacity, 1))}.bg-brand-400{--tw-bg-opacity: 1;background-color:rgb(146 212 68 / var(--tw-bg-opacity, 1))}.bg-brand-50{--tw-bg-opacity: 1;background-color:rgb(245 251 238 / var(--tw-bg-opacity, 1))}.bg-brand-500{--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.bg-brand-500\/60{background-color:#6ba62699}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-neutral-100{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.bg-neutral-200{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.bg-neutral-300{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.bg-neutral-400{--tw-bg-opacity: 1;background-color:rgb(163 163 163 / var(--tw-bg-opacity, 1))}.bg-neutral-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.bg-neutral-900\/10{background-color:#1717171a}.bg-neutral-900\/85{background-color:#171717d9}.bg-neutral-950{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/40{background-color:#fef2f266}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/90{background-color:#ffffffe6}.bg-white\/95{background-color:#fffffff2}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/85{--tw-gradient-from: rgb(0 0 0 / .85) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-neutral-950{--tw-gradient-from: #0a0a0a var(--tw-gradient-from-position);--tw-gradient-to: rgb(10 10 10 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-black\/10{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / .1) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-neutral-950\/80{--tw-gradient-to: rgb(10 10 10 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(10 10 10 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/40{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-neutral-950\/40{--tw-gradient-to: rgb(10 10 10 / .4) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[22px\]{padding:22px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[22px\]{padding-top:22px;padding-bottom:22px}.py-\[26px\]{padding-top:26px;padding-bottom:26px}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-\[42px\]{padding-left:42px}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[34px\]{font-size:34px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-\[1\.08\]{line-height:1.08}.leading-\[1\.4\]{line-height:1.4}.leading-\[1\.55\]{line-height:1.55}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-\[2px\]{letter-spacing:2px}.tracking-\[3px\]{letter-spacing:3px}.tracking-\[6px\]{letter-spacing:6px}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-brand-400{--tw-text-opacity: 1;color:rgb(146 212 68 / var(--tw-text-opacity, 1))}.text-brand-500{--tw-text-opacity: 1;color:rgb(107 166 38 / var(--tw-text-opacity, 1))}.text-brand-500\/10{color:#6ba6261a}.text-brand-600{--tw-text-opacity: 1;color:rgb(88 137 31 / var(--tw-text-opacity, 1))}.text-brand-700{--tw-text-opacity: 1;color:rgb(72 112 26 / var(--tw-text-opacity, 1))}.text-brand-800{--tw-text-opacity: 1;color:rgb(59 91 21 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.text-neutral-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.text-neutral-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-neutral-800{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-white\/80{color:#fffc}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_-8px_24px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow: 0 -8px 24px rgba(0,0,0,.08);--tw-shadow-colored: 0 -8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(107\,166\,38\,0\.7\)\]{--tw-shadow: 0 0 10px rgba(107,166,38,.7);--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-brand-500\/30{--tw-shadow-color: rgb(107 166 38 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-neutral-900\/20{--tw-shadow-color: rgb(23 23 23 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-brand-500\/40{--tw-ring-color: rgb(107 166 38 / .4)}.ring-neutral-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(212 212 212 / var(--tw-ring-opacity, 1))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.ring-white\/50{--tw-ring-color: rgb(255 255 255 / .5)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\,box-shadow\]{transition-property:filter,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-transform{will-change:transform}.\[scrollbar-width\:none\]{scrollbar-width:none}html{scroll-behavior:smooth}.marquee-viewport{-webkit-mask-image:linear-gradient(to right,transparent,black 6%,black 94%,transparent);mask-image:linear-gradient(to right,transparent,black 6%,black 94%,transparent)}.page-texture{background-color:#f6f5f0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px}.dark .page-texture{background-color:#0a0b07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.14 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.kf-page{--kf-pagebg: linear-gradient(120deg, #eef0ea 0%, #f6f8f3 45%, #fbfcf9 100%);--kf-card: #ffffff;--kf-cardbrd: #e4e8dc;--kf-text: #23271d;--kf-text2: #2a2e24;--kf-muted: #6c7360;--kf-label: #838a72;--kf-field: #fafcf6;--kf-fieldbrd: #dde2d3;--kf-fieldicon: #a7ad9d;--kf-accent: #a4d417;--kf-accent2: #8ec21a;--kf-accentsoft: #f2f8df;--kf-pill: #ffffff;--kf-pillbrd: #dfe4d6;--kf-shadow: 0 24px 60px rgba(60, 70, 40, .08);--kf-shadow2: 0 16px 40px rgba(60, 70, 40, .06);--kf-divider: #e8ecdf;--kf-topo: #d7dccd;--kf-pkgbg: #f4fbe4;--kf-pkgbrd: #cfe89a;--kf-btntext: #1f2417;--kf-scrim: linear-gradient(90deg, rgba(244, 246, 241, .35) 0%, rgba(244, 246, 241, .55) 55%, rgba(246, 248, 243, 1) 100%)}.dark .kf-page{--kf-pagebg: linear-gradient(120deg, #181b0f 0%, #111409 45%, #0a0c06 100%);--kf-card: #14170e;--kf-cardbrd: rgba(168, 225, 12, .16);--kf-text: #f3f6ea;--kf-text2: #e8ece0;--kf-muted: #9aa38c;--kf-label: #8f987f;--kf-field: rgba(0, 0, 0, .35);--kf-fieldbrd: #2c3323;--kf-fieldicon: #5f6852;--kf-accent: #a8e10c;--kf-accent2: #b6e619;--kf-accentsoft: rgba(168, 225, 12, .1);--kf-pill: #14170e;--kf-pillbrd: rgba(168, 225, 12, .28);--kf-shadow: 0 24px 60px rgba(0, 0, 0, .55);--kf-shadow2: 0 16px 40px rgba(0, 0, 0, .45);--kf-divider: rgba(168, 225, 12, .15);--kf-pkgbg: rgba(168, 225, 12, .08);--kf-pkgbrd: rgba(168, 225, 12, .4);--kf-btntext: #0f1208}.kontakt-sektion{background-image:url(/assets/bg-light-C_7mxjWZ.png);background-size:cover;background-position:center}.dark .kontakt-sektion{background-image:url(/assets/bg-dark-DX_vTCv2.png)}.kf-page input::-moz-placeholder,.kf-page textarea::-moz-placeholder{color:var(--kf-fieldicon)}.kf-page input::placeholder,.kf-page textarea::placeholder{color:var(--kf-fieldicon)}.kf-page input:focus,.kf-page textarea:focus{border-color:var(--kf-accent)!important;box-shadow:0 0 0 3px #a4d41733}.grain-band{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px}.dark .grain-band{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.14 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}html.hifi-cursor-on,html.hifi-cursor-on *{cursor:none!important}html.hifi-cursor-on :is(input,textarea,[contenteditable=true]){cursor:auto!important}.hifi-cursor{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:99999;opacity:1;transition:opacity .2s ease}.hifi-cursor[data-hidden=true]{opacity:0}.hifi-cursor__core{position:fixed;top:0;left:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:9999px;background:#7fd44a;box-shadow:0 0 0 1.5px #ffffffe6,0 0 10px #7fd44abf;transition:width .18s ease,height .18s ease,margin .18s ease,background-color .18s ease,opacity .15s ease}.hifi-cursor__orbit{position:fixed;top:0;left:0;opacity:0;transition:opacity .18s ease}.hifi-cursor__ring{position:absolute;width:38px;height:15px;margin:-7.5px 0 0 -19px;border:1px solid rgba(139,234,60,.85);border-radius:50%;transform:rotate(-24deg) scale(.6);transition:transform .22s ease}.hifi-cursor__sat{position:absolute;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:9999px;background:#eaffdb;box-shadow:0 0 6px #8bea3ce6}.hifi-cursor[data-state=hover] .hifi-cursor__orbit{opacity:1}.hifi-cursor[data-state=hover] .hifi-cursor__core{width:16px;height:16px;margin:-8px 0 0 -8px;background:#8bea3c;box-shadow:0 0 0 1.5px #fffffff2,0 0 12px #8bea3cd9}.hifi-cursor[data-state=hover] .hifi-cursor__ring{transform:rotate(-24deg) scale(1.45)}.hifi-cursor[data-state=text] .hifi-cursor__core,.hifi-cursor[data-state=text] .hifi-cursor__orbit{opacity:0}.hifi-cursor[data-down=true] .hifi-cursor__core{width:20px;height:20px;margin:-10px 0 0 -10px}.hifi-cursor__pulse{position:fixed;top:0;left:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:9999px;border:1.5px solid rgba(139,234,60,.9);opacity:0}.hifi-cursor__pulse.is-live{animation:hifi-cursor-pulse .45s ease-out forwards}@keyframes hifi-cursor-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[var\(--kf-accent\)\]:hover{border-color:var(--kf-accent)}.hover\:border-brand-500:hover{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.hover\:border-neutral-400:hover{--tw-border-opacity: 1;border-color:rgb(163 163 163 / var(--tw-border-opacity, 1))}.hover\:bg-\[var\(--kf-accentsoft\)\]:hover{background-color:var(--kf-accentsoft)}.hover\:bg-brand-400:hover{--tw-bg-opacity: 1;background-color:rgb(146 212 68 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-50:hover{--tw-bg-opacity: 1;background-color:rgb(245 251 238 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-600:hover{--tw-bg-opacity: 1;background-color:rgb(88 137 31 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-100:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.hover\:bg-neutral-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:text-brand-500:hover{--tw-text-opacity: 1;color:rgb(107 166 38 / var(--tw-text-opacity, 1))}.hover\:text-brand-600:hover{--tw-text-opacity: 1;color:rgb(88 137 31 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-brand-500:focus{--tw-border-opacity: 1;border-color:rgb(107 166 38 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-brand-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 166 38 / var(--tw-ring-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:from-black\/95{--tw-gradient-from: rgb(0 0 0 / .95) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.peer:checked~.peer-checked\:translate-x-5{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:bg-brand-500{--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}.dark\:divide-neutral-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(38 38 38 / var(--tw-divide-opacity, 1))}.dark\:border-brand-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(48 75 17 / var(--tw-border-opacity, 1))}.dark\:border-neutral-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:border-neutral-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.dark\:border-red-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/40:is(.dark *){background-color:#78350f66}.dark\:bg-brand-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 166 38 / var(--tw-bg-opacity, 1))}.dark\:bg-brand-900\/20:is(.dark *){background-color:#304b1133}.dark\:bg-brand-900\/40:is(.dark *){background-color:#304b1166}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/40:is(.dark *){background-color:#14532d66}.dark\:bg-neutral-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-800\/50:is(.dark *){background-color:#26262680}.dark\:bg-neutral-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-900\/40:is(.dark *){background-color:#17171766}.dark\:bg-neutral-900\/95:is(.dark *){background-color:#171717f2}.dark\:bg-neutral-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-neutral-950\/90:is(.dark *){background-color:#0a0a0ae6}.dark\:bg-neutral-950\/95:is(.dark *){background-color:#0a0a0af2}.dark\:bg-red-900\/10:is(.dark *){background-color:#7f1d1d1a}.dark\:bg-red-900\/20:is(.dark *){background-color:#7f1d1d33}.dark\:bg-red-900\/40:is(.dark *){background-color:#7f1d1d66}.dark\:bg-slate-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-brand-200:is(.dark *){--tw-text-opacity: 1;color:rgb(211 238 180 / var(--tw-text-opacity, 1))}.dark\:text-brand-300:is(.dark *){--tw-text-opacity: 1;color:rgb(182 227 130 / var(--tw-text-opacity, 1))}.dark\:text-brand-400:is(.dark *){--tw-text-opacity: 1;color:rgb(146 212 68 / var(--tw-text-opacity, 1))}.dark\:text-brand-400\/10:is(.dark *){color:#92d4441a}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.dark\:text-neutral-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:text-neutral-500:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.dark\:text-neutral-600:is(.dark *){--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:shadow-black\/40:is(.dark *){--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:ring-neutral-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(82 82 82 / var(--tw-ring-opacity, 1))}.dark\:ring-neutral-900:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(23 23 23 / var(--tw-ring-opacity, 1))}.dark\:hover\:border-neutral-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-brand-900\/20:hover:is(.dark *){background-color:#304b1133}.dark\:hover\:bg-neutral-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-neutral-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-neutral-800\/50:hover:is(.dark *){background-color:#26262680}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}@media (min-width: 640px){.sm\:left-4{left:1rem}.sm\:left-8{left:2rem}.sm\:right-4{right:1rem}.sm\:top-\[65px\]{top:65px}.sm\:-mt-\[97px\]{margin-top:-97px}.sm\:block{display:block}.sm\:hidden{display:none}.sm\:h-16{height:4rem}.sm\:h-20{height:5rem}.sm\:min-h-\[640px\]{min-height:640px}.sm\:min-h-\[85vh\]{min-height:85vh}.sm\:w-72{width:18rem}.sm\:w-auto{width:auto}.sm\:flex-none{flex:none}.sm\:shrink-0{flex-shrink:0}.sm\:basis-\[210px\]{flex-basis:210px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-\[1fr_120px\]{grid-template-columns:1fr 120px}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:p-10{padding:2.5rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\:py-\[34px\]{padding-top:34px;padding-bottom:34px}.sm\:pl-8{padding-left:2rem}.sm\:pl-\[52px\]{padding-left:52px}.sm\:pt-14{padding-top:3.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-\[46px\]{font-size:46px}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 641px){.min-\[641px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.min-\[641px\]\:border-b-0{border-bottom-width:0px}.min-\[641px\]\:border-r{border-right-width:1px}.min-\[641px\]\:last\:border-r-0:last-child{border-right-width:0px}}@media (min-width: 768px){.md\:order-1{order:1}.md\:order-2{order:2}.md\:mx-0{margin-left:0;margin-right:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-left{text-align:left}}@media (min-width: 901px){.min-\[901px\]\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 981px){.min-\[981px\]\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr)}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:w-80{width:20rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:text-\[60px\]{font-size:60px}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none} diff --git a/hifi/index.html b/hifi/index.html index 1f4af85..b5bc698 100644 --- a/hifi/index.html +++ b/hifi/index.html @@ -43,9 +43,9 @@ "sameAs": ["https://www.youtube.com/@hifiplanet2812"] } - + - +