/*! For license information please see main.b58aaa04.js.LICENSE.txt */ (()=>{"use strict";var e={4:(e,t,n)=>{var r=n(853),a=n(43),i=n(950);function l(e){var t="https://react.dev/errors/"+e;if(1I||(e.current=D[I],D[I]=null,I--)}function B(e,t){I++,D[I]=e.current,e.current=t}var H,q,V=M(null),W=M(null),$=M(null),G=M(null);function Q(e,t){switch(B($,t),B(W,e),B(V,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=yd(t=vd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}U(V),B(V,e)}function K(){U(V),U(W),U($)}function Y(e){null!==e.memoizedState&&B(G,e);var t=V.current,n=yd(t,e.type);t!==n&&(B(W,e),B(V,n))}function X(e){W.current===e&&(U(V),U(W)),G.current===e&&(U(G),df._currentValue=R)}function J(e){if(void 0===H)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);H=t&&t[1]||"",q=-1)":-1--a||s[r]!==u[a]){var c="\n"+s[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{Z=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?J(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return J(e.type);case 16:return J("Lazy");case 13:return e.child!==t&&null!==t?J("Suspense Fallback"):J("Suspense");case 19:return J("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return J("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,ae=r.unstable_scheduleCallback,ie=r.unstable_cancelCallback,le=r.unstable_shouldYield,oe=r.unstable_requestPaint,se=r.unstable_now,ue=r.unstable_getCurrentPriorityLevel,ce=r.unstable_ImmediatePriority,de=r.unstable_UserBlockingPriority,fe=r.unstable_NormalPriority,he=r.unstable_LowPriority,pe=r.unstable_IdlePriority,me=r.log,ge=r.unstable_setDisableYieldValue,ve=null,ye=null;function be(e){if("function"===typeof me&&ge(e),ye&&"function"===typeof ye.setStrictMode)try{ye.setStrictMode(ve,e)}catch(t){}}var xe=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(we(e)/je|0)|0},we=Math.log,je=Math.LN2;var ke=256,Se=262144,Ne=4194304;function Ee(e){var t=42&e;if(0!==t)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ce(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,i=e.suspendedLanes,l=e.pingedLanes;e=e.warmLanes;var o=134217727&r;return 0!==o?0!==(r=o&~i)?a=Ee(r):0!==(l&=o)?a=Ee(l):n||0!==(n=o&~e)&&(a=Ee(n)):0!==(o=r&~i)?a=Ee(o):0!==l?a=Ee(l):n||0!==(n=r&~e)&&(a=Ee(n)),0===a?0:0!==t&&t!==a&&0===(t&i)&&((i=a&-a)>=(n=t&-t)||32===i&&0!==(4194048&n))?t:a}function Te(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Pe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function _e(){var e=Ne;return 0===(62914560&(Ne<<=1))&&(Ne=4194304),e}function Oe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Le(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Fe(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-xe(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Ae(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-xe(n),a=1<=En),Pn=String.fromCharCode(32),_n=!1;function On(e,t){switch(e){case"keyup":return-1!==Sn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ln(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var Fn=!1;var An={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!An[e.type]:"textarea"===t}function Rn(e,t,n,r){zt?Rt?Rt.push(r):Rt=[r]:zt=r,0<(t=rd(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Dn=null,In=null;function Mn(e){Kc(e,0)}function Un(e){if(pt(Je(e)))return e}function Bn(e,t){if("change"===e)return t}var Hn=!1;if(Bt){var qn;if(Bt){var Vn="oninput"in document;if(!Vn){var Wn=document.createElement("div");Wn.setAttribute("oninput","return;"),Vn="function"===typeof Wn.oninput}qn=Vn}else qn=!1;Hn=qn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=mt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=mt((e=t.contentWindow).document)}return t}function ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var ir=Bt&&"documentMode"in document&&11>=document.documentMode,lr=null,or=null,sr=null,ur=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;ur||null==lr||lr!==mt(r)||("selectionStart"in(r=lr)&&ar(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sr&&Zn(sr,r)||(sr=r,0<(r=rd(or,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=lr)))}function dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var fr={animationend:dr("Animation","AnimationEnd"),animationiteration:dr("Animation","AnimationIteration"),animationstart:dr("Animation","AnimationStart"),transitionrun:dr("Transition","TransitionRun"),transitionstart:dr("Transition","TransitionStart"),transitioncancel:dr("Transition","TransitionCancel"),transitionend:dr("Transition","TransitionEnd")},hr={},pr={};function mr(e){if(hr[e])return hr[e];if(!fr[e])return e;var t,n=fr[e];for(t in n)if(n.hasOwnProperty(t)&&t in pr)return hr[e]=n[t];return e}Bt&&(pr=document.createElement("div").style,"AnimationEvent"in window||(delete fr.animationend.animation,delete fr.animationiteration.animation,delete fr.animationstart.animation),"TransitionEvent"in window||delete fr.transitionend.transition);var gr=mr("animationend"),vr=mr("animationiteration"),yr=mr("animationstart"),br=mr("transitionrun"),xr=mr("transitionstart"),wr=mr("transitioncancel"),jr=mr("transitionend"),kr=new Map,Sr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Nr(e,t){kr.set(e,t),rt(t,[e])}Sr.push("scrollEnd");var Er="function"===typeof reportError?reportError:function(e){if("object"===typeof window&&"function"===typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"===typeof e&&null!==e&&"string"===typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"===typeof process&&"function"===typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Cr=[],Tr=0,Pr=0;function _r(){for(var e=Tr,t=Pr=Tr=0;t>=l,a-=l,na=1<<32-xe(t)+a|n<m?(g=d,d=null):g=d.sibling;var v=h(a,d,o[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),l=i(v,l,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===o.length)return n(a,d),da&&aa(a,m),u;if(null===d){for(;mg?(v=m,m=null):v=m.sibling;var b=h(a,m,y.value,u);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(a,m),o=i(b,o,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(a,m),da&&aa(a,g),c;if(null===m){for(;!y.done;g++,y=s.next())null!==(y=f(a,y.value,u))&&(o=i(y,o,g),null===d?c=y:d.sibling=y,d=y);return da&&aa(a,g),c}for(m=r(m);!y.done;g++,y=s.next())null!==(y=p(m,a,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),o=i(y,o,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach(function(e){return t(a,e)}),da&&aa(a,g),c}(s,u,c=b.call(c),d)}if("function"===typeof c.then)return y(s,u,ui(c),d);if(c.$$typeof===w)return y(s,u,Fa(s,c),d);di(s,c)}return"string"===typeof c&&""!==c||"number"===typeof c||"bigint"===typeof c?(c=""+c,null!==u&&6===u.tag?(n(s,u.sibling),(d=a(u,c)).return=s,s=d):(n(s,u),(d=Vr(c,s.mode,d)).return=s,s=d),o(s)):n(s,u)}return function(e,t,n,r){try{si=0;var a=y(e,t,n,r);return oi=null,a}catch(l){if(l===Xa||l===Za)throw l;var i=Ir(29,l,null,e.mode);return i.lanes=r,i.return=e,i}}}var hi=fi(!0),pi=fi(!1),mi=!1;function gi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function yi(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function bi(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!==(2&hu)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,t=zr(e),Ar(e,null,n),t}return Or(e,r,t,n),zr(e)}function xi(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!==(4194048&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Ae(e,n)}}function wi(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,i=null;if(null!==(n=n.firstBaseUpdate)){do{var l={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===i?a=i=l:i=i.next=l,n=n.next}while(null!==n);null===i?a=i=t:i=i.next=t}else a=i=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:i,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var ji=!1;function ki(){if(ji){if(null!==Va)throw Va}}function Si(e,t,n,r){ji=!1;var a=e.updateQueue;mi=!1;var i=a.firstBaseUpdate,l=a.lastBaseUpdate,o=a.shared.pending;if(null!==o){a.shared.pending=null;var s=o,u=s.next;s.next=null,null===l?i=u:l.next=u,l=s;var c=e.alternate;null!==c&&((o=(c=c.updateQueue).lastBaseUpdate)!==l&&(null===o?c.firstBaseUpdate=u:o.next=u,c.lastBaseUpdate=s))}if(null!==i){var d=a.baseState;for(l=0,c=u=s=null,o=i;;){var f=-536870913&o.lane,p=f!==o.lane;if(p?(gu&f)===f:(r&f)===f){0!==f&&f===qa&&(ji=!0),null!==c&&(c=c.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});e:{var m=e,g=o;f=t;var v=n;switch(g.tag){case 1:if("function"===typeof(m=g.payload)){d=m.call(v,d,f);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null===(f="function"===typeof(m=g.payload)?m.call(v,d,f):m)||void 0===f)break e;d=h({},d,f);break e;case 2:mi=!0}}null!==(f=o.callback)&&(e.flags|=64,p&&(e.flags|=8192),null===(p=a.callbacks)?a.callbacks=[f]:p.push(f))}else p={lane:f,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===c?(u=c=p,s=d):c=c.next=p,l|=f;if(null===(o=o.next)){if(null===(o=a.shared.pending))break;o=(p=o).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null===i&&(a.shared.lanes=0),Su|=l,e.lanes=l,e.memoizedState=d}}function Ni(e,t){if("function"!==typeof e)throw Error(l(191,e));e.call(t)}function Ei(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ei?i:8;var l=A.T,o={};A.T=o,co(e,!1,t,n);try{var s=a(),u=A.S;if(null!==u&&u(o,s),null!==s&&"object"===typeof s&&"function"===typeof s.then)uo(e,t,function(e,t){var n=[],r={status:"pending",value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status="fulfilled",r.value=t;for(var e=0;e<\/script>",i=i.removeChild(i.firstChild);break;case"select":i="string"===typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?i.multiple=!0:r.size&&(i.size=r.size);break;default:i="string"===typeof r.is?o.createElement(a,{is:r.is}):o.createElement(a)}}i[Be]=t,i[He]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)i.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=i;e:switch(fd(i,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&os(t)}}return fs(t),ss(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&os(t);else{if("string"!==typeof r&&null===t.stateNode)throw Error(l(166));if(e=$.current,ya(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=ua))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Be]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ud(e.nodeValue,n)))||ma(t,!0)}else(e=gd(e).createTextNode(r))[Be]=t,t.stateNode=e}return fs(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=ya(t),null!==n){if(null===e){if(!r)throw Error(l(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(l(557));e[Be]=t}else ba(),0===(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),e=!1}else n=xa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(Ii(t),t):(Ii(t),null);if(0!==(128&t.flags))throw Error(l(558))}return fs(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=ya(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(l(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(l(317));a[Be]=t}else ba(),0===(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),a=!1}else a=xa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(Ii(t),t):(Ii(t),null)}return Ii(t),0!==(128&t.flags)?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),i=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(i=r.memoizedState.cachePool.pool),i!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cs(t,t.updateQueue),fs(t),null);case 4:return K(),null===e&&Zc(t.stateNode.containerInfo),fs(t),null;case 10:return Ea(t.type),fs(t),null;case 19:if(U(Mi),null===(r=t.memoizedState))return fs(t),null;if(a=0!==(128&t.flags),null===(i=r.rendering))if(a)ds(r,!1);else{if(0!==ku||null!==e&&0!==(128&e.flags))for(e=t.child;null!==e;){if(null!==(i=Ui(e))){for(t.flags|=128,ds(r,!1),e=i.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Br(n,e),n=n.sibling;return B(Mi,1&Mi.current|2),da&&aa(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&se()>Au&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=Ui(i))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),ds(r,!0),null===r.tail&&"hidden"===r.tailMode&&!i.alternate&&!da)return fs(t),null}else 2*se()-r.renderingStartTime>Au&&536870912!==n&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304);r.isBackwards?(i.sibling=t.child,t.child=i):(null!==(e=r.last)?e.sibling=i:t.child=i,r.last=i)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=se(),e.sibling=null,n=Mi.current,B(Mi,a?1&n|2:1&n),da&&aa(t,r.treeForkCount),e):(fs(t),null);case 22:case 23:return Ii(t),Oi(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!==(536870912&n)&&0===(128&t.flags)&&(fs(t),6&t.subtreeFlags&&(t.flags|=8192)):fs(t),null!==(n=t.updateQueue)&&cs(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&U(Ga),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ea(Ia),fs(t),null;case 25:case 30:return null}throw Error(l(156,t.tag))}function ps(e,t){switch(oa(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Ea(Ia),K(),0!==(65536&(e=t.flags))&&0===(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return X(t),null;case 31:if(null!==t.memoizedState){if(Ii(t),null===t.alternate)throw Error(l(340));ba()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(Ii(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(l(340));ba()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return U(Mi),null;case 4:return K(),null;case 10:return Ea(t.type),null;case 22:case 23:return Ii(t),Oi(),null!==e&&U(Ga),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Ea(Ia),null;default:return null}}function ms(e,t){switch(oa(t),t.tag){case 3:Ea(Ia),K();break;case 26:case 27:case 5:X(t);break;case 4:K();break;case 31:null!==t.memoizedState&&Ii(t);break;case 13:Ii(t);break;case 19:U(Mi);break;case 10:Ea(t.type);break;case 22:case 23:Ii(t),Oi(),null!==e&&U(Ga);break;case 24:Ea(Ia)}}function gs(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var a=r.next;n=a;do{if((n.tag&e)===e){r=void 0;var i=n.create,l=n.inst;r=i(),l.destroy=r}n=n.next}while(n!==a)}}catch(o){kc(t,t.return,o)}}function vs(e,t,n){try{var r=t.updateQueue,a=null!==r?r.lastEffect:null;if(null!==a){var i=a.next;r=i;do{if((r.tag&e)===e){var l=r.inst,o=l.destroy;if(void 0!==o){l.destroy=void 0,a=t;var s=n,u=o;try{u()}catch(c){kc(a,s,c)}}}r=r.next}while(r!==i)}}catch(c){kc(t,t.return,c)}}function ys(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Ei(t,n)}catch(r){kc(e,e.return,r)}}}function bs(e,t,n){n.props=ko(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){kc(e,t,r)}}function xs(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"===typeof n?e.refCleanup=n(r):n.current=r}}catch(a){kc(e,t,a)}}function ws(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"===typeof r)try{r()}catch(a){kc(e,t,a)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"===typeof n)try{n(null)}catch(i){kc(e,t,i)}else n.current=null}function js(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(a){kc(e,e.return,a)}}function ks(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,i=null,o=null,s=null,u=null,c=null,d=null;for(p in n){var f=n[p];if(n.hasOwnProperty(p)&&null!=f)switch(p){case"checked":case"value":break;case"defaultValue":u=f;default:r.hasOwnProperty(p)||cd(e,t,p,null,r,f)}}for(var h in r){var p=r[h];if(f=n[h],r.hasOwnProperty(h)&&(null!=p||null!=f))switch(h){case"type":i=p;break;case"name":a=p;break;case"checked":c=p;break;case"defaultChecked":d=p;break;case"value":o=p;break;case"defaultValue":s=p;break;case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(l(137,t));break;default:p!==f&&cd(e,t,h,p,r,f)}}return void yt(e,o,s,u,c,d,i,a);case"select":for(i in p=o=s=h=null,n)if(u=n[i],n.hasOwnProperty(i)&&null!=u)switch(i){case"value":break;case"multiple":p=u;default:r.hasOwnProperty(i)||cd(e,t,i,null,r,u)}for(a in r)if(i=r[a],u=n[a],r.hasOwnProperty(a)&&(null!=i||null!=u))switch(a){case"value":h=i;break;case"defaultValue":s=i;break;case"multiple":o=i;default:i!==u&&cd(e,t,a,i,r,u)}return t=s,n=o,r=p,void(null!=h?wt(e,!!n,h,!1):!!r!==!!n&&(null!=t?wt(e,!!n,t,!0):wt(e,!!n,n?[]:"",!1)));case"textarea":for(s in p=h=null,n)if(a=n[s],n.hasOwnProperty(s)&&null!=a&&!r.hasOwnProperty(s))switch(s){case"value":case"children":break;default:cd(e,t,s,null,r,a)}for(o in r)if(a=r[o],i=n[o],r.hasOwnProperty(o)&&(null!=a||null!=i))switch(o){case"value":h=a;break;case"defaultValue":p=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(l(91));break;default:a!==i&&cd(e,t,o,a,r,i)}return void jt(e,h,p);case"option":for(var m in n)if(h=n[m],n.hasOwnProperty(m)&&null!=h&&!r.hasOwnProperty(m))if("selected"===m)e.selected=!1;else cd(e,t,m,null,r,h);for(u in r)if(h=r[u],p=n[u],r.hasOwnProperty(u)&&h!==p&&(null!=h||null!=p))if("selected"===u)e.selected=h&&"function"!==typeof h&&"symbol"!==typeof h;else cd(e,t,u,h,r,p);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)h=n[g],n.hasOwnProperty(g)&&null!=h&&!r.hasOwnProperty(g)&&cd(e,t,g,null,r,h);for(c in r)if(h=r[c],p=n[c],r.hasOwnProperty(c)&&h!==p&&(null!=h||null!=p))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(l(137,t));break;default:cd(e,t,c,h,r,p)}return;default:if(Tt(t)){for(var v in n)h=n[v],n.hasOwnProperty(v)&&void 0!==h&&!r.hasOwnProperty(v)&&dd(e,t,v,void 0,r,h);for(d in r)h=r[d],p=n[d],!r.hasOwnProperty(d)||h===p||void 0===h&&void 0===p||dd(e,t,d,h,r,p);return}}for(var y in n)h=n[y],n.hasOwnProperty(y)&&null!=h&&!r.hasOwnProperty(y)&&cd(e,t,y,null,r,h);for(f in r)h=r[f],p=n[f],!r.hasOwnProperty(f)||h===p||null==h&&null==p||cd(e,t,f,h,r,p)}(r,e.type,n,t),r[He]=t}catch(a){kc(e,e.return,a)}}function Ss(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ed(e.type)||4===e.tag}function Ns(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Ss(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ed(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function Es(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=Lt));else if(4!==r&&(27===r&&Ed(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(Es(e,t,n),e=e.sibling;null!==e;)Es(e,t,n),e=e.sibling}function Cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ed(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Cs(e,t,n),e=e.sibling;null!==e;)Cs(e,t,n),e=e.sibling}function Ts(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);fd(t,r,n),t[Be]=e,t[He]=n}catch(i){kc(e,e.return,i)}}var Ps=!1,_s=!1,Os=!1,Ls="function"===typeof WeakSet?WeakSet:Set,Fs=null;function As(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Qs(e,n),4&r&&gs(5,n);break;case 1:if(Qs(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(l){kc(n,n.return,l)}else{var a=ko(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(a,t,e.__reactInternalSnapshotBeforeUpdate)}catch(o){kc(n,n.return,o)}}64&r&&ys(n),512&r&&xs(n,n.return);break;case 3:if(Qs(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Ei(e,t)}catch(l){kc(n,n.return,l)}}break;case 27:null===t&&4&r&&Ts(n);case 26:case 5:Qs(e,n),null===t&&4&r&&js(n),512&r&&xs(n,n.return);break;case 12:Qs(e,n);break;case 31:Qs(e,n),4&r&&Us(e,n);break;case 13:Qs(e,n),4&r&&Bs(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Cc.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||Ps)){t=null!==t&&null!==t.memoizedState||_s,a=Ps;var i=_s;Ps=r,(_s=t)&&!i?Ys(e,n,0!==(8772&n.subtreeFlags)):Qs(e,n),Ps=a,_s=i}break;case 30:break;default:Qs(e,n)}}function zs(e){var t=e.alternate;null!==t&&(e.alternate=null,zs(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Ke(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Rs=null,Ds=!1;function Is(e,t,n){for(n=n.child;null!==n;)Ms(e,t,n),n=n.sibling}function Ms(e,t,n){if(ye&&"function"===typeof ye.onCommitFiberUnmount)try{ye.onCommitFiberUnmount(ve,n)}catch(i){}switch(n.tag){case 26:_s||ws(n,t),Is(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:_s||ws(n,t);var r=Rs,a=Ds;Ed(n.type)&&(Rs=n.stateNode,Ds=!1),Is(e,t,n),Id(n.stateNode),Rs=r,Ds=a;break;case 5:_s||ws(n,t);case 6:if(r=Rs,a=Ds,Rs=null,Is(e,t,n),Ds=a,null!==(Rs=r))if(Ds)try{(9===Rs.nodeType?Rs.body:"HTML"===Rs.nodeName?Rs.ownerDocument.body:Rs).removeChild(n.stateNode)}catch(l){kc(n,t,l)}else try{Rs.removeChild(n.stateNode)}catch(l){kc(n,t,l)}break;case 18:null!==Rs&&(Ds?(Cd(9===(e=Rs).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Wf(e)):Cd(Rs,n.stateNode));break;case 4:r=Rs,a=Ds,Rs=n.stateNode.containerInfo,Ds=!0,Is(e,t,n),Rs=r,Ds=a;break;case 0:case 11:case 14:case 15:vs(2,n,t),_s||vs(4,n,t),Is(e,t,n);break;case 1:_s||(ws(n,t),"function"===typeof(r=n.stateNode).componentWillUnmount&&bs(n,t,r)),Is(e,t,n);break;case 21:Is(e,t,n);break;case 22:_s=(r=_s)||null!==n.memoizedState,Is(e,t,n),_s=r;break;default:Is(e,t,n)}}function Us(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{Wf(e)}catch(n){kc(t,t.return,n)}}}function Bs(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Wf(e)}catch(n){kc(t,t.return,n)}}function Hs(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ls),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ls),t;default:throw Error(l(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Tc.bind(null,e,t);t.then(r,r)}})}function qs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r title"))),fd(i,r,n),i[Be]=e,et(i),r=i;break e;case"link":var o=nf("link","href",a).get(r+(n.href||""));if(o)for(var s=0;so)break;var c=s.transferSize,d=s.initiatorType;c&&hd(d)&&(l+=c*((s=s.responseEnd)lf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(a)}}:null}(d,p)))return Uu=i,e.cancelPendingCommit=p(mc.bind(null,e,t,i,n,r,a,l,o,s,c,d,null,f,h)),void Ju(e,i,l,!u)}mc(e,t,i,n,r,a,l,o,s)}function Xu(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;rg&&(l=g,g=m,m=l);var v=tr(o,m),y=tr(o,g);if(v&&y&&(1!==h.rangeCount||h.anchorNode!==v.node||h.anchorOffset!==v.offset||h.focusNode!==y.node||h.focusOffset!==y.offset)){var b=d.createRange();b.setStart(v.node,v.offset),h.removeAllRanges(),m>g?(h.addRange(b),h.extend(y.node,y.offset)):(b.setEnd(y.node,y.offset),h.addRange(b))}}}}for(d=[],h=o;h=h.parentNode;)1===h.nodeType&&d.push({element:h,left:h.scrollLeft,top:h.scrollTop});for("function"===typeof o.focus&&o.focus(),o=0;on?32:n,A.T=null,n=Hu,Hu=null;var i=Iu,o=Uu;if(Du=0,Mu=Iu=null,Uu=0,0!==(6&hu))throw Error(l(331));var s=hu;if(hu|=4,su(i.current),eu(i,i.current,o,n),hu=s,Rc(0,!1),ye&&"function"===typeof ye.onPostCommitFiberRoot)try{ye.onPostCommitFiberRoot(ve,i)}catch(u){}return!0}finally{z.p=a,A.T=r,bc(e,t)}}function jc(e,t,n){t=Qr(n,t),null!==(e=bi(e,t=Po(e.stateNode,t,2),2))&&(Le(e,2),zc(e))}function kc(e,t,n){if(3===e.tag)jc(e,e,n);else for(;null!==t;){if(3===t.tag){jc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"===typeof t.type.getDerivedStateFromError||"function"===typeof r.componentDidCatch&&(null===Ru||!Ru.has(r))){e=Qr(n,e),null!==(r=bi(t,n=_o(2),2))&&(Oo(n,r,t,e),Le(r,2),zc(r));break}}t=t.return}}function Sc(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fu;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(wu=!0,a.add(n),e=Nc.bind(null,e,t,n),t.then(e,e))}function Nc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,pu===e&&(gu&n)===n&&(4===ku||3===ku&&(62914560&gu)===gu&&300>se()-Lu?0===(2&hu)&&tc(e,0):Eu|=n,Tu===gu&&(Tu=0)),zc(e)}function Ec(e,t){0===t&&(t=_e()),null!==(e=Fr(e,t))&&(Le(e,t),zc(e))}function Cc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ec(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(l(314))}null!==r&&r.delete(t),Ec(e,n)}var Pc=null,_c=null,Oc=!1,Lc=!1,Fc=!1,Ac=0;function zc(e){e!==_c&&null===e.next&&(null===_c?Pc=_c=e:_c=_c.next=e),Lc=!0,Oc||(Oc=!0,Sd(function(){0!==(6&hu)?ae(ce,Dc):Ic()}))}function Rc(e,t){if(!Fc&&Lc){Fc=!0;do{for(var n=!1,r=Pc;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var i=0;else{var l=r.suspendedLanes,o=r.pingedLanes;i=(1<<31-xe(42|e)+1)-1,i=201326741&(i&=a&~(l&~o))?201326741&i|1:i?2|i:0}0!==i&&(n=!0,Bc(r,i))}else i=gu,0===(3&(i=Ce(r,r===pu?i:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Te(r,i)||(n=!0,Bc(r,i));r=r.next}}while(n);Fc=!1}}function Dc(){Ic()}function Ic(){Lc=Oc=!1;var e=0;0!==Ac&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==xd&&(xd=e,!0);return xd=null,!1}()&&(e=Ac);for(var t=se(),n=null,r=Pc;null!==r;){var a=r.next,i=Mc(r,t);0===i?(r.next=null,null===n?Pc=a:n.next=a,null===a&&(_c=n)):(n=r,(0!==e||0!==(3&i))&&(Lc=!0)),r=a}0!==Du&&5!==Du||Rc(e,!1),0!==Ac&&(Ac=0)}function Mc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,i=-62914561&e.pendingLanes;0 title"):null)}function af(e){return"stylesheet"!==e.type||0!==(3&e.state.loading)}var lf=0;function of(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)uf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var sf=null;function uf(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sf=new Map,t.forEach(cf,e),sf=null,of.call(e))}function cf(e,t){if(!(4&t.state.loading)){var n=sf.get(e);if(n)var r=n.get(null);else{n=new Map,sf.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i{e.exports=n(288)},288:(e,t)=>{var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),p=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||m}function b(){}function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=x.prototype=new b;w.constructor=x,g(w,y.prototype),w.isPureReactComponent=!0;var j=Array.isArray;function k(){}var S={H:null,A:null,T:null,S:null},N=Object.prototype.hasOwnProperty;function E(e,t,r){var a=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==a?a:null,props:r}}function C(e){return"object"===typeof e&&null!==e&&e.$$typeof===n}var T=/\/+/g;function P(e,t){return"object"===typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}(""+e.key):t.toString(36)}function _(e,t,a,i,l){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s,u,c=!1;if(null===e)c=!0;else switch(o){case"bigint":case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case n:case r:c=!0;break;case f:return _((c=e._init)(e._payload),t,a,i,l)}}if(c)return l=l(e),c=""===i?"."+P(e,0):i,j(l)?(a="",null!=c&&(a=c.replace(T,"$&/")+"/"),_(l,t,a,"",function(e){return e})):null!=l&&(C(l)&&(s=l,u=a+(null==l.key||e&&e.key===l.key?"":(""+l.key).replace(T,"$&/")+"/")+c,l=E(s.type,u,s.props)),t.push(l)),1;c=0;var d,h=""===i?".":i+":";if(j(e))for(var m=0;m{!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4)},579:(e,t,n)=>{e.exports=n(799)},672:(e,t,n)=>{var r=n(43);function a(e){var t="https://react.dev/errors/"+e;if(1{var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function a(e,t,r){var a=null;if(void 0!==r&&(a=""+r),void 0!==t.key&&(a=""+t.key),"key"in t)for(var i in r={},t)"key"!==i&&(r[i]=t[i]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:a,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=a,t.jsxs=a},853:(e,t,n)=>{e.exports=n(896)},896:(e,t)=>{function n(e,t){var n=e.length;e.push(t);e:for(;0>>1,a=e[r];if(!(0>>1;ri(s,n))ui(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[o]=n,r=o);else{if(!(ui(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"===typeof performance&&"function"===typeof performance.now){var l=performance;t.unstable_now=function(){return l.now()}}else{var o=Date,s=o.now();t.unstable_now=function(){return o.now()-s}}var u=[],c=[],d=1,f=null,h=3,p=!1,m=!1,g=!1,v=!1,y="function"===typeof setTimeout?setTimeout:null,b="function"===typeof clearTimeout?clearTimeout:null,x="undefined"!==typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function j(e){if(g=!1,w(e),!m)if(null!==r(u))m=!0,S||(S=!0,k());else{var t=r(c);null!==t&&L(j,t.startTime-e)}}var k,S=!1,N=-1,E=5,C=-1;function T(){return!!v||!(t.unstable_now()-Ce&&T());){var l=f.callback;if("function"===typeof l){f.callback=null,h=f.priorityLevel;var o=l(f.expirationTime<=e);if(e=t.unstable_now(),"function"===typeof o){f.callback=o,w(e),n=!0;break t}f===r(u)&&a(u),w(e)}else a(u);f=r(u)}if(null!==f)n=!0;else{var s=r(c);null!==s&&L(j,s.startTime-e),n=!1}}break e}finally{f=null,h=i,p=!1}n=void 0}}finally{n?k():S=!1}}}if("function"===typeof x)k=function(){x(P)};else if("undefined"!==typeof MessageChannel){var _=new MessageChannel,O=_.port2;_.port1.onmessage=P,k=function(){O.postMessage(null)}}else k=function(){y(P,0)};function L(e,n){N=y(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=i,n(c,e),null===r(u)&&e===r(c)&&(g?(b(N),N=-1):g=!0,L(j,i-l))):(e.sortIndex=o,n(u,e),m||p||(m=!0,S||(S=!0,k()))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},950:(e,t,n)=>{!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(672)}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var i=Object.create(null);n.r(i);var l={};e=e||[null,t({}),t([]),t(t)];for(var o=2&a&&r;("object"==typeof o||"function"==typeof o)&&!~e.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach(e=>l[e]=()=>r[e]);return l.default=()=>r,n.d(i,l),i}})(),n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r,a=n(43),i=n.t(a,2),l=n(391);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t=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 m(e,t,n,a){void 0===a&&(a={});let{window:i=document.defaultView,v5Compat:l=!1}=a,c=i.history,p=r.Pop,m=null,g=v();function v(){return(c.state||{idx:null}).idx}function y(){p=r.Pop;let e=v(),t=null==e?null:e-g;g=e,m&&m({action:p,location:x.location,delta:t})}function b(e){let t="null"!==i.location.origin?i.location.origin:i.location.href,n="string"===typeof e?e:h(e);return n=n.replace(/ $/,"%20"),u(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==g&&(g=0,c.replaceState(o({},c.state,{idx:g}),""));let x={get action(){return p},get location(){return e(i,c)},listen(e){if(m)throw new Error("A history only accepts one active listener");return i.addEventListener(s,y),m=e,()=>{i.removeEventListener(s,y),m=null}},createHref:e=>t(i,e),createURL:b,encodeLocation(e){let t=b(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){p=r.Push;let a=f(x.location,e,t);n&&n(a,e),g=v()+1;let o=d(a,g),s=x.createHref(a);try{c.pushState(o,"",s)}catch(u){if(u instanceof DOMException&&"DataCloneError"===u.name)throw u;i.location.assign(s)}l&&m&&m({action:p,location:x.location,delta:1})},replace:function(e,t){p=r.Replace;let a=f(x.location,e,t);n&&n(a,e),g=v();let i=d(a,g),o=x.createHref(a);c.replaceState(i,"",o),l&&m&&m({action:p,location:x.location,delta:0})},go:e=>c.go(e)};return x}var g;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(g||(g={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function v(e,t,n){return void 0===n&&(n="/"),y(e,t,n,!1)}function y(e,t,n,r){let a=L(("string"===typeof t?p(t):t).pathname||"/",n);if(null==a)return null;let i=b(e);!function(e){e.sort((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let n=e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n]);return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)))}(i);let l=null;for(let o=0;null==l&&o{let l={relativePath:void 0===i?e.path||"":i,caseSensitive:!0===e.caseSensitive,childrenIndex:a,route:e};l.relativePath.startsWith("/")&&(u(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),l.relativePath=l.relativePath.slice(r.length));let o=D([r,l.relativePath]),s=n.concat(l);e.children&&e.children.length>0&&(u(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+o+'".'),b(e.children,t,s,o)),(null!=e.path||e.index)&&t.push({path:o,score:T(o,e.index),routesMeta:s})};return e.forEach((e,t)=>{var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?"))for(let r of x(e.path))a(e,t,r);else a(e,t)}),t}function x(e){let t=e.split("/");if(0===t.length)return[];let[n,...r]=t,a=n.endsWith("?"),i=n.replace(/\?$/,"");if(0===r.length)return a?[i,""]:[i];let l=x(r.join("/")),o=[];return o.push(...l.map(e=>""===e?i:[i,e].join("/"))),a&&o.push(...l),o.map(t=>e.startsWith("/")&&""===t?"/":t)}const w=/^:[\w-]+$/,j=3,k=2,S=1,N=10,E=-2,C=e=>"*"===e;function T(e,t){let n=e.split("/"),r=n.length;return n.some(C)&&(r+=E),t&&(r+=k),n.filter(e=>!C(e)).reduce((e,t)=>e+(w.test(t)?j:""===t?S:N),r)}function P(e,t,n){void 0===n&&(n=!1);let{routesMeta:r}=e,a={},i="/",l=[];for(let o=0;o(r.push({paramName:t,isOptional:null!=n}),n?"/?([^\\/]+)?":"/([^\\/]+)"));e.endsWith("*")?(r.push({paramName:"*"}),a+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":""!==e&&"/"!==e&&(a+="(?:(?=\\/|$))");let i=new RegExp(a,t?void 0:"i");return[i,r]}(e.path,e.caseSensitive,e.end),a=t.match(n);if(!a)return null;let i=a[0],l=i.replace(/(.)\/+$/,"$1"),o=a.slice(1);return{params:r.reduce((e,t,n)=>{let{paramName:r,isOptional:a}=t;if("*"===r){let e=o[n]||"";l=i.slice(0,i.length-e.length).replace(/(.)\/+$/,"$1")}const s=o[n];return e[r]=a&&!s?void 0:(s||"").replace(/%2F/g,"/"),e},{}),pathname:i,pathnameBase:l,pattern:e}}function O(e){try{return e.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(t){return c(!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 L(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)||"/"}function F(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 A(e){return e.filter((e,t)=>0===t||e.route.path&&e.route.path.length>0)}function z(e,t){let n=A(e);return t?n.map((e,t)=>t===n.length-1?e.pathname:e.pathnameBase):n.map(e=>e.pathnameBase)}function R(e,t,n,r){let a;void 0===r&&(r=!1),"string"===typeof e?a=p(e):(a=o({},e),u(!a.pathname||!a.pathname.includes("?"),F("?","pathname","search",a)),u(!a.pathname||!a.pathname.includes("#"),F("#","pathname","hash",a)),u(!a.search||!a.search.includes("#"),F("#","search","hash",a)));let i,l=""===e||""===a.pathname,s=l?"/":a.pathname;if(null==s)i=n;else{let e=t.length-1;if(!r&&s.startsWith("..")){let t=s.split("/");for(;".."===t[0];)t.shift(),e-=1;a.pathname=t.join("/")}i=e>=0?t[e]:"/"}let c=function(e,t){void 0===t&&(t="/");let{pathname:n,search:r="",hash:a=""}="string"===typeof e?p(e):e,i=n?n.startsWith("/")?n:function(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(e=>{".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)}),n.length>1?n.join("/"):"/"}(n,t):t;return{pathname:i,search:M(r),hash:U(a)}}(a,i),d=s&&"/"!==s&&s.endsWith("/"),f=(l||"."===s)&&n.endsWith("/");return c.pathname.endsWith("/")||!d&&!f||(c.pathname+="/"),c}const D=e=>e.join("/").replace(/\/\/+/g,"/"),I=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),M=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",U=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";Error;function B(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}const H=["post","put","patch","delete"],q=(new Set(H),["get",...H]);new Set(q),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred");function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t{n.current=!0}),a.useCallback(function(r,a){void 0===a&&(a={}),n.current&&("number"===typeof r?e.navigate(r):e.navigate(r,V({fromRouteId:t},a)))},[e,t])}():function(){X()||u(!1);let e=a.useContext(W),{basename:t,future:n,navigator:r}=a.useContext(G),{matches:i}=a.useContext(K),{pathname:l}=J(),o=JSON.stringify(z(i,n.v7_relativeSplatPath)),s=a.useRef(!1);return Z(()=>{s.current=!0}),a.useCallback(function(n,a){if(void 0===a&&(a={}),!s.current)return;if("number"===typeof n)return void r.go(n);let i=R(n,JSON.parse(o),l,"path"===a.relative);null==e&&"/"!==t&&(i.pathname="/"===i.pathname?t:D([t,i.pathname])),(a.replace?r.replace:r.push)(i,a.state,a)},[t,r,o,l,e])}()}function te(e,t){let{relative:n}=void 0===t?{}:t,{future:r}=a.useContext(G),{matches:i}=a.useContext(K),{pathname:l}=J(),o=JSON.stringify(z(i,r.v7_relativeSplatPath));return a.useMemo(()=>R(e,JSON.parse(o),l,"path"===n),[e,o,l,n])}function ne(e,t,n,i){X()||u(!1);let{navigator:l}=a.useContext(G),{matches:o}=a.useContext(K),s=o[o.length-1],c=s?s.params:{},d=(s&&s.pathname,s?s.pathnameBase:"/");s&&s.route;let f,h=J();if(t){var m;let e="string"===typeof t?p(t):t;"/"===d||(null==(m=e.pathname)?void 0:m.startsWith(d))||u(!1),f=e}else f=h;let g=f.pathname||"/",y=g;if("/"!==d){let e=d.replace(/^\//,"").split("/");y="/"+g.replace(/^\//,"").split("/").slice(e.length).join("/")}let b=v(e,{pathname:y});let x=oe(b&&b.map(e=>Object.assign({},e,{params:Object.assign({},c,e.params),pathname:D([d,l.encodeLocation?l.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?d:D([d,l.encodeLocation?l.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})),o,n,i);return t&&x?a.createElement(Q.Provider,{value:{location:V({pathname:"/",search:"",hash:"",state:null,key:"default"},f),navigationType:r.Pop}},x):x}function re(){let e=function(){var e;let t=a.useContext(Y),n=de(ue.UseRouteError),r=fe(ue.UseRouteError);if(void 0!==t)return t;return null==(e=n.errors)?void 0:e[r]}(),t=B(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r};return a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),n?a.createElement("pre",{style:i},n):null,null)}const ae=a.createElement(re,null);class ie extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?a.createElement(K.Provider,{value:this.props.routeContext},a.createElement(Y.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function le(e){let{routeContext:t,match:n,children:r}=e,i=a.useContext(W);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),a.createElement(K.Provider,{value:t},r)}function oe(e,t,n,r){var i;if(void 0===t&&(t=[]),void 0===n&&(n=null),void 0===r&&(r=null),null==e){var l;if(!n)return null;if(n.errors)e=n.matches;else{if(!(null!=(l=r)&&l.v7_partialHydration&&0===t.length&&!n.initialized&&n.matches.length>0))return null;e=n.matches}}let o=e,s=null==(i=n)?void 0:i.errors;if(null!=s){let e=o.findIndex(e=>e.route.id&&void 0!==(null==s?void 0:s[e.route.id]));e>=0||u(!1),o=o.slice(0,Math.min(o.length,e+1))}let c=!1,d=-1;if(n&&r&&r.v7_partialHydration)for(let a=0;a=0?o.slice(0,d+1):[o[0]];break}}}return o.reduceRight((e,r,i)=>{let l,u=!1,f=null,h=null;var p;n&&(l=s&&r.route.id?s[r.route.id]:void 0,f=r.route.errorElement||ae,c&&(d<0&&0===i?(p="route-fallback",!1||he[p]||(he[p]=!0),u=!0,h=null):d===i&&(u=!0,h=r.route.hydrateFallbackElement||null)));let m=t.concat(o.slice(0,i+1)),g=()=>{let t;return t=l?f:u?h:r.route.Component?a.createElement(r.route.Component,null):r.route.element?r.route.element:e,a.createElement(le,{match:r,routeContext:{outlet:e,matches:m,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===i)?a.createElement(ie,{location:n.location,revalidation:n.revalidation,component:f,error:l,children:g(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):g()},null)}var se=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(se||{}),ue=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}(ue||{});function ce(e){let t=a.useContext(W);return t||u(!1),t}function de(e){let t=a.useContext($);return t||u(!1),t}function fe(e){let t=function(){let e=a.useContext(K);return e||u(!1),e}(),n=t.matches[t.matches.length-1];return n.route.id||u(!1),n.route.id}const he={};function pe(e,t){null==e||e.v7_startTransition,void 0===(null==e?void 0:e.v7_relativeSplatPath)&&(!t||t.v7_relativeSplatPath),t&&(t.v7_fetcherPersist,t.v7_normalizeFormMethod,t.v7_partialHydration,t.v7_skipActionErrorRevalidation)}i.startTransition;function me(e){u(!1)}function ge(e){let{basename:t="/",children:n=null,location:i,navigationType:l=r.Pop,navigator:o,static:s=!1,future:c}=e;X()&&u(!1);let d=t.replace(/^\/*/,"/"),f=a.useMemo(()=>({basename:d,navigator:o,static:s,future:V({v7_relativeSplatPath:!1},c)}),[d,c,o,s]);"string"===typeof i&&(i=p(i));let{pathname:h="/",search:m="",hash:g="",state:v=null,key:y="default"}=i,b=a.useMemo(()=>{let e=L(h,d);return null==e?null:{location:{pathname:e,search:m,hash:g,state:v,key:y},navigationType:l}},[d,h,m,g,v,y,l]);return null==b?null:a.createElement(G.Provider,{value:f},a.createElement(Q.Provider,{children:n,value:b}))}function ve(e){let{children:t,location:n}=e;return ne(ye(t),n)}new Promise(()=>{});a.Component;function ye(e,t){void 0===t&&(t=[]);let n=[];return a.Children.forEach(e,(e,r)=>{if(!a.isValidElement(e))return;let i=[...t,r];if(e.type===a.Fragment)return void n.push.apply(n,ye(e.props.children,i));e.type!==me&&u(!1),e.props.index&&e.props.children&&u(!1);let l={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(l.children=ye(e.props.children,i)),n.push(l)}),n}var be=n(950),xe=n.t(be,2);function we(){return we=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(a[n]=e[n]);return a}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const ke=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Se=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"];try{window.__reactRouterVersion="6"}catch(Rt){}const Ne=a.createContext({isTransitioning:!1});new Map;const Ee=i.startTransition;xe.flushSync,i.useId;function Ce(e){let{basename:t,children:n,future:r,window:i}=e,l=a.useRef();var o;null==l.current&&(l.current=(void 0===(o={window:i,v5Compat:!0})&&(o={}),m(function(e,t){let{pathname:n,search:r,hash:a}=e.location;return f("",{pathname:n,search:r,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")},function(e,t){return"string"===typeof t?t:h(t)},null,o)));let s=l.current,[u,c]=a.useState({action:s.action,location:s.location}),{v7_startTransition:d}=r||{},p=a.useCallback(e=>{d&&Ee?Ee(()=>c(e)):c(e)},[c,d]);return a.useLayoutEffect(()=>s.listen(p),[s,p]),a.useEffect(()=>pe(r),[r]),a.createElement(ge,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:s,future:r})}const Te="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,Pe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,_e=a.forwardRef(function(e,t){let n,{onClick:r,relative:i,reloadDocument:l,replace:o,state:s,target:c,to:d,preventScrollReset:f,viewTransition:p}=e,m=je(e,ke),{basename:g}=a.useContext(G),v=!1;if("string"===typeof d&&Pe.test(d)&&(n=d,Te))try{let e=new URL(window.location.href),t=d.startsWith("//")?new URL(e.protocol+d):new URL(d),n=L(t.pathname,g);t.origin===e.origin&&null!=n?d=n+t.search+t.hash:v=!0}catch(Rt){}let y=function(e,t){let{relative:n}=void 0===t?{}:t;X()||u(!1);let{basename:r,navigator:i}=a.useContext(G),{hash:l,pathname:o,search:s}=te(e,{relative:n}),c=o;return"/"!==r&&(c="/"===o?r:D([r,o])),i.createHref({pathname:c,search:s,hash:l})}(d,{relative:i}),b=function(e,t){let{target:n,replace:r,state:i,preventScrollReset:l,relative:o,viewTransition:s}=void 0===t?{}:t,u=ee(),c=J(),d=te(e,{relative:o});return a.useCallback(t=>{if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,n)){t.preventDefault();let n=void 0!==r?r:h(c)===h(d);u(e,{replace:n,state:i,preventScrollReset:l,relative:o,viewTransition:s})}},[c,u,d,r,i,n,e,l,o,s])}(d,{replace:o,state:s,target:c,preventScrollReset:f,relative:i,viewTransition:p});return a.createElement("a",we({},m,{href:n||y,onClick:v||l?r:function(e){r&&r(e),e.defaultPrevented||b(e)},ref:t,target:c}))});const Oe=a.forwardRef(function(e,t){let{"aria-current":n="page",caseSensitive:r=!1,className:i="",end:l=!1,style:o,to:s,viewTransition:c,children:d}=e,f=je(e,Se),h=te(s,{relative:f.relative}),p=J(),m=a.useContext($),{navigator:g,basename:v}=a.useContext(G),y=null!=m&&function(e,t){void 0===t&&(t={});let n=a.useContext(Ne);null==n&&u(!1);let{basename:r}=Ae(Le.useViewTransitionState),i=te(e,{relative:t.relative});if(!n.isTransitioning)return!1;let l=L(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=L(n.nextLocation.pathname,r)||n.nextLocation.pathname;return null!=_(i.pathname,o)||null!=_(i.pathname,l)}(h)&&!0===c,b=g.encodeLocation?g.encodeLocation(h).pathname:h.pathname,x=p.pathname,w=m&&m.navigation&&m.navigation.location?m.navigation.location.pathname:null;r||(x=x.toLowerCase(),w=w?w.toLowerCase():null,b=b.toLowerCase()),w&&v&&(w=L(w,v)||w);const j="/"!==b&&b.endsWith("/")?b.length-1:b.length;let k,S=x===b||!l&&x.startsWith(b)&&"/"===x.charAt(j),N=null!=w&&(w===b||!l&&w.startsWith(b)&&"/"===w.charAt(b.length)),E={isActive:S,isPending:N,isTransitioning:y},C=S?n:void 0;k="function"===typeof i?i(E):[i,S?"active":null,N?"pending":null,y?"transitioning":null].filter(Boolean).join(" ");let T="function"===typeof o?o(E):o;return a.createElement(_e,we({},f,{"aria-current":C,className:k,ref:t,style:T,to:s,viewTransition:c}),"function"===typeof d?d(E):d)});var Le,Fe;function Ae(e){let t=a.useContext(W);return t||u(!1),t}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Le||(Le={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Fe||(Fe={}));var ze=n(579);const Re=()=>{const[e,t]=(0,a.useState)(!1),n=()=>t(!1);return(0,ze.jsx)("header",{className:"navbar",children:(0,ze.jsxs)("div",{className:"navbar-inner",children:[(0,ze.jsx)(_e,{to:"/",className:"navbar-logo",onClick:n,children:"DCDartFrogs"}),(0,ze.jsxs)("button",{className:"navbar-toggle",type:"button","aria-label":"Toggle navigation","aria-expanded":e,onClick:()=>t(e=>!e),children:[(0,ze.jsx)("span",{className:"navbar-toggle-bar"}),(0,ze.jsx)("span",{className:"navbar-toggle-bar"})]}),(0,ze.jsxs)("nav",{className:"navbar-links ".concat(e?"navbar-links-open":""),"aria-label":"Primary navigation",children:[(0,ze.jsx)(Oe,{to:"/conversion-kits",onClick:n,children:"10-Gallon kit"}),(0,ze.jsx)(Oe,{to:"/fruit-fly-tools",onClick:n,children:"Fruit Fly Tools"}),(0,ze.jsx)(Oe,{to:"/builds",onClick:n,children:"Builds"}),(0,ze.jsx)(Oe,{to:"/guides",onClick:n,children:"Guides"}),(0,ze.jsx)(Oe,{to:"/about",onClick:n,children:"About"})]}),(0,ze.jsx)(_e,{to:"/contact",className:"navbar-cta",onClick:n,children:"Contact"})]})})},De=()=>{const e=(new Date).getFullYear();return(0,ze.jsx)("footer",{className:"footer",children:(0,ze.jsxs)("div",{className:"footer-inner",children:[(0,ze.jsxs)("p",{children:["\xa9 ",e," DCDartFrogs. All rights reserved."]}),(0,ze.jsxs)("div",{className:"footer-links",children:[(0,ze.jsx)(_e,{to:"/care",children:"Care Guide"}),(0,ze.jsx)(_e,{to:"/business",children:"Start Breeding"})]})]})})},Ie=e=>{let{children:t}=e;return(0,ze.jsxs)("div",{className:"app",children:[(0,ze.jsx)(Re,{}),(0,ze.jsx)("main",{className:"app-main",children:t}),(0,ze.jsx)(De,{})]})};function Me(e){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Me(e)}function Ue(e){var t=function(e,t){if("object"!=Me(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=Me(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==Me(t)?t:t+""}function Be(e,t,n){return(t=Ue(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function qe(e){for(var t=1;t{let{variant:t="primary",children:n,className:r=""}=e,a=Ve(e,We);return(0,ze.jsx)("button",qe(qe({className:"btn btn-".concat(t," ").concat(r)},a),{},{children:n}))},Ge=e=>{let{id:t,className:n="",children:r}=e;return(0,ze.jsx)("section",{id:t,className:"section ".concat(n),children:(0,ze.jsx)("div",{className:"section-inner",children:r})})},Qe=()=>(0,ze.jsx)(Ge,{className:"hero",children:(0,ze.jsxs)("div",{className:"hero-grid",children:[(0,ze.jsxs)("div",{className:"hero-copy",children:[(0,ze.jsx)("p",{className:"hero-eyebrow",children:"PURPOSE-BUILT DART FROG EQUIPMENT"}),(0,ze.jsx)("h1",{children:"Dart Frog Gear, Printed by Keepers."}),(0,ze.jsx)("p",{className:"hero-description",children:"Aquarium conversion kits, reusable fruit fly culture tools, and vivarium accessories designed, printed, and tested in a real frog room."}),(0,ze.jsxs)("div",{className:"hero-actions",children:[(0,ze.jsx)(_e,{to:"/shop",children:(0,ze.jsx)($e,{children:"Shop Dart Frog Gear"})}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{variant:"secondary",children:"View Conversion Kits"})})]}),(0,ze.jsxs)("div",{className:"hero-trust-row",children:[(0,ze.jsx)("span",{children:"Designed in-house"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Tested with real frogs"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Printed in the USA"})]})]}),(0,ze.jsx)("div",{className:"hero-media",children:(0,ze.jsxs)("div",{className:"hero-image-wrap",children:[(0,ze.jsx)("img",{src:"/images/hero_photo.webp",draggable:"false",alt:"Dart frog vivarium using DCDartFrogs equipment",className:"hero-photo"}),(0,ze.jsxs)("div",{className:"hero-product-callout",children:[(0,ze.jsx)("span",{className:"hero-product-callout-label",children:"FEATURED PRODUCT"}),(0,ze.jsx)("strong",{children:"Horizontal Aquarium Conversion Kit"}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:"See the kit"})]})]})})]})}),Ke=e=>{let{title:t,children:n,className:r=""}=e;return(0,ze.jsxs)("div",{className:"card ".concat(r),children:[t&&(0,ze.jsx)("h3",{className:"card-title",children:t}),(0,ze.jsx)("div",{className:"card-body",children:n})]})},Ye=[{id:"conversion-kits",title:"Aquarium Conversion Kits",description:"Turn standard glass aquariums into clean, front-opening dart frog vivariums with purpose-built printed components.",route:"/conversion-kits",buttonText:"Shop Conversion Kits",badge:"BEST SELLER"},{id:"fruit-fly-tools",title:"Fruit Fly Culture Tools",description:"Reusable culture inserts and accessories designed to replace messy coffee filters and disposable excelsior.",route:"/fruit-fly-tools",buttonText:"Shop Fruit Fly Tools",badge:"BUILT FOR BREEDERS"},{id:"vivarium-accessories",title:"Vivarium Accessories",description:"Feeding stations, bromeliad cups, plant holders, clips, mounts, and practical hardware for cleaner builds.",route:"/vivarium-accessories",buttonText:"Shop Accessories",badge:"FROG ROOM ESSENTIALS"}],Xe=()=>(0,ze.jsxs)(Ge,{className:"featured-products",children:[(0,ze.jsxs)("div",{className:"section-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"SHOP BY CATEGORY"}),(0,ze.jsx)("h2",{children:"Built to Solve Real Frog-Room Problems"}),(0,ze.jsx)("p",{className:"section-subtitle",children:"No random novelty prints. Every product starts with a problem we encountered while building vivariums, culturing flies, or caring for dart frogs."})]}),(0,ze.jsx)("div",{className:"grid-3 product-category-grid",children:Ye.map(e=>(0,ze.jsx)(Ke,{title:e.title,children:(0,ze.jsxs)("div",{className:"product-category-card",children:[(0,ze.jsx)("span",{className:"product-badge",children:e.badge}),(0,ze.jsx)("p",{children:e.description}),(0,ze.jsx)(_e,{to:e.route,className:"product-category-link",children:(0,ze.jsx)($e,{variant:"secondary",children:e.buttonText})})]})},e.id))}),(0,ze.jsx)("div",{className:"featured-products-footer",children:(0,ze.jsx)(_e,{to:"/shop",children:(0,ze.jsx)($e,{children:"View All Products"})})})]}),Je=()=>(0,ze.jsx)(Ge,{className:"funnel-strip",children:(0,ze.jsxs)("div",{className:"funnel-strip-inner",children:[(0,ze.jsxs)("div",{className:"funnel-strip-copy",children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"START WITH THE ENCLOSURE"}),(0,ze.jsx)("h2",{children:"Convert an Aquarium Into a Dart Frog Vivarium."}),(0,ze.jsx)("p",{children:"Skip the improvised parts and messy workarounds. Our horizontal conversion kits are designed to create a clean, secure, front-opening setup using standard glass aquariums."}),(0,ze.jsxs)("div",{className:"funnel-benefits",children:[(0,ze.jsx)("span",{children:"Multiple aquarium sizes"}),(0,ze.jsx)("span",{children:"Keeper-designed components"}),(0,ze.jsx)("span",{children:"Printed to order"})]})]}),(0,ze.jsxs)("div",{className:"funnel-strip-actions",children:[(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{children:"Shop Conversion Kits"})}),(0,ze.jsx)(_e,{to:"/builds",children:(0,ze.jsx)($e,{variant:"secondary",children:"See Our Builds"})})]})]})}),Ze=()=>(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)(Qe,{}),(0,ze.jsx)(Xe,{}),(0,ze.jsx)(Je,{})]}),et=[{id:"10-gallon-conversion",category:"VIVARIUM BUILD",title:"How to Convert a 10-Gallon Aquarium for Dart Frogs",description:"A practical walkthrough for turning a standard aquarium into a secure, front-opening vertical vivarium.",readingTime:"8 min read",route:"/guides/10-gallon-aquarium-conversion",featured:!0},{id:"fruit-fly-cultures",category:"FEEDING",title:"How to Start and Maintain Fruit Fly Cultures",description:"Learn the basic media, climbing material, ventilation, temperature, and timing needed for dependable cultures.",readingTime:"7 min read",route:"/guides/fruit-fly-cultures",featured:!0},{id:"beginner-vivarium",category:"VIVARIUM BUILD",title:"Dart Frog Vivarium Setup for Beginners",description:"A complete overview of drainage, substrate, background materials, plants, lighting, ventilation, and humidity.",readingTime:"11 min read",route:"/guides/dart-frog-vivarium-setup",featured:!0},{id:"plants",category:"PLANTS",title:"Best Plants for Dart Frog Vivariums",description:"Reliable tropical plants that tolerate humidity, limited root space, regular trimming, and frog-room conditions.",readingTime:"6 min read",route:"/guides/best-dart-frog-plants"},{id:"humidity",category:"ENVIRONMENT",title:"Dart Frog Humidity Without a Soaked Vivarium",description:"Understand the difference between high humidity, useful ventilation, wet surfaces, and dangerous stagnation.",readingTime:"5 min read",route:"/guides/dart-frog-humidity"},{id:"lighting",category:"EQUIPMENT",title:"Lighting a Dart Frog Vivarium",description:"Choose lighting for healthy plant growth without overheating the enclosure or overcomplicating the setup.",readingTime:"5 min read",route:"/guides/vivarium-lighting"},{id:"leaf-litter",category:"HUSBANDRY",title:"Why Leaf Litter Matters",description:"Leaf litter provides cover, feeding surfaces, microfauna habitat, moisture regulation, and a more natural floor.",readingTime:"4 min read",route:"/guides/dart-frog-leaf-litter"},{id:"supplements",category:"FEEDING",title:"Fruit Fly Dusting and Supplement Basics",description:"A straightforward explanation of calcium, vitamin supplements, storage, rotation, and avoiding common mistakes.",readingTime:"6 min read",route:"/guides/dart-frog-supplements"},{id:"maintenance",category:"MAINTENANCE",title:"A Simple Dart Frog Vivarium Maintenance Schedule",description:"Daily, weekly, and monthly tasks that keep a bioactive vivarium stable without constantly tearing it apart.",readingTime:"5 min read",route:"/guides/vivarium-maintenance"}],tt=[{title:"Build",description:"Enclosures, drainage, backgrounds, ventilation, lighting, and complete vivarium construction.",anchor:"#all-guides"},{title:"Feed",description:"Fruit fly cultures, supplements, feeding schedules, and keeping dependable food available.",anchor:"#all-guides"},{title:"Maintain",description:"Humidity, sanitation, plant care, troubleshooting, and long-term vivarium stability.",anchor:"#all-guides"}],nt=()=>{const e=et.filter(e=>e.featured);return(0,ze.jsxs)("main",{className:"guides-page",children:[(0,ze.jsx)(Ge,{className:"guides-hero",children:(0,ze.jsxs)("div",{className:"guides-hero-grid",children:[(0,ze.jsxs)("div",{className:"guides-hero-copy",children:[(0,ze.jsx)("p",{className:"hero-eyebrow",children:"DCDARTFROGS FIELD GUIDES"}),(0,ze.jsx)("h1",{children:"Build Better Vivariums. Keep Healthier Frogs."}),(0,ze.jsx)("p",{className:"guides-hero-description",children:"Practical dart frog guides based on real builds, active cultures, working vivariums, and lessons learned through trial, testing, and daily frog-room use."}),(0,ze.jsxs)("div",{className:"guides-hero-actions",children:[(0,ze.jsx)("a",{href:"#featured-guides",children:(0,ze.jsx)($e,{children:"Explore the Guides"})}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{variant:"secondary",children:"View the 10-Gallon Kit"})})]}),(0,ze.jsxs)("div",{className:"guides-trust-row",children:[(0,ze.jsx)("span",{children:"No forum archaeology"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"No unnecessary jargon"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Built from real experience"})]})]}),(0,ze.jsxs)("div",{className:"guides-hero-feature",children:[(0,ze.jsx)("p",{className:"guides-feature-label",children:"START HERE"}),(0,ze.jsx)("h2",{children:"Setting Up Your First Dart Frog Vivarium"}),(0,ze.jsx)("p",{children:"The complete foundation: enclosure choice, drainage, substrate, plants, ventilation, lighting, humidity, and the mistakes most beginners can avoid."}),(0,ze.jsxs)(_e,{to:"/guides/dart-frog-vivarium-setup",children:["Read the Beginner Guide",(0,ze.jsx)("span",{"aria-hidden":"true",children:" \u2192"})]}),(0,ze.jsxs)("div",{className:"guides-feature-meta",children:[(0,ze.jsx)("span",{children:"Beginner friendly"}),(0,ze.jsx)("span",{children:"11 min read"})]})]})]})}),(0,ze.jsxs)(Ge,{className:"guides-paths",children:[(0,ze.jsxs)("div",{className:"guides-section-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"CHOOSE YOUR PATH"}),(0,ze.jsx)("h2",{children:"Everything Starts With the Right System."}),(0,ze.jsx)("p",{children:"Start with the part of dart frog keeping you are working on now. Every guide is written to give you a usable answer\u2014not another pile of conflicting opinions."})]}),(0,ze.jsx)("div",{className:"guides-path-grid",children:tt.map((e,t)=>(0,ze.jsxs)("a",{href:e.anchor,className:"guides-path-card",children:[(0,ze.jsxs)("span",{children:["0",t+1]}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description}),(0,ze.jsx)("strong",{children:"Browse guides \u2192"})]},e.title))})]}),(0,ze.jsxs)(Ge,{className:"guides-featured",id:"featured-guides",children:[(0,ze.jsxs)("div",{className:"guides-section-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"MOST USEFUL FIRST"}),(0,ze.jsx)("h2",{children:"Featured Dart Frog Guides"}),(0,ze.jsx)("p",{children:"These guides cover the questions that matter most when you are building your first setup or correcting problems in an existing one."})]}),(0,ze.jsx)("div",{className:"guides-featured-grid",children:e.map((e,t)=>(0,ze.jsxs)("article",{className:"guide-feature-card ".concat(0===t?"guide-feature-card-primary":""),children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{className:"guide-category",children:e.category}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description})]}),(0,ze.jsxs)("div",{className:"guide-card-footer",children:[(0,ze.jsx)("span",{children:e.readingTime}),(0,ze.jsxs)(_e,{to:e.route,children:["Read guide",(0,ze.jsx)("span",{"aria-hidden":"true",children:" \u2192"})]})]})]},e.id))})]}),(0,ze.jsxs)(Ge,{className:"guides-library",id:"all-guides",children:[(0,ze.jsxs)("div",{className:"guides-library-header",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"GUIDE LIBRARY"}),(0,ze.jsx)("h2",{children:"Explore Every Topic"})]}),(0,ze.jsx)("p",{children:"Clear answers for building, feeding, planting, maintaining, and troubleshooting dart frog systems."})]}),(0,ze.jsx)("div",{className:"guides-library-grid",children:et.map(e=>(0,ze.jsxs)("article",{className:"guide-library-card",children:[(0,ze.jsxs)("div",{className:"guide-library-top",children:[(0,ze.jsx)("span",{className:"guide-category",children:e.category}),(0,ze.jsx)("span",{children:e.readingTime})]}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description}),(0,ze.jsxs)(_e,{to:e.route,children:["Read the guide",(0,ze.jsx)("span",{"aria-hidden":"true",children:" \u2192"})]})]},e.id))})]}),(0,ze.jsx)(Ge,{className:"guides-product-bridge",children:(0,ze.jsxs)("div",{className:"guides-product-bridge-inner",children:[(0,ze.jsx)("div",{className:"guides-product-bridge-image",children:(0,ze.jsx)("img",{src:"/images/products/10g-vertical-kit-main.webp",alt:"Ten-gallon vertical dart frog aquarium conversion",draggable:"false"})}),(0,ze.jsxs)("div",{className:"guides-product-bridge-copy",children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"BUILDING A 10-GALLON VIVARIUM?"}),(0,ze.jsx)("h2",{children:"Skip the Improvised Front."}),(0,ze.jsx)("p",{children:"Our vertical conversion kit turns a standard 10-gallon aquarium into a clean, front-opening enclosure using components designed specifically for dart frog builds."}),(0,ze.jsxs)("div",{className:"guides-product-benefits",children:[(0,ze.jsx)("span",{children:"Keeper-designed"}),(0,ze.jsx)("span",{children:"Printed in California"}),(0,ze.jsx)("span",{children:"Made to order"})]}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{children:"View the 10-Gallon Kit"})})]})]})}),(0,ze.jsx)(Ge,{className:"guides-principles",children:(0,ze.jsxs)("div",{className:"guides-principles-grid",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"OUR APPROACH"}),(0,ze.jsx)("h2",{children:"Useful Beats Complicated."})]}),(0,ze.jsxs)("div",{className:"guides-principles-list",children:[(0,ze.jsxs)("article",{children:[(0,ze.jsx)("span",{children:"01"}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("h3",{children:"Explain the reason"}),(0,ze.jsx)("p",{children:"Knowing why something works makes it easier to adapt when your exact setup is different."})]})]}),(0,ze.jsxs)("article",{children:[(0,ze.jsx)("span",{children:"02"}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("h3",{children:"Show the practical method"}),(0,ze.jsx)("p",{children:"Every guide should leave you with a clear action\u2014not just a collection of theory."})]})]}),(0,ze.jsxs)("article",{children:[(0,ze.jsx)("span",{children:"03"}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("h3",{children:"Correct the common mistakes"}),(0,ze.jsx)("p",{children:"Most failures come from a few repeated problems: poor airflow, soaked substrate, unstable cultures, and overcomplication."})]})]})]})]})}),(0,ze.jsx)(Ge,{className:"guides-final-cta",children:(0,ze.jsxs)("div",{className:"guides-final-cta-inner",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"CAN\u2019T FIND THE ANSWER?"}),(0,ze.jsx)("h2",{children:"Tell Us What You\u2019re Building."}),(0,ze.jsx)("p",{children:"Send us your enclosure size, current setup, or problem. Good questions often become the next guide\u2014or the next product."})]}),(0,ze.jsx)(_e,{to:"/contact",children:(0,ze.jsx)($e,{children:"Ask DCDartFrogs"})})]})})]})},rt=e=>{let{category:t,title:n,description:r,readingTime:a,updated:i,heroImage:l,heroImageAlt:o,sections:s,relatedProduct:u}=e;return(0,ze.jsxs)("main",{className:"guide-article-page",children:[(0,ze.jsx)(Ge,{className:"guide-article-hero",children:(0,ze.jsxs)("div",{className:"guide-article-hero-inner",children:[(0,ze.jsxs)("nav",{className:"guide-breadcrumbs","aria-label":"Breadcrumb",children:[(0,ze.jsx)(_e,{to:"/",children:"Home"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"/"}),(0,ze.jsx)(_e,{to:"/guides",children:"Guides"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"/"}),(0,ze.jsx)("span",{children:t})]}),(0,ze.jsx)("span",{className:"guide-article-category",children:t}),(0,ze.jsx)("h1",{children:n}),(0,ze.jsx)("p",{className:"guide-article-description",children:r}),(0,ze.jsxs)("div",{className:"guide-article-meta",children:[(0,ze.jsx)("span",{children:a}),i&&(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsxs)("span",{children:["Updated ",i]})]}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Written by DCDartFrogs"})]})]})}),l&&(0,ze.jsx)(Ge,{className:"guide-article-image-section",children:(0,ze.jsx)("div",{className:"guide-article-hero-image",children:(0,ze.jsx)("img",{src:l,alt:null!==o&&void 0!==o?o:n,draggable:"false"})})}),(0,ze.jsx)(Ge,{className:"guide-article-body-section",children:(0,ze.jsxs)("div",{className:"guide-article-layout",children:[(0,ze.jsxs)("aside",{className:"guide-table-of-contents",children:[(0,ze.jsx)("p",{children:"IN THIS GUIDE"}),(0,ze.jsx)("nav",{children:s.map((e,t)=>(0,ze.jsxs)("a",{href:"#".concat(e.id),children:[(0,ze.jsx)("span",{children:String(t+1).padStart(2,"0")}),e.title]},e.id))})]}),(0,ze.jsxs)("article",{className:"guide-article-content",children:[s.map(e=>(0,ze.jsxs)("section",{className:"guide-content-section",id:e.id,children:[(0,ze.jsx)("h2",{children:e.title}),e.content]},e.id)),(0,ze.jsxs)("div",{className:"guide-article-warning",children:[(0,ze.jsx)("strong",{children:"Observe the animals and the enclosure."}),(0,ze.jsx)("p",{children:"Every frog room and vivarium is slightly different. Use these guides as a strong starting point, then adjust according to the species, enclosure, climate, and behavior you actually observe."})]})]})]})}),u&&(0,ze.jsx)(Ge,{className:"guide-related-product",children:(0,ze.jsxs)("div",{className:"guide-related-product-inner",children:[(0,ze.jsx)("div",{className:"guide-related-product-image",children:(0,ze.jsx)("img",{src:u.image,alt:u.imageAlt,draggable:"false"})}),(0,ze.jsxs)("div",{className:"guide-related-product-copy",children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:u.eyebrow}),(0,ze.jsx)("h2",{children:u.title}),(0,ze.jsx)("p",{children:u.description}),(0,ze.jsx)(_e,{to:u.route,children:(0,ze.jsx)($e,{children:u.buttonText})})]})]})}),(0,ze.jsx)(Ge,{className:"guide-article-footer",children:(0,ze.jsxs)("div",{className:"guide-article-footer-inner",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"KEEP LEARNING"}),(0,ze.jsx)("h2",{children:"Build the Whole System."}),(0,ze.jsx)("p",{children:"Browse the complete DCDartFrogs guide library for vivarium construction, plants, feeding, maintenance, and troubleshooting."})]}),(0,ze.jsx)(_e,{to:"/guides",children:(0,ze.jsx)($e,{children:"View All Guides"})})]})})]})},at={eyebrow:"BUILDING A 10-GALLON VIVARIUM?",title:"Start With a Purpose-Built Front.",description:"Our vertical conversion kit turns a standard 10-gallon aquarium into a clean, front-opening enclosure for dart frog builds.",image:"/images/products/10g-vertical-kit-main.webp",imageAlt:"Ten-gallon vertical aquarium conversion kit",route:"/shop/conversion-kits",buttonText:"View the 10-Gallon Kit"},it=[{slug:"10-gallon-aquarium-conversion",category:"VIVARIUM BUILD",title:"How to Convert a 10-Gallon Aquarium for Dart Frogs",description:"A practical overview of turning a standard glass aquarium into a secure, front-opening vertical vivarium.",readingTime:"8 min read",updated:"July 2026",heroImage:"/images/products/10g-vertical-kit-main.webp",heroImageAlt:"Standard ten-gallon aquarium fitted with a vertical conversion kit",relatedProduct:at,sections:[{id:"what-you-are-building",title:"What You Are Building",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"A standard 10-gallon aquarium is inexpensive, widely available, and large enough for several compact vivarium designs. Turning it upright creates more usable height while keeping its footprint small."}),(0,ze.jsx)("p",{children:"The original aquarium opening becomes the front of the vivarium. A conversion assembly closes that opening while adding a hinged access door, ventilation, and a lower barrier that retains substrate and drainage materials."}),(0,ze.jsxs)("div",{className:"guide-callout",children:[(0,ze.jsx)("strong",{children:"The aquarium itself is not the conversion kit."}),(0,ze.jsx)("p",{children:"The kit provides the front hardware. The glass aquarium, silicone, drainage layer, substrate, lighting, plants, and interior materials are separate."})]})]})},{id:"measure-first",title:"Measure Before Ordering",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"\u201cTen gallon\u201d describes approximate capacity, not a guaranteed exterior dimension. Manufacturers can use slightly different rim profiles, glass thicknesses, and opening dimensions."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Measure the outside width of the aquarium opening."}),(0,ze.jsx)("li",{children:"Measure the outside height of the opening."}),(0,ze.jsx)("li",{children:"Check whether the aquarium has a plastic rim."}),(0,ze.jsx)("li",{children:"Compare your measurements with the product listing."}),(0,ze.jsx)("li",{children:"Ask before ordering when the tank brand is uncertain."})]})]})},{id:"prepare-the-aquarium",title:"Prepare the Aquarium",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Clean the glass thoroughly before installing anything. Remove old mineral deposits, loose silicone, oils, dust, and adhesive residue. Aquarium-safe silicone bonds poorly to contaminated surfaces."}),(0,ze.jsxs)("ol",{children:[(0,ze.jsx)("li",{children:"Wash and rinse the empty aquarium."}),(0,ze.jsx)("li",{children:"Allow it to dry completely."}),(0,ze.jsx)("li",{children:"Clean bonding areas with an appropriate glass cleaner."}),(0,ze.jsx)("li",{children:"Test-fit every conversion component before applying silicone."}),(0,ze.jsx)("li",{children:"Mark the intended position with removable tape."})]}),(0,ze.jsx)("p",{children:"Never begin permanent installation until the doors can open, close, and align correctly during a dry fit."})]})},{id:"install-the-front",title:"Install the Conversion Front",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Follow the instructions supplied with the specific conversion kit. Apply a controlled bead of aquarium-safe silicone where the frame contacts the glass, then seat the component without forcing it out of alignment."}),(0,ze.jsx)("p",{children:"Remove excessive silicone before it cures, but do not disturb the frame once positioned. The installation should remain supported and untouched for the full curing period recommended by the silicone manufacturer."}),(0,ze.jsxs)("div",{className:"guide-warning",children:[(0,ze.jsx)("strong",{children:"Do not add animals immediately."}),(0,ze.jsx)("p",{children:"Silicone must cure fully and lose its strong vinegar-like odor before the enclosure is planted or occupied."})]})]})},{id:"build-the-interior",title:"Build the Interior",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Once the conversion is secure, build from the bottom upward. A typical system contains a drainage layer, separation barrier, substrate, leaf litter, plants, wood, and other hardscape."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Keep drainage water physically separated from the main substrate."}),(0,ze.jsx)("li",{children:"Provide a method to remove excess drainage water if necessary."}),(0,ze.jsx)("li",{children:"Secure heavy wood and rocks before adding loose substrate."}),(0,ze.jsx)("li",{children:"Leave access to the front doors and ventilation openings."}),(0,ze.jsx)("li",{children:"Avoid blocking all airflow with plants or background material."})]})]})},{id:"test-before-frogs",title:"Test Before Adding Frogs",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Run the completed vivarium empty for a period before adding animals. This exposes drainage problems, overheating, persistent condensation, door gaps, and unstable hardscape before a frog is placed inside."}),(0,ze.jsx)("p",{children:"Confirm that:"}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"The doors close securely."}),(0,ze.jsx)("li",{children:"There are no escape-sized gaps."}),(0,ze.jsx)("li",{children:"Water drains away from the substrate."}),(0,ze.jsx)("li",{children:"Lighting does not overheat the enclosure."}),(0,ze.jsx)("li",{children:"Plants remain stable and begin rooting."}),(0,ze.jsx)("li",{children:"Humidity rises and falls rather than remaining saturated."})]})]})}]},{slug:"fruit-fly-cultures",category:"FEEDING",title:"How to Start and Maintain Fruit Fly Cultures",description:"A straightforward system for keeping dependable fruit fly cultures available for dart frogs.",readingTime:"7 min read",updated:"July 2026",heroImage:"/images/products/fruit-fly-insert-testing.webp",heroImageAlt:"Fruit fly culture containing media and climbing material",relatedProduct:{eyebrow:"FRUIT FLY TOOL IN DEVELOPMENT",title:"A Reusable Alternative to Loose Climbing Material.",description:"We are testing a removable fruit fly culture insert intended to replace disposable coffee filters and excelsior.",image:"/images/products/fruit-fly-insert-prototype.webp",imageAlt:"Reusable fruit fly culture insert prototype",route:"/shop/fruit-fly-tools",buttonText:"See the Prototype"},sections:[{id:"why-culture-flies",title:"Why Keep Your Own Cultures",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Dart frogs need consistently available food that is small enough to swallow. Flightless fruit flies are popular because they are easy to produce in large numbers and can be dusted with powdered supplements before feeding."}),(0,ze.jsx)("p",{children:"Relying on one culture is risky. Cultures can crash, dry out, mold, overheat, or become contaminated. A staggered group of cultures creates redundancy."})]})},{id:"basic-components",title:"The Basic Components",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"A typical culture requires:"}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"A ventilated culture cup and lid"}),(0,ze.jsx)("li",{children:"Prepared fruit fly media"}),(0,ze.jsx)("li",{children:"Water in the amount required by the media recipe"}),(0,ze.jsx)("li",{children:"Climbing material above the media"}),(0,ze.jsx)("li",{children:"A healthy starter population of flightless flies"}),(0,ze.jsx)("li",{children:"A stable, moderate storage temperature"})]}),(0,ze.jsx)("p",{children:"Coffee filters and excelsior are common climbing materials. The goal is to provide dry surface area where adult flies can stand, mate, and move away from wet media."})]})},{id:"prepare-media",title:"Prepare the Media",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Follow the ratio supplied with your chosen culture media. Too much water can produce soupy media and drowning; too little can dry out before the culture completes its cycle."}),(0,ze.jsxs)("ol",{children:[(0,ze.jsx)("li",{children:"Add the measured dry media to the clean cup."}),(0,ze.jsx)("li",{children:"Add the measured water."}),(0,ze.jsx)("li",{children:"Mix or allow it to absorb as directed."}),(0,ze.jsx)("li",{children:"Let hot mixtures cool before adding flies."}),(0,ze.jsx)("li",{children:"Add climbing material without packing it into the media."})]})]})},{id:"seed-the-culture",title:"Seed the Culture",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Add a healthy number of adult flies from a productive culture. Starting with too few flies can delay production, while dumping excessive old media or debris into the new cup increases the chance of contamination."}),(0,ze.jsx)("p",{children:"Tap flies into the new cup, replace the ventilated lid promptly, and label the cup with the culture date and fly type."})]})},{id:"temperature-and-storage",title:"Temperature and Storage",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Fruit fly cultures generally perform best in a stable indoor location away from direct sun. Excess heat can crash cultures quickly, while cooler conditions usually slow development."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Do not place cultures in direct window light."}),(0,ze.jsx)("li",{children:"Keep them away from hot electronics and heating vents."}),(0,ze.jsx)("li",{children:"Allow ventilation around the cups."}),(0,ze.jsx)("li",{children:"Avoid sealing cultures inside an airtight cabinet."})]})]})},{id:"stagger-cultures",title:"Stagger New Cultures",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Create new cultures on a regular schedule instead of waiting for the previous culture to fail. The exact interval depends on the number of frogs, temperature, fly species, and culture size."}),(0,ze.jsx)("p",{children:"Label every cup. Once several cultures are active, guessing their age becomes surprisingly difficult."}),(0,ze.jsxs)("div",{className:"guide-callout",children:[(0,ze.jsx)("strong",{children:"Never keep only one active culture."}),(0,ze.jsx)("p",{children:"Maintain cultures of different ages so one failed cup does not interrupt feeding."})]})]})},{id:"when-to-discard",title:"When to Discard a Culture",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Retire cultures that have stopped producing, dried completely, liquefied, developed severe contamination, or become heavily infested with unwanted organisms."}),(0,ze.jsx)("p",{children:"Do not repeatedly seed clean cultures from a visibly unhealthy culture. Use your strongest productive culture as the source for the next generation."})]})}]},{slug:"dart-frog-vivarium-setup",category:"VIVARIUM BUILD",title:"Dart Frog Vivarium Setup for Beginners",description:"The complete foundation for planning and assembling a stable bioactive dart frog enclosure.",readingTime:"11 min read",updated:"July 2026",heroImage:"/images/hero_photo.webp",heroImageAlt:"Planted dart frog vivarium with orange terribilis",relatedProduct:at,sections:[{id:"choose-an-enclosure",title:"Choose the Enclosure",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Choose an enclosure based on the adult size, behavior, group structure, and space requirements of the species you intend to keep. A tall enclosure is not automatically better, and a beautiful enclosure is not automatically large enough."}),(0,ze.jsx)("p",{children:"Front-opening access is especially useful because it reduces disturbance from above and makes feeding, pruning, and cleaning easier."})]})},{id:"drainage-layer",title:"Install a Drainage Layer",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"A drainage layer creates space beneath the substrate for excess water. Without it, repeated misting can saturate the soil and create stagnant conditions around plant roots."}),(0,ze.jsx)("p",{children:"Separate the drainage material from the substrate with a durable barrier that permits water movement while preventing soil from filling the void below."})]})},{id:"substrate",title:"Add a Suitable Substrate",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Vivarium substrate should retain some moisture without collapsing into dense mud. It must support plant roots while allowing the system to breathe and drain."}),(0,ze.jsx)("p",{children:"Avoid treating the substrate as the finished floor. A generous layer of leaf litter belongs over it and provides the surface the frogs actually use."})]})},{id:"hardscape",title:"Secure the Hardscape",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Install wood, cork, rock, and background components before adding delicate plants. Heavy pieces should rest securely and should not depend on loose substrate to remain upright."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Create sheltered areas and visual barriers."}),(0,ze.jsx)("li",{children:"Provide usable horizontal and angled surfaces."}),(0,ze.jsx)("li",{children:"Leave open paths for maintenance."}),(0,ze.jsx)("li",{children:"Avoid narrow traps where frogs could become wedged."})]})]})},{id:"plants",title:"Plant for Cover and Structure",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Plants are functional habitat. They create visual security, climbing routes, moisture gradients, egg-laying surfaces, and shaded retreats."}),(0,ze.jsx)("p",{children:"Use a mixture of ground-covering, climbing, trailing, and structural plants. Do not crowd the enclosure so densely that air cannot move or frogs cannot be observed."})]})},{id:"leaf-litter-and-microfauna",title:"Add Leaf Litter and Microfauna",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Leaf litter protects the substrate, creates hiding places, and supports springtails and isopods. These small organisms consume portions of decaying material and contribute to the enclosure\u2019s biological system."}),(0,ze.jsx)("p",{children:"A bioactive enclosure reduces routine waste accumulation, but it is not maintenance-free."})]})},{id:"lighting-and-misting",title:"Set Lighting and Misting",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Lighting should support plant growth without raising enclosure temperatures excessively. Misting should wet surfaces and replenish moisture, followed by some degree of drying and air exchange."}),(0,ze.jsx)("p",{children:"Constantly soaked glass and dripping substrate are not proof of a healthy humidity level."})]})},{id:"cycle-the-vivarium",title:"Let the Vivarium Stabilize",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Run the enclosure before introducing frogs. Watch how water drains, how quickly surfaces dry, which plants wilt, and whether condensation remains constant."}),(0,ze.jsx)("p",{children:"This period gives plants time to establish and allows you to fix structural problems without exposing animals to repeated disturbance."})]})}]},{slug:"best-dart-frog-plants",category:"PLANTS",title:"Best Plants for Dart Frog Vivariums",description:"How to choose tropical plants that tolerate humidity, trimming, limited root space, and vivarium conditions.",readingTime:"6 min read",updated:"July 2026",heroImage:"/images/gallery_1.webp",heroImageAlt:"Tropical plants growing inside a dart frog vivarium",sections:[{id:"what-makes-a-good-plant",title:"What Makes a Good Vivarium Plant",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"The best vivarium plants remain manageable, tolerate humid conditions, recover from pruning, and grow under artificial lighting. A plant that is beautiful for two weeks but quickly overwhelms the enclosure creates more work than value."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Compact or controllable growth"}),(0,ze.jsx)("li",{children:"Tolerance for humid air"}),(0,ze.jsx)("li",{children:"Ability to grow in limited substrate"}),(0,ze.jsx)("li",{children:"Leaves sturdy enough for frog traffic"}),(0,ze.jsx)("li",{children:"No pesticide residue before installation"})]})]})},{id:"ground-cover",title:"Ground-Covering Plants",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Small creeping plants soften the floor and hardscape, but they should not replace leaf litter. Use them around exposed substrate and allow sections of the floor to remain accessible."}),(0,ze.jsx)("p",{children:"Examples commonly used in vivariums include small peperomias, selected pileas, and manageable creeping ficus varieties."})]})},{id:"climbing-and-trailing",title:"Climbing and Trailing Plants",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Climbing plants help connect the floor to upper hardscape. Trailing species can soften backgrounds and provide visual cover."}),(0,ze.jsx)("p",{children:"Monitor vigorous growers carefully. Some vines can smother smaller plants, cover ventilation, and require frequent pruning."})]})},{id:"bromeliads",title:"Bromeliads",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Bromeliads add elevated structure and water-holding leaf axils. Their usefulness varies by frog species and by the plant\u2019s size, shape, and mounting position."}),(0,ze.jsx)("p",{children:"Mount bromeliads securely and prevent their base from remaining buried in constantly wet substrate."})]})},{id:"prepare-plants",title:"Prepare Plants Before Installation",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Plants sold for ordinary household use may contain fertilizer, pesticides, or unwanted organisms. Remove original soil, rinse the roots and foliage, inspect carefully, and quarantine when practical."}),(0,ze.jsxs)("div",{className:"guide-warning",children:[(0,ze.jsx)("strong",{children:"Do not assume \u201cindoor plant\u201d means animal-safe."}),(0,ze.jsx)("p",{children:"Source plants responsibly and clean them before introducing them into an occupied vivarium."})]})]})},{id:"pruning",title:"Prune for Habitat, Not Perfection",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Pruning keeps light and airflow available throughout the enclosure. Remove dead leaves, thin plants that block doors or vents, and redirect vines before they dominate the build."}),(0,ze.jsx)("p",{children:"The goal is not a manicured display. The goal is a functional, stable habitat with cover and usable space."})]})}]},{slug:"dart-frog-humidity",category:"ENVIRONMENT",title:"Dart Frog Humidity Without a Soaked Vivarium",description:"How to maintain humid conditions while preserving airflow, drainage, and useful drying cycles.",readingTime:"5 min read",updated:"July 2026",sections:[{id:"humidity-is-not-wetness",title:"Humidity Is Not the Same as Wetness",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Humidity describes water vapor in the air. Wet glass, puddled water, and saturated substrate describe liquid water. A vivarium can be humid without remaining visibly soaked at all times."}),(0,ze.jsx)("p",{children:"Healthy systems usually contain gradients: damp areas, relatively drier surfaces, protected leaf litter, and air movement."})]})},{id:"ventilation",title:"Ventilation Still Matters",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Ventilation exchanges stale air and allows some surface drying. Completely sealing an enclosure may raise measured humidity while also encouraging stagnation, persistent condensation, and poor plant performance."}),(0,ze.jsx)("p",{children:"The correct ventilation level depends on enclosure size, room humidity, temperature, planting density, and misting frequency."})]})},{id:"misting",title:"Mist With a Purpose",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Misting should replenish moisture, wet leaves, and support the enclosure\u2019s normal water cycle. More misting is not automatically better."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Observe how long leaves remain wet."}),(0,ze.jsx)("li",{children:"Watch whether drainage water accumulates too quickly."}),(0,ze.jsx)("li",{children:"Check whether the substrate smells stale."}),(0,ze.jsx)("li",{children:"Adjust duration before adding many extra misting events."})]})]})},{id:"condensation",title:"Read Condensation Carefully",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Condensation forms when moist air contacts cooler glass. It can appear even when the enclosure does not need more water."}),(0,ze.jsx)("p",{children:"Constant opaque condensation may indicate inadequate airflow, excessive misting, or a large temperature difference between the enclosure and the room."})]})},{id:"measure-and-observe",title:"Measure and Observe",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"A hygrometer can provide useful context, but inexpensive sensors are not perfect and may be inaccurate when continuously wet. Combine readings with direct observation."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Are the frogs active and using multiple enclosure areas?"}),(0,ze.jsx)("li",{children:"Does leaf litter remain damp without dissolving?"}),(0,ze.jsx)("li",{children:"Do plant roots remain healthy?"}),(0,ze.jsx)("li",{children:"Do surfaces dry somewhat between misting cycles?"})]})]})}]},{slug:"vivarium-lighting",category:"EQUIPMENT",title:"Lighting a Dart Frog Vivarium",description:"Choose lighting that supports plants and visibility without overheating or overcomplicating the enclosure.",readingTime:"5 min read",updated:"July 2026",sections:[{id:"what-the-light-is-for",title:"What the Light Is For",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Vivarium lighting primarily supports plant growth and establishes a predictable day-night cycle. It also allows you to inspect the frogs and enclosure clearly."}),(0,ze.jsx)("p",{children:"Brighter is not always better. Light intensity must suit the plants, enclosure depth, and distance between the fixture and foliage."})]})},{id:"heat",title:"Control Heat",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Any light can contribute heat. Measure enclosure temperature after the light has operated for several hours, especially during warm weather."}),(0,ze.jsx)("p",{children:"Keep fixtures outside the enclosure unless the equipment is explicitly intended for that environment. Maintain airflow around drivers and power supplies."})]})},{id:"photoperiod",title:"Use a Consistent Photoperiod",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Put the lighting on a timer so the enclosure receives a regular day-night cycle. Constantly changing the schedule complicates plant growth and makes the system harder to evaluate."}),(0,ze.jsx)("p",{children:"A normal daytime period is more useful than leaving lights on late in an attempt to accelerate plant growth."})]})},{id:"plant-response",title:"Let the Plants Diagnose the Light",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Stretching, weak growth may suggest insufficient usable light. Bleaching, scorched leaves, or plants growing away from the fixture may indicate excessive intensity or heat."}),(0,ze.jsx)("p",{children:"Adjust gradually and remember that recently installed plants may need time to adapt."})]})},{id:"electrical-safety",title:"Respect Water and Electricity",content:(0,ze.jsx)(ze.Fragment,{children:(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Use drip loops on all cords."}),(0,ze.jsx)("li",{children:"Keep connections away from misting nozzles and drainage."}),(0,ze.jsx)("li",{children:"Use properly protected electrical outlets."}),(0,ze.jsx)("li",{children:"Replace damaged cords and corroded connectors."}),(0,ze.jsx)("li",{children:"Do not overload timers or power strips."})]})})}]},{slug:"dart-frog-leaf-litter",category:"HUSBANDRY",title:"Why Leaf Litter Matters in Dart Frog Vivariums",description:"Leaf litter is habitat, cover, a feeding surface, and a foundation of a functional vivarium floor.",readingTime:"4 min read",updated:"July 2026",sections:[{id:"more-than-decoration",title:"More Than Decoration",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Leaf litter creates a layered surface that frogs can move beneath and across. It breaks up sight lines, provides shaded retreats, and makes the enclosure floor more complex."}),(0,ze.jsx)("p",{children:"Bare soil may look clean initially, but it offers less cover and exposes substrate directly to erosion and repeated misting."})]})},{id:"microfauna",title:"Habitat for Microfauna",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Springtails, isopods, and other small organisms use decaying leaves as food and shelter. This helps support the biological processes occurring on the enclosure floor."}),(0,ze.jsx)("p",{children:"Microfauna do not make the enclosure maintenance-free, but leaf litter gives them a more stable environment."})]})},{id:"choose-leaves",title:"Choose Suitable Leaves",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Use dry leaves from tree species commonly regarded as suitable for vivarium use. Leaves should be free from pesticides, roadside contamination, visible mold, and unknown chemical exposure."}),(0,ze.jsx)("p",{children:"Different leaves decay at different rates. Tougher leaves provide long-lasting structure, while softer leaves break down more quickly."})]})},{id:"prepare-leaves",title:"Prepare the Leaf Litter",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Keepers use different preparation methods depending on the source and condition of the leaves. At minimum, inspect them carefully and remove foreign debris or visibly contaminated material."}),(0,ze.jsx)("p",{children:"Store clean, dry leaves in a dry container so you can replenish the enclosure as they decompose."})]})},{id:"how-much",title:"Use a Real Layer",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"A few decorative leaves do not create meaningful litter depth. Apply overlapping leaves across much of the floor while preserving access to drains, feeding stations, and areas you need to inspect."}),(0,ze.jsx)("p",{children:"Add new leaves periodically rather than waiting for the entire layer to disappear."})]})}]},{slug:"dart-frog-supplements",category:"FEEDING",title:"Fruit Fly Dusting and Supplement Basics",description:"A practical introduction to dusting feeder insects and managing powdered supplements.",readingTime:"6 min read",updated:"July 2026",sections:[{id:"why-dust-flies",title:"Why Dust Fruit Flies",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Captive feeder insects do not automatically provide every nutrient required by dart frogs. Powdered calcium and vitamin supplements are used to improve the nutritional value of the feeders."}),(0,ze.jsx)("p",{children:"The correct product and schedule can vary by species, age, reproductive status, diet variety, and professional guidance."})]})},{id:"use-fresh-products",title:"Use Fresh, Properly Stored Products",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Supplements degrade with age, heat, moisture, and repeated exposure to air. Mark opening dates and follow the manufacturer\u2019s storage and replacement instructions."}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Keep containers tightly closed."}),(0,ze.jsx)("li",{children:"Use clean, dry tools."}),(0,ze.jsx)("li",{children:"Do not pour used powder back into the original container."}),(0,ze.jsx)("li",{children:"Protect products from heat and direct sunlight."})]})]})},{id:"dust-lightly",title:"Coat the Flies Lightly",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Place the feeding portion of flies into a separate dusting cup, add a small amount of supplement, and gently rotate or shake until the flies receive a light visible coating."}),(0,ze.jsx)("p",{children:"You do not need to bury the flies in a large pile of powder. Excess supplement left throughout the enclosure can absorb moisture and create residue."})]})},{id:"feed-promptly",title:"Feed Promptly After Dusting",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Offer dusted flies soon after coating them. The powder gradually falls off as flies move through the enclosure."}),(0,ze.jsx)("p",{children:"Feed an amount the frogs can reasonably consume and observe whether large numbers of flies remain in the vivarium."})]})},{id:"avoid-random-mixing",title:"Avoid Random Supplement Mixing",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Do not combine multiple products casually simply because each contains useful ingredients. Overlapping formulations can produce unintended duplication."}),(0,ze.jsxs)("div",{className:"guide-warning",children:[(0,ze.jsx)("strong",{children:"Use a deliberate supplementation plan."}),(0,ze.jsx)("p",{children:"Follow established husbandry guidance and seek an experienced exotic-animal veterinarian when health or deficiency concerns arise."})]})]})}]},{slug:"vivarium-maintenance",category:"MAINTENANCE",title:"A Simple Dart Frog Vivarium Maintenance Schedule",description:"Daily, weekly, and periodic tasks that keep a bioactive vivarium stable without constantly dismantling it.",readingTime:"5 min read",updated:"July 2026",sections:[{id:"daily",title:"Daily Checks",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Observe every frog you can reasonably locate."}),(0,ze.jsx)("li",{children:"Confirm normal movement and feeding behavior."}),(0,ze.jsx)("li",{children:"Check temperature and general enclosure conditions."}),(0,ze.jsx)("li",{children:"Make sure doors, lids, and vents are secure."}),(0,ze.jsx)("li",{children:"Look for standing water or equipment failure."}),(0,ze.jsx)("li",{children:"Remove obvious uneaten food or waste when practical."})]}),(0,ze.jsx)("p",{children:"Daily observation is more valuable than blindly following a cleaning calendar. Small changes are easiest to address when noticed early."})]})},{id:"weekly",title:"Weekly Tasks",content:(0,ze.jsx)(ze.Fragment,{children:(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Clean heavily spotted viewing glass."}),(0,ze.jsx)("li",{children:"Inspect misting nozzles and drainage."}),(0,ze.jsx)("li",{children:"Remove dead plant material."}),(0,ze.jsx)("li",{children:"Check feeding stations and hiding areas."}),(0,ze.jsx)("li",{children:"Inspect silicone seams, doors, and printed hardware."}),(0,ze.jsx)("li",{children:"Review fruit fly culture availability."})]})})},{id:"plant-maintenance",title:"Plant Maintenance",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Trim plants before they block ventilation, doors, lights, or access to the enclosure floor. Remove decaying leaves rather than allowing large quantities to rot against living plant crowns."}),(0,ze.jsx)("p",{children:"Reattach loose epiphytes and stabilize plants that frogs or maintenance activity have displaced."})]})},{id:"drainage",title:"Manage the Drainage Layer",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Monitor water accumulated beneath the substrate. Drain it when necessary so the substrate does not remain submerged."}),(0,ze.jsx)("p",{children:"Rapid accumulation may indicate excessive misting, clogged drainage, or water entering from another source."})]})},{id:"leaf-litter",title:"Replenish Leaf Litter",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Add clean leaves as the existing layer breaks down. Do not remove all old leaf litter at once unless contamination or another serious problem requires it."}),(0,ze.jsx)("p",{children:"A mixture of older and newer leaves preserves structure while supporting ongoing decomposition."})]})},{id:"when-to-intervene",title:"Know When the System Needs Intervention",content:(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("p",{children:"Persistent foul odors, flooding, structural collapse, unexplained animal decline, severe pest outbreaks, or spreading contamination require more than routine maintenance."}),(0,ze.jsx)("p",{children:"Correct the underlying cause instead of repeatedly cleaning the visible symptom."})]})}]}],lt=()=>{const{slug:e}=function(){let{matches:e}=a.useContext(K),t=e[e.length-1];return t?t.params:{}}(),t=(e=>{if(e)return it.find(t=>t.slug===e)})(e);return t?(0,ze.jsx)(rt,qe({},t)):(0,ze.jsx)("main",{className:"guide-not-found",children:(0,ze.jsx)(Ge,{children:(0,ze.jsxs)("div",{className:"guide-not-found-inner",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"GUIDE NOT FOUND"}),(0,ze.jsx)("h1",{children:"That Guide Isn\u2019t Here Yet."}),(0,ze.jsx)("p",{children:"The link may be outdated, or the guide may still be under development."}),(0,ze.jsx)(_e,{to:"/guides",children:(0,ze.jsx)($e,{children:"Return to Guides"})})]})})})},ot="https://buy.stripe.com/5kQ00i101fy93amcwy5ZC02",st=[{src:"/images/products/10g-vertical-kit-main.webp",alt:"DCDartFrogs 10-gallon vertical aquarium conversion kit"},{src:"/images/products/10g-vertical-kit-front.webp",alt:"Front view of the assembled 10-gallon vertical conversion kit"},{src:"/images/products/10g-vertical-kit-open.webp",alt:"Conversion kit doors shown open"},{src:"/images/products/10g-vertical-kit-parts.webp",alt:"Printed components included with the conversion kit"}],ut=["Printed lower door frame","Printed upper ventilation panel","Two front-opening doors","Door hinges and latching components","Ventilation screen sections","Assembly and installation instructions"],ct=["Designed for a standard 10-gallon glass aquarium","Aquarium must be positioned vertically","Measure your aquarium before ordering","Aquarium, substrate, lighting, and plants are not included"],dt=()=>{const[e,t]=(0,a.useState)(st[0]),n=()=>{ot.includes("REPLACE_WITH")?window.alert("Add your Stripe Payment Link to STRIPE_PAYMENT_LINK before accepting orders."):window.location.assign(ot)};return(0,ze.jsxs)("main",{className:"product-page",children:[(0,ze.jsx)(Ge,{className:"product-hero",children:(0,ze.jsxs)("div",{className:"product-layout",children:[(0,ze.jsxs)("div",{className:"product-gallery",children:[(0,ze.jsx)("div",{className:"product-main-image",children:(0,ze.jsx)("img",{src:e.src,alt:e.alt,draggable:"false"})}),(0,ze.jsx)("div",{className:"product-thumbnails","aria-label":"Product images",children:st.map(n=>{const r=n.src===e.src;return(0,ze.jsx)("button",{type:"button",className:"product-thumbnail ".concat(r?"product-thumbnail-active":""),onClick:()=>t(n),"aria-label":"View ".concat(n.alt),"aria-pressed":r,children:(0,ze.jsx)("img",{src:n.src,alt:""})},n.src)})})]}),(0,ze.jsxs)("div",{className:"product-purchase-panel",children:[(0,ze.jsx)("p",{className:"product-eyebrow",children:"AQUARIUM CONVERSION KIT"}),(0,ze.jsx)("h1",{children:"10-Gallon Vertical Conversion Kit"}),(0,ze.jsx)("p",{className:"product-summary",children:"Convert a standard 10-gallon aquarium into a clean, front-opening vertical vivarium using components designed specifically for dart frog keepers."}),(0,ze.jsxs)("div",{className:"product-rating-line",children:[(0,ze.jsx)("span",{children:"Keeper-designed"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Printed in California"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Made to order"})]}),(0,ze.jsxs)("div",{className:"product-price-block",children:[(0,ze.jsx)("span",{className:"product-price",children:"$34.99"}),(0,ze.jsx)("span",{className:"product-shipping",children:"Shipping calculated at checkout"})]}),(0,ze.jsxs)("div",{className:"product-notice",children:[(0,ze.jsx)("strong",{children:"The aquarium is not included."}),(0,ze.jsx)("span",{children:"This listing includes the conversion components only. No glass included."})]}),(0,ze.jsxs)("div",{className:"product-purchase-actions",children:[(0,ze.jsx)($e,{onClick:n,children:"Buy the Conversion Kit"}),(0,ze.jsx)("p",{className:"product-payment-note",children:"Secure checkout powered by Stripe"})]}),(0,ze.jsxs)("div",{className:"product-quick-details",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"Fit"}),(0,ze.jsx)("strong",{children:"Standard 10-gallon aquarium"})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"Orientation"}),(0,ze.jsx)("strong",{children:"Vertical"})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"Production"}),(0,ze.jsx)("strong",{children:"Printed to order"})]})]})]})]})}),(0,ze.jsx)(Ge,{className:"product-information",children:(0,ze.jsxs)("div",{className:"product-information-grid",children:[(0,ze.jsxs)("article",{className:"product-info-card",children:[(0,ze.jsx)("p",{className:"product-info-number",children:"01"}),(0,ze.jsx)("h2",{children:"What It Does"}),(0,ze.jsx)("p",{children:"A standard aquarium is inexpensive and easy to find, but it was not designed for front access. This kit creates a purpose-built front opening while preserving useful upper ventilation."})]}),(0,ze.jsxs)("article",{className:"product-info-card",children:[(0,ze.jsx)("p",{className:"product-info-number",children:"02"}),(0,ze.jsx)("h2",{children:"Why Vertical?"}),(0,ze.jsx)("p",{children:"Positioning a 10-gallon aquarium vertically provides more climbing height for plants, hardscape, and arboreal use while keeping the footprint compact."})]}),(0,ze.jsxs)("article",{className:"product-info-card",children:[(0,ze.jsx)("p",{className:"product-info-number",children:"03"}),(0,ze.jsx)("h2",{children:"Built in a Frog Room"}),(0,ze.jsx)("p",{children:"The design comes from real vivarium use\u2014not from a generic novelty-print catalog. Each revision is tested around humidity, feeding, maintenance, and daily access."})]})]})}),(0,ze.jsx)(Ge,{className:"product-details-section",children:(0,ze.jsxs)("div",{className:"product-details-grid",children:[(0,ze.jsxs)("div",{className:"product-details-copy",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"IN THE BOX"}),(0,ze.jsx)("h2",{children:"Everything Needed for the Conversion Hardware"}),(0,ze.jsx)("ul",{className:"product-check-list",children:ut.map(e=>(0,ze.jsx)("li",{children:e},e))})]}),(0,ze.jsxs)("div",{className:"product-details-copy",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"CHECK BEFORE ORDERING"}),(0,ze.jsx)("h2",{children:"Compatibility and Requirements"}),(0,ze.jsx)("ul",{className:"product-check-list",children:ct.map(e=>(0,ze.jsx)("li",{children:e},e))})]})]})}),(0,ze.jsx)(Ge,{className:"product-measurement-section",children:(0,ze.jsxs)("div",{className:"product-measurement-panel",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"MEASURE BEFORE ORDERING"}),(0,ze.jsx)("h2",{children:"Confirm Your Aquarium Dimensions"}),(0,ze.jsx)("p",{children:"Aquarium dimensions can vary slightly by manufacturer. Measure the outside width and glass opening before ordering so we can confirm compatibility."})]}),(0,ze.jsx)("a",{href:"/contact",className:"btn btn-secondary",children:"Ask About Fitment"})]})}),(0,ze.jsx)(Ge,{className:"product-final-cta",children:(0,ze.jsxs)("div",{className:"product-final-cta-inner",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"FIRST DCDARTFROGS KIT"}),(0,ze.jsx)("h2",{children:"Build Upward."}),(0,ze.jsx)("p",{children:"Turn an ordinary 10-gallon aquarium into a compact, front-opening vivarium without fabricating every component yourself."})]}),(0,ze.jsxs)("div",{className:"product-final-actions",children:[(0,ze.jsx)($e,{onClick:n,children:"Order the 10-Gallon Kit \u2014 $34.99"}),(0,ze.jsx)("span",{children:"Made to order in California"})]})]})})]})},ft=[{id:"10g-vertical-conversion",title:"10-Gallon Vertical Conversion",category:"CONVERSION BUILD",description:"A standard 10-gallon aquarium converted into a compact, front-opening vertical vivarium using our printed conversion hardware.",image:"/images/products/10g-vertical-kit-front.webp",imageAlt:"Ten-gallon aquarium fitted with a vertical conversion kit",tankSize:"10 gallon",species:"Compact dart frog setup",status:"Completed",featured:!0,highlights:["Front-opening access","Upper and lower ventilation","Compact footprint","Printed conversion hardware"]},{id:"terribilis-vivarium",title:"Orange Terribilis Vivarium",category:"FROG ROOM",description:"A planted display built around bold orange terribilis, with heavy visual cover, climbing structure, and open feeding areas.",image:"/images/gallery_5.webp",imageAlt:"Orange terribilis dart frogs inside a planted vivarium",tankSize:"Display vivarium",species:"Phyllobates terribilis",status:"Active",featured:!0,highlights:["Dense plant cover","Leaf-litter floor","Multiple feeding zones","Daily-use frog room build"]},{id:"fruit-fly-insert",title:"Reusable Fruit Fly Insert",category:"PROTOTYPE TESTING",description:"A removable culture structure developed as an alternative to loose excelsior and folded coffee filters.",image:"/images/products/reusable-excelsior.webp",imageAlt:"Orange reusable fruit fly culture insert prototype",tankSize:"32-ounce culture cup",species:"Flightless fruit flies",status:"Testing",featured:!0,highlights:["Reusable design","High climbing surface","One-piece removal","Multiple geometry revisions"]},{id:"azureus-vivarium",title:"Azureus Vivarium",category:"FROG ROOM",description:"A planted setup focused on usable floor space, natural cover, dependable feeding access, and stable daily maintenance.",image:"/images/gallery_1.webp",imageAlt:"Planted dart frog vivarium",tankSize:"Tropical vivarium",species:"Dendrobates tinctorius Azureus",status:"Active",highlights:["Broad leaf litter","Low-level hiding areas","Structured hardscape","Simple maintenance access"]},{id:"leucomelas-breeding",title:"Leucomelas Breeding Setup",category:"BREEDING SYSTEM",description:"A practical enclosure arranged around calling males, egg-laying locations, visual barriers, and repeatable monitoring.",image:"/images/gallery_2.webp",imageAlt:"Dart frog breeding vivarium with tropical plants",tankSize:"Breeding vivarium",species:"Dendrobates leucomelas",status:"Active",highlights:["Egg-laying sites","Visual separation","Accessible monitoring","Stable humidity cycle"]},{id:"future-horizontal-kit",title:"10-Gallon Horizontal Conversion",category:"IN DEVELOPMENT",description:"A future front-opening conversion designed for keepers who want the aquarium in its standard horizontal orientation.",image:"/images/products/10g-horizontal-kit.webp",imageAlt:"Concept image for a horizontal aquarium conversion kit",tankSize:"10 gallon",species:"Future product platform",status:"Concept",highlights:["Horizontal orientation","Front-opening access","Ventilation planning","Prototype stage"]}],ht=[{number:"01",title:"Find the Problem",description:"Every build begins with a real maintenance, access, feeding, or enclosure problem."},{number:"02",title:"Build the First Version",description:"We design and print a working prototype instead of waiting for a perfect theoretical solution."},{number:"03",title:"Use It for Real",description:"The design goes into an actual vivarium, culture cup, or frog-room workflow."},{number:"04",title:"Revise What Fails",description:"Weak hinges, awkward access, poor airflow, and unnecessary parts get redesigned."}],pt=[{title:"Access matters more than appearance",description:"A beautiful enclosure becomes frustrating if feeding, pruning, drainage, or animal checks are difficult."},{title:"Humidity is not the same as saturation",description:"Healthy vivariums need moisture, drainage, ventilation, and periods of surface drying."},{title:"The simplest version usually wins",description:"Every unnecessary clip, hinge, wire, and bracket creates another possible failure point."}],mt=()=>{const e=ft.filter(e=>e.featured);return(0,ze.jsxs)("main",{className:"builds-page",children:[(0,ze.jsx)(Ge,{className:"builds-hero",children:(0,ze.jsxs)("div",{className:"builds-hero-grid",children:[(0,ze.jsxs)("div",{className:"builds-hero-copy",children:[(0,ze.jsx)("p",{className:"hero-eyebrow",children:"BUILT, TESTED, AND USED FOR REAL"}),(0,ze.jsx)("h1",{children:"Inside the DCDartFrogs Frog Room."}),(0,ze.jsx)("p",{className:"builds-hero-description",children:"Vivarium builds, conversion systems, fruit fly prototypes, and the designs that survived real daily use."}),(0,ze.jsxs)("div",{className:"builds-hero-actions",children:[(0,ze.jsx)("a",{href:"#featured-builds",children:(0,ze.jsx)($e,{children:"Explore the Builds"})}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{variant:"secondary",children:"View the 10-Gallon Kit"})})]}),(0,ze.jsxs)("div",{className:"builds-hero-trust",children:[(0,ze.jsx)("span",{children:"Real frog-room projects"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"Prototype failures included"}),(0,ze.jsx)("span",{"aria-hidden":"true",children:"\u2022"}),(0,ze.jsx)("span",{children:"No showroom fiction"})]})]}),(0,ze.jsx)("div",{className:"builds-hero-media",children:(0,ze.jsxs)("div",{className:"builds-hero-image",children:[(0,ze.jsx)("img",{src:"/images/products/10g-vertical-kit-main.webp",alt:"Ten-gallon vertical aquarium conversion build",draggable:"false"}),(0,ze.jsxs)("div",{className:"builds-hero-callout",children:[(0,ze.jsx)("span",{children:"FEATURED BUILD"}),(0,ze.jsx)("strong",{children:"10-Gallon Vertical Conversion"}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:"See the finished kit"})]})]})})]})}),(0,ze.jsxs)(Ge,{className:"builds-featured",id:"featured-builds",children:[(0,ze.jsxs)("div",{className:"builds-section-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"FEATURED PROJECTS"}),(0,ze.jsx)("h2",{children:"The Builds That Define the Brand."}),(0,ze.jsx)("p",{children:"These projects represent the core of DCDartFrogs: practical enclosures, keeper-designed hardware, and products developed through real use rather than guesswork."})]}),(0,ze.jsx)("div",{className:"builds-featured-grid",children:e.map((e,t)=>(0,ze.jsxs)("article",{className:"build-feature-card ".concat(0===t?"build-feature-card-large":""),children:[(0,ze.jsxs)("div",{className:"build-feature-image",children:[(0,ze.jsx)("img",{src:e.image,alt:e.imageAlt,draggable:"false"}),(0,ze.jsx)("span",{className:"build-status-badge",children:e.status})]}),(0,ze.jsxs)("div",{className:"build-feature-content",children:[(0,ze.jsx)("span",{className:"build-category",children:e.category}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description}),(0,ze.jsxs)("div",{className:"build-feature-meta",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"System"}),(0,ze.jsx)("strong",{children:e.tankSize})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"Use"}),(0,ze.jsx)("strong",{children:e.species})]})]}),(0,ze.jsx)("ul",{className:"build-highlight-list",children:e.highlights.map(e=>(0,ze.jsx)("li",{children:e},e))})]})]},e.id))})]}),(0,ze.jsxs)(Ge,{className:"builds-process",children:[(0,ze.jsxs)("div",{className:"builds-process-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"HOW WE DEVELOP PRODUCTS"}),(0,ze.jsx)("h2",{children:"Build Fast. Test Honestly. Fix What Breaks."}),(0,ze.jsx)("p",{children:"The first version is rarely the final version. Real improvement happens when a design leaves the computer and enters the frog room."})]}),(0,ze.jsx)("div",{className:"builds-process-grid",children:ht.map(e=>(0,ze.jsxs)("article",{children:[(0,ze.jsx)("span",{children:e.number}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description})]},e.number))})]}),(0,ze.jsxs)(Ge,{className:"builds-library",children:[(0,ze.jsxs)("div",{className:"builds-library-header",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"PROJECT LIBRARY"}),(0,ze.jsx)("h2",{children:"Frog Rooms, Builds, and Prototypes"})]}),(0,ze.jsx)("p",{children:"Finished systems, active enclosures, development projects, and future product directions."})]}),(0,ze.jsx)("div",{className:"builds-library-grid",children:ft.map(e=>(0,ze.jsxs)("article",{className:"build-library-card",children:[(0,ze.jsxs)("div",{className:"build-library-image",children:[(0,ze.jsx)("img",{src:e.image,alt:e.imageAlt,draggable:"false"}),(0,ze.jsx)("span",{children:e.status})]}),(0,ze.jsxs)("div",{className:"build-library-content",children:[(0,ze.jsx)("span",{className:"build-category",children:e.category}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description}),(0,ze.jsxs)("div",{className:"build-library-details",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"System"}),(0,ze.jsx)("strong",{children:e.tankSize})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"Focus"}),(0,ze.jsx)("strong",{children:e.species})]})]})]})]},e.id))})]}),(0,ze.jsx)(Ge,{className:"builds-lessons",children:(0,ze.jsxs)("div",{className:"builds-lessons-grid",children:[(0,ze.jsxs)("div",{className:"builds-lessons-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"LESSONS FROM THE FROG ROOM"}),(0,ze.jsx)("h2",{children:"What the Finished Photo Doesn\u2019t Show."}),(0,ze.jsx)("p",{children:"Good builds are not only attractive. They are easy to maintain, safe for the animals, and reliable enough to use every day."})]}),(0,ze.jsx)("div",{className:"builds-lessons-list",children:pt.map((e,t)=>(0,ze.jsxs)("article",{children:[(0,ze.jsxs)("span",{children:["0",t+1]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description})]})]},e.title))})]})}),(0,ze.jsx)(Ge,{className:"builds-product-section",children:(0,ze.jsxs)("div",{className:"builds-product-inner",children:[(0,ze.jsx)("div",{className:"builds-product-image",children:(0,ze.jsx)("img",{src:"/images/products/10g-vertical-kit-parts.webp",alt:"Printed components for the ten-gallon conversion kit",draggable:"false"})}),(0,ze.jsxs)("div",{className:"builds-product-copy",children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"FROM PROJECT TO PRODUCT"}),(0,ze.jsx)("h2",{children:"The Build You Can Buy."}),(0,ze.jsx)("p",{children:"The 10-gallon vertical conversion began as a practical frog-room solution. It is now available as a made-to-order kit for keepers who want a clean front-opening aquarium conversion."}),(0,ze.jsxs)("div",{className:"builds-product-benefits",children:[(0,ze.jsx)("span",{children:"Designed in-house"}),(0,ze.jsx)("span",{children:"Printed in California"}),(0,ze.jsx)("span",{children:"Built for real use"})]}),(0,ze.jsx)(_e,{to:"/conversion-kits",children:(0,ze.jsx)($e,{children:"View the 10-Gallon Kit"})})]})]})}),(0,ze.jsx)(Ge,{className:"builds-final-cta",children:(0,ze.jsxs)("div",{className:"builds-final-cta-inner",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"HAVE A BUILD IDEA?"}),(0,ze.jsx)("h2",{children:"Show Us the Problem."}),(0,ze.jsx)("p",{children:"Need a custom bracket, conversion component, feeding tool, plant holder, or frog-room accessory? Send us the idea and the measurements."})]}),(0,ze.jsx)(_e,{to:"/contact",children:(0,ze.jsx)($e,{children:"Request a Custom Project"})})]})})]})},gt=[{number:"01",title:"Reusable",description:"Designed as a washable alternative to disposable coffee filters and excelsior."},{number:"02",title:"High Climbing Surface",description:"A dense internal structure gives flies usable vertical surface throughout the culture."},{number:"03",title:"Easy to Remove",description:"The insert is intended to lift out as one piece when harvesting flies or cleaning the cup."}],vt=["Culture productivity compared with coffee filters and excelsior","Airflow through the center of the culture","Ease of harvesting flies","Cleaning and reusability","Fit inside common 32-ounce culture cups","Resistance to warping in warm, humid conditions"],yt=[{question:"Is the fruit fly insert available to purchase?",answer:"Not yet. The current version is still being tested and revised before release."},{question:"Does it replace the culture media?",answer:"No. The insert replaces the climbing material placed above the culture media, not the media itself."},{question:"Which culture cups will it fit?",answer:"The prototype is being designed around common 32-ounce deli-style fruit fly culture cups. Final compatibility will be confirmed before launch."},{question:"Can it be reused?",answer:"That is one of the main design goals. Cleaning durability and repeated-use performance are still being tested."}],bt=()=>(0,ze.jsxs)("main",{className:"fly-tools-page",children:[(0,ze.jsx)(Ge,{className:"fly-tools-hero",children:(0,ze.jsxs)("div",{className:"fly-tools-hero-grid",children:[(0,ze.jsxs)("div",{className:"fly-tools-copy",children:[(0,ze.jsxs)("div",{className:"fly-tools-status-row",children:[(0,ze.jsx)("span",{className:"fly-tools-status",children:"PROTOTYPE"}),(0,ze.jsx)("span",{children:"Currently in frog-room testing"})]}),(0,ze.jsx)("h1",{children:"A Cleaner Way to Build Fruit Fly Cultures."}),(0,ze.jsx)("p",{className:"fly-tools-intro",children:"We are developing a reusable culture insert designed to replace loose excelsior and folded coffee filters with one removable, purpose-built structure."}),(0,ze.jsxs)("div",{className:"fly-tools-actions",children:[(0,ze.jsx)(_e,{to:"/contact?subject=fruit-fly-insert",children:(0,ze.jsx)($e,{children:"Join the Early Interest List"})}),(0,ze.jsx)("a",{href:"#development",children:(0,ze.jsx)($e,{variant:"secondary",children:"See What We\u2019re Testing"})})]}),(0,ze.jsx)("p",{className:"fly-tools-disclaimer",children:"This product is not currently available for purchase."})]}),(0,ze.jsx)("div",{className:"fly-tools-media",children:(0,ze.jsxs)("div",{className:"fly-tools-image-wrap",children:[(0,ze.jsx)("img",{src:"/images/products/reusable-excelsior.webp",alt:"Prototype reusable fruit fly culture insert",className:"fly-tools-hero-image",draggable:"false"}),(0,ze.jsxs)("div",{className:"fly-tools-image-label",children:[(0,ze.jsx)("span",{children:"CURRENT DEVELOPMENT"}),(0,ze.jsx)("strong",{children:"Reusable Fruit Fly Culture Insert"})]})]})})]})}),(0,ze.jsxs)(Ge,{className:"fly-tools-problem",children:[(0,ze.jsxs)("div",{className:"fly-tools-section-heading",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"WHY WE\u2019RE BUILDING IT"}),(0,ze.jsx)("h2",{children:"Fruit Fly Cultures Work. The Climbing Material Is the Messy Part."}),(0,ze.jsx)("p",{children:"Coffee filters collapse, excelsior sheds pieces, and both must be replaced with every culture. We wanted a climbing structure that could be removed cleanly, washed, and used again."})]}),(0,ze.jsxs)("div",{className:"fly-tools-comparison",children:[(0,ze.jsxs)("article",{className:"fly-tools-comparison-card",children:[(0,ze.jsx)("span",{className:"fly-tools-comparison-label",children:"TRADITIONAL METHOD"}),(0,ze.jsx)("h3",{children:"Coffee Filters and Excelsior"}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Disposable after each culture"}),(0,ze.jsx)("li",{children:"Can shift or collapse into the media"}),(0,ze.jsx)("li",{children:"Loose material makes cleanup messier"}),(0,ze.jsx)("li",{children:"Inconsistent shape from culture to culture"})]})]}),(0,ze.jsxs)("article",{className:"fly-tools-comparison-card fly-tools-comparison-card-featured",children:[(0,ze.jsx)("span",{className:"fly-tools-comparison-label",children:"OUR DESIGN GOAL"}),(0,ze.jsx)("h3",{children:"One Removable Insert"}),(0,ze.jsxs)("ul",{children:[(0,ze.jsx)("li",{children:"Consistent internal climbing structure"}),(0,ze.jsx)("li",{children:"Removes from the cup as one piece"}),(0,ze.jsx)("li",{children:"Designed to be washed and reused"}),(0,ze.jsx)("li",{children:"Built specifically for fruit fly cultures"})]})]})]})]}),(0,ze.jsxs)(Ge,{className:"fly-tools-goals",children:[(0,ze.jsxs)("div",{className:"fly-tools-section-heading fly-tools-section-heading-center",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"DESIGN PRIORITIES"}),(0,ze.jsx)("h2",{children:"Simple Idea. Serious Testing."}),(0,ze.jsx)("p",{children:"The final product has to do more than look clever. It needs to make culturing flies easier without reducing culture performance."})]}),(0,ze.jsx)("div",{className:"fly-tools-goal-grid",children:gt.map(e=>(0,ze.jsxs)("article",{className:"fly-tools-goal-card",children:[(0,ze.jsx)("span",{children:e.number}),(0,ze.jsx)("h3",{children:e.title}),(0,ze.jsx)("p",{children:e.description})]},e.number))})]}),(0,ze.jsx)(Ge,{className:"fly-tools-development",id:"development",children:(0,ze.jsxs)("div",{className:"fly-tools-development-grid",children:[(0,ze.jsxs)("div",{className:"fly-tools-development-copy",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"CURRENT DEVELOPMENT"}),(0,ze.jsx)("h2",{children:"What We\u2019re Testing Before We Sell It"}),(0,ze.jsx)("p",{children:"We are comparing prototype versions in active cultures and changing the geometry based on real results. It will not launch until it is genuinely useful."}),(0,ze.jsx)("ul",{className:"fly-tools-test-list",children:vt.map(e=>(0,ze.jsx)("li",{children:e},e))})]}),(0,ze.jsxs)("div",{className:"fly-tools-development-image",children:[(0,ze.jsx)("img",{src:"/images/products/reusable-excelsior.webp",alt:"Fruit fly culture insert being tested inside a culture cup",draggable:"false"}),(0,ze.jsxs)("div",{className:"fly-tools-test-badge",children:[(0,ze.jsx)("strong",{children:"Prototype Status"}),(0,ze.jsx)("span",{children:"Geometry revisions in progress"})]})]})]})}),(0,ze.jsxs)(Ge,{className:"fly-tools-process",children:[(0,ze.jsxs)("div",{className:"fly-tools-section-heading fly-tools-section-heading-center",children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"DEVELOPMENT PROCESS"}),(0,ze.jsx)("h2",{children:"Built Through Real Culture Cycles."})]}),(0,ze.jsxs)("div",{className:"fly-tools-process-grid",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"1"}),(0,ze.jsx)("h3",{children:"Print"}),(0,ze.jsx)("p",{children:"Create a new geometry based on the last culture\u2019s results."})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"2"}),(0,ze.jsx)("h3",{children:"Culture"}),(0,ze.jsx)("p",{children:"Run the design through a complete fruit fly culture cycle."})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"3"}),(0,ze.jsx)("h3",{children:"Compare"}),(0,ze.jsx)("p",{children:"Compare production, airflow, harvesting, and cleanup."})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("span",{children:"4"}),(0,ze.jsx)("h3",{children:"Revise"}),(0,ze.jsx)("p",{children:"Keep what works, remove what does not, and test again."})]})]})]}),(0,ze.jsx)(Ge,{className:"fly-tools-faq",children:(0,ze.jsxs)("div",{className:"fly-tools-faq-grid",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"section-eyebrow",children:"QUESTIONS"}),(0,ze.jsx)("h2",{children:"Fruit Fly Insert FAQ"})]}),(0,ze.jsx)("div",{className:"fly-tools-faq-list",children:yt.map(e=>(0,ze.jsxs)("details",{children:[(0,ze.jsx)("summary",{children:e.question}),(0,ze.jsx)("p",{children:e.answer})]},e.question))})]})}),(0,ze.jsx)(Ge,{className:"fly-tools-final-cta",children:(0,ze.jsxs)("div",{className:"fly-tools-final-cta-inner",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"funnel-eyebrow",children:"HELP SHAPE THE FINAL PRODUCT"}),(0,ze.jsx)("h2",{children:"Culture a Lot of Flies?"}),(0,ze.jsx)("p",{children:"Tell us what you currently use, what frustrates you, and what a reusable insert would need to do before you would trust it."})]}),(0,ze.jsxs)("div",{className:"fly-tools-final-actions",children:[(0,ze.jsx)(_e,{to:"/contact?subject=fruit-fly-insert",children:(0,ze.jsx)($e,{children:"Send Prototype Feedback"})}),(0,ze.jsx)("span",{children:"No preorder or payment required."})]})]})})]}),xt=()=>(0,ze.jsx)(ze.Fragment,{}),wt=()=>{const e=Array.from({length:6},(e,t)=>"/images/gallery_".concat(t,".webp"));return(0,ze.jsxs)(Ge,{children:[(0,ze.jsx)("h1",{children:"Gallery"}),(0,ze.jsx)("p",{className:"section-subtitle",children:"A peek into some of the vivariums, frogs, and builds from the DCDartFrogs ecosystem."}),(0,ze.jsx)("div",{className:"grid-3",children:e.map((e,t)=>(0,ze.jsx)(Ke,{children:(0,ze.jsx)("div",{className:"gallery-image-wrapper",children:(0,ze.jsx)("img",{src:e,alt:"Vivarium ".concat(t+1),loading:"lazy",className:"gallery-image"})})},t))})]})},jt=()=>(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)(Ge,{className:"about-hero",children:(0,ze.jsxs)("div",{className:"about-grid",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("p",{className:"hero-eyebrow",children:"BUILT BY DART FROG KEEPERS"}),(0,ze.jsxs)("h1",{children:["We Design The Gear",(0,ze.jsx)("br",{}),"We Wanted To Buy."]}),(0,ze.jsx)("p",{className:"hero-description",children:"DCDartFrogs creates premium 3D printed equipment for dart frog keepers\u2014from aquarium conversion kits and fruit fly culture tools to practical vivarium accessories."}),(0,ze.jsx)("p",{className:"hero-description",children:"Every product begins the same way: we build it, use it in our own frog room, improve it through multiple revisions, and only release it once it solves a real problem."}),(0,ze.jsxs)("div",{className:"about-stats",children:[(0,ze.jsxs)("div",{className:"card",children:[(0,ze.jsx)("strong",{children:"100+"}),(0,ze.jsx)("span",{children:"Hours of Design Testing"})]}),(0,ze.jsxs)("div",{className:"card",children:[(0,ze.jsx)("strong",{children:"Real Frog Room"}),(0,ze.jsx)("span",{children:"Every Product Tested"})]}),(0,ze.jsxs)("div",{className:"card",children:[(0,ze.jsx)("strong",{children:"Made in California"}),(0,ze.jsx)("span",{children:"Printed to Order"})]})]})]}),(0,ze.jsx)("div",{className:"about-photo",children:(0,ze.jsx)("img",{src:"/images/gallery_5.webp",alt:"Orange Terribilis Dart Frogs"})})]})}),(0,ze.jsx)(Ge,{children:(0,ze.jsxs)("div",{className:"about-story",children:[(0,ze.jsx)("h2",{children:"Built From Experience"}),(0,ze.jsx)("p",{children:"Like many hobbyists, we started by converting standard aquariums into vivariums and quickly discovered that many of the products on the market were either expensive, difficult to use, or simply didn't exist."}),(0,ze.jsx)("p",{children:"Instead of settling, we began designing our own solutions. Those first prototypes evolved into the conversion kits, culture tools, and accessories we now manufacture using professional-grade 3D printers."}),(0,ze.jsx)("p",{children:"Today, every new design is developed with one goal in mind: making dart frog keeping simpler, cleaner, and more enjoyable for everyone\u2014from first-time hobbyists to experienced breeders."})]})}),(0,ze.jsx)(Ge,{children:(0,ze.jsxs)("div",{className:"about-values",children:[(0,ze.jsxs)("div",{className:"about-value-card card",children:[(0,ze.jsx)("h3",{children:"Designed In-House"}),(0,ze.jsx)("p",{children:"Every product starts as an original design and goes through multiple prototype revisions before release."})]}),(0,ze.jsxs)("div",{className:"about-value-card card",children:[(0,ze.jsx)("h3",{children:"Tested With Real Animals"}),(0,ze.jsx)("p",{children:"We don't release products until they've been used in functioning dart frog vivariums and fruit fly cultures."})]}),(0,ze.jsxs)("div",{className:"about-value-card card",children:[(0,ze.jsx)("h3",{children:"Made For Hobbyists"}),(0,ze.jsx)("p",{children:"We build equipment that we personally use every day, because we're hobbyists first and manufacturers second."})]})]})})]}),kt=()=>{const[e,t]=(0,a.useState)("idle");return(0,ze.jsx)(ze.Fragment,{children:(0,ze.jsx)(Ge,{className:"contact-hero",children:(0,ze.jsxs)("div",{className:"contact-grid",children:[(0,ze.jsxs)("div",{className:"contact-copy",children:[(0,ze.jsx)("span",{className:"hero-eyebrow",children:"QUESTIONS \u2022 CUSTOM BUILDS \u2022 PRODUCT IDEAS"}),(0,ze.jsxs)("h1",{children:["Let's Build",(0,ze.jsx)("br",{}),"Something Better."]}),(0,ze.jsx)("p",{className:"hero-description",children:"Whether you have questions about a conversion kit, need help with a vivarium build, have an idea for a new 3D printed product, or just want to talk dart frogs\u2014 I'd love to hear from you."}),(0,ze.jsxs)("div",{className:"contact-highlights",children:[(0,ze.jsxs)("div",{children:[(0,ze.jsx)("strong",{children:"Custom Prints"}),(0,ze.jsx)("span",{children:"Need something unique?"})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("strong",{children:"Build Questions"}),(0,ze.jsx)("span",{children:"Happy to help."})]}),(0,ze.jsxs)("div",{children:[(0,ze.jsx)("strong",{children:"Usually replies within 24 hours"}),(0,ze.jsx)("span",{children:"No support ticket nonsense."})]})]})]}),(0,ze.jsx)("div",{className:"card",children:"submitted"===e?(0,ze.jsxs)("div",{className:"contact-success",children:[(0,ze.jsx)("h2",{children:"Message Sent."}),(0,ze.jsx)("p",{children:"Thanks for reaching out! I'll get back to you as soon as I can."})]}):(0,ze.jsxs)("form",{className:"contact-form",onSubmit:e=>{e.preventDefault(),t("submitted")},children:[(0,ze.jsxs)("label",{children:["Name",(0,ze.jsx)("input",{type:"text",placeholder:"Your name",required:!0})]}),(0,ze.jsxs)("label",{children:["Email",(0,ze.jsx)("input",{type:"email",placeholder:"you@example.com",required:!0})]}),(0,ze.jsxs)("label",{children:["Message",(0,ze.jsx)("textarea",{rows:6,placeholder:"Tell me what you're building...",required:!0})]}),(0,ze.jsx)($e,{type:"submit",children:"Send Message"})]})})]})})})},St=["eventCategory","eventAction","eventLabel","eventValue","hitType"],Nt=["title","location"],Et=["page","hitType"],Ct=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function Tt(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e||"";return(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(n=e.toString().trim().replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,(e,t,n)=>t>0&&t+e.length!==n.length&&e.search(Ct)>-1&&":"!==n.charAt(t-2)&&("-"!==n.charAt(t+e.length)||"-"===n.charAt(t-1))&&n.charAt(t-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1))),t&&(n=function(e){return"string"===typeof(t=e)&&-1!==t.indexOf("@")?(console.warn("This arg looks like an email address, redacting."),"REDACTED (Potential Email Address)"):e;var t}(n)),n}var Pt=class{constructor(){var e=this;Be(this,"isInitialized",void 0),Be(this,"_testMode",void 0),Be(this,"_currentMeasurementId",void 0),Be(this,"_hasLoadedGA",void 0),Be(this,"_isQueuing",void 0),Be(this,"_queueGtag",void 0),Be(this,"reset",()=>{this.isInitialized=!1,this._testMode=!1,this._currentMeasurementId="",this._hasLoadedGA=!1,this._isQueuing=!1,this._queueGtag=[]}),Be(this,"_gtag",function(){for(var t=arguments.length,n=new Array(t),r=0;r2&&void 0!==arguments[2]?arguments[2]:"https://www.googletagmanager.com/gtag/js";if("undefined"!==typeof window&&"undefined"!==typeof document&&!e._hasLoadedGA){const a=document.createElement("script");a.async=!0,a.src="".concat(r,"?id=").concat(t),n&&a.setAttribute("nonce",n),document.body.appendChild(a),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},e._hasLoadedGA=!0}}),Be(this,"_toGtagOptions",e=>{if(!e)return;const t={cookieUpdate:"cookie_update",cookieExpires:"cookie_expires",cookieDomain:"cookie_domain",cookieFlags:"cookie_flags",userId:"user_id",clientId:"client_id",anonymizeIp:"anonymize_ip",contentGroup1:"content_group1",contentGroup2:"content_group2",contentGroup3:"content_group3",contentGroup4:"content_group4",contentGroup5:"content_group5",allowAdFeatures:"allow_google_signals",allowAdPersonalizationSignals:"allow_ad_personalization_signals",nonInteraction:"non_interaction",page:"page_path",hitCallback:"event_callback"};return Object.entries(e).reduce((e,n)=>{let[r,a]=n;return t[r]?e[t[r]]=a:e[r]=a,e},{})}),Be(this,"initialize",function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)throw new Error("Require GA_MEASUREMENT_ID");const r="string"===typeof t?[{trackingId:t}]:t;e._currentMeasurementId=r[0].trackingId;const{gaOptions:a,gtagOptions:i,nonce:l,testMode:o=!1,gtagUrl:s}=n;if(e._testMode=o,o||e._loadGA(e._currentMeasurementId,l,s),e.isInitialized||(e._gtag("js",new Date),r.forEach(t=>{const n=qe(qe(qe({},e._toGtagOptions(qe(qe({},a),t.gaOptions))),i),t.gtagOptions);Object.keys(n).length?e._gtag("config",t.trackingId,n):e._gtag("config",t.trackingId)})),e.isInitialized=!0,!o){const t=[...e._queueGtag];for(e._queueGtag=[],e._isQueuing=!1;t.length;){const n=t.shift();e._gtag(...n),"get"===n[0]&&(e._isQueuing=!0)}}}),Be(this,"set",e=>{e?"object"===typeof e?(0===Object.keys(e).length&&console.warn("empty `fieldsObject` given to .set()"),this._gaCommand("set",e)):console.warn("Expected `fieldsObject` arg to be an Object"):console.warn("`fieldsObject` is required in .set()")}),Be(this,"_gaCommandSendEvent",(e,t,n,r,a)=>{this._gtag("event",t,qe(qe({event_category:e,event_label:n,value:r},a&&{non_interaction:a.nonInteraction}),this._toGtagOptions(a)))}),Be(this,"_gaCommandSendEventParameters",function(){for(var t=arguments.length,n=new Array(t),r=0;r{this._gtag("event","timing_complete",{name:t,value:n,event_category:e,event_label:r})}),Be(this,"_gaCommandSendPageview",(e,t)=>{if(t&&Object.keys(t).length){const n=this._toGtagOptions(t)||{},{title:r,location:a}=n,i=Ve(n,Nt);this._gtag("event","page_view",qe(qe(qe(qe({},e&&{page_path:e}),r&&{page_title:r}),a&&{page_location:a}),i))}else e?this._gtag("event","page_view",{page_path:e}):this._gtag("event","page_view")}),Be(this,"_gaCommandSendPageviewParameters",function(){for(var t=arguments.length,n=new Array(t),r=0;r1?n-1:0),a=1;a{e._isQueuing=!1;const r=e._queueGtag;for(t({get:t=>"clientId"===t?n:"trackingId"===t?e._currentMeasurementId:"apiVersion"===t?"1":void 0});r.length;){const t=r.shift();e._gtag(...t)}}),e._isQueuing=!0}return e.ga}),Be(this,"event",(e,t)=>{if("string"===typeof e)this._gtag("event",e,this._toGtagOptions(t));else{const{action:t,category:n,label:r,value:a,nonInteraction:i,transport:l}=e;if(!n||!t)return void console.warn("args.category AND args.action are required in event()");const o={hitType:"event",eventCategory:Tt(n),eventAction:Tt(t)};r&&(o.eventLabel=Tt(r)),"undefined"!==typeof a&&("number"!==typeof a?console.warn("Expected `args.value` arg to be a Number."):o.eventValue=a),"undefined"!==typeof i&&("boolean"!==typeof i?console.warn("`args.nonInteraction` must be a boolean."):o.nonInteraction=i),"undefined"!==typeof l&&("string"!==typeof l?console.warn("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(l)&&console.warn("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),o.transport=l)),this._gaCommand("send",o)}}),Be(this,"send",e=>{this._gaCommand("send",e)}),this.reset()}gtag(){this._gtag(...arguments)}};var _t=new Pt;let Ot=!1;const Lt=()=>{const e=J();return(0,a.useEffect)(()=>{Ot||(_t.initialize("G-XXXXXXXXXX"),Ot=!0)},[]),(0,a.useEffect)(()=>{var t;t=e.pathname+e.search,_t.send({hitType:"pageview",page:t,title:document.title})},[e.pathname,e.search]),null},Ft=()=>((()=>{const e=J();(0,a.useEffect)(()=>{window.scrollTo({top:0,behavior:"smooth"})},[e.pathname])})(),(0,ze.jsxs)(Ie,{children:[(0,ze.jsx)(Lt,{}),(0,ze.jsxs)(ve,{children:[(0,ze.jsx)(me,{path:"/",element:(0,ze.jsx)(Ze,{})}),(0,ze.jsx)(me,{path:"/guides",element:(0,ze.jsx)(nt,{})}),(0,ze.jsx)(me,{path:"/guides/:slug",element:(0,ze.jsx)(lt,{})}),(0,ze.jsx)(me,{path:"/gallery",element:(0,ze.jsx)(wt,{})}),(0,ze.jsx)(me,{path:"/about",element:(0,ze.jsx)(jt,{})}),(0,ze.jsx)(me,{path:"/contact",element:(0,ze.jsx)(kt,{})}),(0,ze.jsx)(me,{path:"/conversion-kits",element:(0,ze.jsx)(dt,{})}),(0,ze.jsx)(me,{path:"/fruit-fly-tools",element:(0,ze.jsx)(bt,{})}),(0,ze.jsx)(me,{path:"/vivarium-accessories",element:(0,ze.jsx)(xt,{})}),(0,ze.jsx)(me,{path:"/builds",element:(0,ze.jsx)(mt,{})})]})]})),At=()=>(0,ze.jsx)(Ce,{children:(0,ze.jsx)(Ft,{})}),zt=()=>(0,ze.jsx)(At,{});l.createRoot(document.getElementById("root")).render((0,ze.jsx)(a.StrictMode,{children:(0,ze.jsx)(zt,{})}))})(); //# sourceMappingURL=main.b58aaa04.js.map