diff --git a/server/package.json b/server/package.json index ef908fe4..ce7f5f1a 100644 --- a/server/package.json +++ b/server/package.json @@ -14,6 +14,7 @@ "fuse.js": "^7.4.2", "home-assistant-js-websocket": "^3.1.2", "js-yaml": "^4.1.1", + "kokoro-js": "^1.2.1", "morgan": "^1.10.0", "obscenity": "^0.4.6", "ollama": "^0.6.3", diff --git a/server/public/assets/index-BVKa8Zph.css b/server/public/assets/index-BVKa8Zph.css deleted file mode 100644 index e982f498..00000000 --- a/server/public/assets/index-BVKa8Zph.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pride-page-bg{background-color:#050505;background-image:linear-gradient(#0000,#0000),repeating-linear-gradient(45deg,#5bcefa 0 1.818%,#f5a9b8 1.818% 3.636%,#fff 3.636% 5.455%,#f5a9b8 5.455% 7.273%,#5bcefa 7.273% 9.091%,#e40303 9.091% 10.909%,#ff8c00 10.909% 12.727%,#ffed00 12.727% 14.545%,#00a651 14.545% 16.364%,#06f 16.364% 18.182%,#9b2fae 18.182% 20%);background-attachment:fixed}.panel{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));padding:0;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-section{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity));padding:0;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-muted{border-radius:.375rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.surface{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.surface-muted{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.field-input{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.field-input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.field-input::placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.field-input:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity))}.button-dark{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-dark:hover{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.button-danger{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.chat-composer{container-type:inline-size;display:flex;flex-wrap:wrap;align-items:stretch;gap:.125rem;min-width:0;overflow:hidden}.chat-composer-nickname{flex:0 0 5rem;min-width:0;order:1}.chat-composer-input{flex:1 1 0%;min-width:0;order:2}.chat-composer-send{flex:0 0 auto;align-self:stretch;order:3}.chat-composer-tts{display:flex;flex:1 1 100%;align-items:center;gap:.125rem;min-width:0;overflow:hidden;order:4}@container (min-width: 44rem){.chat-composer{flex-wrap:nowrap}.chat-composer-nickname{flex-basis:7rem;order:1}.chat-composer-input{order:2}.chat-composer-tts{flex:0 1 auto;order:3}.chat-composer-send{order:4}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-1{left:.25rem;right:.25rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[calc\(100\%\+0\.125rem\)\]{bottom:calc(100% + .125rem)}.left-0{left:0}.left-0\.5{left:.125rem}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-0\.5{right:.125rem}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-6{top:1.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[110\]{z-index:110}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[70\]{z-index:70}.order-1{order:1}.order-2{order:2}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.-mx-0\.5{margin-left:-.125rem;margin-right:-.125rem}.mx-auto{margin-left:auto;margin-right:auto}.my-\[-0\.125rem\]{margin-top:-.125rem;margin-bottom:-.125rem}.-mt-0\.5{margin-top:-.125rem}.mb-0\.5{margin-bottom:.125rem}.ml-1{margin-left:.25rem}.mr-0{margin-right:0}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-\[0\.35vh\]{margin-top:.35vh}.mt-auto{margin-top:auto}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-64{height:16rem}.h-\[2px\]{height:2px}.h-\[3\.5rem\]{height:3.5rem}.h-\[70\%\]{height:70%}.h-\[7rem\]{height:7rem}.h-\[8vh\]{height:8vh}.h-\[calc\(1rem\+0\.25rem\)\]{height:1.25rem}.h-\[min\(100svh\,32rem\)\]{height:min(100svh,32rem)}.h-\[min\(60svh\,24rem\)\]{height:min(60svh,24rem)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-52{max-height:13rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-\[24rem\]{max-height:24rem}.max-h-\[70vh\]{max-height:70vh}.max-h-\[72vh\]{max-height:72vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-5{min-height:1.25rem}.min-h-9{min-height:2.25rem}.min-h-\[10rem\]{min-height:10rem}.min-h-\[14rem\]{min-height:14rem}.min-h-\[16rem\]{min-height:16rem}.min-h-\[3\.5rem\]{min-height:3.5rem}.min-h-\[4rem\]{min-height:4rem}.min-h-\[5rem\]{min-height:5rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[12\.5rem\]{width:12.5rem}.w-\[12rem\]{width:12rem}.w-\[20rem\]{width:20rem}.w-\[2px\]{width:2px}.w-\[3\.25rem\]{width:3.25rem}.w-\[4\.5rem\]{width:4.5rem}.w-\[5\.5rem\]{width:5.5rem}.w-\[5rem\]{width:5rem}.w-\[9rem\]{width:9rem}.w-\[calc\(1rem\+0\.25rem\)\]{width:1.25rem}.w-\[min\(42rem\,calc\(100vw-1rem\)\)\]{width:min(42rem,calc(100vw - 1rem))}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-28{min-width:7rem}.min-w-\[0\]{min-width:0}.min-w-\[3\.7rem\]{min-width:3.7rem}.min-w-\[9\.5rem\]{min-width:9.5rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[40vw\]{max-width:40vw}.max-w-\[70vw\]{max-width:70vw}.max-w-\[80vw\]{max-width:80vw}.max-w-\[92\%\]{max-width:92%}.max-w-\[92vw\]{max-width:92vw}.max-w-\[94\%\]{max-width:94%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-\[0\.72\]{flex:.72}.flex-\[1\.1\]{flex:1.1}.flex-\[1\.22\]{flex:1.22}.flex-\[1\.28\]{flex:1.28}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.origin-top-left{transform-origin:top left}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,0\.7fr\)_minmax\(0\,2\.1fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,.7fr) minmax(0,2.1fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1\.2fr\)_repeat\(4\,minmax\(0\,1fr\)\)\]{grid-template-columns:minmax(0,1.2fr) repeat(4,minmax(0,1fr))}.grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,.95fr)}.grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(0\,0\.22fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(0,.22fr)}.grid-cols-\[minmax\(0\,1\.45fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1.45fr) minmax(0,.85fr)}.grid-cols-\[minmax\(0\,1fr\)_4\.75rem\]{grid-template-columns:minmax(0,1fr) 4.75rem}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.7fr\)_minmax\(0\,1\.9fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.7fr) minmax(0,1.9fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_minmax\(0\,0\.75fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,.75fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.grid-rows-\[auto_auto_1fr\]{grid-template-rows:auto auto 1fr}.grid-rows-\[auto_auto_1fr_auto\]{grid-template-rows:auto auto 1fr auto}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.\!flex-row{flex-direction:row!important}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-\[0\.55vh\]{gap:.55vh}.gap-\[0\.8vw\]{gap:.8vw}.gap-\[1vw\]{gap:1vw}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity))}.border-amber-200\/30{border-color:#fde68a4d}.border-amber-200\/70{border-color:#fde68ab3}.border-amber-200\/90{border-color:#fde68ae6}.border-amber-300\/70{border-color:#fcd34db3}.border-amber-300\/80{border-color:#fcd34dcc}.border-amber-400\/30{border-color:#fbbf244d}.border-amber-400\/60{border-color:#fbbf2499}.border-amber-600\/60{border-color:#d9770699}.border-amber-700\/60{border-color:#b4530999}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity: 1;border-color:rgb(165 243 252 / var(--tw-border-opacity))}.border-cyan-200\/90{border-color:#a5f3fce6}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity))}.border-cyan-300\/70{border-color:#67e8f9b3}.border-cyan-300\/80{border-color:#67e8f9cc}.border-cyan-500\/40{border-color:#06b6d466}.border-emerald-100\/80{border-color:#d1fae5cc}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity))}.border-emerald-200\/70{border-color:#a7f3d0b3}.border-emerald-200\/90{border-color:#a7f3d0e6}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity))}.border-emerald-300\/70{border-color:#6ee7b7b3}.border-emerald-400\/60{border-color:#34d39999}.border-emerald-500\/40{border-color:#10b98166}.border-emerald-700\/60{border-color:#04785799}.border-emerald-700\/70{border-color:#047857b3}.border-emerald-950{--tw-border-opacity: 1;border-color:rgb(2 44 34 / var(--tw-border-opacity))}.border-fuchsia-300\/70{border-color:#f0abfcb3}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity))}.border-indigo-200\/70{border-color:#c7d2feb3}.border-indigo-200\/95{border-color:#c7d2fef2}.border-indigo-300\/70{border-color:#a5b4fcb3}.border-indigo-400\/30{border-color:#818cf84d}.border-indigo-700{--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity))}.border-indigo-700\/60{border-color:#4338ca99}.border-neutral-500\/50{border-color:#73737380}.border-neutral-500\/60{border-color:#73737399}.border-neutral-600{--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity: 1;border-color:rgb(251 207 232 / var(--tw-border-opacity))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.border-red-300\/90{border-color:#fca5a5e6}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-400\/60{border-color:#f8717199}.border-rose-300{--tw-border-opacity: 1;border-color:rgb(253 164 175 / var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity))}.border-sky-400\/50{border-color:#38bdf880}.border-slate-200\/30{border-color:#e2e8f04d}.border-slate-400{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.border-slate-400\/60{border-color:#94a3b899}.border-slate-500\/70{border-color:#64748bb3}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-600\/40{border-color:#47556966}.border-slate-600\/60{border-color:#47556999}.border-slate-600\/70{border-color:#475569b3}.border-slate-600\/80{border-color:#475569cc}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-slate-700\/60{border-color:#33415599}.border-slate-700\/70{border-color:#334155b3}.border-slate-700\/80{border-color:#334155cc}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-white\/30{border-color:#ffffff4d}.border-white\/40{border-color:#fff6}.border-white\/50{border-color:#ffffff80}.border-white\/80{border-color:#fffc}.bg-amber-100\/95{background-color:#fef3c7f2}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.bg-amber-400\/80{background-color:#fbbf24cc}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-500\/30{background-color:#f59e0b4d}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-amber-600\/70{background-color:#d97706b3}.bg-amber-700\/20{background-color:#b4530933}.bg-amber-700\/30{background-color:#b453094d}.bg-amber-700\/35{background-color:#b4530959}.bg-amber-700\/80{background-color:#b45309cc}.bg-amber-800{--tw-bg-opacity: 1;background-color:rgb(146 64 14 / var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-amber-900\/40{background-color:#78350f66}.bg-amber-900\/60{background-color:#78350f99}.bg-amber-900\/90{background-color:#78350fe6}.bg-amber-950\/70{background-color:#451a03b3}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/40{background-color:#0006}.bg-black\/45{background-color:#00000073}.bg-black\/50{background-color:#00000080}.bg-black\/55{background-color:#0000008c}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/75{background-color:#000000bf}.bg-black\/80{background-color:#000c}.bg-black\/95{background-color:#000000f2}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity))}.bg-cyan-500\/80{background-color:#06b6d4cc}.bg-cyan-900{--tw-bg-opacity: 1;background-color:rgb(22 78 99 / var(--tw-bg-opacity))}.bg-cyan-900\/45{background-color:#164e6373}.bg-cyan-900\/90{background-color:#164e63e6}.bg-emerald-200{--tw-bg-opacity: 1;background-color:rgb(167 243 208 / var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/45{background-color:#10b98173}.bg-emerald-500\/80{background-color:#10b981cc}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-600\/70{background-color:#059669b3}.bg-emerald-600\/80{background-color:#059669cc}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-emerald-700\/20{background-color:#04785733}.bg-emerald-700\/60{background-color:#04785799}.bg-emerald-800{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity))}.bg-emerald-900\/60{background-color:#064e3b99}.bg-emerald-900\/90{background-color:#064e3be6}.bg-emerald-950{--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity))}.bg-emerald-950\/50{background-color:#022c2280}.bg-fuchsia-200{--tw-bg-opacity: 1;background-color:rgb(245 208 254 / var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity: 1;background-color:rgb(192 38 211 / var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity: 1;background-color:rgb(162 28 175 / var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity: 1;background-color:rgb(134 25 143 / var(--tw-bg-opacity))}.bg-fuchsia-900\/45{background-color:#701a7573}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-indigo-600\/70{background-color:#4f46e5b3}.bg-indigo-900{--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity))}.bg-indigo-900\/60{background-color:#312e8199}.bg-indigo-950{--tw-bg-opacity: 1;background-color:rgb(30 27 75 / var(--tw-bg-opacity))}.bg-indigo-950\/90{background-color:#1e1b4be6}.bg-neutral-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-neutral-800\/80{background-color:#262626cc}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.bg-neutral-900\/100{background-color:#171717}.bg-neutral-900\/70{background-color:#171717b3}.bg-neutral-900\/95{background-color:#171717f2}.bg-neutral-950{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-500\/45{background-color:#ef444473}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-600\/70{background-color:#dc2626b3}.bg-red-700{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity))}.bg-red-700\/20{background-color:#b91c1c33}.bg-red-700\/60{background-color:#b91c1c99}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-red-900\/35{background-color:#7f1d1d59}.bg-red-900\/40{background-color:#7f1d1d66}.bg-red-900\/45{background-color:#7f1d1d73}.bg-red-900\/50{background-color:#7f1d1d80}.bg-red-900\/80{background-color:#7f1d1dcc}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-sky-700\/20{background-color:#0369a133}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-slate-600\/70{background-color:#475569b3}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}.bg-slate-700\/30{background-color:#3341554d}.bg-slate-700\/60{background-color:#33415599}.bg-slate-700\/70{background-color:#334155b3}.bg-slate-700\/80{background-color:#334155cc}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-slate-800\/60{background-color:#1e293b99}.bg-slate-800\/70{background-color:#1e293bb3}.bg-slate-800\/80{background-color:#1e293bcc}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-slate-900\/35{background-color:#0f172a59}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/70{background-color:#0f172ab3}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity))}.bg-slate-950\/80{background-color:#020617cc}.bg-slate-950\/90{background-color:#020617e6}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.bg-zinc-900\/90{background-color:#18181be6}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-neutral-800{--tw-gradient-from: #262626 var(--tw-gradient-from-position);--tw-gradient-to: rgb(38 38 38 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-neutral-700{--tw-gradient-to: rgb(64 64 64 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #404040 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-neutral-600{--tw-gradient-to: #525252 var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:center}.bg-no-repeat{background-repeat:no-repeat}.fill-slate-200{fill:#e2e8f0}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-\[0\.85vw\]{padding:.85vw}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[1\.6vw\]{padding-left:1.6vw;padding-right:1.6vw}.px-\[1vw\]{padding-left:1vw;padding-right:1vw}.px-\[3vw\]{padding-left:3vw;padding-right:3vw}.px-\[4vw\]{padding-left:4vw;padding-right:4vw}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[0\.55vh\]{padding-top:.55vh;padding-bottom:.55vh}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-\[2\.5vh\]{padding-top:2.5vh;padding-bottom:2.5vh}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.py-\[4vh\]{padding-top:4vh;padding-bottom:4vh}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pr-0{padding-right:0}.pt-1{padding-top:.25rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[0\.45rem\]{font-size:.45rem}.text-\[0\.55em\]{font-size:.55em}.text-\[0\.55rem\]{font-size:.55rem}.text-\[0\.58rem\]{font-size:.58rem}.text-\[0\.5rem\]{font-size:.5rem}.text-\[0\.62rem\]{font-size:.62rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.68rem\]{font-size:.68rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.72rem\]{font-size:.72rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.82rem\]{font-size:.82rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[1\.1rem\]{font-size:1.1rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[18vw\]{font-size:18vw}.text-\[1rem\]{font-size:1rem}.text-\[clamp\(1\.25rem\,2\.5vh\,2\.6rem\)\]{font-size:clamp(1.25rem,2.5vh,2.6rem)}.text-\[clamp\(1\.2rem\,2\.9vh\,3rem\)\]{font-size:clamp(1.2rem,2.9vh,3rem)}.text-\[clamp\(2\.5rem\,5\.3vh\,5\.8rem\)\]{font-size:clamp(2.5rem,5.3vh,5.8rem)}.text-\[clamp\(2\.5rem\,7vh\,7rem\)\]{font-size:clamp(2.5rem,7vh,7rem)}.text-\[clamp\(2\.5rem\,8vh\,8rem\)\]{font-size:clamp(2.5rem,8vh,8rem)}.text-\[clamp\(2rem\,5vh\,5\.2rem\)\]{font-size:clamp(2rem,5vh,5.2rem)}.text-\[clamp\(3\.2rem\,11vh\,11rem\)\]{font-size:clamp(3.2rem,11vh,11rem)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-\[0\.95\]{line-height:.95}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.text-amber-200\/80{color:#fde68acc}.text-amber-200\/85{color:#fde68ad9}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity))}.text-amber-50\/90{color:#fffbebe6}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity: 1;color:rgb(236 254 255 / var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity))}.text-emerald-100\/80{color:#d1fae5cc}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity))}.text-emerald-50\/90{color:#ecfdf5e6}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity: 1;color:rgb(253 244 255 / var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity: 1;color:rgb(112 26 117 / var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity: 1;color:rgb(238 242 255 / var(--tw-text-opacity))}.text-indigo-50\/90{color:#eef2ffe6}.text-lime-300{--tw-text-opacity: 1;color:rgb(190 242 100 / var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-100\/90{color:#fee2e2e6}.text-red-100\/95{color:#fee2e2f2}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-50{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-400\/60{color:#94a3b899}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/80{color:#fffc}.text-white\/90{color:#ffffffe6}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.accent-cyan-500{accent-color:#06b6d4}.accent-emerald-400{accent-color:#34d399}.accent-emerald-500{accent-color:#10b981}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_0_rgba\(255\,255\,255\,0\.05\)_inset\,0_10px_24px_rgba\(0\,0\,0\,0\.28\)\]{--tw-shadow: 0 1px 0 rgba(255,255,255,.05) inset,0 10px 24px rgba(0,0,0,.28);--tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color), 0 10px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/30{--tw-shadow-color: rgb(0 0 0 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-950\/50{--tw-shadow-color: rgb(8 51 68 / .5);--tw-shadow: var(--tw-shadow-colored)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-amber-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(252 211 77 / var(--tw-ring-opacity))}.ring-amber-300\/80{--tw-ring-color: rgb(252 211 77 / .8)}.ring-emerald-300\/70{--tw-ring-color: rgb(110 231 183 / .7)}.ring-red-500\/80{--tw-ring-color: rgb(239 68 68 / .8)}.ring-red-500\/90{--tw-ring-color: rgb(239 68 68 / .9)}.ring-sky-400\/80{--tw-ring-color: rgb(56 189 248 / .8)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}@keyframes batteryTickWarn{0%,49%{background-color:#fffffff2}50%,to{background-color:#ef4444f2}}.battery-tick-warn{animation:batteryTickWarn .4s steps(2,end) infinite}@keyframes batteryUrgentFlash{0%,49%{opacity:1}50%,to{opacity:.25}}.battery-urgent-flash{animation:batteryUrgentFlash .4s steps(2,end) infinite}.no-touch-select{-moz-user-select:none;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.mobile-touch-control{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:contain}.mobile-drag-control{touch-action:none}.mobile-text-entry{font-size:16px;-webkit-text-size-adjust:100%;touch-action:manipulation}.\[writing-mode\:vertical-rl\]{writing-mode:vertical-rl}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}body{margin:0;min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}html,body,*{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.55) transparent}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*::-webkit-scrollbar{width:2px;height:2px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:#94a3b88c;border-radius:9999px}@supports (scrollbar-width: thin){@media(pointer:coarse){html,body,*{scrollbar-width:none}}}.placeholder\:text-slate-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.placeholder\:text-slate-400::placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.last\:mb-0:last-child{margin-bottom:0}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-green-100:hover{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity: 1;border-color:rgb(244 63 94 / var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity))}.hover\:border-white:hover{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.hover\:border-white\/60:hover{border-color:#fff9}.hover\:bg-amber-400:hover{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity: 1;background-color:rgb(146 64 14 / var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity: 1;background-color:rgb(217 70 239 / var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity: 1;background-color:rgb(55 48 163 / var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity: 1;background-color:rgb(244 114 182 / var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.hover\:bg-slate-700\/70:hover{background-color:#334155b3}.hover\:bg-zinc-900:hover{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-emerald-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(16 185 129 / var(--tw-ring-opacity))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-slate-500:focus-visible{outline-color:#64748b}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-amber-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(252 211 77 / var(--tw-ring-opacity))}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity))}.focus-visible\:ring-emerald-200:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(167 243 208 / var(--tw-ring-opacity))}.focus-visible\:ring-emerald-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(110 231 183 / var(--tw-ring-opacity))}.focus-visible\:ring-indigo-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(165 180 252 / var(--tw-ring-opacity))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.99\]:active{--tw-scale-x: .99;--tw-scale-y: .99;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:brightness-125:active{--tw-brightness: brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(max-width:520px){.max-\[520px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[520px\]\:justify-start{justify-content:flex-start}}@media(max-width:420px){.max-\[420px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[420px\]\:grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.max-\[420px\]\:justify-start{justify-content:flex-start}}@media(min-width:640px){.sm\:block{display:block}.sm\:min-h-\[18rem\]{min-height:18rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}}@media(min-width:768px){.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:min-h-0{min-height:0px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[0\.9fr_1fr_1\.3fr\]{grid-template-columns:.9fr 1fr 1.3fr}.md\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.25fr\)_minmax\(0\,0\.9fr\)\]{grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}} diff --git a/server/public/assets/index-DSZycrrG.css b/server/public/assets/index-DSZycrrG.css new file mode 100644 index 00000000..77860afd --- /dev/null +++ b/server/public/assets/index-DSZycrrG.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pride-page-bg{background-color:#050505;background-image:linear-gradient(#0000,#0000),repeating-linear-gradient(45deg,#5bcefa 0 1.818%,#f5a9b8 1.818% 3.636%,#fff 3.636% 5.455%,#f5a9b8 5.455% 7.273%,#5bcefa 7.273% 9.091%,#e40303 9.091% 10.909%,#ff8c00 10.909% 12.727%,#ffed00 12.727% 14.545%,#00a651 14.545% 16.364%,#06f 16.364% 18.182%,#9b2fae 18.182% 20%);background-attachment:fixed}.panel{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));padding:0;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-section{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity));padding:0;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-muted{border-radius:.375rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.surface{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.surface-muted{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.field-input{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.field-input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.field-input::placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.field-input:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity))}.button-dark{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-dark:hover{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.button-danger{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.chat-composer{container-type:inline-size;display:flex;flex-wrap:wrap;align-items:stretch;gap:.125rem;min-width:0;overflow:hidden}.chat-composer-nickname{flex:0 0 5rem;min-width:0;order:1}.chat-composer-input{flex:1 1 0%;min-width:0;order:2}.chat-composer-send{flex:0 0 auto;align-self:stretch;order:3}.chat-composer-tts{display:flex;flex:1 1 100%;align-items:center;gap:.125rem;min-width:0;overflow:hidden;order:4}@container (min-width: 44rem){.chat-composer{flex-wrap:nowrap}.chat-composer-nickname{flex-basis:7rem;order:1}.chat-composer-input{order:2}.chat-composer-tts{flex:0 1 auto;order:3}.chat-composer-send{order:4}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-1{left:.25rem;right:.25rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[calc\(100\%\+0\.125rem\)\]{bottom:calc(100% + .125rem)}.left-0{left:0}.left-0\.5{left:.125rem}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-0\.5{right:.125rem}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-6{top:1.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[110\]{z-index:110}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[70\]{z-index:70}.order-1{order:1}.order-2{order:2}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.-mx-0\.5{margin-left:-.125rem;margin-right:-.125rem}.mx-auto{margin-left:auto;margin-right:auto}.my-\[-0\.125rem\]{margin-top:-.125rem;margin-bottom:-.125rem}.-mt-0\.5{margin-top:-.125rem}.mb-0\.5{margin-bottom:.125rem}.ml-1{margin-left:.25rem}.mr-0{margin-right:0}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-\[0\.35vh\]{margin-top:.35vh}.mt-auto{margin-top:auto}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-64{height:16rem}.h-\[2px\]{height:2px}.h-\[3\.5rem\]{height:3.5rem}.h-\[70\%\]{height:70%}.h-\[7rem\]{height:7rem}.h-\[8vh\]{height:8vh}.h-\[calc\(1rem\+0\.25rem\)\]{height:1.25rem}.h-\[min\(100svh\,32rem\)\]{height:min(100svh,32rem)}.h-\[min\(60svh\,24rem\)\]{height:min(60svh,24rem)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-52{max-height:13rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-\[24rem\]{max-height:24rem}.max-h-\[70vh\]{max-height:70vh}.max-h-\[72vh\]{max-height:72vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-5{min-height:1.25rem}.min-h-9{min-height:2.25rem}.min-h-\[10rem\]{min-height:10rem}.min-h-\[14rem\]{min-height:14rem}.min-h-\[16rem\]{min-height:16rem}.min-h-\[3\.5rem\]{min-height:3.5rem}.min-h-\[4rem\]{min-height:4rem}.min-h-\[5rem\]{min-height:5rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[12\.5rem\]{width:12.5rem}.w-\[12rem\]{width:12rem}.w-\[20rem\]{width:20rem}.w-\[2px\]{width:2px}.w-\[3\.25rem\]{width:3.25rem}.w-\[4\.5rem\]{width:4.5rem}.w-\[5\.5rem\]{width:5.5rem}.w-\[5rem\]{width:5rem}.w-\[9rem\]{width:9rem}.w-\[calc\(1rem\+0\.25rem\)\]{width:1.25rem}.w-\[min\(42rem\,calc\(100vw-1rem\)\)\]{width:min(42rem,calc(100vw - 1rem))}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-28{min-width:7rem}.min-w-\[0\]{min-width:0}.min-w-\[3\.7rem\]{min-width:3.7rem}.min-w-\[9\.5rem\]{min-width:9.5rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[40vw\]{max-width:40vw}.max-w-\[70vw\]{max-width:70vw}.max-w-\[80vw\]{max-width:80vw}.max-w-\[92\%\]{max-width:92%}.max-w-\[92vw\]{max-width:92vw}.max-w-\[94\%\]{max-width:94%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-\[0\.72\]{flex:.72}.flex-\[1\.1\]{flex:1.1}.flex-\[1\.22\]{flex:1.22}.flex-\[1\.28\]{flex:1.28}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.origin-top-left{transform-origin:top left}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,0\.7fr\)_minmax\(0\,2\.1fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,.7fr) minmax(0,2.1fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1\.2fr\)_repeat\(4\,minmax\(0\,1fr\)\)\]{grid-template-columns:minmax(0,1.2fr) repeat(4,minmax(0,1fr))}.grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,.95fr)}.grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(0\,0\.22fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(0,.22fr)}.grid-cols-\[minmax\(0\,1\.45fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1.45fr) minmax(0,.85fr)}.grid-cols-\[minmax\(0\,1fr\)_4\.75rem\]{grid-template-columns:minmax(0,1fr) 4.75rem}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.7fr\)_minmax\(0\,1\.9fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.7fr) minmax(0,1.9fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_minmax\(0\,0\.75fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,.75fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.grid-rows-\[auto_auto_1fr\]{grid-template-rows:auto auto 1fr}.grid-rows-\[auto_auto_1fr_auto\]{grid-template-rows:auto auto 1fr auto}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.\!flex-row{flex-direction:row!important}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-\[0\.55vh\]{gap:.55vh}.gap-\[0\.8vw\]{gap:.8vw}.gap-\[1vw\]{gap:1vw}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity))}.border-amber-200\/30{border-color:#fde68a4d}.border-amber-200\/70{border-color:#fde68ab3}.border-amber-200\/90{border-color:#fde68ae6}.border-amber-300\/70{border-color:#fcd34db3}.border-amber-300\/80{border-color:#fcd34dcc}.border-amber-400\/30{border-color:#fbbf244d}.border-amber-400\/60{border-color:#fbbf2499}.border-amber-600\/60{border-color:#d9770699}.border-amber-700\/60{border-color:#b4530999}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity: 1;border-color:rgb(165 243 252 / var(--tw-border-opacity))}.border-cyan-200\/90{border-color:#a5f3fce6}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity))}.border-cyan-300\/70{border-color:#67e8f9b3}.border-cyan-300\/80{border-color:#67e8f9cc}.border-cyan-500\/40{border-color:#06b6d466}.border-emerald-100\/80{border-color:#d1fae5cc}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity))}.border-emerald-200\/70{border-color:#a7f3d0b3}.border-emerald-200\/90{border-color:#a7f3d0e6}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity))}.border-emerald-300\/70{border-color:#6ee7b7b3}.border-emerald-400\/60{border-color:#34d39999}.border-emerald-500\/40{border-color:#10b98166}.border-emerald-700\/60{border-color:#04785799}.border-emerald-700\/70{border-color:#047857b3}.border-emerald-950{--tw-border-opacity: 1;border-color:rgb(2 44 34 / var(--tw-border-opacity))}.border-fuchsia-300\/70{border-color:#f0abfcb3}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity))}.border-indigo-200\/70{border-color:#c7d2feb3}.border-indigo-200\/95{border-color:#c7d2fef2}.border-indigo-300\/70{border-color:#a5b4fcb3}.border-indigo-400\/30{border-color:#818cf84d}.border-indigo-700{--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity))}.border-indigo-700\/60{border-color:#4338ca99}.border-neutral-500\/50{border-color:#73737380}.border-neutral-500\/60{border-color:#73737399}.border-neutral-600{--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity: 1;border-color:rgb(251 207 232 / var(--tw-border-opacity))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.border-red-300\/90{border-color:#fca5a5e6}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-400\/60{border-color:#f8717199}.border-rose-300{--tw-border-opacity: 1;border-color:rgb(253 164 175 / var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity))}.border-sky-400\/50{border-color:#38bdf880}.border-slate-200\/30{border-color:#e2e8f04d}.border-slate-400{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.border-slate-400\/60{border-color:#94a3b899}.border-slate-500\/70{border-color:#64748bb3}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-600\/40{border-color:#47556966}.border-slate-600\/60{border-color:#47556999}.border-slate-600\/70{border-color:#475569b3}.border-slate-600\/80{border-color:#475569cc}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-slate-700\/60{border-color:#33415599}.border-slate-700\/70{border-color:#334155b3}.border-slate-700\/80{border-color:#334155cc}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-white\/40{border-color:#fff6}.border-white\/80{border-color:#fffc}.bg-amber-100\/95{background-color:#fef3c7f2}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.bg-amber-400\/80{background-color:#fbbf24cc}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-500\/30{background-color:#f59e0b4d}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-amber-600\/70{background-color:#d97706b3}.bg-amber-700\/20{background-color:#b4530933}.bg-amber-700\/30{background-color:#b453094d}.bg-amber-700\/35{background-color:#b4530959}.bg-amber-700\/80{background-color:#b45309cc}.bg-amber-800{--tw-bg-opacity: 1;background-color:rgb(146 64 14 / var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-amber-900\/40{background-color:#78350f66}.bg-amber-900\/60{background-color:#78350f99}.bg-amber-900\/90{background-color:#78350fe6}.bg-amber-950\/70{background-color:#451a03b3}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/40{background-color:#0006}.bg-black\/45{background-color:#00000073}.bg-black\/50{background-color:#00000080}.bg-black\/55{background-color:#0000008c}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/75{background-color:#000000bf}.bg-black\/80{background-color:#000c}.bg-black\/95{background-color:#000000f2}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity))}.bg-cyan-500\/80{background-color:#06b6d4cc}.bg-cyan-900{--tw-bg-opacity: 1;background-color:rgb(22 78 99 / var(--tw-bg-opacity))}.bg-cyan-900\/45{background-color:#164e6373}.bg-cyan-900\/90{background-color:#164e63e6}.bg-emerald-200{--tw-bg-opacity: 1;background-color:rgb(167 243 208 / var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/45{background-color:#10b98173}.bg-emerald-500\/80{background-color:#10b981cc}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-600\/70{background-color:#059669b3}.bg-emerald-600\/80{background-color:#059669cc}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-emerald-700\/20{background-color:#04785733}.bg-emerald-700\/60{background-color:#04785799}.bg-emerald-800{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity))}.bg-emerald-900\/60{background-color:#064e3b99}.bg-emerald-900\/90{background-color:#064e3be6}.bg-emerald-950{--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity))}.bg-emerald-950\/50{background-color:#022c2280}.bg-fuchsia-200{--tw-bg-opacity: 1;background-color:rgb(245 208 254 / var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity: 1;background-color:rgb(192 38 211 / var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity: 1;background-color:rgb(162 28 175 / var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity: 1;background-color:rgb(134 25 143 / var(--tw-bg-opacity))}.bg-fuchsia-900\/45{background-color:#701a7573}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-indigo-600\/70{background-color:#4f46e5b3}.bg-indigo-900{--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity))}.bg-indigo-900\/60{background-color:#312e8199}.bg-indigo-950{--tw-bg-opacity: 1;background-color:rgb(30 27 75 / var(--tw-bg-opacity))}.bg-indigo-950\/90{background-color:#1e1b4be6}.bg-neutral-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-neutral-800\/80{background-color:#262626cc}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.bg-neutral-900\/100{background-color:#171717}.bg-neutral-900\/70{background-color:#171717b3}.bg-neutral-900\/95{background-color:#171717f2}.bg-neutral-950{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-500\/45{background-color:#ef444473}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-600\/70{background-color:#dc2626b3}.bg-red-700{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity))}.bg-red-700\/20{background-color:#b91c1c33}.bg-red-700\/60{background-color:#b91c1c99}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-red-900\/35{background-color:#7f1d1d59}.bg-red-900\/40{background-color:#7f1d1d66}.bg-red-900\/45{background-color:#7f1d1d73}.bg-red-900\/50{background-color:#7f1d1d80}.bg-red-900\/80{background-color:#7f1d1dcc}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-sky-700\/20{background-color:#0369a133}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-slate-600\/70{background-color:#475569b3}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}.bg-slate-700\/30{background-color:#3341554d}.bg-slate-700\/60{background-color:#33415599}.bg-slate-700\/70{background-color:#334155b3}.bg-slate-700\/80{background-color:#334155cc}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-slate-800\/60{background-color:#1e293b99}.bg-slate-800\/70{background-color:#1e293bb3}.bg-slate-800\/80{background-color:#1e293bcc}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-slate-900\/35{background-color:#0f172a59}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/70{background-color:#0f172ab3}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity))}.bg-slate-950\/80{background-color:#020617cc}.bg-slate-950\/90{background-color:#020617e6}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.bg-zinc-900\/90{background-color:#18181be6}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-neutral-800{--tw-gradient-from: #262626 var(--tw-gradient-from-position);--tw-gradient-to: rgb(38 38 38 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-neutral-700{--tw-gradient-to: rgb(64 64 64 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #404040 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-neutral-600{--tw-gradient-to: #525252 var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:center}.bg-no-repeat{background-repeat:no-repeat}.fill-slate-200{fill:#e2e8f0}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-\[0\.85vw\]{padding:.85vw}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[1\.6vw\]{padding-left:1.6vw;padding-right:1.6vw}.px-\[1vw\]{padding-left:1vw;padding-right:1vw}.px-\[3vw\]{padding-left:3vw;padding-right:3vw}.px-\[4vw\]{padding-left:4vw;padding-right:4vw}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-\[0\.55vh\]{padding-top:.55vh;padding-bottom:.55vh}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-\[2\.5vh\]{padding-top:2.5vh;padding-bottom:2.5vh}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.py-\[4vh\]{padding-top:4vh;padding-bottom:4vh}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pr-0{padding-right:0}.pt-1{padding-top:.25rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[0\.45rem\]{font-size:.45rem}.text-\[0\.55em\]{font-size:.55em}.text-\[0\.55rem\]{font-size:.55rem}.text-\[0\.58rem\]{font-size:.58rem}.text-\[0\.5rem\]{font-size:.5rem}.text-\[0\.62rem\]{font-size:.62rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.68rem\]{font-size:.68rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.72rem\]{font-size:.72rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.82rem\]{font-size:.82rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[1\.1rem\]{font-size:1.1rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[18vw\]{font-size:18vw}.text-\[1rem\]{font-size:1rem}.text-\[clamp\(1\.25rem\,2\.5vh\,2\.6rem\)\]{font-size:clamp(1.25rem,2.5vh,2.6rem)}.text-\[clamp\(1\.2rem\,2\.9vh\,3rem\)\]{font-size:clamp(1.2rem,2.9vh,3rem)}.text-\[clamp\(2\.5rem\,5\.3vh\,5\.8rem\)\]{font-size:clamp(2.5rem,5.3vh,5.8rem)}.text-\[clamp\(2\.5rem\,7vh\,7rem\)\]{font-size:clamp(2.5rem,7vh,7rem)}.text-\[clamp\(2\.5rem\,8vh\,8rem\)\]{font-size:clamp(2.5rem,8vh,8rem)}.text-\[clamp\(2rem\,5vh\,5\.2rem\)\]{font-size:clamp(2rem,5vh,5.2rem)}.text-\[clamp\(3\.2rem\,11vh\,11rem\)\]{font-size:clamp(3.2rem,11vh,11rem)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-\[0\.95\]{line-height:.95}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.text-amber-200\/80{color:#fde68acc}.text-amber-200\/85{color:#fde68ad9}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity))}.text-amber-50\/90{color:#fffbebe6}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity: 1;color:rgb(236 254 255 / var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity))}.text-emerald-100\/80{color:#d1fae5cc}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity))}.text-emerald-50\/90{color:#ecfdf5e6}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity: 1;color:rgb(253 244 255 / var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity: 1;color:rgb(112 26 117 / var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity: 1;color:rgb(238 242 255 / var(--tw-text-opacity))}.text-indigo-50\/90{color:#eef2ffe6}.text-lime-300{--tw-text-opacity: 1;color:rgb(190 242 100 / var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-100\/90{color:#fee2e2e6}.text-red-100\/95{color:#fee2e2f2}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-50{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-400\/60{color:#94a3b899}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/90{color:#ffffffe6}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.accent-cyan-500{accent-color:#06b6d4}.accent-emerald-400{accent-color:#34d399}.accent-emerald-500{accent-color:#10b981}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_0_rgba\(255\,255\,255\,0\.05\)_inset\,0_10px_24px_rgba\(0\,0\,0\,0\.28\)\]{--tw-shadow: 0 1px 0 rgba(255,255,255,.05) inset,0 10px 24px rgba(0,0,0,.28);--tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color), 0 10px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/30{--tw-shadow-color: rgb(0 0 0 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-950\/50{--tw-shadow-color: rgb(8 51 68 / .5);--tw-shadow: var(--tw-shadow-colored)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-amber-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(252 211 77 / var(--tw-ring-opacity))}.ring-amber-300\/80{--tw-ring-color: rgb(252 211 77 / .8)}.ring-emerald-300\/70{--tw-ring-color: rgb(110 231 183 / .7)}.ring-red-500\/80{--tw-ring-color: rgb(239 68 68 / .8)}.ring-red-500\/90{--tw-ring-color: rgb(239 68 68 / .9)}.ring-sky-400\/80{--tw-ring-color: rgb(56 189 248 / .8)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}@keyframes batteryTickWarn{0%,49%{background-color:#fffffff2}50%,to{background-color:#ef4444f2}}.battery-tick-warn{animation:batteryTickWarn .4s steps(2,end) infinite}@keyframes batteryUrgentFlash{0%,49%{opacity:1}50%,to{opacity:.25}}.battery-urgent-flash{animation:batteryUrgentFlash .4s steps(2,end) infinite}.no-touch-select{-moz-user-select:none;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.mobile-touch-control{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:contain}.mobile-drag-control{touch-action:none}.mobile-text-entry{font-size:16px;-webkit-text-size-adjust:100%;touch-action:manipulation}.\[writing-mode\:vertical-rl\]{writing-mode:vertical-rl}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}body{margin:0;min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}html,body,*{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.55) transparent}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*::-webkit-scrollbar{width:2px;height:2px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:#94a3b88c;border-radius:9999px}@supports (scrollbar-width: thin){@media(pointer:coarse){html,body,*{scrollbar-width:none}}}.placeholder\:text-slate-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.placeholder\:text-slate-400::placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.last\:mb-0:last-child{margin-bottom:0}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-green-100:hover{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity: 1;border-color:rgb(244 63 94 / var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity))}.hover\:border-white:hover{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.hover\:border-white\/60:hover{border-color:#fff9}.hover\:bg-amber-400:hover{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity: 1;background-color:rgb(146 64 14 / var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity: 1;background-color:rgb(217 70 239 / var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity: 1;background-color:rgb(55 48 163 / var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity: 1;background-color:rgb(244 114 182 / var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.hover\:bg-slate-700\/70:hover{background-color:#334155b3}.hover\:bg-zinc-900:hover{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-emerald-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(16 185 129 / var(--tw-ring-opacity))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-slate-500:focus-visible{outline-color:#64748b}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-amber-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(252 211 77 / var(--tw-ring-opacity))}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity))}.focus-visible\:ring-emerald-200:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(167 243 208 / var(--tw-ring-opacity))}.focus-visible\:ring-emerald-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(110 231 183 / var(--tw-ring-opacity))}.focus-visible\:ring-indigo-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(165 180 252 / var(--tw-ring-opacity))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.99\]:active{--tw-scale-x: .99;--tw-scale-y: .99;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:brightness-125:active{--tw-brightness: brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(max-width:520px){.max-\[520px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[520px\]\:justify-start{justify-content:flex-start}}@media(max-width:420px){.max-\[420px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[420px\]\:grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.max-\[420px\]\:justify-start{justify-content:flex-start}}@media(min-width:640px){.sm\:block{display:block}.sm\:min-h-\[18rem\]{min-height:18rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}}@media(min-width:768px){.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:min-h-0{min-height:0px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[0\.9fr_1fr_1\.3fr\]{grid-template-columns:.9fr 1fr 1.3fr}.md\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.25fr\)_minmax\(0\,0\.9fr\)\]{grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}} diff --git a/server/public/assets/index-h2u2QzDn.js b/server/public/assets/index-Dmdzc1Vt.js similarity index 78% rename from server/public/assets/index-h2u2QzDn.js rename to server/public/assets/index-Dmdzc1Vt.js index b5295dd3..4b6d488f 100644 --- a/server/public/assets/index-h2u2QzDn.js +++ b/server/public/assets/index-Dmdzc1Vt.js @@ -1,21 +1,21 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OrbitControls-BJ-UXxdt.js","assets/three.module--MGUDD-H.js"])))=>i.map(i=>d[i]); -(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))o(u);new MutationObserver(u=>{for(const d of u)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&o(p)}).observe(document,{childList:!0,subtree:!0});function l(u){const d={};return u.integrity&&(d.integrity=u.integrity),u.referrerPolicy&&(d.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?d.credentials="include":u.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function o(u){if(u.ep)return;u.ep=!0;const d=l(u);fetch(u.href,d)}})();function df(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var S9={exports:{}},g8={};var vi;function ff(){if(vi)return g8;vi=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function l(o,u,d){var p=null;if(d!==void 0&&(p=""+d),u.key!==void 0&&(p=""+u.key),"key"in u){d={};for(var v in u)v!=="key"&&(d[v]=u[v])}else d=u;return u=d.ref,{$$typeof:t,type:o,key:p,ref:u!==void 0?u:null,props:d}}return g8.Fragment=a,g8.jsx=l,g8.jsxs=l,g8}var pi;function mf(){return pi||(pi=1,S9.exports=ff()),S9.exports}var r=mf(),V9={exports:{}},j1={};var gi;function vf(){if(gi)return j1;gi=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),p=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),y=Symbol.iterator;function H(F){return F===null||typeof F!="object"?null:(F=y&&F[y]||F["@@iterator"],typeof F=="function"?F:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,C={};function V(F,_,t1){this.props=F,this.context=_,this.refs=C,this.updater=t1||S}V.prototype.isReactComponent={},V.prototype.setState=function(F,_){if(typeof F!="object"&&typeof F!="function"&&F!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,F,_,"setState")},V.prototype.forceUpdate=function(F){this.updater.enqueueForceUpdate(this,F,"forceUpdate")};function A(){}A.prototype=V.prototype;function B(F,_,t1){this.props=F,this.context=_,this.refs=C,this.updater=t1||S}var k=B.prototype=new A;k.constructor=B,w(k,V.prototype),k.isPureReactComponent=!0;var D=Array.isArray;function N(){}var j={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function Z(F,_,t1){var r1=t1.ref;return{$$typeof:t,type:F,key:_,ref:r1!==void 0?r1:null,props:t1}}function q(F,_){return Z(F.type,_,F.props)}function T(F){return typeof F=="object"&&F!==null&&F.$$typeof===t}function G(F){var _={"=":"=0",":":"=2"};return"$"+F.replace(/[=:]/g,function(t1){return _[t1]})}var o1=/\/+/g;function n1(F,_){return typeof F=="object"&&F!==null&&F.key!=null?G(""+F.key):_.toString(36)}function I(F){switch(F.status){case"fulfilled":return F.value;case"rejected":throw F.reason;default:switch(typeof F.status=="string"?F.then(N,N):(F.status="pending",F.then(function(_){F.status==="pending"&&(F.status="fulfilled",F.value=_)},function(_){F.status==="pending"&&(F.status="rejected",F.reason=_)})),F.status){case"fulfilled":return F.value;case"rejected":throw F.reason}}throw F}function R(F,_,t1,r1,f1){var m1=typeof F;(m1==="undefined"||m1==="boolean")&&(F=null);var S1=!1;if(F===null)S1=!0;else switch(m1){case"bigint":case"string":case"number":S1=!0;break;case"object":switch(F.$$typeof){case t:case a:S1=!0;break;case z:return S1=F._init,R(S1(F._payload),_,t1,r1,f1)}}if(S1)return f1=f1(F),S1=r1===""?"."+n1(F,0):r1,D(f1)?(t1="",S1!=null&&(t1=S1.replace(o1,"$&/")+"/"),R(f1,_,t1,"",function(U1){return U1})):f1!=null&&(T(f1)&&(f1=q(f1,t1+(f1.key==null||F&&F.key===f1.key?"":(""+f1.key).replace(o1,"$&/")+"/")+S1)),_.push(f1)),1;S1=0;var V1=r1===""?".":r1+":";if(D(F))for(var A1=0;A1>>1,u1=R[d1];if(0>>1;d1u(t1,e1))r1u(f1,t1)?(R[d1]=f1,R[r1]=e1,d1=r1):(R[d1]=t1,R[_]=e1,d1=_);else if(r1u(f1,e1))R[d1]=f1,R[r1]=e1,d1=r1;else break t}}return P}function u(R,P){var e1=R.sortIndex-P.sortIndex;return e1!==0?e1:R.id-P.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;t.unstable_now=function(){return d.now()}}else{var p=Date,v=p.now();t.unstable_now=function(){return p.now()-v}}var g=[],x=[],z=1,b=null,y=3,H=!1,S=!1,w=!1,C=!1,V=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,B=typeof setImmediate<"u"?setImmediate:null;function k(R){for(var P=l(x);P!==null;){if(P.callback===null)o(x);else if(P.startTime<=R)o(x),P.sortIndex=P.expirationTime,a(g,P);else break;P=l(x)}}function D(R){if(w=!1,k(R),!S)if(l(g)!==null)S=!0,N||(N=!0,G());else{var P=l(x);P!==null&&I(D,P.startTime-R)}}var N=!1,j=-1,E=5,Z=-1;function q(){return C?!0:!(t.unstable_now()-ZR&&q());){var d1=b.callback;if(typeof d1=="function"){b.callback=null,y=b.priorityLevel;var u1=d1(b.expirationTime<=R);if(R=t.unstable_now(),typeof u1=="function"){b.callback=u1,k(R),P=!0;break e}b===l(g)&&o(g),k(R)}else o(g);b=l(g)}if(b!==null)P=!0;else{var F=l(x);F!==null&&I(D,F.startTime-R),P=!1}}break t}finally{b=null,y=e1,H=!1}P=void 0}}finally{P?G():N=!1}}}var G;if(typeof B=="function")G=function(){B(T)};else if(typeof MessageChannel<"u"){var o1=new MessageChannel,n1=o1.port2;o1.port1.onmessage=T,G=function(){n1.postMessage(null)}}else G=function(){V(T,0)};function I(R,P){j=V(function(){R(t.unstable_now())},P)}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(R){R.callback=null},t.unstable_forceFrameRate=function(R){0>R||125d1?(R.sortIndex=e1,a(x,R),l(g)===null&&R===l(x)&&(w?(A(j),j=-1):w=!0,I(D,e1-d1))):(R.sortIndex=u1,a(g,R),S||H||(S=!0,N||(N=!0,G()))),R},t.unstable_shouldYield=q,t.unstable_wrapCallback=function(R){var P=y;return function(){var e1=y;y=P;try{return R.apply(this,arguments)}finally{y=e1}}}})(B9)),B9}var bi;function gf(){return bi||(bi=1,L9.exports=pf()),L9.exports}var j9={exports:{}},P2={};var Mi;function xf(){if(Mi)return P2;Mi=1;var t=Nc();function a(g){var x="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),j9.exports=xf(),j9.exports}var Ci;function zf(){if(Ci)return x8;Ci=1;var t=gf(),a=Nc(),l=Qs();function o(e){var c="https://react.dev/errors/"+e;if(1u1||(e.current=d1[u1],d1[u1]=null,u1--)}function t1(e,c){u1++,d1[u1]=e.current,e.current=c}var r1=F(null),f1=F(null),m1=F(null),S1=F(null);function V1(e,c){switch(t1(m1,c),t1(f1,e),t1(r1,null),c.nodeType){case 9:case 11:e=(e=c.documentElement)&&(e=e.namespaceURI)?qr(e):0;break;default:if(e=c.tagName,c=c.namespaceURI)c=qr(c),e=Dr(c,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}_(r1),t1(r1,e)}function A1(){_(r1),_(f1),_(m1)}function U1(e){e.memoizedState!==null&&t1(S1,e);var c=r1.current,n=Dr(c,e.type);c!==n&&(t1(f1,e),t1(r1,n))}function Y1(e){f1.current===e&&(_(r1),_(f1)),S1.current===e&&(_(S1),f8._currentValue=e1)}var E1,g1;function Q(e){if(E1===void 0)try{throw Error()}catch(n){var c=n.stack.trim().match(/\n( *(at )?)/);E1=c&&c[1]||"",g1=-1{for(const d of u)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&o(p)}).observe(document,{childList:!0,subtree:!0});function l(u){const d={};return u.integrity&&(d.integrity=u.integrity),u.referrerPolicy&&(d.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?d.credentials="include":u.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function o(u){if(u.ep)return;u.ep=!0;const d=l(u);fetch(u.href,d)}})();function cf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var M9={exports:{}},p8={};var ii;function af(){if(ii)return p8;ii=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function l(o,u,d){var p=null;if(d!==void 0&&(p=""+d),u.key!==void 0&&(p=""+u.key),"key"in u){d={};for(var v in u)v!=="key"&&(d[v]=u[v])}else d=u;return u=d.ref,{$$typeof:t,type:o,key:p,ref:u!==void 0?u:null,props:d}}return p8.Fragment=a,p8.jsx=l,p8.jsxs=l,p8}var si;function nf(){return si||(si=1,M9.exports=af()),M9.exports}var r=nf(),b9={exports:{}},j1={};var oi;function lf(){if(oi)return j1;oi=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),p=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),M=Symbol.for("react.activity"),y=Symbol.iterator;function H(F){return F===null||typeof F!="object"?null:(F=y&&F[y]||F["@@iterator"],typeof F=="function"?F:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,C={};function V(F,_,t1){this.props=F,this.context=_,this.refs=C,this.updater=t1||S}V.prototype.isReactComponent={},V.prototype.setState=function(F,_){if(typeof F!="object"&&typeof F!="function"&&F!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,F,_,"setState")},V.prototype.forceUpdate=function(F){this.updater.enqueueForceUpdate(this,F,"forceUpdate")};function A(){}A.prototype=V.prototype;function B(F,_,t1){this.props=F,this.context=_,this.refs=C,this.updater=t1||S}var k=B.prototype=new A;k.constructor=B,w(k,V.prototype),k.isPureReactComponent=!0;var D=Array.isArray;function N(){}var j={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function Z(F,_,t1){var r1=t1.ref;return{$$typeof:t,type:F,key:_,ref:r1!==void 0?r1:null,props:t1}}function q(F,_){return Z(F.type,_,F.props)}function T(F){return typeof F=="object"&&F!==null&&F.$$typeof===t}function P(F){var _={"=":"=0",":":"=2"};return"$"+F.replace(/[=:]/g,function(t1){return _[t1]})}var o1=/\/+/g;function n1(F,_){return typeof F=="object"&&F!==null&&F.key!=null?P(""+F.key):_.toString(36)}function I(F){switch(F.status){case"fulfilled":return F.value;case"rejected":throw F.reason;default:switch(typeof F.status=="string"?F.then(N,N):(F.status="pending",F.then(function(_){F.status==="pending"&&(F.status="fulfilled",F.value=_)},function(_){F.status==="pending"&&(F.status="rejected",F.reason=_)})),F.status){case"fulfilled":return F.value;case"rejected":throw F.reason}}throw F}function R(F,_,t1,r1,f1){var m1=typeof F;(m1==="undefined"||m1==="boolean")&&(F=null);var S1=!1;if(F===null)S1=!0;else switch(m1){case"bigint":case"string":case"number":S1=!0;break;case"object":switch(F.$$typeof){case t:case a:S1=!0;break;case z:return S1=F._init,R(S1(F._payload),_,t1,r1,f1)}}if(S1)return f1=f1(F),S1=r1===""?"."+n1(F,0):r1,D(f1)?(t1="",S1!=null&&(t1=S1.replace(o1,"$&/")+"/"),R(f1,_,t1,"",function(U1){return U1})):f1!=null&&(T(f1)&&(f1=q(f1,t1+(f1.key==null||F&&F.key===f1.key?"":(""+f1.key).replace(o1,"$&/")+"/")+S1)),_.push(f1)),1;S1=0;var V1=r1===""?".":r1+":";if(D(F))for(var A1=0;A1>>1,u1=R[d1];if(0>>1;d1u(t1,e1))r1u(f1,t1)?(R[d1]=f1,R[r1]=e1,d1=r1):(R[d1]=t1,R[_]=e1,d1=_);else if(r1u(f1,e1))R[d1]=f1,R[r1]=e1,d1=r1;else break t}}return G}function u(R,G){var e1=R.sortIndex-G.sortIndex;return e1!==0?e1:R.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;t.unstable_now=function(){return d.now()}}else{var p=Date,v=p.now();t.unstable_now=function(){return p.now()-v}}var g=[],x=[],z=1,M=null,y=3,H=!1,S=!1,w=!1,C=!1,V=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,B=typeof setImmediate<"u"?setImmediate:null;function k(R){for(var G=l(x);G!==null;){if(G.callback===null)o(x);else if(G.startTime<=R)o(x),G.sortIndex=G.expirationTime,a(g,G);else break;G=l(x)}}function D(R){if(w=!1,k(R),!S)if(l(g)!==null)S=!0,N||(N=!0,P());else{var G=l(x);G!==null&&I(D,G.startTime-R)}}var N=!1,j=-1,E=5,Z=-1;function q(){return C?!0:!(t.unstable_now()-ZR&&q());){var d1=M.callback;if(typeof d1=="function"){M.callback=null,y=M.priorityLevel;var u1=d1(M.expirationTime<=R);if(R=t.unstable_now(),typeof u1=="function"){M.callback=u1,k(R),G=!0;break e}M===l(g)&&o(g),k(R)}else o(g);M=l(g)}if(M!==null)G=!0;else{var F=l(x);F!==null&&I(D,F.startTime-R),G=!1}}break t}finally{M=null,y=e1,H=!1}G=void 0}}finally{G?P():N=!1}}}var P;if(typeof B=="function")P=function(){B(T)};else if(typeof MessageChannel<"u"){var o1=new MessageChannel,n1=o1.port2;o1.port1.onmessage=T,P=function(){n1.postMessage(null)}}else P=function(){V(T,0)};function I(R,G){j=V(function(){R(t.unstable_now())},G)}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(R){R.callback=null},t.unstable_forceFrameRate=function(R){0>R||125d1?(R.sortIndex=e1,a(x,R),l(g)===null&&R===l(x)&&(w?(A(j),j=-1):w=!0,I(D,e1-d1))):(R.sortIndex=u1,a(g,R),S||H||(S=!0,N||(N=!0,P()))),R},t.unstable_shouldYield=q,t.unstable_wrapCallback=function(R){var G=y;return function(){var e1=y;y=G;try{return R.apply(this,arguments)}finally{y=e1}}}})(w9)),w9}var di;function sf(){return di||(di=1,C9.exports=rf()),C9.exports}var H9={exports:{}},G2={};var fi;function of(){if(fi)return G2;fi=1;var t=wc();function a(g){var x="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),H9.exports=of(),H9.exports}var vi;function uf(){if(vi)return g8;vi=1;var t=sf(),a=wc(),l=_s();function o(e){var c="https://react.dev/errors/"+e;if(1u1||(e.current=d1[u1],d1[u1]=null,u1--)}function t1(e,c){u1++,d1[u1]=e.current,e.current=c}var r1=F(null),f1=F(null),m1=F(null),S1=F(null);function V1(e,c){switch(t1(m1,c),t1(f1,e),t1(r1,null),c.nodeType){case 9:case 11:e=(e=c.documentElement)&&(e=e.namespaceURI)?Br(e):0;break;default:if(e=c.tagName,c=c.namespaceURI)c=Br(c),e=jr(c,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}_(r1),t1(r1,e)}function A1(){_(r1),_(f1),_(m1)}function U1(e){e.memoizedState!==null&&t1(S1,e);var c=r1.current,n=jr(c,e.type);c!==n&&(t1(f1,e),t1(r1,n))}function Y1(e){f1.current===e&&(_(r1),_(f1)),S1.current===e&&(_(S1),d8._currentValue=e1)}var E1,g1;function Q(e){if(E1===void 0)try{throw Error()}catch(n){var c=n.stack.trim().match(/\n( *(at )?)/);E1=c&&c[1]||"",g1=-1)":-1h||O[s]!==K[h]){var c1=` `+O[s].replace(" at new "," at ");return e.displayName&&c1.includes("")&&(c1=c1.replace("",e.displayName)),c1}while(1<=s&&0<=h);break}}}finally{v1=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Q(n):""}function p1(e,c){switch(e.tag){case 26:case 27:case 5:return Q(e.type);case 16:return Q("Lazy");case 13:return e.child!==c&&c!==null?Q("Suspense Fallback"):Q("Suspense");case 19:return Q("SuspenseList");case 0:case 15:return z1(e.type,!1);case 11:return z1(e.type.render,!1);case 1:return z1(e.type,!0);case 31:return Q("Activity");default:return""}}function F1(e){try{var c="",n=null;do c+=p1(e,n),n=e,e=e.return;while(e);return c}catch(s){return` Error generating stack: `+s.message+` -`+s.stack}}var n2=Object.prototype.hasOwnProperty,x1=t.unstable_scheduleCallback,M1=t.unstable_cancelCallback,P1=t.unstable_shouldYield,V2=t.unstable_requestPaint,G1=t.unstable_now,v2=t.unstable_getCurrentPriorityLevel,X1=t.unstable_ImmediatePriority,J1=t.unstable_UserBlockingPriority,s1=t.unstable_NormalPriority,J=t.unstable_LowPriority,a1=t.unstable_IdlePriority,C1=t.log,l2=t.unstable_setDisableYieldValue,r2=null,z2=null;function e4(e){if(typeof C1=="function"&&l2(e),z2&&typeof z2.setStrictMode=="function")try{z2.setStrictMode(r2,e)}catch{}}var b1=Math.clz32?Math.clz32:D1,u2=Math.log,W1=Math.LN2;function D1(e){return e>>>=0,e===0?32:31-(u2(e)/W1|0)|0}var e2=256,I2=262144,T4=4194304;function d4(e){var c=e&42;if(c!==0)return c;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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function b2(e,c,n){var s=e.pendingLanes;if(s===0)return 0;var h=0,f=e.suspendedLanes,M=e.pingedLanes;e=e.warmLanes;var L=s&134217727;return L!==0?(s=L&~f,s!==0?h=d4(s):(M&=L,M!==0?h=d4(M):n||(n=L&~e,n!==0&&(h=d4(n))))):(L=s&~f,L!==0?h=d4(L):M!==0?h=d4(M):n||(n=s&~e,n!==0&&(h=d4(n)))),h===0?0:c!==0&&c!==h&&(c&f)===0&&(f=h&-h,n=c&-c,f>=n||f===32&&(n&4194048)!==0)?c:h}function A4(e,c){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&c)===0}function Ju(e,c){switch(e){case 1:case 2:case 4:case 8:case 64:return c+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 c+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function xa(){var e=T4;return T4<<=1,(T4&62914560)===0&&(T4=4194304),e}function mt(e){for(var c=[],n=0;31>n;n++)c.push(e);return c}function V0(e,c){e.pendingLanes|=c,c!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Wu(e,c,n,s,h,f){var M=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var L=e.entanglements,O=e.expirationTimes,K=e.hiddenUpdates;for(n=M&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var lh=/[\n"\\]/g;function m4(e){return e.replace(lh,function(c){return"\\"+c.charCodeAt(0).toString(16)+" "})}function bt(e,c,n,s,h,f,M,L){e.name="",M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"?e.type=M:e.removeAttribute("type"),c!=null?M==="number"?(c===0&&e.value===""||e.value!=c)&&(e.value=""+f4(c)):e.value!==""+f4(c)&&(e.value=""+f4(c)):M!=="submit"&&M!=="reset"||e.removeAttribute("value"),c!=null?Mt(e,M,f4(c)):n!=null?Mt(e,M,f4(n)):s!=null&&e.removeAttribute("value"),h==null&&f!=null&&(e.defaultChecked=!!f),h!=null&&(e.checked=h&&typeof h!="function"&&typeof h!="symbol"),L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"?e.name=""+f4(L):e.removeAttribute("name")}function ja(e,c,n,s,h,f,M,L){if(f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.type=f),c!=null||n!=null){if(!(f!=="submit"&&f!=="reset"||c!=null)){zt(e);return}n=n!=null?""+f4(n):"",c=c!=null?""+f4(c):n,L||c===e.value||(e.value=c),e.defaultValue=c}s=s??h,s=typeof s!="function"&&typeof s!="symbol"&&!!s,e.checked=L?e.checked:!!s,e.defaultChecked=!!s,M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"&&(e.name=M),zt(e)}function Mt(e,c,n){c==="number"&&X8(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function H6(e,c,n,s){if(e=e.options,c){c={};for(var h=0;h"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),St=!1;if(I4)try{var j0={};Object.defineProperty(j0,"passive",{get:function(){St=!0}}),window.addEventListener("test",j0,j0),window.removeEventListener("test",j0,j0)}catch{St=!1}var z3=null,Vt=null,W8=null;function qa(){if(W8)return W8;var e,c=Vt,n=c.length,s,h="value"in z3?z3.value:z3.textContent,f=h.length;for(e=0;e=k0),$a=" ",Pa=!1;function Ga(e,c){switch(e){case"keyup":return Fh.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ia(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var L6=!1;function Rh(e,c){switch(e){case"compositionend":return Ia(c);case"keypress":return c.which!==32?null:(Pa=!0,$a);case"textInput":return e=c.data,e===$a&&Pa?null:e;default:return null}}function Eh(e,c){if(L6)return e==="compositionend"||!Nt&&Ga(e,c)?(e=qa(),W8=Vt=z3=null,L6=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:n,offset:c-e};e=s}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=en(n)}}function an(e,c){return e&&c?e===c?!0:e&&e.nodeType===3?!1:c&&c.nodeType===3?an(e,c.parentNode):"contains"in e?e.contains(c):e.compareDocumentPosition?!!(e.compareDocumentPosition(c)&16):!1:!1}function nn(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var c=X8(e.document);c instanceof e.HTMLIFrameElement;){try{var n=typeof c.contentWindow.location.href=="string"}catch{n=!1}if(n)e=c.contentWindow;else break;c=X8(e.document)}return c}function Rt(e){var c=e&&e.nodeName&&e.nodeName.toLowerCase();return c&&(c==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||c==="textarea"||e.contentEditable==="true")}var $h=I4&&"documentMode"in document&&11>=document.documentMode,B6=null,Et=null,q0=null,Tt=!1;function ln(e,c,n){var s=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Tt||B6==null||B6!==X8(s)||(s=B6,"selectionStart"in s&&Rt(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),q0&&T0(q0,s)||(q0=s,s=G5(Et,"onSelect"),0>=M,h-=M,q4=1<<32-b1(c)+h|n<T1?($1=w1,w1=null):$1=w1.sibling;var Q1=X($,w1,Y[T1],l1);if(Q1===null){w1===null&&(w1=$1);break}e&&w1&&Q1.alternate===null&&c($,w1),U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1,w1=$1}if(T1===Y.length)return n($,w1),I1&&K4($,T1),H1;if(w1===null){for(;T1T1?($1=w1,w1=null):$1=w1.sibling;var _3=X($,w1,Q1.value,l1);if(_3===null){w1===null&&(w1=$1);break}e&&w1&&_3.alternate===null&&c($,w1),U=f(_3,U,T1),K1===null?H1=_3:K1.sibling=_3,K1=_3,w1=$1}if(Q1.done)return n($,w1),I1&&K4($,T1),H1;if(w1===null){for(;!Q1.done;T1++,Q1=Y.next())Q1=i1($,Q1.value,l1),Q1!==null&&(U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1);return I1&&K4($,T1),H1}for(w1=s(w1);!Q1.done;T1++,Q1=Y.next())Q1=W(w1,$,T1,Q1.value,l1),Q1!==null&&(e&&Q1.alternate!==null&&w1.delete(Q1.key===null?T1:Q1.key),U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1);return e&&w1.forEach(function(hf){return c($,hf)}),I1&&K4($,T1),H1}function o2($,U,Y,l1){if(typeof Y=="object"&&Y!==null&&Y.type===w&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case H:t:{for(var H1=Y.key;U!==null;){if(U.key===H1){if(H1=Y.type,H1===w){if(U.tag===7){n($,U.sibling),l1=h(U,Y.props.children),l1.return=$,$=l1;break t}}else if(U.elementType===H1||typeof H1=="object"&&H1!==null&&H1.$$typeof===E&&t6(H1)===U.type){n($,U.sibling),l1=h(U,Y.props),$0(l1,Y),l1.return=$,$=l1;break t}n($,U);break}else c($,U);U=U.sibling}Y.type===w?(l1=K3(Y.props.children,$.mode,l1,Y.key),l1.return=$,$=l1):(l1=o5(Y.type,Y.key,Y.props,null,$.mode,l1),$0(l1,Y),l1.return=$,$=l1)}return M($);case S:t:{for(H1=Y.key;U!==null;){if(U.key===H1)if(U.tag===4&&U.stateNode.containerInfo===Y.containerInfo&&U.stateNode.implementation===Y.implementation){n($,U.sibling),l1=h(U,Y.children||[]),l1.return=$,$=l1;break t}else{n($,U);break}else c($,U);U=U.sibling}l1=$t(Y,$.mode,l1),l1.return=$,$=l1}return M($);case E:return Y=t6(Y),o2($,U,Y,l1)}if(I(Y))return y1($,U,Y,l1);if(G(Y)){if(H1=G(Y),typeof H1!="function")throw Error(o(150));return Y=H1.call(Y),L1($,U,Y,l1)}if(typeof Y.then=="function")return o2($,U,p5(Y),l1);if(Y.$$typeof===B)return o2($,U,d5($,Y),l1);g5($,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint"?(Y=""+Y,U!==null&&U.tag===6?(n($,U.sibling),l1=h(U,Y),l1.return=$,$=l1):(n($,U),l1=Zt(Y,$.mode,l1),l1.return=$,$=l1),M($)):n($,U)}return function($,U,Y,l1){try{Z0=0;var H1=o2($,U,Y,l1);return _6=null,H1}catch(w1){if(w1===O6||w1===m5)throw w1;var K1=a4(29,w1,null,$.mode);return K1.lanes=l1,K1.return=$,K1}finally{}}}var c6=Ln(!0),Bn=Ln(!1),w3=!1;function ce(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ae(e,c){e=e.updateQueue,c.updateQueue===e&&(c.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function H3(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function S3(e,c,n){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(t2&2)!==0){var h=s.pending;return h===null?c.next=c:(c.next=h.next,h.next=c),s.pending=c,c=s5(e),fn(e,null,n),c}return i5(e,s,c,n),s5(e)}function P0(e,c,n){if(c=c.updateQueue,c!==null&&(c=c.shared,(n&4194048)!==0)){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,ba(e,n)}}function ne(e,c){var n=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,n===s)){var h=null,f=null;if(n=n.firstBaseUpdate,n!==null){do{var M={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};f===null?h=f=M:f=f.next=M,n=n.next}while(n!==null);f===null?h=f=c:f=f.next=c}else h=f=c;n={baseState:s.baseState,firstBaseUpdate:h,lastBaseUpdate:f,shared:s.shared,callbacks:s.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=c:e.next=c,n.lastBaseUpdate=c}var le=!1;function G0(){if(le){var e=D6;if(e!==null)throw e}}function I0(e,c,n,s){le=!1;var h=e.updateQueue;w3=!1;var f=h.firstBaseUpdate,M=h.lastBaseUpdate,L=h.shared.pending;if(L!==null){h.shared.pending=null;var O=L,K=O.next;O.next=null,M===null?f=K:M.next=K,M=O;var c1=e.alternate;c1!==null&&(c1=c1.updateQueue,L=c1.lastBaseUpdate,L!==M&&(L===null?c1.firstBaseUpdate=K:L.next=K,c1.lastBaseUpdate=O))}if(f!==null){var i1=h.baseState;M=0,c1=K=O=null,L=f;do{var X=L.lane&-536870913,W=X!==L.lane;if(W?(Z1&X)===X:(s&X)===X){X!==0&&X===q6&&(le=!0),c1!==null&&(c1=c1.next={lane:0,tag:L.tag,payload:L.payload,callback:null,next:null});t:{var y1=e,L1=L;X=c;var o2=n;switch(L1.tag){case 1:if(y1=L1.payload,typeof y1=="function"){i1=y1.call(o2,i1,X);break t}i1=y1;break t;case 3:y1.flags=y1.flags&-65537|128;case 0:if(y1=L1.payload,X=typeof y1=="function"?y1.call(o2,i1,X):y1,X==null)break t;i1=b({},i1,X);break t;case 2:w3=!0}}X=L.callback,X!==null&&(e.flags|=64,W&&(e.flags|=8192),W=h.callbacks,W===null?h.callbacks=[X]:W.push(X))}else W={lane:X,tag:L.tag,payload:L.payload,callback:L.callback,next:null},c1===null?(K=c1=W,O=i1):c1=c1.next=W,M|=X;if(L=L.next,L===null){if(L=h.shared.pending,L===null)break;W=L,L=W.next,W.next=null,h.lastBaseUpdate=W,h.shared.pending=null}}while(!0);c1===null&&(O=i1),h.baseState=O,h.firstBaseUpdate=K,h.lastBaseUpdate=c1,f===null&&(h.shared.lanes=0),j3|=M,e.lanes=M,e.memoizedState=i1}}function jn(e,c){if(typeof e!="function")throw Error(o(191,e));e.call(c)}function Nn(e,c){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ef?f:8;var M=R.T,L={};R.T=L,we(e,!1,c,n);try{var O=h(),K=R.S;if(K!==null&&K(L,O),O!==null&&typeof O=="object"&&typeof O.then=="function"){var c1=Wh(O,s);Q0(e,c,c1,s4(e))}else Q0(e,c,s,s4(e))}catch(i1){Q0(e,c,{then:function(){},status:"rejected",reason:i1},s4())}finally{P.p=f,M!==null&&L.types!==null&&(M.types=L.types),R.T=M}}function ld(){}function ye(e,c,n,s){if(e.tag!==5)throw Error(o(476));var h=ul(e).queue;ol(e,h,c,e1,n===null?ld:function(){return hl(e),n(s)})}function ul(e){var c=e.memoizedState;if(c!==null)return c;c={memoizedState:e1,baseState:e1,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:W4,lastRenderedState:e1},next:null};var n={};return c.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:W4,lastRenderedState:n},next:null},e.memoizedState=c,e=e.alternate,e!==null&&(e.memoizedState=c),c}function hl(e){var c=ul(e);c.next===null&&(c=e.alternate.memoizedState),Q0(e,c.next.queue,{},s4())}function Ce(){return _2(f8)}function dl(){return H2().memoizedState}function fl(){return H2().memoizedState}function rd(e){for(var c=e.return;c!==null;){switch(c.tag){case 24:case 3:var n=s4();e=H3(n);var s=S3(c,e,n);s!==null&&(t4(s,c,n),P0(s,c,n)),c={cache:Jt()},e.payload=c;return}c=c.return}}function id(e,c,n){var s=s4();n={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},V5(e)?vl(c,n):(n=_t(e,c,n,s),n!==null&&(t4(n,e,s),pl(n,c,s)))}function ml(e,c,n){var s=s4();Q0(e,c,n,s)}function Q0(e,c,n,s){var h={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(V5(e))vl(c,h);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=c.lastRenderedReducer,f!==null))try{var M=c.lastRenderedState,L=f(M,n);if(h.hasEagerState=!0,h.eagerState=L,c4(L,M))return i5(e,c,h,0),h2===null&&r5(),!1}catch{}finally{}if(n=_t(e,c,h,s),n!==null)return t4(n,e,s),pl(n,c,s),!0}return!1}function we(e,c,n,s){if(s={lane:2,revertLane:c9(),gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},V5(e)){if(c)throw Error(o(479))}else c=_t(e,n,s,2),c!==null&&t4(c,e,2)}function V5(e){var c=e.alternate;return e===k1||c!==null&&c===k1}function vl(e,c){Z6=b5=!0;var n=e.pending;n===null?c.next=c:(c.next=n.next,n.next=c),e.pending=c}function pl(e,c,n){if((n&4194048)!==0){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,ba(e,n)}}var X0={readContext:_2,use:C5,useCallback:M2,useContext:M2,useEffect:M2,useImperativeHandle:M2,useLayoutEffect:M2,useInsertionEffect:M2,useMemo:M2,useReducer:M2,useRef:M2,useState:M2,useDebugValue:M2,useDeferredValue:M2,useTransition:M2,useSyncExternalStore:M2,useId:M2,useHostTransitionStatus:M2,useFormState:M2,useActionState:M2,useOptimistic:M2,useMemoCache:M2,useCacheRefresh:M2};X0.useEffectEvent=M2;var gl={readContext:_2,use:C5,useCallback:function(e,c){return G2().memoizedState=[e,c===void 0?null:c],e},useContext:_2,useEffect:tl,useImperativeHandle:function(e,c,n){n=n!=null?n.concat([e]):null,H5(4194308,4,nl.bind(null,c,e),n)},useLayoutEffect:function(e,c){return H5(4194308,4,e,c)},useInsertionEffect:function(e,c){H5(4,2,e,c)},useMemo:function(e,c){var n=G2();c=c===void 0?null:c;var s=e();if(a6){e4(!0);try{e()}finally{e4(!1)}}return n.memoizedState=[s,c],s},useReducer:function(e,c,n){var s=G2();if(n!==void 0){var h=n(c);if(a6){e4(!0);try{n(c)}finally{e4(!1)}}}else h=c;return s.memoizedState=s.baseState=h,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:h},s.queue=e,e=e.dispatch=id.bind(null,k1,e),[s.memoizedState,e]},useRef:function(e){var c=G2();return e={current:e},c.memoizedState=e},useState:function(e){e=ge(e);var c=e.queue,n=ml.bind(null,k1,c);return c.dispatch=n,[e.memoizedState,n]},useDebugValue:be,useDeferredValue:function(e,c){var n=G2();return Me(n,e,c)},useTransition:function(){var e=ge(!1);return e=ol.bind(null,k1,e.queue,!0,!1),G2().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,c,n){var s=k1,h=G2();if(I1){if(n===void 0)throw Error(o(407));n=n()}else{if(n=c(),h2===null)throw Error(o(349));(Z1&127)!==0||qn(s,c,n)}h.memoizedState=n;var f={value:n,getSnapshot:c};return h.queue=f,tl(On.bind(null,s,f,e),[e]),s.flags|=2048,P6(9,{destroy:void 0},Dn.bind(null,s,f,n,c),null),n},useId:function(){var e=G2(),c=h2.identifierPrefix;if(I1){var n=D4,s=q4;n=(s&~(1<<32-b1(s)-1)).toString(32)+n,c="_"+c+"R_"+n,n=M5++,0<\/script>",f=f.removeChild(f.firstChild);break;case"select":f=typeof s.is=="string"?M.createElement("select",{is:s.is}):M.createElement("select"),s.multiple?f.multiple=!0:s.size&&(f.size=s.size);break;default:f=typeof s.is=="string"?M.createElement(h,{is:s.is}):M.createElement(h)}}f[D2]=c,f[Y2]=s;t:for(M=c.child;M!==null;){if(M.tag===5||M.tag===6)f.appendChild(M.stateNode);else if(M.tag!==4&&M.tag!==27&&M.child!==null){M.child.return=M,M=M.child;continue}if(M===c)break t;for(;M.sibling===null;){if(M.return===null||M.return===c)break t;M=M.return}M.sibling.return=M.return,M=M.sibling}c.stateNode=f;t:switch(Z2(f,h,s),h){case"button":case"input":case"select":case"textarea":s=!!s.autoFocus;break t;case"img":s=!0;break t;default:s=!1}s&&e3(c)}}return f2(c),qe(c,c.type,e===null?null:e.memoizedProps,c.pendingProps,n),null;case 6:if(e&&c.stateNode!=null)e.memoizedProps!==s&&e3(c);else{if(typeof s!="string"&&c.stateNode===null)throw Error(o(166));if(e=m1.current,E6(c)){if(e=c.stateNode,n=c.memoizedProps,s=null,h=O2,h!==null)switch(h.tag){case 27:case 5:s=h.memoizedProps}e[D2]=c,e=!!(e.nodeValue===n||s!==null&&s.suppressHydrationWarning===!0||Er(e.nodeValue,n)),e||y3(c,!0)}else e=I5(e).createTextNode(s),e[D2]=c,c.stateNode=e}return f2(c),null;case 31:if(n=c.memoizedState,e===null||e.memoizedState!==null){if(s=E6(c),n!==null){if(e===null){if(!s)throw Error(o(318));if(e=c.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[D2]=c}else Q3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),e=!1}else n=Yt(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return c.flags&256?(l4(c),c):(l4(c),null);if((c.flags&128)!==0)throw Error(o(558))}return f2(c),null;case 13:if(s=c.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(h=E6(c),s!==null&&s.dehydrated!==null){if(e===null){if(!h)throw Error(o(318));if(h=c.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(o(317));h[D2]=c}else Q3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),h=!1}else h=Yt(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=h),h=!0;if(!h)return c.flags&256?(l4(c),c):(l4(c),null)}return l4(c),(c.flags&128)!==0?(c.lanes=n,c):(n=s!==null,e=e!==null&&e.memoizedState!==null,n&&(s=c.child,h=null,s.alternate!==null&&s.alternate.memoizedState!==null&&s.alternate.memoizedState.cachePool!==null&&(h=s.alternate.memoizedState.cachePool.pool),f=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(f=s.memoizedState.cachePool.pool),f!==h&&(s.flags|=2048)),n!==e&&n&&(c.child.flags|=8192),N5(c,c.updateQueue),f2(c),null);case 4:return A1(),e===null&&r9(c.stateNode.containerInfo),f2(c),null;case 10:return X4(c.type),f2(c),null;case 19:if(_(w2),s=c.memoizedState,s===null)return f2(c),null;if(h=(c.flags&128)!==0,f=s.rendering,f===null)if(h)W0(s,!1);else{if(y2!==0||e!==null&&(e.flags&128)!==0)for(e=c.child;e!==null;){if(f=z5(e),f!==null){for(c.flags|=128,W0(s,!1),e=f.updateQueue,c.updateQueue=e,N5(c,e),c.subtreeFlags=0,e=n,n=c.child;n!==null;)mn(n,e),n=n.sibling;return t1(w2,w2.current&1|2),I1&&K4(c,s.treeForkCount),c.child}e=e.sibling}s.tail!==null&&G1()>T5&&(c.flags|=128,h=!0,W0(s,!1),c.lanes=4194304)}else{if(!h)if(e=z5(f),e!==null){if(c.flags|=128,h=!0,e=e.updateQueue,c.updateQueue=e,N5(c,e),W0(s,!0),s.tail===null&&s.tailMode==="hidden"&&!f.alternate&&!I1)return f2(c),null}else 2*G1()-s.renderingStartTime>T5&&n!==536870912&&(c.flags|=128,h=!0,W0(s,!1),c.lanes=4194304);s.isBackwards?(f.sibling=c.child,c.child=f):(e=s.last,e!==null?e.sibling=f:c.child=f,s.last=f)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=G1(),e.sibling=null,n=w2.current,t1(w2,h?n&1|2:n&1),I1&&K4(c,s.treeForkCount),e):(f2(c),null);case 22:case 23:return l4(c),ie(),s=c.memoizedState!==null,e!==null?e.memoizedState!==null!==s&&(c.flags|=8192):s&&(c.flags|=8192),s?(n&536870912)!==0&&(c.flags&128)===0&&(f2(c),c.subtreeFlags&6&&(c.flags|=8192)):f2(c),n=c.updateQueue,n!==null&&N5(c,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),s=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(s=c.memoizedState.cachePool.pool),s!==n&&(c.flags|=2048),e!==null&&_(W3),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),c.memoizedState.cache!==n&&(c.flags|=2048),X4(A2),f2(c),null;case 25:return null;case 30:return null}throw Error(o(156,c.tag))}function dd(e,c){switch(Gt(c),c.tag){case 1:return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 3:return X4(A2),A1(),e=c.flags,(e&65536)!==0&&(e&128)===0?(c.flags=e&-65537|128,c):null;case 26:case 27:case 5:return Y1(c),null;case 31:if(c.memoizedState!==null){if(l4(c),c.alternate===null)throw Error(o(340));Q3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 13:if(l4(c),e=c.memoizedState,e!==null&&e.dehydrated!==null){if(c.alternate===null)throw Error(o(340));Q3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 19:return _(w2),null;case 4:return A1(),null;case 10:return X4(c.type),null;case 22:case 23:return l4(c),ie(),e!==null&&_(W3),e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 24:return X4(A2),null;case 25:return null;default:return null}}function _l(e,c){switch(Gt(c),c.tag){case 3:X4(A2),A1();break;case 26:case 27:case 5:Y1(c);break;case 4:A1();break;case 31:c.memoizedState!==null&&l4(c);break;case 13:l4(c);break;case 19:_(w2);break;case 10:X4(c.type);break;case 22:case 23:l4(c),ie(),e!==null&&_(W3);break;case 24:X4(A2)}}function t8(e,c){try{var n=c.updateQueue,s=n!==null?n.lastEffect:null;if(s!==null){var h=s.next;n=h;do{if((n.tag&e)===e){s=void 0;var f=n.create,M=n.inst;s=f(),M.destroy=s}n=n.next}while(n!==h)}}catch(L){a2(c,c.return,L)}}function L3(e,c,n){try{var s=c.updateQueue,h=s!==null?s.lastEffect:null;if(h!==null){var f=h.next;s=f;do{if((s.tag&e)===e){var M=s.inst,L=M.destroy;if(L!==void 0){M.destroy=void 0,h=c;var O=n,K=L;try{K()}catch(c1){a2(h,O,c1)}}}s=s.next}while(s!==f)}}catch(c1){a2(c,c.return,c1)}}function Ul(e){var c=e.updateQueue;if(c!==null){var n=e.stateNode;try{Nn(c,n)}catch(s){a2(e,e.return,s)}}}function Zl(e,c,n){n.props=n6(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(s){a2(e,c,s)}}function e8(e,c){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var s=e.stateNode;break;case 30:s=e.stateNode;break;default:s=e.stateNode}typeof n=="function"?e.refCleanup=n(s):n.current=s}}catch(h){a2(e,c,h)}}function O4(e,c){var n=e.ref,s=e.refCleanup;if(n!==null)if(typeof s=="function")try{s()}catch(h){a2(e,c,h)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(h){a2(e,c,h)}else n.current=null}function $l(e){var c=e.type,n=e.memoizedProps,s=e.stateNode;try{t:switch(c){case"button":case"input":case"select":case"textarea":n.autoFocus&&s.focus();break t;case"img":n.src?s.src=n.src:n.srcSet&&(s.srcset=n.srcSet)}}catch(h){a2(e,e.return,h)}}function De(e,c,n){try{var s=e.stateNode;kd(s,e.type,n,c),s[Y2]=c}catch(h){a2(e,e.return,h)}}function Pl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&E3(e.type)||e.tag===4}function Oe(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||Pl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&E3(e.type)||e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function _e(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,c):(c=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,c.appendChild(e),n=n._reactRootContainer,n!=null||c.onclick!==null||(c.onclick=G4));else if(s!==4&&(s===27&&E3(e.type)&&(n=e.stateNode,c=null),e=e.child,e!==null))for(_e(e,c,n),e=e.sibling;e!==null;)_e(e,c,n),e=e.sibling}function F5(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?n.insertBefore(e,c):n.appendChild(e);else if(s!==4&&(s===27&&E3(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(F5(e,c,n),e=e.sibling;e!==null;)F5(e,c,n),e=e.sibling}function Gl(e){var c=e.stateNode,n=e.memoizedProps;try{for(var s=e.type,h=c.attributes;h.length;)c.removeAttributeNode(h[0]);Z2(c,s,n),c[D2]=e,c[Y2]=n}catch(f){a2(e,e.return,f)}}var c3=!1,j2=!1,Ue=!1,Il=typeof WeakSet=="function"?WeakSet:Set,E2=null;function fd(e,c){if(e=e.containerInfo,o9=t7,e=nn(e),Rt(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else t:{n=(n=e.ownerDocument)&&n.defaultView||window;var s=n.getSelection&&n.getSelection();if(s&&s.rangeCount!==0){n=s.anchorNode;var h=s.anchorOffset,f=s.focusNode;s=s.focusOffset;try{n.nodeType,f.nodeType}catch{n=null;break t}var M=0,L=-1,O=-1,K=0,c1=0,i1=e,X=null;e:for(;;){for(var W;i1!==n||h!==0&&i1.nodeType!==3||(L=M+h),i1!==f||s!==0&&i1.nodeType!==3||(O=M+s),i1.nodeType===3&&(M+=i1.nodeValue.length),(W=i1.firstChild)!==null;)X=i1,i1=W;for(;;){if(i1===e)break e;if(X===n&&++K===h&&(L=M),X===f&&++c1===s&&(O=M),(W=i1.nextSibling)!==null)break;i1=X,X=i1.parentNode}i1=W}n=L===-1||O===-1?null:{start:L,end:O}}else n=null}n=n||{start:0,end:0}}else n=null;for(u9={focusedElem:e,selectionRange:n},t7=!1,E2=c;E2!==null;)if(c=E2,e=c.child,(c.subtreeFlags&1028)!==0&&e!==null)e.return=c,E2=e;else for(;E2!==null;){switch(c=E2,f=c.alternate,e=c.flags,c.tag){case 0:if((e&4)!==0&&(e=c.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Z2(f,s,n),f[D2]=e,R2(f),s=f;break t;case"link":var M=Wr("link","href",h).get(s+(n.href||""));if(M){for(var L=0;Lo2&&(M=o2,o2=L1,L1=M);var $=cn(L,L1),U=cn(L,o2);if($&&U&&(W.rangeCount!==1||W.anchorNode!==$.node||W.anchorOffset!==$.offset||W.focusNode!==U.node||W.focusOffset!==U.offset)){var Y=i1.createRange();Y.setStart($.node,$.offset),W.removeAllRanges(),L1>o2?(W.addRange(Y),W.extend(U.node,U.offset)):(Y.setEnd(U.node,U.offset),W.addRange(Y))}}}}for(i1=[],W=L;W=W.parentNode;)W.nodeType===1&&i1.push({element:W,left:W.scrollLeft,top:W.scrollTop});for(typeof L.focus=="function"&&L.focus(),L=0;Ln?32:n,R.T=null,n=Ke,Ke=null;var f=F3,M=i3;if(k2=0,Q6=F3=null,i3=0,(t2&6)!==0)throw Error(o(331));var L=t2;if(t2|=4,nr(f.current),er(f,f.current,M,n),t2=L,i8(0,!1),z2&&typeof z2.onPostCommitFiberRoot=="function")try{z2.onPostCommitFiberRoot(r2,f)}catch{}return!0}finally{P.p=h,R.T=s,yr(e,c)}}function wr(e,c,n){c=p4(n,c),c=Ae(e.stateNode,c,2),e=S3(e,c,2),e!==null&&(V0(e,2),_4(e))}function a2(e,c,n){if(e.tag===3)wr(e,e,n);else for(;c!==null;){if(c.tag===3){wr(c,e,n);break}else if(c.tag===1){var s=c.stateNode;if(typeof c.type.getDerivedStateFromError=="function"||typeof s.componentDidCatch=="function"&&(N3===null||!N3.has(s))){e=p4(n,e),n=Hl(2),s=S3(c,n,2),s!==null&&(Sl(n,s,c,e),V0(s,2),_4(s));break}}c=c.return}}function We(e,c,n){var s=e.pingCache;if(s===null){s=e.pingCache=new pd;var h=new Set;s.set(c,h)}else h=s.get(c),h===void 0&&(h=new Set,s.set(c,h));h.has(n)||(Pe=!0,h.add(n),e=Md.bind(null,e,c,n),c.then(e,e))}function Md(e,c,n){var s=e.pingCache;s!==null&&s.delete(c),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,h2===e&&(Z1&n)===n&&(y2===4||y2===3&&(Z1&62914560)===Z1&&300>G1()-E5?(t2&2)===0&&X6(e,0):Ge|=n,K6===Z1&&(K6=0)),_4(e)}function Hr(e,c){c===0&&(c=xa()),e=Y3(e,c),e!==null&&(V0(e,c),_4(e))}function yd(e){var c=e.memoizedState,n=0;c!==null&&(n=c.retryLane),Hr(e,n)}function Cd(e,c){var n=0;switch(e.tag){case 31:case 13:var s=e.stateNode,h=e.memoizedState;h!==null&&(n=h.retryLane);break;case 19:s=e.stateNode;break;case 22:s=e.stateNode._retryCache;break;default:throw Error(o(314))}s!==null&&s.delete(c),Hr(e,n)}function wd(e,c){return x1(e,c)}var Z5=null,W6=null,t9=!1,$5=!1,e9=!1,R3=0;function _4(e){e!==W6&&e.next===null&&(W6===null?Z5=W6=e:W6=W6.next=e),$5=!0,t9||(t9=!0,Sd())}function i8(e,c){if(!e9&&$5){e9=!0;do for(var n=!1,s=Z5;s!==null;){if(e!==0){var h=s.pendingLanes;if(h===0)var f=0;else{var M=s.suspendedLanes,L=s.pingedLanes;f=(1<<31-b1(42|e)+1)-1,f&=h&~(M&~L),f=f&201326741?f&201326741|1:f?f|2:0}f!==0&&(n=!0,Lr(s,f))}else f=Z1,f=b2(s,s===h2?f:0,s.cancelPendingCommit!==null||s.timeoutHandle!==-1),(f&3)===0||A4(s,f)||(n=!0,Lr(s,f));s=s.next}while(n);e9=!1}}function Hd(){Sr()}function Sr(){$5=t9=!1;var e=0;R3!==0&&Ed()&&(e=R3);for(var c=G1(),n=null,s=Z5;s!==null;){var h=s.next,f=Vr(s,c);f===0?(s.next=null,n===null?Z5=h:n.next=h,h===null&&(W6=n)):(n=s,(e!==0||(f&3)!==0)&&($5=!0)),s=h}k2!==0&&k2!==5||i8(e),R3!==0&&(R3=0)}function Vr(e,c){for(var n=e.suspendedLanes,s=e.pingedLanes,h=e.expirationTimes,f=e.pendingLanes&-62914561;0L)break;var c1=O.transferSize,i1=O.initiatorType;c1&&Tr(i1)&&(O=O.responseEnd,M+=c1*(O"u"?null:document;function Kr(e,c,n){var s=t0;if(s&&typeof c=="string"&&c){var h=m4(c);h='link[rel="'+e+'"][href="'+h+'"]',typeof n=="string"&&(h+='[crossorigin="'+n+'"]'),Yr.has(h)||(Yr.add(h),e={rel:e,crossOrigin:n,href:c},s.querySelector(h)===null&&(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function Pd(e){s3.D(e),Kr("dns-prefetch",e,null)}function Gd(e,c){s3.C(e,c),Kr("preconnect",e,c)}function Id(e,c,n){s3.L(e,c,n);var s=t0;if(s&&e&&c){var h='link[rel="preload"][as="'+m4(c)+'"]';c==="image"&&n&&n.imageSrcSet?(h+='[imagesrcset="'+m4(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(h+='[imagesizes="'+m4(n.imageSizes)+'"]')):h+='[href="'+m4(e)+'"]';var f=h;switch(c){case"style":f=e0(e);break;case"script":f=c0(e)}y4.has(f)||(e=b({rel:"preload",href:c==="image"&&n&&n.imageSrcSet?void 0:e,as:c},n),y4.set(f,e),s.querySelector(h)!==null||c==="style"&&s.querySelector(h8(f))||c==="script"&&s.querySelector(d8(f))||(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function Yd(e,c){s3.m(e,c);var n=t0;if(n&&e){var s=c&&typeof c.as=="string"?c.as:"script",h='link[rel="modulepreload"][as="'+m4(s)+'"][href="'+m4(e)+'"]',f=h;switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":f=c0(e)}if(!y4.has(f)&&(e=b({rel:"modulepreload",href:e},c),y4.set(f,e),n.querySelector(h)===null)){switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(d8(f)))return}s=n.createElement("link"),Z2(s,"link",e),R2(s),n.head.appendChild(s)}}}function Kd(e,c,n){s3.S(e,c,n);var s=t0;if(s&&e){var h=C6(s).hoistableStyles,f=e0(e);c=c||"default";var M=h.get(f);if(!M){var L={loading:0,preload:null};if(M=s.querySelector(h8(f)))L.loading=5;else{e=b({rel:"stylesheet",href:e,"data-precedence":c},n),(n=y4.get(f))&&g9(e,n);var O=M=s.createElement("link");R2(O),Z2(O,"link",e),O._p=new Promise(function(K,c1){O.onload=K,O.onerror=c1}),O.addEventListener("load",function(){L.loading|=1}),O.addEventListener("error",function(){L.loading|=2}),L.loading|=4,K5(M,c,s)}M={type:"stylesheet",instance:M,count:1,state:L},h.set(f,M)}}}function Qd(e,c){s3.X(e,c);var n=t0;if(n&&e){var s=C6(n).hoistableScripts,h=c0(e),f=s.get(h);f||(f=n.querySelector(d8(h)),f||(e=b({src:e,async:!0},c),(c=y4.get(h))&&x9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function Xd(e,c){s3.M(e,c);var n=t0;if(n&&e){var s=C6(n).hoistableScripts,h=c0(e),f=s.get(h);f||(f=n.querySelector(d8(h)),f||(e=b({src:e,async:!0,type:"module"},c),(c=y4.get(h))&&x9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function Qr(e,c,n,s){var h=(h=m1.current)?Y5(h):null;if(!h)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(c=e0(n.href),n=C6(h).hoistableStyles,s=n.get(c),s||(s={type:"style",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=e0(n.href);var f=C6(h).hoistableStyles,M=f.get(e);if(M||(h=h.ownerDocument||h,M={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},f.set(e,M),(f=h.querySelector(h8(e)))&&!f._p&&(M.instance=f,M.state.loading=5),y4.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},y4.set(e,n),f||Jd(h,e,n,M.state))),c&&s===null)throw Error(o(528,""));return M}if(c&&s!==null)throw Error(o(529,""));return null;case"script":return c=n.async,n=n.src,typeof n=="string"&&c&&typeof c!="function"&&typeof c!="symbol"?(c=c0(n),n=C6(h).hoistableScripts,s=n.get(c),s||(s={type:"script",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function e0(e){return'href="'+m4(e)+'"'}function h8(e){return'link[rel="stylesheet"]['+e+"]"}function Xr(e){return b({},e,{"data-precedence":e.precedence,precedence:null})}function Jd(e,c,n,s){e.querySelector('link[rel="preload"][as="style"]['+c+"]")?s.loading=1:(c=e.createElement("link"),s.preload=c,c.addEventListener("load",function(){return s.loading|=1}),c.addEventListener("error",function(){return s.loading|=2}),Z2(c,"link",n),R2(c),e.head.appendChild(c))}function c0(e){return'[src="'+m4(e)+'"]'}function d8(e){return"script[async]"+e}function Jr(e,c,n){if(c.count++,c.instance===null)switch(c.type){case"style":var s=e.querySelector('style[data-href~="'+m4(n.href)+'"]');if(s)return c.instance=s,R2(s),s;var h=b({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return s=(e.ownerDocument||e).createElement("style"),R2(s),Z2(s,"style",h),K5(s,n.precedence,e),c.instance=s;case"stylesheet":h=e0(n.href);var f=e.querySelector(h8(h));if(f)return c.state.loading|=4,c.instance=f,R2(f),f;s=Xr(n),(h=y4.get(h))&&g9(s,h),f=(e.ownerDocument||e).createElement("link"),R2(f);var M=f;return M._p=new Promise(function(L,O){M.onload=L,M.onerror=O}),Z2(f,"link",s),c.state.loading|=4,K5(f,n.precedence,e),c.instance=f;case"script":return f=c0(n.src),(h=e.querySelector(d8(f)))?(c.instance=h,R2(h),h):(s=n,(h=y4.get(f))&&(s=b({},n),x9(s,h)),e=e.ownerDocument||e,h=e.createElement("script"),R2(h),Z2(h,"link",s),e.head.appendChild(h),c.instance=h);case"void":return null;default:throw Error(o(443,c.type))}else c.type==="stylesheet"&&(c.state.loading&4)===0&&(s=c.instance,c.state.loading|=4,K5(s,n.precedence,e));return c.instance}function K5(e,c,n){for(var s=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),h=s.length?s[s.length-1]:null,f=h,M=0;M title"):null)}function Wd(e,c,n){if(n===1||c.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof c.precedence!="string"||typeof c.href!="string"||c.href==="")break;return!0;case"link":if(typeof c.rel!="string"||typeof c.href!="string"||c.href===""||c.onLoad||c.onError)break;switch(c.rel){case"stylesheet":return e=c.disabled,typeof c.precedence=="string"&&e==null;default:return!0}case"script":if(c.async&&typeof c.async!="function"&&typeof c.async!="symbol"&&!c.onLoad&&!c.onError&&c.src&&typeof c.src=="string")return!0}return!1}function ei(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function tf(e,c,n,s){if(n.type==="stylesheet"&&(typeof s.media!="string"||matchMedia(s.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var h=e0(s.href),f=c.querySelector(h8(h));if(f){c=f._p,c!==null&&typeof c=="object"&&typeof c.then=="function"&&(e.count++,e=X5.bind(e),c.then(e,e)),n.state.loading|=4,n.instance=f,R2(f);return}f=c.ownerDocument||c,s=Xr(s),(h=y4.get(h))&&g9(s,h),f=f.createElement("link"),R2(f);var M=f;M._p=new Promise(function(L,O){M.onload=L,M.onerror=O}),Z2(f,"link",s),n.instance=f}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,c),(c=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=X5.bind(e),c.addEventListener("load",n),c.addEventListener("error",n))}}var z9=0;function ef(e,c){return e.stylesheets&&e.count===0&&W5(e,e.stylesheets),0z9?50:800)+c);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(s),clearTimeout(h)}}:null}function X5(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)W5(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var J5=null;function W5(e,c){e.stylesheets=null,e.unsuspend!==null&&(e.count++,J5=new Map,c.forEach(cf,e),J5=null,X5.call(e))}function cf(e,c){if(!(c.state.loading&4)){var n=J5.get(e);if(n)var s=n.get(null);else{n=new Map,J5.set(e,n);for(var h=e.querySelectorAll("link[data-precedence],style[data-precedence]"),f=0;f"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),A9.exports=zf(),A9.exports}var Mf=bf();var Hi="popstate";function yf(t={}){function a(o,u){let{pathname:d,search:p,hash:v}=o.location;return hc("",{pathname:d,search:p,hash:v},u.state&&u.state.usr||null,u.state&&u.state.key||"default")}function l(o,u){return typeof u=="string"?u:N8(u)}return wf(a,l,null,t)}function g2(t,a){if(t===!1||t===null||typeof t>"u")throw new Error(a)}function E4(t,a){if(!t){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function Cf(){return Math.random().toString(36).substring(2,10)}function Si(t,a){return{usr:t.state,key:t.key,idx:a}}function hc(t,a,l=null,o){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof a=="string"?M0(a):a,state:l,key:a&&a.key||o||Cf()}}function N8({pathname:t="/",search:a="",hash:l=""}){return a&&a!=="?"&&(t+=a.charAt(0)==="?"?a:"?"+a),l&&l!=="#"&&(t+=l.charAt(0)==="#"?l:"#"+l),t}function M0(t){let a={};if(t){let l=t.indexOf("#");l>=0&&(a.hash=t.substring(l),t=t.substring(0,l));let o=t.indexOf("?");o>=0&&(a.search=t.substring(o),t=t.substring(0,o)),t&&(a.pathname=t)}return a}function wf(t,a,l,o={}){let{window:u=document.defaultView,v5Compat:d=!1}=o,p=u.history,v="POP",g=null,x=z();x==null&&(x=0,p.replaceState({...p.state,idx:x},""));function z(){return(p.state||{idx:null}).idx}function b(){v="POP";let C=z(),V=C==null?null:C-x;x=C,g&&g({action:v,location:w.location,delta:V})}function y(C,V){v="PUSH";let A=hc(w.location,C,V);x=z()+1;let B=Si(A,x),k=w.createHref(A);try{p.pushState(B,"",k)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;u.location.assign(k)}d&&g&&g({action:v,location:w.location,delta:1})}function H(C,V){v="REPLACE";let A=hc(w.location,C,V);x=z();let B=Si(A,x),k=w.createHref(A);p.replaceState(B,"",k),d&&g&&g({action:v,location:w.location,delta:0})}function S(C){return Hf(C)}let w={get action(){return v},get location(){return t(u,p)},listen(C){if(g)throw new Error("A history only accepts one active listener");return u.addEventListener(Hi,b),g=C,()=>{u.removeEventListener(Hi,b),g=null}},createHref(C){return a(u,C)},createURL:S,encodeLocation(C){let V=S(C);return{pathname:V.pathname,search:V.search,hash:V.hash}},push:y,replace:H,go(C){return p.go(C)}};return w}function Hf(t,a=!1){let l="http://localhost";typeof window<"u"&&(l=window.location.origin!=="null"?window.location.origin:window.location.href),g2(l,"No window.location.(origin|href) available to create URL");let o=typeof t=="string"?t:N8(t);return o=o.replace(/ $/,"%20"),!a&&o.startsWith("//")&&(o=l+o),new URL(o,l)}function Xs(t,a,l="/"){return Sf(t,a,l,!1)}function Sf(t,a,l,o){let u=typeof a=="string"?M0(a):a,d=v3(u.pathname||"/",l);if(d==null)return null;let p=Js(t);Vf(p);let v=null;for(let g=0;v==null&&g{let z={relativePath:x===void 0?p.path||"":x,caseSensitive:p.caseSensitive===!0,childrenIndex:v,route:p};if(z.relativePath.startsWith("/")){if(!z.relativePath.startsWith(o)&&g)return;g2(z.relativePath.startsWith(o),`Absolute route path "${z.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),z.relativePath=z.relativePath.slice(o.length)}let b=m3([o,z.relativePath]),y=l.concat(z);p.children&&p.children.length>0&&(g2(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${b}".`),Js(p.children,a,y,b,g)),!(p.path==null&&!p.index)&&a.push({path:b,score:kf(b,p.index),routesMeta:y})};return t.forEach((p,v)=>{if(p.path===""||!p.path?.includes("?"))d(p,v);else for(let g of Ws(p.path))d(p,v,!0,g)}),a}function Ws(t){let a=t.split("/");if(a.length===0)return[];let[l,...o]=a,u=l.endsWith("?"),d=l.replace(/\?$/,"");if(o.length===0)return u?[d,""]:[d];let p=Ws(o.join("/")),v=[];return v.push(...p.map(g=>g===""?d:[d,g].join("/"))),u&&v.push(...p),v.map(g=>t.startsWith("/")&&g===""?"/":g)}function Vf(t){t.sort((a,l)=>a.score!==l.score?l.score-a.score:Rf(a.routesMeta.map(o=>o.childrenIndex),l.routesMeta.map(o=>o.childrenIndex)))}var Af=/^:[\w-]+$/,Lf=3,Bf=2,jf=1,Nf=10,Ff=-2,Vi=t=>t==="*";function kf(t,a){let l=t.split("/"),o=l.length;return l.some(Vi)&&(o+=Ff),a&&(o+=Bf),l.filter(u=>!Vi(u)).reduce((u,d)=>u+(Af.test(d)?Lf:d===""?jf:Nf),o)}function Rf(t,a){return t.length===a.length&&t.slice(0,-1).every((o,u)=>o===a[u])?t[t.length-1]-a[a.length-1]:0}function Ef(t,a,l=!1){let{routesMeta:o}=t,u={},d="/",p=[];for(let v=0;v{if(z==="*"){let S=v[y]||"";p=d.slice(0,d.length-S.length).replace(/(.)\/+$/,"$1")}const H=v[y];return b&&!H?x[z]=void 0:x[z]=(H||"").replace(/%2F/g,"/"),x},{}),pathname:d,pathnameBase:p,pattern:t}}function Tf(t,a=!1,l=!0){E4(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let o=[],u="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,v,g)=>(o.push({paramName:v,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(o.push({paramName:"*"}),u+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?u+="\\/*$":t!==""&&t!=="/"&&(u+="(?:(?=\\/|$))"),[new RegExp(u,a?void 0:"i"),o]}function qf(t){try{return t.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return E4(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${a}).`),t}}function v3(t,a){if(a==="/")return t;if(!t.toLowerCase().startsWith(a.toLowerCase()))return null;let l=a.endsWith("/")?a.length-1:a.length,o=t.charAt(l);return o&&o!=="/"?null:t.slice(l)||"/"}var Df=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Of=t=>Df.test(t);function _f(t,a="/"){let{pathname:l,search:o="",hash:u=""}=typeof t=="string"?M0(t):t,d;if(l)if(Of(l))d=l;else{if(l.includes("//")){let p=l;l=l.replace(/\/\/+/g,"/"),E4(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${l}`)}l.startsWith("/")?d=Ai(l.substring(1),"/"):d=Ai(l,a)}else d=a;return{pathname:d,search:$f(o),hash:Pf(u)}}function Ai(t,a){let l=a.replace(/\/+$/,"").split("/");return t.split("/").forEach(u=>{u===".."?l.length>1&&l.pop():u!=="."&&l.push(u)}),l.length>1?l.join("/"):"/"}function N9(t,a,l,o){return`Cannot include a '${t}' character in a manually specified \`to.${a}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${l}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Uf(t){return t.filter((a,l)=>l===0||a.route.path&&a.route.path.length>0)}function to(t){let a=Uf(t);return a.map((l,o)=>o===a.length-1?l.pathname:l.pathnameBase)}function eo(t,a,l,o=!1){let u;typeof t=="string"?u=M0(t):(u={...t},g2(!u.pathname||!u.pathname.includes("?"),N9("?","pathname","search",u)),g2(!u.pathname||!u.pathname.includes("#"),N9("#","pathname","hash",u)),g2(!u.search||!u.search.includes("#"),N9("#","search","hash",u)));let d=t===""||u.pathname==="",p=d?"/":u.pathname,v;if(p==null)v=l;else{let b=a.length-1;if(!o&&p.startsWith("..")){let y=p.split("/");for(;y[0]==="..";)y.shift(),b-=1;u.pathname=y.join("/")}v=b>=0?a[b]:"/"}let g=_f(u,v),x=p&&p!=="/"&&p.endsWith("/"),z=(d||p===".")&&l.endsWith("/");return!g.pathname.endsWith("/")&&(x||z)&&(g.pathname+="/"),g}var m3=t=>t.join("/").replace(/\/\/+/g,"/"),Zf=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),$f=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Pf=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Gf(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var co=["POST","PUT","PATCH","DELETE"];new Set(co);var If=["GET",...co];new Set(If);var y0=m.createContext(null);y0.displayName="DataRouter";var tt=m.createContext(null);tt.displayName="DataRouterState";m.createContext(!1);var ao=m.createContext({isTransitioning:!1});ao.displayName="ViewTransition";var Yf=m.createContext(new Map);Yf.displayName="Fetchers";var Kf=m.createContext(null);Kf.displayName="Await";var $4=m.createContext(null);$4.displayName="Navigation";var D8=m.createContext(null);D8.displayName="Location";var p3=m.createContext({outlet:null,matches:[],isDataRoute:!1});p3.displayName="Route";var Fc=m.createContext(null);Fc.displayName="RouteError";function Qf(t,{relative:a}={}){g2(O8(),"useHref() may be used only in the context of a component.");let{basename:l,navigator:o}=m.useContext($4),{hash:u,pathname:d,search:p}=_8(t,{relative:a}),v=d;return l!=="/"&&(v=d==="/"?l:m3([l,d])),o.createHref({pathname:v,search:p,hash:u})}function O8(){return m.useContext(D8)!=null}function g6(){return g2(O8(),"useLocation() may be used only in the context of a component."),m.useContext(D8).location}var no="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function lo(t){m.useContext($4).static||m.useLayoutEffect(t)}function Xf(){let{isDataRoute:t}=m.useContext(p3);return t?um():Jf()}function Jf(){g2(O8(),"useNavigate() may be used only in the context of a component.");let t=m.useContext(y0),{basename:a,navigator:l}=m.useContext($4),{matches:o}=m.useContext(p3),{pathname:u}=g6(),d=JSON.stringify(to(o)),p=m.useRef(!1);return lo(()=>{p.current=!0}),m.useCallback((g,x={})=>{if(E4(p.current,no),!p.current)return;if(typeof g=="number"){l.go(g);return}let z=eo(g,JSON.parse(d),u,x.relative==="path");t==null&&a!=="/"&&(z.pathname=z.pathname==="/"?a:m3([a,z.pathname])),(x.replace?l.replace:l.push)(z,x.state,x)},[a,l,d,u,t])}m.createContext(null);function _8(t,{relative:a}={}){let{matches:l}=m.useContext(p3),{pathname:o}=g6(),u=JSON.stringify(to(l));return m.useMemo(()=>eo(t,JSON.parse(u),o,a==="path"),[t,u,o,a])}function Wf(t,a){return ro(t,a)}function ro(t,a,l,o,u){g2(O8(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=m.useContext($4),{matches:p}=m.useContext(p3),v=p[p.length-1],g=v?v.params:{},x=v?v.pathname:"/",z=v?v.pathnameBase:"/",b=v&&v.route;{let A=b&&b.path||"";io(x,!b||A.endsWith("*")||A.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${x}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. +`+s.stack}}var n2=Object.prototype.hasOwnProperty,x1=t.unstable_scheduleCallback,b1=t.unstable_cancelCallback,G1=t.unstable_shouldYield,V2=t.unstable_requestPaint,P1=t.unstable_now,v2=t.unstable_getCurrentPriorityLevel,X1=t.unstable_ImmediatePriority,J1=t.unstable_UserBlockingPriority,s1=t.unstable_NormalPriority,J=t.unstable_LowPriority,a1=t.unstable_IdlePriority,C1=t.log,l2=t.unstable_setDisableYieldValue,r2=null,z2=null;function e4(e){if(typeof C1=="function"&&l2(e),z2&&typeof z2.setStrictMode=="function")try{z2.setStrictMode(r2,e)}catch{}}var M1=Math.clz32?Math.clz32:D1,u2=Math.log,W1=Math.LN2;function D1(e){return e>>>=0,e===0?32:31-(u2(e)/W1|0)|0}var e2=256,I2=262144,E4=4194304;function d4(e){var c=e&42;if(c!==0)return c;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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function M2(e,c,n){var s=e.pendingLanes;if(s===0)return 0;var h=0,f=e.suspendedLanes,b=e.pingedLanes;e=e.warmLanes;var L=s&134217727;return L!==0?(s=L&~f,s!==0?h=d4(s):(b&=L,b!==0?h=d4(b):n||(n=L&~e,n!==0&&(h=d4(n))))):(L=s&~f,L!==0?h=d4(L):b!==0?h=d4(b):n||(n=s&~e,n!==0&&(h=d4(n)))),h===0?0:c!==0&&c!==h&&(c&f)===0&&(f=h&-h,n=c&-c,f>=n||f===32&&(n&4194048)!==0)?c:h}function A4(e,c){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&c)===0}function Zu(e,c){switch(e){case 1:case 2:case 4:case 8:case 64:return c+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 c+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ua(){var e=E4;return E4<<=1,(E4&62914560)===0&&(E4=4194304),e}function st(e){for(var c=[],n=0;31>n;n++)c.push(e);return c}function S0(e,c){e.pendingLanes|=c,c!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function $u(e,c,n,s,h,f){var b=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var L=e.entanglements,O=e.expirationTimes,K=e.hiddenUpdates;for(n=b&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Qu=/[\n"\\]/g;function m4(e){return e.replace(Qu,function(c){return"\\"+c.charCodeAt(0).toString(16)+" "})}function mt(e,c,n,s,h,f,b,L){e.name="",b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?e.type=b:e.removeAttribute("type"),c!=null?b==="number"?(c===0&&e.value===""||e.value!=c)&&(e.value=""+f4(c)):e.value!==""+f4(c)&&(e.value=""+f4(c)):b!=="submit"&&b!=="reset"||e.removeAttribute("value"),c!=null?vt(e,b,f4(c)):n!=null?vt(e,b,f4(n)):s!=null&&e.removeAttribute("value"),h==null&&f!=null&&(e.defaultChecked=!!f),h!=null&&(e.checked=h&&typeof h!="function"&&typeof h!="symbol"),L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"?e.name=""+f4(L):e.removeAttribute("name")}function Ca(e,c,n,s,h,f,b,L){if(f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.type=f),c!=null||n!=null){if(!(f!=="submit"&&f!=="reset"||c!=null)){ft(e);return}n=n!=null?""+f4(n):"",c=c!=null?""+f4(c):n,L||c===e.value||(e.value=c),e.defaultValue=c}s=s??h,s=typeof s!="function"&&typeof s!="symbol"&&!!s,e.checked=L?e.checked:!!s,e.defaultChecked=!!s,b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"&&(e.name=b),ft(e)}function vt(e,c,n){c==="number"&&Y8(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function w6(e,c,n,s){if(e=e.options,c){c={};for(var h=0;h"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Mt=!1;if(P4)try{var B0={};Object.defineProperty(B0,"passive",{get:function(){Mt=!0}}),window.addEventListener("test",B0,B0),window.removeEventListener("test",B0,B0)}catch{Mt=!1}var x3=null,bt=null,Q8=null;function Ba(){if(Q8)return Q8;var e,c=bt,n=c.length,s,h="value"in x3?x3.value:x3.textContent,f=h.length;for(e=0;e=F0),Ea=" ",Ta=!1;function qa(e,c){switch(e){case"keyup":return wh.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Da(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var A6=!1;function Sh(e,c){switch(e){case"compositionend":return Da(c);case"keypress":return c.which!==32?null:(Ta=!0,Ea);case"textInput":return e=c.data,e===Ea&&Ta?null:e;default:return null}}function Vh(e,c){if(A6)return e==="compositionend"||!St&&qa(e,c)?(e=Ba(),Q8=bt=x3=null,A6=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:n,offset:c-e};e=s}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=Ia(n)}}function Ka(e,c){return e&&c?e===c?!0:e&&e.nodeType===3?!1:c&&c.nodeType===3?Ka(e,c.parentNode):"contains"in e?e.contains(c):e.compareDocumentPosition?!!(e.compareDocumentPosition(c)&16):!1:!1}function Qa(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var c=Y8(e.document);c instanceof e.HTMLIFrameElement;){try{var n=typeof c.contentWindow.location.href=="string"}catch{n=!1}if(n)e=c.contentWindow;else break;c=Y8(e.document)}return c}function Lt(e){var c=e&&e.nodeName&&e.nodeName.toLowerCase();return c&&(c==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||c==="textarea"||e.contentEditable==="true")}var Rh=P4&&"documentMode"in document&&11>=document.documentMode,L6=null,Bt=null,T0=null,jt=!1;function Xa(e,c,n){var s=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;jt||L6==null||L6!==Y8(s)||(s=L6,"selectionStart"in s&&Lt(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),T0&&E0(T0,s)||(T0=s,s=Z5(Bt,"onSelect"),0>=b,h-=b,T4=1<<32-M1(c)+h|n<T1?($1=w1,w1=null):$1=w1.sibling;var Q1=X($,w1,Y[T1],l1);if(Q1===null){w1===null&&(w1=$1);break}e&&w1&&Q1.alternate===null&&c($,w1),U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1,w1=$1}if(T1===Y.length)return n($,w1),I1&&Y4($,T1),H1;if(w1===null){for(;T1T1?($1=w1,w1=null):$1=w1.sibling;var O3=X($,w1,Q1.value,l1);if(O3===null){w1===null&&(w1=$1);break}e&&w1&&O3.alternate===null&&c($,w1),U=f(O3,U,T1),K1===null?H1=O3:K1.sibling=O3,K1=O3,w1=$1}if(Q1.done)return n($,w1),I1&&Y4($,T1),H1;if(w1===null){for(;!Q1.done;T1++,Q1=Y.next())Q1=i1($,Q1.value,l1),Q1!==null&&(U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1);return I1&&Y4($,T1),H1}for(w1=s(w1);!Q1.done;T1++,Q1=Y.next())Q1=W(w1,$,T1,Q1.value,l1),Q1!==null&&(e&&Q1.alternate!==null&&w1.delete(Q1.key===null?T1:Q1.key),U=f(Q1,U,T1),K1===null?H1=Q1:K1.sibling=Q1,K1=Q1);return e&&w1.forEach(function(ef){return c($,ef)}),I1&&Y4($,T1),H1}function o2($,U,Y,l1){if(typeof Y=="object"&&Y!==null&&Y.type===w&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case H:t:{for(var H1=Y.key;U!==null;){if(U.key===H1){if(H1=Y.type,H1===w){if(U.tag===7){n($,U.sibling),l1=h(U,Y.props.children),l1.return=$,$=l1;break t}}else if(U.elementType===H1||typeof H1=="object"&&H1!==null&&H1.$$typeof===E&&W3(H1)===U.type){n($,U.sibling),l1=h(U,Y.props),Z0(l1,Y),l1.return=$,$=l1;break t}n($,U);break}else c($,U);U=U.sibling}Y.type===w?(l1=Y3(Y.props.children,$.mode,l1,Y.key),l1.return=$,$=l1):(l1=r5(Y.type,Y.key,Y.props,null,$.mode,l1),Z0(l1,Y),l1.return=$,$=l1)}return b($);case S:t:{for(H1=Y.key;U!==null;){if(U.key===H1)if(U.tag===4&&U.stateNode.containerInfo===Y.containerInfo&&U.stateNode.implementation===Y.implementation){n($,U.sibling),l1=h(U,Y.children||[]),l1.return=$,$=l1;break t}else{n($,U);break}else c($,U);U=U.sibling}l1=qt(Y,$.mode,l1),l1.return=$,$=l1}return b($);case E:return Y=W3(Y),o2($,U,Y,l1)}if(I(Y))return y1($,U,Y,l1);if(P(Y)){if(H1=P(Y),typeof H1!="function")throw Error(o(150));return Y=H1.call(Y),L1($,U,Y,l1)}if(typeof Y.then=="function")return o2($,U,f5(Y),l1);if(Y.$$typeof===B)return o2($,U,o5($,Y),l1);m5($,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint"?(Y=""+Y,U!==null&&U.tag===6?(n($,U.sibling),l1=h(U,Y),l1.return=$,$=l1):(n($,U),l1=Tt(Y,$.mode,l1),l1.return=$,$=l1),b($)):n($,U)}return function($,U,Y,l1){try{U0=0;var H1=o2($,U,Y,l1);return O6=null,H1}catch(w1){if(w1===D6||w1===h5)throw w1;var K1=a4(29,w1,null,$.mode);return K1.lanes=l1,K1.return=$,K1}finally{}}}var e6=bn(!0),yn=bn(!1),C3=!1;function Qt(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xt(e,c){e=e.updateQueue,c.updateQueue===e&&(c.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function w3(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function H3(e,c,n){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(t2&2)!==0){var h=s.pending;return h===null?c.next=c:(c.next=h.next,h.next=c),s.pending=c,c=l5(e),nn(e,null,n),c}return n5(e,s,c,n),l5(e)}function $0(e,c,n){if(c=c.updateQueue,c!==null&&(c=c.shared,(n&4194048)!==0)){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,da(e,n)}}function Jt(e,c){var n=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,n===s)){var h=null,f=null;if(n=n.firstBaseUpdate,n!==null){do{var b={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};f===null?h=f=b:f=f.next=b,n=n.next}while(n!==null);f===null?h=f=c:f=f.next=c}else h=f=c;n={baseState:s.baseState,firstBaseUpdate:h,lastBaseUpdate:f,shared:s.shared,callbacks:s.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=c:e.next=c,n.lastBaseUpdate=c}var Wt=!1;function G0(){if(Wt){var e=q6;if(e!==null)throw e}}function P0(e,c,n,s){Wt=!1;var h=e.updateQueue;C3=!1;var f=h.firstBaseUpdate,b=h.lastBaseUpdate,L=h.shared.pending;if(L!==null){h.shared.pending=null;var O=L,K=O.next;O.next=null,b===null?f=K:b.next=K,b=O;var c1=e.alternate;c1!==null&&(c1=c1.updateQueue,L=c1.lastBaseUpdate,L!==b&&(L===null?c1.firstBaseUpdate=K:L.next=K,c1.lastBaseUpdate=O))}if(f!==null){var i1=h.baseState;b=0,c1=K=O=null,L=f;do{var X=L.lane&-536870913,W=X!==L.lane;if(W?(Z1&X)===X:(s&X)===X){X!==0&&X===T6&&(Wt=!0),c1!==null&&(c1=c1.next={lane:0,tag:L.tag,payload:L.payload,callback:null,next:null});t:{var y1=e,L1=L;X=c;var o2=n;switch(L1.tag){case 1:if(y1=L1.payload,typeof y1=="function"){i1=y1.call(o2,i1,X);break t}i1=y1;break t;case 3:y1.flags=y1.flags&-65537|128;case 0:if(y1=L1.payload,X=typeof y1=="function"?y1.call(o2,i1,X):y1,X==null)break t;i1=M({},i1,X);break t;case 2:C3=!0}}X=L.callback,X!==null&&(e.flags|=64,W&&(e.flags|=8192),W=h.callbacks,W===null?h.callbacks=[X]:W.push(X))}else W={lane:X,tag:L.tag,payload:L.payload,callback:L.callback,next:null},c1===null?(K=c1=W,O=i1):c1=c1.next=W,b|=X;if(L=L.next,L===null){if(L=h.shared.pending,L===null)break;W=L,L=W.next,W.next=null,h.lastBaseUpdate=W,h.shared.pending=null}}while(!0);c1===null&&(O=i1),h.baseState=O,h.firstBaseUpdate=K,h.lastBaseUpdate=c1,f===null&&(h.shared.lanes=0),B3|=b,e.lanes=b,e.memoizedState=i1}}function Cn(e,c){if(typeof e!="function")throw Error(o(191,e));e.call(c)}function wn(e,c){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ef?f:8;var b=R.T,L={};R.T=L,xe(e,!1,c,n);try{var O=h(),K=R.S;if(K!==null&&K(L,O),O!==null&&typeof O=="object"&&typeof O.then=="function"){var c1=$h(O,s);K0(e,c,c1,s4(e))}else K0(e,c,s,s4(e))}catch(i1){K0(e,c,{then:function(){},status:"rejected",reason:i1},s4())}finally{G.p=f,b!==null&&L.types!==null&&(b.types=L.types),R.T=b}}function Qh(){}function pe(e,c,n,s){if(e.tag!==5)throw Error(o(476));var h=cl(e).queue;el(e,h,c,e1,n===null?Qh:function(){return al(e),n(s)})}function cl(e){var c=e.memoizedState;if(c!==null)return c;c={memoizedState:e1,baseState:e1,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:J4,lastRenderedState:e1},next:null};var n={};return c.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:J4,lastRenderedState:n},next:null},e.memoizedState=c,e=e.alternate,e!==null&&(e.memoizedState=c),c}function al(e){var c=cl(e);c.next===null&&(c=e.alternate.memoizedState),K0(e,c.next.queue,{},s4())}function ge(){return _2(d8)}function nl(){return H2().memoizedState}function ll(){return H2().memoizedState}function Xh(e){for(var c=e.return;c!==null;){switch(c.tag){case 24:case 3:var n=s4();e=w3(n);var s=H3(c,e,n);s!==null&&(t4(s,c,n),$0(s,c,n)),c={cache:Pt()},e.payload=c;return}c=c.return}}function Jh(e,c,n){var s=s4();n={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},w5(e)?il(c,n):(n=Rt(e,c,n,s),n!==null&&(t4(n,e,s),sl(n,c,s)))}function rl(e,c,n){var s=s4();K0(e,c,n,s)}function K0(e,c,n,s){var h={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(w5(e))il(c,h);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=c.lastRenderedReducer,f!==null))try{var b=c.lastRenderedState,L=f(b,n);if(h.hasEagerState=!0,h.eagerState=L,c4(L,b))return n5(e,c,h,0),h2===null&&a5(),!1}catch{}finally{}if(n=Rt(e,c,h,s),n!==null)return t4(n,e,s),sl(n,c,s),!0}return!1}function xe(e,c,n,s){if(s={lane:2,revertLane:Qe(),gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},w5(e)){if(c)throw Error(o(479))}else c=Rt(e,n,s,2),c!==null&&t4(c,e,2)}function w5(e){var c=e.alternate;return e===k1||c!==null&&c===k1}function il(e,c){U6=g5=!0;var n=e.pending;n===null?c.next=c:(c.next=n.next,n.next=c),e.pending=c}function sl(e,c,n){if((n&4194048)!==0){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,da(e,n)}}var Q0={readContext:_2,use:M5,useCallback:b2,useContext:b2,useEffect:b2,useImperativeHandle:b2,useLayoutEffect:b2,useInsertionEffect:b2,useMemo:b2,useReducer:b2,useRef:b2,useState:b2,useDebugValue:b2,useDeferredValue:b2,useTransition:b2,useSyncExternalStore:b2,useId:b2,useHostTransitionStatus:b2,useFormState:b2,useActionState:b2,useOptimistic:b2,useMemoCache:b2,useCacheRefresh:b2};Q0.useEffectEvent=b2;var ol={readContext:_2,use:M5,useCallback:function(e,c){return P2().memoizedState=[e,c===void 0?null:c],e},useContext:_2,useEffect:Pn,useImperativeHandle:function(e,c,n){n=n!=null?n.concat([e]):null,y5(4194308,4,Qn.bind(null,c,e),n)},useLayoutEffect:function(e,c){return y5(4194308,4,e,c)},useInsertionEffect:function(e,c){y5(4,2,e,c)},useMemo:function(e,c){var n=P2();c=c===void 0?null:c;var s=e();if(c6){e4(!0);try{e()}finally{e4(!1)}}return n.memoizedState=[s,c],s},useReducer:function(e,c,n){var s=P2();if(n!==void 0){var h=n(c);if(c6){e4(!0);try{n(c)}finally{e4(!1)}}}else h=c;return s.memoizedState=s.baseState=h,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:h},s.queue=e,e=e.dispatch=Jh.bind(null,k1,e),[s.memoizedState,e]},useRef:function(e){var c=P2();return e={current:e},c.memoizedState=e},useState:function(e){e=he(e);var c=e.queue,n=rl.bind(null,k1,c);return c.dispatch=n,[e.memoizedState,n]},useDebugValue:me,useDeferredValue:function(e,c){var n=P2();return ve(n,e,c)},useTransition:function(){var e=he(!1);return e=el.bind(null,k1,e.queue,!0,!1),P2().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,c,n){var s=k1,h=P2();if(I1){if(n===void 0)throw Error(o(407));n=n()}else{if(n=c(),h2===null)throw Error(o(349));(Z1&127)!==0||Bn(s,c,n)}h.memoizedState=n;var f={value:n,getSnapshot:c};return h.queue=f,Pn(Nn.bind(null,s,f,e),[e]),s.flags|=2048,$6(9,{destroy:void 0},jn.bind(null,s,f,n,c),null),n},useId:function(){var e=P2(),c=h2.identifierPrefix;if(I1){var n=q4,s=T4;n=(s&~(1<<32-M1(s)-1)).toString(32)+n,c="_"+c+"R_"+n,n=x5++,0<\/script>",f=f.removeChild(f.firstChild);break;case"select":f=typeof s.is=="string"?b.createElement("select",{is:s.is}):b.createElement("select"),s.multiple?f.multiple=!0:s.size&&(f.size=s.size);break;default:f=typeof s.is=="string"?b.createElement(h,{is:s.is}):b.createElement(h)}}f[D2]=c,f[Y2]=s;t:for(b=c.child;b!==null;){if(b.tag===5||b.tag===6)f.appendChild(b.stateNode);else if(b.tag!==4&&b.tag!==27&&b.child!==null){b.child.return=b,b=b.child;continue}if(b===c)break t;for(;b.sibling===null;){if(b.return===null||b.return===c)break t;b=b.return}b.sibling.return=b.return,b=b.sibling}c.stateNode=f;t:switch(Z2(f,h,s),h){case"button":case"input":case"select":case"textarea":s=!!s.autoFocus;break t;case"img":s=!0;break t;default:s=!1}s&&t3(c)}}return f2(c),Ne(c,c.type,e===null?null:e.memoizedProps,c.pendingProps,n),null;case 6:if(e&&c.stateNode!=null)e.memoizedProps!==s&&t3(c);else{if(typeof s!="string"&&c.stateNode===null)throw Error(o(166));if(e=m1.current,R6(c)){if(e=c.stateNode,n=c.memoizedProps,s=null,h=O2,h!==null)switch(h.tag){case 27:case 5:s=h.memoizedProps}e[D2]=c,e=!!(e.nodeValue===n||s!==null&&s.suppressHydrationWarning===!0||Ar(e.nodeValue,n)),e||b3(c,!0)}else e=$5(e).createTextNode(s),e[D2]=c,c.stateNode=e}return f2(c),null;case 31:if(n=c.memoizedState,e===null||e.memoizedState!==null){if(s=R6(c),n!==null){if(e===null){if(!s)throw Error(o(318));if(e=c.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[D2]=c}else K3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),e=!1}else n=Ut(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return c.flags&256?(l4(c),c):(l4(c),null);if((c.flags&128)!==0)throw Error(o(558))}return f2(c),null;case 13:if(s=c.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(h=R6(c),s!==null&&s.dehydrated!==null){if(e===null){if(!h)throw Error(o(318));if(h=c.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(o(317));h[D2]=c}else K3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),h=!1}else h=Ut(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=h),h=!0;if(!h)return c.flags&256?(l4(c),c):(l4(c),null)}return l4(c),(c.flags&128)!==0?(c.lanes=n,c):(n=s!==null,e=e!==null&&e.memoizedState!==null,n&&(s=c.child,h=null,s.alternate!==null&&s.alternate.memoizedState!==null&&s.alternate.memoizedState.cachePool!==null&&(h=s.alternate.memoizedState.cachePool.pool),f=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(f=s.memoizedState.cachePool.pool),f!==h&&(s.flags|=2048)),n!==e&&n&&(c.child.flags|=8192),L5(c,c.updateQueue),f2(c),null);case 4:return A1(),e===null&&t9(c.stateNode.containerInfo),f2(c),null;case 10:return Q4(c.type),f2(c),null;case 19:if(_(w2),s=c.memoizedState,s===null)return f2(c),null;if(h=(c.flags&128)!==0,f=s.rendering,f===null)if(h)J0(s,!1);else{if(y2!==0||e!==null&&(e.flags&128)!==0)for(e=c.child;e!==null;){if(f=p5(e),f!==null){for(c.flags|=128,J0(s,!1),e=f.updateQueue,c.updateQueue=e,L5(c,e),c.subtreeFlags=0,e=n,n=c.child;n!==null;)ln(n,e),n=n.sibling;return t1(w2,w2.current&1|2),I1&&Y4(c,s.treeForkCount),c.child}e=e.sibling}s.tail!==null&&P1()>k5&&(c.flags|=128,h=!0,J0(s,!1),c.lanes=4194304)}else{if(!h)if(e=p5(f),e!==null){if(c.flags|=128,h=!0,e=e.updateQueue,c.updateQueue=e,L5(c,e),J0(s,!0),s.tail===null&&s.tailMode==="hidden"&&!f.alternate&&!I1)return f2(c),null}else 2*P1()-s.renderingStartTime>k5&&n!==536870912&&(c.flags|=128,h=!0,J0(s,!1),c.lanes=4194304);s.isBackwards?(f.sibling=c.child,c.child=f):(e=s.last,e!==null?e.sibling=f:c.child=f,s.last=f)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=P1(),e.sibling=null,n=w2.current,t1(w2,h?n&1|2:n&1),I1&&Y4(c,s.treeForkCount),e):(f2(c),null);case 22:case 23:return l4(c),ee(),s=c.memoizedState!==null,e!==null?e.memoizedState!==null!==s&&(c.flags|=8192):s&&(c.flags|=8192),s?(n&536870912)!==0&&(c.flags&128)===0&&(f2(c),c.subtreeFlags&6&&(c.flags|=8192)):f2(c),n=c.updateQueue,n!==null&&L5(c,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),s=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(s=c.memoizedState.cachePool.pool),s!==n&&(c.flags|=2048),e!==null&&_(J3),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),c.memoizedState.cache!==n&&(c.flags|=2048),Q4(A2),f2(c),null;case 25:return null;case 30:return null}throw Error(o(156,c.tag))}function ad(e,c){switch(Ot(c),c.tag){case 1:return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 3:return Q4(A2),A1(),e=c.flags,(e&65536)!==0&&(e&128)===0?(c.flags=e&-65537|128,c):null;case 26:case 27:case 5:return Y1(c),null;case 31:if(c.memoizedState!==null){if(l4(c),c.alternate===null)throw Error(o(340));K3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 13:if(l4(c),e=c.memoizedState,e!==null&&e.dehydrated!==null){if(c.alternate===null)throw Error(o(340));K3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 19:return _(w2),null;case 4:return A1(),null;case 10:return Q4(c.type),null;case 22:case 23:return l4(c),ee(),e!==null&&_(J3),e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 24:return Q4(A2),null;case 25:return null;default:return null}}function Fl(e,c){switch(Ot(c),c.tag){case 3:Q4(A2),A1();break;case 26:case 27:case 5:Y1(c);break;case 4:A1();break;case 31:c.memoizedState!==null&&l4(c);break;case 13:l4(c);break;case 19:_(w2);break;case 10:Q4(c.type);break;case 22:case 23:l4(c),ee(),e!==null&&_(J3);break;case 24:Q4(A2)}}function W0(e,c){try{var n=c.updateQueue,s=n!==null?n.lastEffect:null;if(s!==null){var h=s.next;n=h;do{if((n.tag&e)===e){s=void 0;var f=n.create,b=n.inst;s=f(),b.destroy=s}n=n.next}while(n!==h)}}catch(L){a2(c,c.return,L)}}function A3(e,c,n){try{var s=c.updateQueue,h=s!==null?s.lastEffect:null;if(h!==null){var f=h.next;s=f;do{if((s.tag&e)===e){var b=s.inst,L=b.destroy;if(L!==void 0){b.destroy=void 0,h=c;var O=n,K=L;try{K()}catch(c1){a2(h,O,c1)}}}s=s.next}while(s!==f)}}catch(c1){a2(c,c.return,c1)}}function kl(e){var c=e.updateQueue;if(c!==null){var n=e.stateNode;try{wn(c,n)}catch(s){a2(e,e.return,s)}}}function Rl(e,c,n){n.props=a6(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(s){a2(e,c,s)}}function t8(e,c){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var s=e.stateNode;break;case 30:s=e.stateNode;break;default:s=e.stateNode}typeof n=="function"?e.refCleanup=n(s):n.current=s}}catch(h){a2(e,c,h)}}function D4(e,c){var n=e.ref,s=e.refCleanup;if(n!==null)if(typeof s=="function")try{s()}catch(h){a2(e,c,h)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(h){a2(e,c,h)}else n.current=null}function El(e){var c=e.type,n=e.memoizedProps,s=e.stateNode;try{t:switch(c){case"button":case"input":case"select":case"textarea":n.autoFocus&&s.focus();break t;case"img":n.src?s.src=n.src:n.srcSet&&(s.srcset=n.srcSet)}}catch(h){a2(e,e.return,h)}}function Fe(e,c,n){try{var s=e.stateNode;Hd(s,e.type,n,c),s[Y2]=c}catch(h){a2(e,e.return,h)}}function Tl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&R3(e.type)||e.tag===4}function ke(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||Tl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&R3(e.type)||e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Re(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,c):(c=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,c.appendChild(e),n=n._reactRootContainer,n!=null||c.onclick!==null||(c.onclick=G4));else if(s!==4&&(s===27&&R3(e.type)&&(n=e.stateNode,c=null),e=e.child,e!==null))for(Re(e,c,n),e=e.sibling;e!==null;)Re(e,c,n),e=e.sibling}function B5(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?n.insertBefore(e,c):n.appendChild(e);else if(s!==4&&(s===27&&R3(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(B5(e,c,n),e=e.sibling;e!==null;)B5(e,c,n),e=e.sibling}function ql(e){var c=e.stateNode,n=e.memoizedProps;try{for(var s=e.type,h=c.attributes;h.length;)c.removeAttributeNode(h[0]);Z2(c,s,n),c[D2]=e,c[Y2]=n}catch(f){a2(e,e.return,f)}}var e3=!1,j2=!1,Ee=!1,Dl=typeof WeakSet=="function"?WeakSet:Set,E2=null;function nd(e,c){if(e=e.containerInfo,a9=X5,e=Qa(e),Lt(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else t:{n=(n=e.ownerDocument)&&n.defaultView||window;var s=n.getSelection&&n.getSelection();if(s&&s.rangeCount!==0){n=s.anchorNode;var h=s.anchorOffset,f=s.focusNode;s=s.focusOffset;try{n.nodeType,f.nodeType}catch{n=null;break t}var b=0,L=-1,O=-1,K=0,c1=0,i1=e,X=null;e:for(;;){for(var W;i1!==n||h!==0&&i1.nodeType!==3||(L=b+h),i1!==f||s!==0&&i1.nodeType!==3||(O=b+s),i1.nodeType===3&&(b+=i1.nodeValue.length),(W=i1.firstChild)!==null;)X=i1,i1=W;for(;;){if(i1===e)break e;if(X===n&&++K===h&&(L=b),X===f&&++c1===s&&(O=b),(W=i1.nextSibling)!==null)break;i1=X,X=i1.parentNode}i1=W}n=L===-1||O===-1?null:{start:L,end:O}}else n=null}n=n||{start:0,end:0}}else n=null;for(n9={focusedElem:e,selectionRange:n},X5=!1,E2=c;E2!==null;)if(c=E2,e=c.child,(c.subtreeFlags&1028)!==0&&e!==null)e.return=c,E2=e;else for(;E2!==null;){switch(c=E2,f=c.alternate,e=c.flags,c.tag){case 0:if((e&4)!==0&&(e=c.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Z2(f,s,n),f[D2]=e,R2(f),s=f;break t;case"link":var b=Gr("link","href",h).get(s+(n.href||""));if(b){for(var L=0;Lo2&&(b=o2,o2=L1,L1=b);var $=Ya(L,L1),U=Ya(L,o2);if($&&U&&(W.rangeCount!==1||W.anchorNode!==$.node||W.anchorOffset!==$.offset||W.focusNode!==U.node||W.focusOffset!==U.offset)){var Y=i1.createRange();Y.setStart($.node,$.offset),W.removeAllRanges(),L1>o2?(W.addRange(Y),W.extend(U.node,U.offset)):(Y.setEnd(U.node,U.offset),W.addRange(Y))}}}}for(i1=[],W=L;W=W.parentNode;)W.nodeType===1&&i1.push({element:W,left:W.scrollLeft,top:W.scrollTop});for(typeof L.focus=="function"&&L.focus(),L=0;Ln?32:n,R.T=null,n=Ze,Ze=null;var f=N3,b=r3;if(k2=0,K6=N3=null,r3=0,(t2&6)!==0)throw Error(o(331));var L=t2;if(t2|=4,Ql(f.current),Il(f,f.current,b,n),t2=L,r8(0,!1),z2&&typeof z2.onPostCommitFiberRoot=="function")try{z2.onPostCommitFiberRoot(r2,f)}catch{}return!0}finally{G.p=h,R.T=s,mr(e,c)}}function pr(e,c,n){c=p4(n,c),c=ye(e.stateNode,c,2),e=H3(e,c,2),e!==null&&(S0(e,2),O4(e))}function a2(e,c,n){if(e.tag===3)pr(e,e,n);else for(;c!==null;){if(c.tag===3){pr(c,e,n);break}else if(c.tag===1){var s=c.stateNode;if(typeof c.type.getDerivedStateFromError=="function"||typeof s.componentDidCatch=="function"&&(j3===null||!j3.has(s))){e=p4(n,e),n=gl(2),s=H3(c,n,2),s!==null&&(xl(n,s,c,e),S0(s,2),O4(s));break}}c=c.return}}function Ie(e,c,n){var s=e.pingCache;if(s===null){s=e.pingCache=new id;var h=new Set;s.set(c,h)}else h=s.get(c),h===void 0&&(h=new Set,s.set(c,h));h.has(n)||(De=!0,h.add(n),e=dd.bind(null,e,c,n),c.then(e,e))}function dd(e,c,n){var s=e.pingCache;s!==null&&s.delete(c),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,h2===e&&(Z1&n)===n&&(y2===4||y2===3&&(Z1&62914560)===Z1&&300>P1()-F5?(t2&2)===0&&Q6(e,0):Oe|=n,Y6===Z1&&(Y6=0)),O4(e)}function gr(e,c){c===0&&(c=ua()),e=I3(e,c),e!==null&&(S0(e,c),O4(e))}function fd(e){var c=e.memoizedState,n=0;c!==null&&(n=c.retryLane),gr(e,n)}function md(e,c){var n=0;switch(e.tag){case 31:case 13:var s=e.stateNode,h=e.memoizedState;h!==null&&(n=h.retryLane);break;case 19:s=e.stateNode;break;case 22:s=e.stateNode._retryCache;break;default:throw Error(o(314))}s!==null&&s.delete(c),gr(e,n)}function vd(e,c){return x1(e,c)}var O5=null,J6=null,Ye=!1,_5=!1,Ke=!1,k3=0;function O4(e){e!==J6&&e.next===null&&(J6===null?O5=J6=e:J6=J6.next=e),_5=!0,Ye||(Ye=!0,gd())}function r8(e,c){if(!Ke&&_5){Ke=!0;do for(var n=!1,s=O5;s!==null;){if(e!==0){var h=s.pendingLanes;if(h===0)var f=0;else{var b=s.suspendedLanes,L=s.pingedLanes;f=(1<<31-M1(42|e)+1)-1,f&=h&~(b&~L),f=f&201326741?f&201326741|1:f?f|2:0}f!==0&&(n=!0,br(s,f))}else f=Z1,f=M2(s,s===h2?f:0,s.cancelPendingCommit!==null||s.timeoutHandle!==-1),(f&3)===0||A4(s,f)||(n=!0,br(s,f));s=s.next}while(n);Ke=!1}}function pd(){xr()}function xr(){_5=Ye=!1;var e=0;k3!==0&&Vd()&&(e=k3);for(var c=P1(),n=null,s=O5;s!==null;){var h=s.next,f=zr(s,c);f===0?(s.next=null,n===null?O5=h:n.next=h,h===null&&(J6=n)):(n=s,(e!==0||(f&3)!==0)&&(_5=!0)),s=h}k2!==0&&k2!==5||r8(e),k3!==0&&(k3=0)}function zr(e,c){for(var n=e.suspendedLanes,s=e.pingedLanes,h=e.expirationTimes,f=e.pendingLanes&-62914561;0L)break;var c1=O.transferSize,i1=O.initiatorType;c1&&Lr(i1)&&(O=O.responseEnd,b+=c1*(O"u"?null:document;function _r(e,c,n){var s=W6;if(s&&typeof c=="string"&&c){var h=m4(c);h='link[rel="'+e+'"][href="'+h+'"]',typeof n=="string"&&(h+='[crossorigin="'+n+'"]'),Or.has(h)||(Or.add(h),e={rel:e,crossOrigin:n,href:c},s.querySelector(h)===null&&(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function Ed(e){i3.D(e),_r("dns-prefetch",e,null)}function Td(e,c){i3.C(e,c),_r("preconnect",e,c)}function qd(e,c,n){i3.L(e,c,n);var s=W6;if(s&&e&&c){var h='link[rel="preload"][as="'+m4(c)+'"]';c==="image"&&n&&n.imageSrcSet?(h+='[imagesrcset="'+m4(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(h+='[imagesizes="'+m4(n.imageSizes)+'"]')):h+='[href="'+m4(e)+'"]';var f=h;switch(c){case"style":f=t0(e);break;case"script":f=e0(e)}y4.has(f)||(e=M({rel:"preload",href:c==="image"&&n&&n.imageSrcSet?void 0:e,as:c},n),y4.set(f,e),s.querySelector(h)!==null||c==="style"&&s.querySelector(u8(f))||c==="script"&&s.querySelector(h8(f))||(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function Dd(e,c){i3.m(e,c);var n=W6;if(n&&e){var s=c&&typeof c.as=="string"?c.as:"script",h='link[rel="modulepreload"][as="'+m4(s)+'"][href="'+m4(e)+'"]',f=h;switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":f=e0(e)}if(!y4.has(f)&&(e=M({rel:"modulepreload",href:e},c),y4.set(f,e),n.querySelector(h)===null)){switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(h8(f)))return}s=n.createElement("link"),Z2(s,"link",e),R2(s),n.head.appendChild(s)}}}function Od(e,c,n){i3.S(e,c,n);var s=W6;if(s&&e){var h=y6(s).hoistableStyles,f=t0(e);c=c||"default";var b=h.get(f);if(!b){var L={loading:0,preload:null};if(b=s.querySelector(u8(f)))L.loading=5;else{e=M({rel:"stylesheet",href:e,"data-precedence":c},n),(n=y4.get(f))&&h9(e,n);var O=b=s.createElement("link");R2(O),Z2(O,"link",e),O._p=new Promise(function(K,c1){O.onload=K,O.onerror=c1}),O.addEventListener("load",function(){L.loading|=1}),O.addEventListener("error",function(){L.loading|=2}),L.loading|=4,P5(b,c,s)}b={type:"stylesheet",instance:b,count:1,state:L},h.set(f,b)}}}function _d(e,c){i3.X(e,c);var n=W6;if(n&&e){var s=y6(n).hoistableScripts,h=e0(e),f=s.get(h);f||(f=n.querySelector(h8(h)),f||(e=M({src:e,async:!0},c),(c=y4.get(h))&&d9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function Ud(e,c){i3.M(e,c);var n=W6;if(n&&e){var s=y6(n).hoistableScripts,h=e0(e),f=s.get(h);f||(f=n.querySelector(h8(h)),f||(e=M({src:e,async:!0,type:"module"},c),(c=y4.get(h))&&d9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function Ur(e,c,n,s){var h=(h=m1.current)?G5(h):null;if(!h)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(c=t0(n.href),n=y6(h).hoistableStyles,s=n.get(c),s||(s={type:"style",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=t0(n.href);var f=y6(h).hoistableStyles,b=f.get(e);if(b||(h=h.ownerDocument||h,b={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},f.set(e,b),(f=h.querySelector(u8(e)))&&!f._p&&(b.instance=f,b.state.loading=5),y4.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},y4.set(e,n),f||Zd(h,e,n,b.state))),c&&s===null)throw Error(o(528,""));return b}if(c&&s!==null)throw Error(o(529,""));return null;case"script":return c=n.async,n=n.src,typeof n=="string"&&c&&typeof c!="function"&&typeof c!="symbol"?(c=e0(n),n=y6(h).hoistableScripts,s=n.get(c),s||(s={type:"script",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function t0(e){return'href="'+m4(e)+'"'}function u8(e){return'link[rel="stylesheet"]['+e+"]"}function Zr(e){return M({},e,{"data-precedence":e.precedence,precedence:null})}function Zd(e,c,n,s){e.querySelector('link[rel="preload"][as="style"]['+c+"]")?s.loading=1:(c=e.createElement("link"),s.preload=c,c.addEventListener("load",function(){return s.loading|=1}),c.addEventListener("error",function(){return s.loading|=2}),Z2(c,"link",n),R2(c),e.head.appendChild(c))}function e0(e){return'[src="'+m4(e)+'"]'}function h8(e){return"script[async]"+e}function $r(e,c,n){if(c.count++,c.instance===null)switch(c.type){case"style":var s=e.querySelector('style[data-href~="'+m4(n.href)+'"]');if(s)return c.instance=s,R2(s),s;var h=M({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return s=(e.ownerDocument||e).createElement("style"),R2(s),Z2(s,"style",h),P5(s,n.precedence,e),c.instance=s;case"stylesheet":h=t0(n.href);var f=e.querySelector(u8(h));if(f)return c.state.loading|=4,c.instance=f,R2(f),f;s=Zr(n),(h=y4.get(h))&&h9(s,h),f=(e.ownerDocument||e).createElement("link"),R2(f);var b=f;return b._p=new Promise(function(L,O){b.onload=L,b.onerror=O}),Z2(f,"link",s),c.state.loading|=4,P5(f,n.precedence,e),c.instance=f;case"script":return f=e0(n.src),(h=e.querySelector(h8(f)))?(c.instance=h,R2(h),h):(s=n,(h=y4.get(f))&&(s=M({},n),d9(s,h)),e=e.ownerDocument||e,h=e.createElement("script"),R2(h),Z2(h,"link",s),e.head.appendChild(h),c.instance=h);case"void":return null;default:throw Error(o(443,c.type))}else c.type==="stylesheet"&&(c.state.loading&4)===0&&(s=c.instance,c.state.loading|=4,P5(s,n.precedence,e));return c.instance}function P5(e,c,n){for(var s=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),h=s.length?s[s.length-1]:null,f=h,b=0;b title"):null)}function $d(e,c,n){if(n===1||c.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof c.precedence!="string"||typeof c.href!="string"||c.href==="")break;return!0;case"link":if(typeof c.rel!="string"||typeof c.href!="string"||c.href===""||c.onLoad||c.onError)break;switch(c.rel){case"stylesheet":return e=c.disabled,typeof c.precedence=="string"&&e==null;default:return!0}case"script":if(c.async&&typeof c.async!="function"&&typeof c.async!="symbol"&&!c.onLoad&&!c.onError&&c.src&&typeof c.src=="string")return!0}return!1}function Ir(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Gd(e,c,n,s){if(n.type==="stylesheet"&&(typeof s.media!="string"||matchMedia(s.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var h=t0(s.href),f=c.querySelector(u8(h));if(f){c=f._p,c!==null&&typeof c=="object"&&typeof c.then=="function"&&(e.count++,e=Y5.bind(e),c.then(e,e)),n.state.loading|=4,n.instance=f,R2(f);return}f=c.ownerDocument||c,s=Zr(s),(h=y4.get(h))&&h9(s,h),f=f.createElement("link"),R2(f);var b=f;b._p=new Promise(function(L,O){b.onload=L,b.onerror=O}),Z2(f,"link",s),n.instance=f}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,c),(c=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Y5.bind(e),c.addEventListener("load",n),c.addEventListener("error",n))}}var f9=0;function Pd(e,c){return e.stylesheets&&e.count===0&&Q5(e,e.stylesheets),0f9?50:800)+c);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(s),clearTimeout(h)}}:null}function Y5(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Q5(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var K5=null;function Q5(e,c){e.stylesheets=null,e.unsuspend!==null&&(e.count++,K5=new Map,c.forEach(Id,e),K5=null,Y5.call(e))}function Id(e,c){if(!(c.state.loading&4)){var n=K5.get(e);if(n)var s=n.get(null);else{n=new Map,K5.set(e,n);for(var h=e.querySelectorAll("link[data-precedence],style[data-precedence]"),f=0;f"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),y9.exports=uf(),y9.exports}var df=hf();var gi="popstate";function ff(t={}){function a(o,u){let{pathname:d,search:p,hash:v}=o.location;return nc("",{pathname:d,search:p,hash:v},u.state&&u.state.usr||null,u.state&&u.state.key||"default")}function l(o,u){return typeof u=="string"?u:L8(u)}return vf(a,l,null,t)}function g2(t,a){if(t===!1||t===null||typeof t>"u")throw new Error(a)}function R4(t,a){if(!t){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function mf(){return Math.random().toString(36).substring(2,10)}function xi(t,a){return{usr:t.state,key:t.key,idx:a}}function nc(t,a,l=null,o){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof a=="string"?M0(a):a,state:l,key:a&&a.key||o||mf()}}function L8({pathname:t="/",search:a="",hash:l=""}){return a&&a!=="?"&&(t+=a.charAt(0)==="?"?a:"?"+a),l&&l!=="#"&&(t+=l.charAt(0)==="#"?l:"#"+l),t}function M0(t){let a={};if(t){let l=t.indexOf("#");l>=0&&(a.hash=t.substring(l),t=t.substring(0,l));let o=t.indexOf("?");o>=0&&(a.search=t.substring(o),t=t.substring(0,o)),t&&(a.pathname=t)}return a}function vf(t,a,l,o={}){let{window:u=document.defaultView,v5Compat:d=!1}=o,p=u.history,v="POP",g=null,x=z();x==null&&(x=0,p.replaceState({...p.state,idx:x},""));function z(){return(p.state||{idx:null}).idx}function M(){v="POP";let C=z(),V=C==null?null:C-x;x=C,g&&g({action:v,location:w.location,delta:V})}function y(C,V){v="PUSH";let A=nc(w.location,C,V);x=z()+1;let B=xi(A,x),k=w.createHref(A);try{p.pushState(B,"",k)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;u.location.assign(k)}d&&g&&g({action:v,location:w.location,delta:1})}function H(C,V){v="REPLACE";let A=nc(w.location,C,V);x=z();let B=xi(A,x),k=w.createHref(A);p.replaceState(B,"",k),d&&g&&g({action:v,location:w.location,delta:0})}function S(C){return pf(C)}let w={get action(){return v},get location(){return t(u,p)},listen(C){if(g)throw new Error("A history only accepts one active listener");return u.addEventListener(gi,M),g=C,()=>{u.removeEventListener(gi,M),g=null}},createHref(C){return a(u,C)},createURL:S,encodeLocation(C){let V=S(C);return{pathname:V.pathname,search:V.search,hash:V.hash}},push:y,replace:H,go(C){return p.go(C)}};return w}function pf(t,a=!1){let l="http://localhost";typeof window<"u"&&(l=window.location.origin!=="null"?window.location.origin:window.location.href),g2(l,"No window.location.(origin|href) available to create URL");let o=typeof t=="string"?t:L8(t);return o=o.replace(/ $/,"%20"),!a&&o.startsWith("//")&&(o=l+o),new URL(o,l)}function Us(t,a,l="/"){return gf(t,a,l,!1)}function gf(t,a,l,o){let u=typeof a=="string"?M0(a):a,d=m3(u.pathname||"/",l);if(d==null)return null;let p=Zs(t);xf(p);let v=null;for(let g=0;v==null&&g{let z={relativePath:x===void 0?p.path||"":x,caseSensitive:p.caseSensitive===!0,childrenIndex:v,route:p};if(z.relativePath.startsWith("/")){if(!z.relativePath.startsWith(o)&&g)return;g2(z.relativePath.startsWith(o),`Absolute route path "${z.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),z.relativePath=z.relativePath.slice(o.length)}let M=f3([o,z.relativePath]),y=l.concat(z);p.children&&p.children.length>0&&(g2(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${M}".`),Zs(p.children,a,y,M,g)),!(p.path==null&&!p.index)&&a.push({path:M,score:Hf(M,p.index),routesMeta:y})};return t.forEach((p,v)=>{if(p.path===""||!p.path?.includes("?"))d(p,v);else for(let g of $s(p.path))d(p,v,!0,g)}),a}function $s(t){let a=t.split("/");if(a.length===0)return[];let[l,...o]=a,u=l.endsWith("?"),d=l.replace(/\?$/,"");if(o.length===0)return u?[d,""]:[d];let p=$s(o.join("/")),v=[];return v.push(...p.map(g=>g===""?d:[d,g].join("/"))),u&&v.push(...p),v.map(g=>t.startsWith("/")&&g===""?"/":g)}function xf(t){t.sort((a,l)=>a.score!==l.score?l.score-a.score:Sf(a.routesMeta.map(o=>o.childrenIndex),l.routesMeta.map(o=>o.childrenIndex)))}var zf=/^:[\w-]+$/,Mf=3,bf=2,yf=1,Cf=10,wf=-2,zi=t=>t==="*";function Hf(t,a){let l=t.split("/"),o=l.length;return l.some(zi)&&(o+=wf),a&&(o+=bf),l.filter(u=>!zi(u)).reduce((u,d)=>u+(zf.test(d)?Mf:d===""?yf:Cf),o)}function Sf(t,a){return t.length===a.length&&t.slice(0,-1).every((o,u)=>o===a[u])?t[t.length-1]-a[a.length-1]:0}function Vf(t,a,l=!1){let{routesMeta:o}=t,u={},d="/",p=[];for(let v=0;v{if(z==="*"){let S=v[y]||"";p=d.slice(0,d.length-S.length).replace(/(.)\/+$/,"$1")}const H=v[y];return M&&!H?x[z]=void 0:x[z]=(H||"").replace(/%2F/g,"/"),x},{}),pathname:d,pathnameBase:p,pattern:t}}function Af(t,a=!1,l=!0){R4(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let o=[],u="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,v,g)=>(o.push({paramName:v,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(o.push({paramName:"*"}),u+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?u+="\\/*$":t!==""&&t!=="/"&&(u+="(?:(?=\\/|$))"),[new RegExp(u,a?void 0:"i"),o]}function Lf(t){try{return t.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return R4(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${a}).`),t}}function m3(t,a){if(a==="/")return t;if(!t.toLowerCase().startsWith(a.toLowerCase()))return null;let l=a.endsWith("/")?a.length-1:a.length,o=t.charAt(l);return o&&o!=="/"?null:t.slice(l)||"/"}var Bf=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,jf=t=>Bf.test(t);function Nf(t,a="/"){let{pathname:l,search:o="",hash:u=""}=typeof t=="string"?M0(t):t,d;if(l)if(jf(l))d=l;else{if(l.includes("//")){let p=l;l=l.replace(/\/\/+/g,"/"),R4(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${l}`)}l.startsWith("/")?d=Mi(l.substring(1),"/"):d=Mi(l,a)}else d=a;return{pathname:d,search:Rf(o),hash:Ef(u)}}function Mi(t,a){let l=a.replace(/\/+$/,"").split("/");return t.split("/").forEach(u=>{u===".."?l.length>1&&l.pop():u!=="."&&l.push(u)}),l.length>1?l.join("/"):"/"}function S9(t,a,l,o){return`Cannot include a '${t}' character in a manually specified \`to.${a}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${l}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Ff(t){return t.filter((a,l)=>l===0||a.route.path&&a.route.path.length>0)}function Gs(t){let a=Ff(t);return a.map((l,o)=>o===a.length-1?l.pathname:l.pathnameBase)}function Ps(t,a,l,o=!1){let u;typeof t=="string"?u=M0(t):(u={...t},g2(!u.pathname||!u.pathname.includes("?"),S9("?","pathname","search",u)),g2(!u.pathname||!u.pathname.includes("#"),S9("#","pathname","hash",u)),g2(!u.search||!u.search.includes("#"),S9("#","search","hash",u)));let d=t===""||u.pathname==="",p=d?"/":u.pathname,v;if(p==null)v=l;else{let M=a.length-1;if(!o&&p.startsWith("..")){let y=p.split("/");for(;y[0]==="..";)y.shift(),M-=1;u.pathname=y.join("/")}v=M>=0?a[M]:"/"}let g=Nf(u,v),x=p&&p!=="/"&&p.endsWith("/"),z=(d||p===".")&&l.endsWith("/");return!g.pathname.endsWith("/")&&(x||z)&&(g.pathname+="/"),g}var f3=t=>t.join("/").replace(/\/\/+/g,"/"),kf=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Rf=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Ef=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Tf(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Is=["POST","PUT","PATCH","DELETE"];new Set(Is);var qf=["GET",...Is];new Set(qf);var b0=m.createContext(null);b0.displayName="DataRouter";var Y7=m.createContext(null);Y7.displayName="DataRouterState";m.createContext(!1);var Ys=m.createContext({isTransitioning:!1});Ys.displayName="ViewTransition";var Df=m.createContext(new Map);Df.displayName="Fetchers";var Of=m.createContext(null);Of.displayName="Await";var Z4=m.createContext(null);Z4.displayName="Navigation";var E8=m.createContext(null);E8.displayName="Location";var v3=m.createContext({outlet:null,matches:[],isDataRoute:!1});v3.displayName="Route";var Hc=m.createContext(null);Hc.displayName="RouteError";function _f(t,{relative:a}={}){g2(T8(),"useHref() may be used only in the context of a component.");let{basename:l,navigator:o}=m.useContext(Z4),{hash:u,pathname:d,search:p}=q8(t,{relative:a}),v=d;return l!=="/"&&(v=d==="/"?l:f3([l,d])),o.createHref({pathname:v,search:p,hash:u})}function T8(){return m.useContext(E8)!=null}function p6(){return g2(T8(),"useLocation() may be used only in the context of a component."),m.useContext(E8).location}var Ks="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Qs(t){m.useContext(Z4).static||m.useLayoutEffect(t)}function Uf(){let{isDataRoute:t}=m.useContext(v3);return t?em():Zf()}function Zf(){g2(T8(),"useNavigate() may be used only in the context of a component.");let t=m.useContext(b0),{basename:a,navigator:l}=m.useContext(Z4),{matches:o}=m.useContext(v3),{pathname:u}=p6(),d=JSON.stringify(Gs(o)),p=m.useRef(!1);return Qs(()=>{p.current=!0}),m.useCallback((g,x={})=>{if(R4(p.current,Ks),!p.current)return;if(typeof g=="number"){l.go(g);return}let z=Ps(g,JSON.parse(d),u,x.relative==="path");t==null&&a!=="/"&&(z.pathname=z.pathname==="/"?a:f3([a,z.pathname])),(x.replace?l.replace:l.push)(z,x.state,x)},[a,l,d,u,t])}m.createContext(null);function q8(t,{relative:a}={}){let{matches:l}=m.useContext(v3),{pathname:o}=p6(),u=JSON.stringify(Gs(l));return m.useMemo(()=>Ps(t,JSON.parse(u),o,a==="path"),[t,u,o,a])}function $f(t,a){return Xs(t,a)}function Xs(t,a,l,o,u){g2(T8(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=m.useContext(Z4),{matches:p}=m.useContext(v3),v=p[p.length-1],g=v?v.params:{},x=v?v.pathname:"/",z=v?v.pathnameBase:"/",M=v&&v.route;{let A=M&&M.path||"";Js(x,!M||A.endsWith("*")||A.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${x}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. -Please change the parent to .`)}let y=g6(),H;if(a){let A=typeof a=="string"?M0(a):a;g2(z==="/"||A.pathname?.startsWith(z),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${z}" but pathname "${A.pathname}" was given in the \`location\` prop.`),H=A}else H=y;let S=H.pathname||"/",w=S;if(z!=="/"){let A=z.replace(/^\//,"").split("/");w="/"+S.replace(/^\//,"").split("/").slice(A.length).join("/")}let C=Xs(t,{pathname:w});E4(b||C!=null,`No routes matched location "${H.pathname}${H.search}${H.hash}" `),E4(C==null||C[C.length-1].route.element!==void 0||C[C.length-1].route.Component!==void 0||C[C.length-1].route.lazy!==void 0,`Matched leaf route at location "${H.pathname}${H.search}${H.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let V=nm(C&&C.map(A=>Object.assign({},A,{params:Object.assign({},g,A.params),pathname:m3([z,d.encodeLocation?d.encodeLocation(A.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathname]),pathnameBase:A.pathnameBase==="/"?z:m3([z,d.encodeLocation?d.encodeLocation(A.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathnameBase])})),p,l,o,u);return a&&V?m.createElement(D8.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...H},navigationType:"POP"}},V):V}function tm(){let t=om(),a=Gf(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),l=t instanceof Error?t.stack:null,o="rgba(200,200,200, 0.5)",u={padding:"0.5rem",backgroundColor:o},d={padding:"2px 4px",backgroundColor:o},p=null;return console.error("Error handled by React Router default ErrorBoundary:",t),p=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:d},"ErrorBoundary")," or"," ",m.createElement("code",{style:d},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},a),l?m.createElement("pre",{style:u},l):null,p)}var em=m.createElement(tm,null),cm=class extends m.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,a){return a.location!==t.location||a.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:a.error,location:a.location,revalidation:t.revalidation||a.revalidation}}componentDidCatch(t,a){this.props.onError?this.props.onError(t,a):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?m.createElement(p3.Provider,{value:this.props.routeContext},m.createElement(Fc.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function am({routeContext:t,match:a,children:l}){let o=m.useContext(y0);return o&&o.static&&o.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=a.route.id),m.createElement(p3.Provider,{value:t},l)}function nm(t,a=[],l=null,o=null,u=null){if(t==null){if(!l)return null;if(l.errors)t=l.matches;else if(a.length===0&&!l.initialized&&l.matches.length>0)t=l.matches;else return null}let d=t,p=l?.errors;if(p!=null){let z=d.findIndex(b=>b.route.id&&p?.[b.route.id]!==void 0);g2(z>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(p).join(",")}`),d=d.slice(0,Math.min(d.length,z+1))}let v=!1,g=-1;if(l)for(let z=0;z=0?d=d.slice(0,g+1):d=[d[0]];break}}}let x=l&&o?(z,b)=>{o(z,{location:l.location,params:l.matches?.[0]?.params??{},errorInfo:b})}:void 0;return d.reduceRight((z,b,y)=>{let H,S=!1,w=null,C=null;l&&(H=p&&b.route.id?p[b.route.id]:void 0,w=b.route.errorElement||em,v&&(g<0&&y===0?(io("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),S=!0,C=null):g===y&&(S=!0,C=b.route.hydrateFallbackElement||null)));let V=a.concat(d.slice(0,y+1)),A=()=>{let B;return H?B=w:S?B=C:b.route.Component?B=m.createElement(b.route.Component,null):b.route.element?B=b.route.element:B=z,m.createElement(am,{match:b,routeContext:{outlet:z,matches:V,isDataRoute:l!=null},children:B})};return l&&(b.route.ErrorBoundary||b.route.errorElement||y===0)?m.createElement(cm,{location:l.location,revalidation:l.revalidation,component:w,error:H,children:A(),routeContext:{outlet:null,matches:V,isDataRoute:!0},onError:x}):A()},null)}function kc(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lm(t){let a=m.useContext(y0);return g2(a,kc(t)),a}function rm(t){let a=m.useContext(tt);return g2(a,kc(t)),a}function im(t){let a=m.useContext(p3);return g2(a,kc(t)),a}function Rc(t){let a=im(t),l=a.matches[a.matches.length-1];return g2(l.route.id,`${t} can only be used on routes that contain a unique "id"`),l.route.id}function sm(){return Rc("useRouteId")}function om(){let t=m.useContext(Fc),a=rm("useRouteError"),l=Rc("useRouteError");return t!==void 0?t:a.errors?.[l]}function um(){let{router:t}=lm("useNavigate"),a=Rc("useNavigate"),l=m.useRef(!1);return lo(()=>{l.current=!0}),m.useCallback(async(u,d={})=>{E4(l.current,no),l.current&&(typeof u=="number"?t.navigate(u):await t.navigate(u,{fromRouteId:a,...d}))},[t,a])}var Li={};function io(t,a,l){!a&&!Li[t]&&(Li[t]=!0,E4(!1,l))}m.memo(hm);function hm({routes:t,future:a,state:l,unstable_onError:o}){return ro(t,void 0,l,o,a)}function u0(t){g2(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function dm({basename:t="/",children:a=null,location:l,navigationType:o="POP",navigator:u,static:d=!1}){g2(!O8(),"You cannot render a inside another . You should never have more than one in your app.");let p=t.replace(/^\/*/,"/"),v=m.useMemo(()=>({basename:p,navigator:u,static:d,future:{}}),[p,u,d]);typeof l=="string"&&(l=M0(l));let{pathname:g="/",search:x="",hash:z="",state:b=null,key:y="default"}=l,H=m.useMemo(()=>{let S=v3(g,p);return S==null?null:{location:{pathname:S,search:x,hash:z,state:b,key:y},navigationType:o}},[p,g,x,z,b,y,o]);return E4(H!=null,` is not able to match the URL "${g}${x}${z}" because it does not start with the basename, so the won't render anything.`),H==null?null:m.createElement($4.Provider,{value:v},m.createElement(D8.Provider,{children:a,value:H}))}function fm({children:t,location:a}){return Wf(dc(t),a)}function dc(t,a=[]){let l=[];return m.Children.forEach(t,(o,u)=>{if(!m.isValidElement(o))return;let d=[...a,u];if(o.type===m.Fragment){l.push.apply(l,dc(o.props.children,d));return}g2(o.type===u0,`[${typeof o.type=="string"?o.type:o.type.name}] is not a component. All component children of must be a or `),g2(!o.props.index||!o.props.children,"An index route cannot have child routes.");let p={id:o.props.id||d.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(p.children=dc(o.props.children,d)),l.push(p)}),l}var y7="get",C7="application/x-www-form-urlencoded";function et(t){return t!=null&&typeof t.tagName=="string"}function mm(t){return et(t)&&t.tagName.toLowerCase()==="button"}function vm(t){return et(t)&&t.tagName.toLowerCase()==="form"}function pm(t){return et(t)&&t.tagName.toLowerCase()==="input"}function gm(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function xm(t,a){return t.button===0&&(!a||a==="_self")&&!gm(t)}var i7=null;function zm(){if(i7===null)try{new FormData(document.createElement("form"),0),i7=!1}catch{i7=!0}return i7}var bm=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function F9(t){return t!=null&&!bm.has(t)?(E4(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${C7}"`),null):t}function Mm(t,a){let l,o,u,d,p;if(vm(t)){let v=t.getAttribute("action");o=v?v3(v,a):null,l=t.getAttribute("method")||y7,u=F9(t.getAttribute("enctype"))||C7,d=new FormData(t)}else if(mm(t)||pm(t)&&(t.type==="submit"||t.type==="image")){let v=t.form;if(v==null)throw new Error('Cannot submit a - - - back to scanner - - -
- {voices.length ? voices.map((voice) => { - const selected = String(voice?.name || '') === selectedVoiceName; - return ( -
-
- {describeVoice(voice)} -
-
- - -
-
- ); - }) : ( -
- no browser voices loaded -
- )} -
- - - ); -} diff --git a/webui/src/scanner/ScannerApp/scannerTts/piperBrowserTts.js b/webui/src/scanner/ScannerApp/scannerTts/piperBrowserTts.js deleted file mode 100644 index 92a0def4..00000000 --- a/webui/src/scanner/ScannerApp/scannerTts/piperBrowserTts.js +++ /dev/null @@ -1,117 +0,0 @@ -// Piper Browser TTS Adapter -// Purpose: Runs scanner speech through Piper locally in the browser when available. -// Scope: Keeps the neural TTS package behind a dynamic import so non-scanner pages do not load it. - -const PIPER_VOICE_ID = 'en_US-hfc_female-medium'; -const PIPER_LIVE_TIMEOUT_MS = 900; - -let piperModulePromise = null; -let currentAudio = null; -let currentObjectUrl = null; -let activeRequestId = 0; - -function stopCurrentAudio() { - if (currentAudio) { - // Scanner labels should never overlap. Stop the previous clip before the - // next scan speaks so audio always matches the current large display text. - currentAudio.pause(); - currentAudio.removeAttribute('src'); - currentAudio.load(); - currentAudio = null; - } - if (currentObjectUrl) { - URL.revokeObjectURL(currentObjectUrl); - currentObjectUrl = null; - } -} - -async function loadPiperModule() { - if (!piperModulePromise) { - piperModulePromise = import('@mintplex-labs/piper-tts-web') - .then((module) => { - console.info('[scanner tts] Piper module ready'); - return module; - }) - .catch((err) => { - // Reset after failures so later scans can try again after a transient - // model/CDN/cache issue. The hook falls back to browser speech for the - // current scan rather than blocking the scanner interaction. - piperModulePromise = null; - throw err; - }); - } - return piperModulePromise; -} - -function playBlob(blob) { - stopCurrentAudio(); - currentObjectUrl = URL.createObjectURL(blob); - currentAudio = new Audio(currentObjectUrl); - currentAudio.volume = 1; - - return new Promise((resolve, reject) => { - const audio = currentAudio; - audio.onended = () => { - if (currentAudio === audio) { - stopCurrentAudio(); - } - resolve(true); - }; - audio.onerror = () => { - if (currentAudio === audio) { - stopCurrentAudio(); - } - reject(new Error('Piper audio playback failed')); - }; - audio.play().catch((err) => { - if (currentAudio === audio) { - stopCurrentAudio(); - } - reject(err); - }); - }); -} - -export async function speakWithPiper(text) { - const cleanText = String(text || '').replace(/\s+/g, ' ').trim(); - if (!cleanText) return false; - const requestId = activeRequestId + 1; - activeRequestId = requestId; - - try { - const wavBlob = await Promise.race([ - loadPiperModule().then((piper) => - piper.predict( - { - text: cleanText, - voiceId: PIPER_VOICE_ID, - }, - (progress) => { - // Piper stores downloaded models in the browser origin-private file - // system. Console progress is enough for setup/debugging while the - // rover-facing scanner screen stays uncluttered. - if (progress?.url) { - console.info('[scanner tts] Piper load', progress); - } - }, - ), - ), - new Promise((resolve) => { - window.setTimeout(() => resolve(null), PIPER_LIVE_TIMEOUT_MS); - }), - ]); - if (!wavBlob || requestId !== activeRequestId) { - return false; - } - await playBlob(wavBlob); - return true; - } catch (err) { - console.warn('[scanner tts] Piper unavailable; falling back to browser speech', err); - return false; - } -} - -export function stopPiperSpeech() { - activeRequestId += 1; - stopCurrentAudio(); -} diff --git a/webui/src/scanner/ScannerApp/useScannerSpeech.js b/webui/src/scanner/ScannerApp/useScannerSpeech.js index 2c7e0f2f..a8cee8d8 100644 --- a/webui/src/scanner/ScannerApp/useScannerSpeech.js +++ b/webui/src/scanner/ScannerApp/useScannerSpeech.js @@ -1,11 +1,11 @@ // Scanner Speech Hook // Purpose: Speaks server-provided scan labels on the scanner computer. -// Scope: Keeps browser TTS as a local output device while leaving scan meaning and phrase selection on the server. +// Scope: Plays server-generated scanner audio when available, with browser TTS as the local fallback output device. import { useEffect, useRef } from 'react'; -import { speakWithPiper, stopPiperSpeech } from './scannerTts/piperBrowserTts.js'; const SPEECH_START_TIMEOUT_MS = 1500; const SPEECH_RETRY_DELAY_MS = 700; +const SERVER_AUDIO_GRACE_MS = 350; export const SCANNER_VOICE_STORAGE_KEY = 'scanner.preferredVoiceName'; const PREFERRED_VOICE_PATTERN = /female|samantha|victoria|allison|zira|karen|moira|serena|ava|susan|hazel|google (us|uk) english/i; const NOVELTY_VOICE_PATTERN = /whisper|bubbles|bells|boing|bad news|bahh|cellos|deranged|good news|hysterical|pipe organ|trinoids|zarvox/i; @@ -45,16 +45,57 @@ function pickScannerVoice(synth) { ); } -export default function useScannerSpeech(scan) { +function normalizeAudioBuffer(buffer) { + if (!buffer) return null; + if (buffer instanceof ArrayBuffer) return buffer; + if (ArrayBuffer.isView(buffer)) { + return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + } + if (Array.isArray(buffer)) { + return new Uint8Array(buffer).buffer; + } + return null; +} + +function playServerAudio(audio) { + const audioBuffer = normalizeAudioBuffer(audio?.buffer); + if (!audioBuffer) return null; + const mime = String(audio?.mime || 'audio/wav').trim() || 'audio/wav'; + const blob = new Blob([audioBuffer], { type: mime }); + const objectUrl = URL.createObjectURL(blob); + const player = new Audio(objectUrl); + player.volume = 1; + + return { + play: () => + player.play().finally(() => { + // The generated clip is only needed once per scan. Releasing the object + // URL after play starts/ends prevents repeated scans from leaking blobs + // on a long-running scanner page. + player.onended = () => URL.revokeObjectURL(objectUrl); + }), + stop: () => { + player.pause(); + player.removeAttribute('src'); + player.load(); + URL.revokeObjectURL(objectUrl); + }, + }; +} + +export default function useScannerSpeech(scan, serverAudioEvent = null) { const retryTimerRef = useRef(null); const startTimerRef = useRef(null); const spokenScanKeyRef = useRef(null); + const fallbackTimerRef = useRef(null); + const serverAudioPlayerRef = useRef(null); useEffect(() => { return () => { window.clearTimeout(retryTimerRef.current); window.clearTimeout(startTimerRef.current); - stopPiperSpeech(); + window.clearTimeout(fallbackTimerRef.current); + serverAudioPlayerRef.current?.stop(); }; }, []); @@ -64,19 +105,20 @@ export default function useScannerSpeech(scan) { if (!speechText || !scanKey || spokenScanKeyRef.current === scanKey) return undefined; let cancelled = false; - spokenScanKeyRef.current = scanKey; function clearSpeechTimers() { window.clearTimeout(retryTimerRef.current); window.clearTimeout(startTimerRef.current); + window.clearTimeout(fallbackTimerRef.current); retryTimerRef.current = null; startTimerRef.current = null; + fallbackTimerRef.current = null; } function retryLater() { if (cancelled) return; clearSpeechTimers(); - retryTimerRef.current = window.setTimeout(() => speakOnce(), SPEECH_RETRY_DELAY_MS); + retryTimerRef.current = window.setTimeout(() => speakBrowserOnce(), SPEECH_RETRY_DELAY_MS); } function speakWithBrowserFallback() { @@ -120,26 +162,62 @@ export default function useScannerSpeech(scan) { }, SPEECH_START_TIMEOUT_MS); } - function speakOnce() { - if (cancelled) return; - clearSpeechTimers(); - stopPiperSpeech(); - // Piper is attempted first because it is lighter than Kokoro while still - // giving the scanner page a consistent local model voice. The old browser - // TTS path remains the reliability fallback if Piper is still loading or - // fails on the scanner computer. - speakWithPiper(speechText).then((spoken) => { - if (cancelled || spoken) return; - speakWithBrowserFallback(); - }); + function markSpoken() { + spokenScanKeyRef.current = scanKey; } - speakOnce(); + function speakBrowserOnce() { + if (cancelled) return; + markSpoken(); + clearSpeechTimers(); + serverAudioPlayerRef.current?.stop(); + speakWithBrowserFallback(); + } + + // Server-generated audio is preferred, but it arrives on a separate scanner + // socket event after the immediate scan state. Waiting briefly lets cached + // Kokoro clips play without delaying the visual scan result; if the clip is + // still being generated, the page falls back to Web Speech for this scan. + fallbackTimerRef.current = window.setTimeout(speakBrowserOnce, SERVER_AUDIO_GRACE_MS); return () => { cancelled = true; clearSpeechTimers(); - stopPiperSpeech(); + serverAudioPlayerRef.current?.stop(); }; }, [scan]); + + useEffect(() => { + const speechText = String(serverAudioEvent?.scan?.speechText || '').trim(); + const scanKey = serverAudioEvent?.scan?.scannedAt ? `${serverAudioEvent.scan.scannedAt}:${speechText}` : ''; + const currentSpeechText = String(scan?.speechText || '').trim(); + const currentScanKey = scan?.scannedAt ? `${scan.scannedAt}:${currentSpeechText}` : ''; + if (!scanKey || scanKey !== currentScanKey || spokenScanKeyRef.current === scanKey) return; + + const player = playServerAudio(serverAudioEvent.audio); + if (!player) return; + window.clearTimeout(fallbackTimerRef.current); + fallbackTimerRef.current = null; + spokenScanKeyRef.current = scanKey; + serverAudioPlayerRef.current?.stop(); + serverAudioPlayerRef.current = player; + player.play().catch(() => { + // If the generated clip cannot play for any browser reason, fall back to + // the selected Web Speech voice rather than leaving the scan silent. + spokenScanKeyRef.current = scanKey; + const synth = window.speechSynthesis; + if (!synth || typeof window.SpeechSynthesisUtterance !== 'function') return; + synth.cancel(); + const utterance = new window.SpeechSynthesisUtterance(currentSpeechText); + const preferredVoice = pickScannerVoice(synth); + if (preferredVoice) { + utterance.voice = preferredVoice; + utterance.lang = preferredVoice.lang; + } + utterance.rate = 1; + utterance.pitch = 1; + utterance.volume = 1; + synth.speak(utterance); + }); + }, [scan, serverAudioEvent]); }