diff --git a/.gitignore b/.gitignore index 6d797f07..3bb66270 100644 --- a/.gitignore +++ b/.gitignore @@ -49,4 +49,10 @@ __MACOSX/ # Ignore node_modules files and folder **/node_modules/ -package-lock.json \ No newline at end of file +package-lock.json + +# Ignore .copilot context files +.copilot/ + +.ignored_packages +.ignored_themes \ No newline at end of file diff --git a/Admin/Resources/Assets/Css/style.css b/Admin/Resources/Assets/Css/style.css index 15b87887..c0cf8453 100644 --- a/Admin/Resources/Assets/Css/style.css +++ b/Admin/Resources/Assets/Css/style.css @@ -1 +1 @@ -*,:after,:before{--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:rgba(63,131,248,.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:rgba(63,131,248,.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: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{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,pre,samp{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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:"";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.\!tooltip>.tooltip-arrow:before{border-style:solid!important;border-color:#e5e7eb!important}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px!important;border-right-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px!important;border-left-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px!important;border-left-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px!important;border-right-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.\!tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px!important}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.\!tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px!important}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.\!tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px!important}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.\!tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px!important}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.\!tooltip.invisible>.tooltip-arrow:before{visibility:hidden!important}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:"";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E");background-color:currentColor;border-color:transparent;background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{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(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);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:"";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}.\!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}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\!relative{position:relative!important}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[60px\]{bottom:60px}.end-1{inset-inline-end:.25rem}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.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}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.float-right{float:right}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-10{margin:-2.5rem}.-m-11{margin:-2.75rem}.-m-12{margin:-3rem}.-m-14{margin:-3.5rem}.-m-16{margin:-4rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-20{margin:-5rem}.-m-24{margin:-6rem}.-m-28{margin:-7rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-m-32{margin:-8rem}.-m-36{margin:-9rem}.-m-4{margin:-1rem}.-m-40{margin:-10rem}.-m-44{margin:-11rem}.-m-48{margin:-12rem}.-m-5{margin:-1.25rem}.-m-52{margin:-13rem}.-m-56{margin:-14rem}.-m-6{margin:-1.5rem}.-m-60{margin:-15rem}.-m-64{margin:-16rem}.-m-7{margin:-1.75rem}.-m-72{margin:-18rem}.-m-8{margin:-2rem}.-m-80{margin:-20rem}.-m-9{margin:-2.25rem}.-m-96{margin:-24rem}.m-0{margin:0}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-1\.5{margin:.375rem}.m-10{margin:2.5rem}.m-11{margin:2.75rem}.m-12{margin:3rem}.m-14{margin:3.5rem}.m-16{margin:4rem}.m-2{margin:.5rem}.m-2\.5{margin:.625rem}.m-20{margin:5rem}.m-24{margin:6rem}.m-28{margin:7rem}.m-3{margin:.75rem}.m-3\.5{margin:.875rem}.m-32{margin:8rem}.m-36{margin:9rem}.m-4{margin:1rem}.m-40{margin:10rem}.m-44{margin:11rem}.m-48{margin:12rem}.m-5{margin:1.25rem}.m-52{margin:13rem}.m-56{margin:14rem}.m-6{margin:1.5rem}.m-60{margin:15rem}.m-64{margin:16rem}.m-7{margin:1.75rem}.m-72{margin:18rem}.m-8{margin:2rem}.m-80{margin:20rem}.m-9{margin:2.25rem}.m-96{margin:24rem}.-mx-0{margin-left:0;margin-right:0}.-mx-0\.5{margin-left:-.125rem;margin-right:-.125rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-1\.5{margin-left:-.375rem;margin-right:-.375rem}.-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.-mx-11{margin-left:-2.75rem;margin-right:-2.75rem}.-mx-12{margin-left:-3rem;margin-right:-3rem}.-mx-14{margin-left:-3.5rem;margin-right:-3.5rem}.-mx-16{margin-left:-4rem;margin-right:-4rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-2\.5{margin-left:-.625rem;margin-right:-.625rem}.-mx-20{margin-left:-5rem;margin-right:-5rem}.-mx-24{margin-left:-6rem;margin-right:-6rem}.-mx-28{margin-left:-7rem;margin-right:-7rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-3\.5{margin-left:-.875rem;margin-right:-.875rem}.-mx-32{margin-left:-8rem;margin-right:-8rem}.-mx-36{margin-left:-9rem;margin-right:-9rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-40{margin-left:-10rem;margin-right:-10rem}.-mx-44{margin-left:-11rem;margin-right:-11rem}.-mx-48{margin-left:-12rem;margin-right:-12rem}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-mx-52{margin-left:-13rem;margin-right:-13rem}.-mx-56{margin-left:-14rem;margin-right:-14rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-mx-60{margin-left:-15rem;margin-right:-15rem}.-mx-64{margin-left:-16rem;margin-right:-16rem}.-mx-7{margin-left:-1.75rem;margin-right:-1.75rem}.-mx-72{margin-left:-18rem;margin-right:-18rem}.-mx-8{margin-left:-2rem;margin-right:-2rem}.-mx-80{margin-left:-20rem;margin-right:-20rem}.-mx-9{margin-left:-2.25rem;margin-right:-2.25rem}.-mx-96{margin-left:-24rem;margin-right:-24rem}.-my-0{margin-top:0;margin-bottom:0}.-my-0\.5{margin-top:-.125rem;margin-bottom:-.125rem}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.-my-1\.5{margin-top:-.375rem;margin-bottom:-.375rem}.-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.-my-11{margin-top:-2.75rem;margin-bottom:-2.75rem}.-my-12{margin-top:-3rem;margin-bottom:-3rem}.-my-14{margin-top:-3.5rem;margin-bottom:-3.5rem}.-my-16{margin-top:-4rem;margin-bottom:-4rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-2\.5{margin-top:-.625rem;margin-bottom:-.625rem}.-my-20{margin-top:-5rem;margin-bottom:-5rem}.-my-24{margin-top:-6rem;margin-bottom:-6rem}.-my-28{margin-top:-7rem;margin-bottom:-7rem}.-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.-my-3\.5{margin-top:-.875rem;margin-bottom:-.875rem}.-my-32{margin-top:-8rem;margin-bottom:-8rem}.-my-36{margin-top:-9rem;margin-bottom:-9rem}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.-my-40{margin-top:-10rem;margin-bottom:-10rem}.-my-44{margin-top:-11rem;margin-bottom:-11rem}.-my-48{margin-top:-12rem;margin-bottom:-12rem}.-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.-my-52{margin-top:-13rem;margin-bottom:-13rem}.-my-56{margin-top:-14rem;margin-bottom:-14rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.-my-60{margin-top:-15rem;margin-bottom:-15rem}.-my-64{margin-top:-16rem;margin-bottom:-16rem}.-my-7{margin-top:-1.75rem;margin-bottom:-1.75rem}.-my-72{margin-top:-18rem;margin-bottom:-18rem}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.-my-80{margin-top:-20rem;margin-bottom:-20rem}.-my-9{margin-top:-2.25rem;margin-bottom:-2.25rem}.-my-96{margin-top:-24rem;margin-bottom:-24rem}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.mx-11{margin-left:2.75rem;margin-right:2.75rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-14{margin-left:3.5rem;margin-right:3.5rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mx-20{margin-left:5rem;margin-right:5rem}.mx-24{margin-left:6rem;margin-right:6rem}.mx-28{margin-left:7rem;margin-right:7rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-36{margin-left:9rem;margin-right:9rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-40{margin-left:10rem;margin-right:10rem}.mx-44{margin-left:11rem;margin-right:11rem}.mx-48{margin-left:12rem;margin-right:12rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-52{margin-left:13rem;margin-right:13rem}.mx-56{margin-left:14rem;margin-right:14rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-60{margin-left:15rem;margin-right:15rem}.mx-64{margin-left:16rem;margin-right:16rem}.mx-7{margin-left:1.75rem;margin-right:1.75rem}.mx-72{margin-left:18rem;margin-right:18rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-80{margin-left:20rem;margin-right:20rem}.mx-9{margin-left:2.25rem;margin-right:2.25rem}.mx-96{margin-left:24rem;margin-right:24rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-11{margin-top:2.75rem;margin-bottom:2.75rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-14{margin-top:3.5rem;margin-bottom:3.5rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-24{margin-top:6rem;margin-bottom:6rem}.my-28{margin-top:7rem;margin-bottom:7rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-3\.5{margin-top:.875rem;margin-bottom:.875rem}.my-32{margin-top:8rem;margin-bottom:8rem}.my-36{margin-top:9rem;margin-bottom:9rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-40{margin-top:10rem;margin-bottom:10rem}.my-44{margin-top:11rem;margin-bottom:11rem}.my-48{margin-top:12rem;margin-bottom:12rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-52{margin-top:13rem;margin-bottom:13rem}.my-56{margin-top:14rem;margin-bottom:14rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-60{margin-top:15rem;margin-bottom:15rem}.my-64{margin-top:16rem;margin-bottom:16rem}.my-7{margin-top:1.75rem;margin-bottom:1.75rem}.my-72{margin-top:18rem;margin-bottom:18rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-80{margin-top:20rem;margin-bottom:20rem}.my-9{margin-top:2.25rem;margin-bottom:2.25rem}.my-96{margin-top:24rem;margin-bottom:24rem}.-mb-0{margin-bottom:0}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-mb-1\.5{margin-bottom:-.375rem}.-mb-10{margin-bottom:-2.5rem}.-mb-11{margin-bottom:-2.75rem}.-mb-12{margin-bottom:-3rem}.-mb-14{margin-bottom:-3.5rem}.-mb-16{margin-bottom:-4rem}.-mb-2{margin-bottom:-.5rem}.-mb-2\.5{margin-bottom:-.625rem}.-mb-20{margin-bottom:-5rem}.-mb-24{margin-bottom:-6rem}.-mb-28{margin-bottom:-7rem}.-mb-3{margin-bottom:-.75rem}.-mb-3\.5{margin-bottom:-.875rem}.-mb-32{margin-bottom:-8rem}.-mb-36{margin-bottom:-9rem}.-mb-4{margin-bottom:-1rem}.-mb-40{margin-bottom:-10rem}.-mb-44{margin-bottom:-11rem}.-mb-48{margin-bottom:-12rem}.-mb-5{margin-bottom:-1.25rem}.-mb-52{margin-bottom:-13rem}.-mb-56{margin-bottom:-14rem}.-mb-6{margin-bottom:-1.5rem}.-mb-60{margin-bottom:-15rem}.-mb-64{margin-bottom:-16rem}.-mb-7{margin-bottom:-1.75rem}.-mb-72{margin-bottom:-18rem}.-mb-8{margin-bottom:-2rem}.-mb-80{margin-bottom:-20rem}.-mb-9{margin-bottom:-2.25rem}.-mb-96{margin-bottom:-24rem}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-10{margin-left:-2.5rem}.-ml-11{margin-left:-2.75rem}.-ml-12{margin-left:-3rem}.-ml-14{margin-left:-3.5rem}.-ml-16{margin-left:-4rem}.-ml-2{margin-left:-.5rem}.-ml-2\.5{margin-left:-.625rem}.-ml-20{margin-left:-5rem}.-ml-24{margin-left:-6rem}.-ml-28{margin-left:-7rem}.-ml-3{margin-left:-.75rem}.-ml-3\.5{margin-left:-.875rem}.-ml-32{margin-left:-8rem}.-ml-36{margin-left:-9rem}.-ml-4{margin-left:-1rem}.-ml-40{margin-left:-10rem}.-ml-44{margin-left:-11rem}.-ml-48{margin-left:-12rem}.-ml-5{margin-left:-1.25rem}.-ml-52{margin-left:-13rem}.-ml-56{margin-left:-14rem}.-ml-6{margin-left:-1.5rem}.-ml-60{margin-left:-15rem}.-ml-64{margin-left:-16rem}.-ml-7{margin-left:-1.75rem}.-ml-72{margin-left:-18rem}.-ml-8{margin-left:-2rem}.-ml-80{margin-left:-20rem}.-ml-9{margin-left:-2.25rem}.-ml-96{margin-left:-24rem}.-mr-0{margin-right:0}.-mr-0\.5{margin-right:-.125rem}.-mr-1{margin-right:-.25rem}.-mr-1\.5{margin-right:-.375rem}.-mr-10{margin-right:-2.5rem}.-mr-11{margin-right:-2.75rem}.-mr-12{margin-right:-3rem}.-mr-14{margin-right:-3.5rem}.-mr-16{margin-right:-4rem}.-mr-2{margin-right:-.5rem}.-mr-2\.5{margin-right:-.625rem}.-mr-20{margin-right:-5rem}.-mr-24{margin-right:-6rem}.-mr-28{margin-right:-7rem}.-mr-3{margin-right:-.75rem}.-mr-3\.5{margin-right:-.875rem}.-mr-32{margin-right:-8rem}.-mr-36{margin-right:-9rem}.-mr-4{margin-right:-1rem}.-mr-40{margin-right:-10rem}.-mr-44{margin-right:-11rem}.-mr-48{margin-right:-12rem}.-mr-5{margin-right:-1.25rem}.-mr-52{margin-right:-13rem}.-mr-56{margin-right:-14rem}.-mr-6{margin-right:-1.5rem}.-mr-60{margin-right:-15rem}.-mr-64{margin-right:-16rem}.-mr-7{margin-right:-1.75rem}.-mr-72{margin-right:-18rem}.-mr-8{margin-right:-2rem}.-mr-80{margin-right:-20rem}.-mr-9{margin-right:-2.25rem}.-mr-96{margin-right:-24rem}.-mt-0{margin-top:0}.-mt-0\.5{margin-top:-.125rem}.-mt-1{margin-top:-.25rem}.-mt-1\.5{margin-top:-.375rem}.-mt-10{margin-top:-2.5rem}.-mt-11{margin-top:-2.75rem}.-mt-12{margin-top:-3rem}.-mt-14{margin-top:-3.5rem}.-mt-16{margin-top:-4rem}.-mt-2{margin-top:-.5rem}.-mt-2\.5{margin-top:-.625rem}.-mt-20{margin-top:-5rem}.-mt-24{margin-top:-6rem}.-mt-28{margin-top:-7rem}.-mt-3{margin-top:-.75rem}.-mt-3\.5{margin-top:-.875rem}.-mt-32{margin-top:-8rem}.-mt-36{margin-top:-9rem}.-mt-4{margin-top:-1rem}.-mt-40{margin-top:-10rem}.-mt-44{margin-top:-11rem}.-mt-48{margin-top:-12rem}.-mt-5{margin-top:-1.25rem}.-mt-52{margin-top:-13rem}.-mt-56{margin-top:-14rem}.-mt-6{margin-top:-1.5rem}.-mt-60{margin-top:-15rem}.-mt-64{margin-top:-16rem}.-mt-7{margin-top:-1.75rem}.-mt-72{margin-top:-18rem}.-mt-8{margin-top:-2rem}.-mt-80{margin-top:-20rem}.-mt-9{margin-top:-2.25rem}.-mt-96{margin-top:-24rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-11{margin-bottom:2.75rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-20{margin-bottom:5rem}.mb-24{margin-bottom:6rem}.mb-28{margin-bottom:7rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-32{margin-bottom:8rem}.mb-36{margin-bottom:9rem}.mb-4{margin-bottom:1rem}.mb-40{margin-bottom:10rem}.mb-44{margin-bottom:11rem}.mb-48{margin-bottom:12rem}.mb-5{margin-bottom:1.25rem}.mb-52{margin-bottom:13rem}.mb-56{margin-bottom:14rem}.mb-6{margin-bottom:1.5rem}.mb-60{margin-bottom:15rem}.mb-64{margin-bottom:16rem}.mb-7{margin-bottom:1.75rem}.mb-72{margin-bottom:18rem}.mb-8{margin-bottom:2rem}.mb-80{margin-bottom:20rem}.mb-9{margin-bottom:2.25rem}.mb-96{margin-bottom:24rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:.75rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-10{margin-left:2.5rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.ml-16{margin-left:4rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-20{margin-left:5rem}.ml-24{margin-left:6rem}.ml-28{margin-left:7rem}.ml-3{margin-left:.75rem}.ml-3\.5{margin-left:.875rem}.ml-32{margin-left:8rem}.ml-36{margin-left:9rem}.ml-4{margin-left:1rem}.ml-40{margin-left:10rem}.ml-44{margin-left:11rem}.ml-48{margin-left:12rem}.ml-5{margin-left:1.25rem}.ml-52{margin-left:13rem}.ml-56{margin-left:14rem}.ml-6{margin-left:1.5rem}.ml-60{margin-left:15rem}.ml-64{margin-left:16rem}.ml-7{margin-left:1.75rem}.ml-72{margin-left:18rem}.ml-8{margin-left:2rem}.ml-80{margin-left:20rem}.ml-9{margin-left:2.25rem}.ml-96{margin-left:24rem}.mr-0{margin-right:0}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-10{margin-right:2.5rem}.mr-11{margin-right:2.75rem}.mr-12{margin-right:3rem}.mr-14{margin-right:3.5rem}.mr-16{margin-right:4rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-20{margin-right:5rem}.mr-24{margin-right:6rem}.mr-28{margin-right:7rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mr-32{margin-right:8rem}.mr-36{margin-right:9rem}.mr-4{margin-right:1rem}.mr-40{margin-right:10rem}.mr-44{margin-right:11rem}.mr-48{margin-right:12rem}.mr-5{margin-right:1.25rem}.mr-52{margin-right:13rem}.mr-56{margin-right:14rem}.mr-6{margin-right:1.5rem}.mr-60{margin-right:15rem}.mr-64{margin-right:16rem}.mr-7{margin-right:1.75rem}.mr-72{margin-right:18rem}.mr-8{margin-right:2rem}.mr-80{margin-right:20rem}.mr-9{margin-right:2.25rem}.mr-96{margin-right:24rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-11{margin-top:2.75rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-20{margin-top:5rem}.mt-24{margin-top:6rem}.mt-28{margin-top:7rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-32{margin-top:8rem}.mt-36{margin-top:9rem}.mt-4{margin-top:1rem}.mt-40{margin-top:10rem}.mt-44{margin-top:11rem}.mt-48{margin-top:12rem}.mt-5{margin-top:1.25rem}.mt-52{margin-top:13rem}.mt-56{margin-top:14rem}.mt-6{margin-top:1.5rem}.mt-60{margin-top:15rem}.mt-64{margin-top:16rem}.mt-7{margin-top:1.75rem}.mt-72{margin-top:18rem}.mt-8{margin-top:2rem}.mt-80{margin-top:20rem}.mt-9{margin-top:2.25rem}.mt-96{margin-top:24rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-0{height:0}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-1\/2{height:50%}.h-1\/3{height:33.333333%}.h-1\/4{height:25%}.h-1\/5{height:20%}.h-1\/6{height:16.666667%}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-2\/3{height:66.666667%}.h-2\/4{height:50%}.h-2\/5{height:40%}.h-2\/6{height:33.333333%}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-3\/4{height:75%}.h-3\/5{height:60%}.h-3\/6{height:50%}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-4\/5{height:80%}.h-4\/6{height:66.666667%}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-5\/6{height:83.333333%}.h-52{height:13rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.h-min{height:-moz-min-content;height:min-content}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0}.max-h-0\.5{max-height:.125rem}.max-h-1{max-height:.25rem}.max-h-1\.5{max-height:.375rem}.max-h-10{max-height:2.5rem}.max-h-11{max-height:2.75rem}.max-h-12{max-height:3rem}.max-h-14{max-height:3.5rem}.max-h-16{max-height:4rem}.max-h-2{max-height:.5rem}.max-h-2\.5{max-height:.625rem}.max-h-20{max-height:5rem}.max-h-24{max-height:6rem}.max-h-28{max-height:7rem}.max-h-3{max-height:.75rem}.max-h-3\.5{max-height:.875rem}.max-h-32{max-height:8rem}.max-h-36{max-height:9rem}.max-h-4{max-height:1rem}.max-h-40{max-height:10rem}.max-h-44{max-height:11rem}.max-h-48{max-height:12rem}.max-h-5{max-height:1.25rem}.max-h-52{max-height:13rem}.max-h-56{max-height:14rem}.max-h-6{max-height:1.5rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-7{max-height:1.75rem}.max-h-72{max-height:18rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-9{max-height:2.25rem}.max-h-96{max-height:24rem}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.max-h-full{max-height:100%}.max-h-max{max-height:-moz-max-content;max-height:max-content}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-min{min-height:-moz-min-content;min-height:min-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/12{width:8.333333%}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-10\/12{width:83.333333%}.w-11{width:2.75rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/12{width:16.666667%}.w-2\/3{width:66.666667%}.w-2\/4{width:50%}.w-2\/5{width:40%}.w-2\/6{width:33.333333%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/12{width:25%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-3\/6{width:50%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/12{width:33.333333%}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/12{width:41.666667%}.w-5\/6{width:83.333333%}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-6\/12{width:50%}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-7\/12{width:58.333333%}.w-72{width:18rem}.w-8{width:2rem}.w-8\/12{width:66.666667%}.w-80{width:20rem}.w-9{width:2.25rem}.w-9\/12{width:75%}.w-96{width:24rem}.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-min{width:-moz-min-content;width:min-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-0{max-width:0}.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-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}@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-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-11{gap:2.75rem}.gap-12{gap:3rem}.gap-14{gap:3.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-20{gap:5rem}.gap-24{gap:6rem}.gap-28{gap:7rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-32{gap:8rem}.gap-36{gap:9rem}.gap-4{gap:1rem}.gap-40{gap:10rem}.gap-44{gap:11rem}.gap-48{gap:12rem}.gap-5{gap:1.25rem}.gap-52{gap:13rem}.gap-56{gap:14rem}.gap-6{gap:1.5rem}.gap-60{gap:15rem}.gap-64{gap:16rem}.gap-7{gap:1.75rem}.gap-72{gap:18rem}.gap-8{gap:2rem}.gap-80{gap:20rem}.gap-9{gap:2.25rem}.gap-96{gap:24rem}.gap-x-0{-moz-column-gap:0;column-gap:0}.gap-x-0\.5{-moz-column-gap:.125rem;column-gap:.125rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-x-11{-moz-column-gap:2.75rem;column-gap:2.75rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-20{-moz-column-gap:5rem;column-gap:5rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-3\.5{-moz-column-gap:.875rem;column-gap:.875rem}.gap-x-32{-moz-column-gap:8rem;column-gap:8rem}.gap-x-36{-moz-column-gap:9rem;column-gap:9rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-40{-moz-column-gap:10rem;column-gap:10rem}.gap-x-44{-moz-column-gap:11rem;column-gap:11rem}.gap-x-48{-moz-column-gap:12rem;column-gap:12rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-52{-moz-column-gap:13rem;column-gap:13rem}.gap-x-56{-moz-column-gap:14rem;column-gap:14rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-60{-moz-column-gap:15rem;column-gap:15rem}.gap-x-64{-moz-column-gap:16rem;column-gap:16rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-x-72{-moz-column-gap:18rem;column-gap:18rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-x-80{-moz-column-gap:20rem;column-gap:20rem}.gap-x-9{-moz-column-gap:2.25rem;column-gap:2.25rem}.gap-x-96{-moz-column-gap:24rem;column-gap:24rem}.gap-y-0{row-gap:0}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-10{row-gap:2.5rem}.gap-y-11{row-gap:2.75rem}.gap-y-12{row-gap:3rem}.gap-y-14{row-gap:3.5rem}.gap-y-16{row-gap:4rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-20{row-gap:5rem}.gap-y-24{row-gap:6rem}.gap-y-28{row-gap:7rem}.gap-y-3{row-gap:.75rem}.gap-y-3\.5{row-gap:.875rem}.gap-y-32{row-gap:8rem}.gap-y-36{row-gap:9rem}.gap-y-4{row-gap:1rem}.gap-y-40{row-gap:10rem}.gap-y-44{row-gap:11rem}.gap-y-48{row-gap:12rem}.gap-y-5{row-gap:1.25rem}.gap-y-52{row-gap:13rem}.gap-y-56{row-gap:14rem}.gap-y-6{row-gap:1.5rem}.gap-y-60{row-gap:15rem}.gap-y-64{row-gap:16rem}.gap-y-7{row-gap:1.75rem}.gap-y-72{row-gap:18rem}.gap-y-8{row-gap:2rem}.gap-y-80{row-gap:20rem}.gap-y-9{row-gap:2.25rem}.gap-y-96{row-gap:24rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px*var(--tw-space-x-reverse));margin-left:calc(0px*(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem*var(--tw-space-x-reverse));margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-11>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.75rem*var(--tw-space-x-reverse));margin-left:calc(2.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(3rem*var(--tw-space-x-reverse));margin-left:calc(3rem*(1 - var(--tw-space-x-reverse)))}.space-x-14>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(3.5rem*var(--tw-space-x-reverse));margin-left:calc(3.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-16>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(4rem*var(--tw-space-x-reverse));margin-left:calc(4rem*(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.space-x-20>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(5rem*var(--tw-space-x-reverse));margin-left:calc(5rem*(1 - var(--tw-space-x-reverse)))}.space-x-24>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(6rem*var(--tw-space-x-reverse));margin-left:calc(6rem*(1 - var(--tw-space-x-reverse)))}.space-x-28>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(7rem*var(--tw-space-x-reverse));margin-left:calc(7rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.875rem*var(--tw-space-x-reverse));margin-left:calc(.875rem*(1 - var(--tw-space-x-reverse)))}.space-x-32>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(8rem*var(--tw-space-x-reverse));margin-left:calc(8rem*(1 - var(--tw-space-x-reverse)))}.space-x-36>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(9rem*var(--tw-space-x-reverse));margin-left:calc(9rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-x-40>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(10rem*var(--tw-space-x-reverse));margin-left:calc(10rem*(1 - var(--tw-space-x-reverse)))}.space-x-44>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(11rem*var(--tw-space-x-reverse));margin-left:calc(11rem*(1 - var(--tw-space-x-reverse)))}.space-x-48>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(12rem*var(--tw-space-x-reverse));margin-left:calc(12rem*(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem*var(--tw-space-x-reverse));margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-52>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(13rem*var(--tw-space-x-reverse));margin-left:calc(13rem*(1 - var(--tw-space-x-reverse)))}.space-x-56>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(14rem*var(--tw-space-x-reverse));margin-left:calc(14rem*(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-60>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(15rem*var(--tw-space-x-reverse));margin-left:calc(15rem*(1 - var(--tw-space-x-reverse)))}.space-x-64>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(16rem*var(--tw-space-x-reverse));margin-left:calc(16rem*(1 - var(--tw-space-x-reverse)))}.space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.75rem*var(--tw-space-x-reverse));margin-left:calc(1.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-72>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(18rem*var(--tw-space-x-reverse));margin-left:calc(18rem*(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.space-x-80>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(20rem*var(--tw-space-x-reverse));margin-left:calc(20rem*(1 - var(--tw-space-x-reverse)))}.space-x-9>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.25rem*var(--tw-space-x-reverse));margin-left:calc(2.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-96>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(24rem*var(--tw-space-x-reverse));margin-left:calc(24rem*(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*(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*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-11>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.75rem*var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem*var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem*var(--tw-space-y-reverse))}.space-y-24>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(6rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(6rem*var(--tw-space-y-reverse))}.space-y-28>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(7rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(7rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*var(--tw-space-y-reverse))}.space-y-32>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(8rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8rem*var(--tw-space-y-reverse))}.space-y-36>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(9rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(9rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-40>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(10rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(10rem*var(--tw-space-y-reverse))}.space-y-44>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(11rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(11rem*var(--tw-space-y-reverse))}.space-y-48>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(12rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(12rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-52>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(13rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(13rem*var(--tw-space-y-reverse))}.space-y-56>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(14rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(14rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-60>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(15rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(15rem*var(--tw-space-y-reverse))}.space-y-64>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(16rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16rem*var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem*var(--tw-space-y-reverse))}.space-y-72>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(18rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(18rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-80>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(20rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(20rem*var(--tw-space-y-reverse))}.space-y-9>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.25rem*var(--tw-space-y-reverse))}.space-y-96>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(24rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(24rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-bottom-right-radius:.5rem}.rounded-r-lg,.rounded-t-lg{border-top-right-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.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-dashed{border-style:dashed}.border-blue-500{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity,1))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/50{background-color:hsla(0,0%,100%,.5)}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-auto{background-size:auto}.bg-contain{background-size:contain}.bg-cover{background-size:cover}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-11{padding:2.75rem}.p-12{padding:3rem}.p-14{padding:3.5rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-20{padding:5rem}.p-24{padding:6rem}.p-28{padding:7rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-32{padding:8rem}.p-36{padding:9rem}.p-4{padding:1rem}.p-40{padding:10rem}.p-44{padding:11rem}.p-48{padding:12rem}.p-5{padding:1.25rem}.p-52{padding:13rem}.p-56{padding:14rem}.p-6{padding:1.5rem}.p-60{padding:15rem}.p-64{padding:16rem}.p-7{padding:1.75rem}.p-72{padding:18rem}.p-8{padding:2rem}.p-80{padding:20rem}.p-9{padding:2.25rem}.p-96{padding:24rem}.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-10{padding-left:2.5rem;padding-right:2.5rem}.px-11{padding-left:2.75rem;padding-right:2.75rem}.px-12{padding-left:3rem;padding-right:3rem}.px-14{padding-left:3.5rem;padding-right:3.5rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-20{padding-left:5rem;padding-right:5rem}.px-24{padding-left:6rem;padding-right:6rem}.px-28{padding-left:7rem;padding-right:7rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-32{padding-left:8rem;padding-right:8rem}.px-36{padding-left:9rem;padding-right:9rem}.px-4{padding-left:1rem;padding-right:1rem}.px-40{padding-left:10rem;padding-right:10rem}.px-44{padding-left:11rem;padding-right:11rem}.px-48{padding-left:12rem;padding-right:12rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-52{padding-left:13rem;padding-right:13rem}.px-56{padding-left:14rem;padding-right:14rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-60{padding-left:15rem;padding-right:15rem}.px-64{padding-left:16rem;padding-right:16rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-72{padding-left:18rem;padding-right:18rem}.px-8{padding-left:2rem;padding-right:2rem}.px-80{padding-left:20rem;padding-right:20rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.px-96{padding-left:24rem;padding-right:24rem}.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-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-11{padding-top:2.75rem;padding-bottom:2.75rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-28{padding-top:7rem;padding-bottom:7rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-36{padding-top:9rem;padding-bottom:9rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-40{padding-top:10rem;padding-bottom:10rem}.py-44{padding-top:11rem;padding-bottom:11rem}.py-48{padding-top:12rem;padding-bottom:12rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-52{padding-top:13rem;padding-bottom:13rem}.py-56{padding-top:14rem;padding-bottom:14rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-60{padding-top:15rem;padding-bottom:15rem}.py-64{padding-top:16rem;padding-bottom:16rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-72{padding-top:18rem;padding-bottom:18rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-80{padding-top:20rem;padding-bottom:20rem}.py-9{padding-top:2.25rem;padding-bottom:2.25rem}.py-96{padding-top:24rem;padding-bottom:24rem}.py-\[\.1rem\]{padding-top:.1rem;padding-bottom:.1rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-11{padding-bottom:2.75rem}.pb-12{padding-bottom:3rem}.pb-14{padding-bottom:3.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-28{padding-bottom:7rem}.pb-3{padding-bottom:.75rem}.pb-3\.5{padding-bottom:.875rem}.pb-32{padding-bottom:8rem}.pb-36{padding-bottom:9rem}.pb-4{padding-bottom:1rem}.pb-40{padding-bottom:10rem}.pb-44{padding-bottom:11rem}.pb-48{padding-bottom:12rem}.pb-5{padding-bottom:1.25rem}.pb-52{padding-bottom:13rem}.pb-56{padding-bottom:14rem}.pb-6{padding-bottom:1.5rem}.pb-60{padding-bottom:15rem}.pb-64{padding-bottom:16rem}.pb-7{padding-bottom:1.75rem}.pb-72{padding-bottom:18rem}.pb-8{padding-bottom:2rem}.pb-80{padding-bottom:20rem}.pb-9{padding-bottom:2.25rem}.pb-96{padding-bottom:24rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-12{padding-left:3rem}.pl-14{padding-left:3.5rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-20{padding-left:5rem}.pl-24{padding-left:6rem}.pl-28{padding-left:7rem}.pl-3{padding-left:.75rem}.pl-3\.5{padding-left:.875rem}.pl-32{padding-left:8rem}.pl-36{padding-left:9rem}.pl-4{padding-left:1rem}.pl-40{padding-left:10rem}.pl-44{padding-left:11rem}.pl-48{padding-left:12rem}.pl-5{padding-left:1.25rem}.pl-52{padding-left:13rem}.pl-56{padding-left:14rem}.pl-6{padding-left:1.5rem}.pl-60{padding-left:15rem}.pl-64{padding-left:16rem}.pl-7{padding-left:1.75rem}.pl-72{padding-left:18rem}.pl-8{padding-left:2rem}.pl-80{padding-left:20rem}.pl-9{padding-left:2.25rem}.pl-96{padding-left:24rem}.pr-0{padding-right:0}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-11{padding-right:2.75rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-20{padding-right:5rem}.pr-24{padding-right:6rem}.pr-28{padding-right:7rem}.pr-3{padding-right:.75rem}.pr-3\.5{padding-right:.875rem}.pr-32{padding-right:8rem}.pr-36{padding-right:9rem}.pr-4{padding-right:1rem}.pr-40{padding-right:10rem}.pr-44{padding-right:11rem}.pr-48{padding-right:12rem}.pr-5{padding-right:1.25rem}.pr-52{padding-right:13rem}.pr-56{padding-right:14rem}.pr-6{padding-right:1.5rem}.pr-60{padding-right:15rem}.pr-64{padding-right:16rem}.pr-7{padding-right:1.75rem}.pr-72{padding-right:18rem}.pr-8{padding-right:2rem}.pr-80{padding-right:20rem}.pr-9{padding-right:2.25rem}.pr-96{padding-right:24rem}.ps-4{padding-inline-start:1rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-10{padding-top:2.5rem}.pt-11{padding-top:2.75rem}.pt-12{padding-top:3rem}.pt-14{padding-top:3.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-28{padding-top:7rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-32{padding-top:8rem}.pt-36{padding-top:9rem}.pt-4{padding-top:1rem}.pt-40{padding-top:10rem}.pt-44{padding-top:11rem}.pt-48{padding-top:12rem}.pt-5{padding-top:1.25rem}.pt-52{padding-top:13rem}.pt-56{padding-top:14rem}.pt-6{padding-top:1.5rem}.pt-60{padding-top:15rem}.pt-64{padding-top:16rem}.pt-7{padding-top:1.75rem}.pt-72{padding-top:18rem}.pt-8{padding-top:2rem}.pt-80{padding-top:20rem}.pt-9{padding-top:2.25rem}.pt-96{padding-top:24rem}.text-center{text-align:center}.text-justify{text-align:justify}.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-6xl{font-size:3.75rem;line-height:1}.text-7xl{font-size:4.5rem;line-height:1}.text-8xl{font-size:6rem;line-height:1}.text-9xl{font-size:8rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-relaxed{line-height:1.625}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(194 120 3/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{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 rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--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(3px + 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)}.blur{--tw-blur:blur(8px)}.blur,.invert{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{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)!important}.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;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-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[-\:\=\]{-:=}.\[-_\:\.a-zA-Z0-9\\xc0-\\uffff\]{-_:.a-zA-Z0-9\xc0-\uffff}.\[-_a-zA-Z0-9\:\.\]{-_a-z-a--z0-9:.}.\[_\:a-zA-Z\\xc0-\\uffff\]{_:a-zA-Z\xc0-\uffff}:disabled{cursor:not-allowed!important}.main-content{margin-top:4rem;margin-left:0;min-height:calc(100vh - 9rem);flex-direction:column;padding-left:1rem;padding-right:1rem;display:flex}@media (min-width:640px){.main-content{margin-left:14rem}}@media (min-width:1024px){.main-content{padding-left:2.5rem;padding-right:2.5rem}}.main-content{transition:margin-left .5s ease}#toggleIcon{transition:transform .4s;display:inline-block}.flip{transform:rotateY(90deg)}.apexcharts-tooltip.apexcharts-theme-light{border:1px solid #e3e3e3;background:hsla(0,0%,100%,.96)}.apexcharts-yaxistooltip,.dark .apexcharts-tooltip.apexcharts-theme-light,.dark .apexcharts-xaxistooltip{border:1px solid #1e293b;background:#0d1220}.dark .apexcharts-xaxistooltip-text{color:#e3e3e3!important}body{overflow-x:hidden;background-color:var(--light-secondary);font-family:rubik;color:var(--light-text-primary)}body:is(.dark *){background-color:var(--dark-primary);color:var(--dark-text-primary)}hr{margin-top:1rem;margin-bottom:1rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background-color:var(--light-scrollbar)}:is(.dark *)::-webkit-scrollbar-thumb{background-color:var(--dark-scrollbar)}::-webkit-scrollbar-thumb{border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:var(--light-scrollbar-hover)}:is(.dark *)::-webkit-scrollbar-thumb:hover{background-color:var(--dark-scrollbar-hover)}::-webkit-scrollbar-track{background-color:var(--light-scrollbar-bg)}:is(.dark *)::-webkit-scrollbar-track{background-color:var(--dark-scrollbar-bg)}::-webkit-scrollbar-track{border-radius:10px}.link{color:rgb(28 100 242/var(--tw-text-opacity,1))}.link,.link:hover{--tw-text-opacity:1}.link:hover{color:rgb(26 86 219/var(--tw-text-opacity,1))}.link:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.link:hover:is(.dark *){--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.loading-icon{display:inline-block;margin-left:5px;border-radius:50%;border:2px solid #f3f3f3;border-top-color:#3498db;width:12px;height:12px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-btn.loading{cursor:not-allowed}.nav{position:fixed;top:0;z-index:50;width:100%;border-bottom-width:1px;border-color:var(--light-fourth);background-color:var(--light-primary)}.nav:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-secondary)}.aside-nav{position:fixed;top:0;left:0;z-index:40;height:100vh;width:15rem;--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-right-width:1px;border-color:var(--light-fourth);background-color:var(--light-primary);padding-top:2.75rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.aside-nav:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-secondary)}@media (min-width:640px){.aside-nav{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.a-side-nav{margin:auto;width:90%;border-radius:.6rem;padding:.25rem .75rem;display:flex;align-items:center}.a-side-nav:hover{background-color:var(--light-secondary)}.a-side-nav:hover:is(.dark *){background-color:var(--dark-third)}.a-side-nav i{width:1.25rem;flex-shrink:0;text-align:start;color:var(--light-text-secondary)}.side-nav-active{color:var(--light-primary)}.side-nav-active,.side-nav-active:hover{background-color:var(--nav-sky)}.side-nav-active:hover:is(.dark *){background-color:var(--nav-sky)}.side-nav-active i{color:var(--light-primary)}.side-nav-active i,.side-nav-active i:hover{background-color:var(--nav-sky)}.side-nav-drop-active{margin-left:.5rem;font-weight:500;color:var(--nav-sky)}.side-nav-drop-active:is(.dark *){color:var(--nav-sky-text-dark)}.a-side-nav-dropdown{background-color:var(--nav-sky-light);width:90%;max-height:0;opacity:0;overflow:hidden;border-radius:.6rem;margin-right:auto;margin-left:auto;transition:max-height .4s ease,opacity .4s ease,margin .4s ease,padding .4s ease;will-change:max-height,opacity,margin,padding}.a-side-nav-dropdown.active{max-height:9000px!important;opacity:1;margin:5px auto;padding-top:.4rem;padding-bottom:.4rem}.a-side-nav-dropdown:is(.dark *){background-color:var(--nav-sky-dark)}.a-side-nav-drop{transition:margin-left .2s;width:100%;padding-left:1rem;padding-right:.25rem;padding-top:.25rem;font-size:.875rem;line-height:1.25rem;display:flex;align-items:center}.a-side-nav-drop:hover{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub{transition:none;width:100%;display:block;align-items:center;padding-left:1rem;padding-right:.25rem;padding-top:.25rem;font-size:.9rem;line-height:1.25rem}.a-side-nav-drop-sub-title{transition:margin-left .2s,color .2s;margin-left:0}.a-side-nav-drop-sub:hover .a-side-nav-drop-sub-title{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub-link{transition:margin-left .2s,color .2s;margin-left:0}.a-side-nav-drop-sub-link:hover{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub-link-active{margin-left:.5rem}.a-side-nav-dropdown ul{max-height:0;overflow:hidden;opacity:0;transition:max-height .4s ease,opacity .4s ease;will-change:max-height,opacity}.a-side-nav-dropdown ul.open{opacity:1;max-height:9000px!important}.span-side-nav{margin-left:.75rem;flex:1 1 0%;white-space:nowrap;text-align:left}.span-side-nav:where([dir=rtl],[dir=rtl] *){text-align:right}.sidebar-collapsed .aside-nav{width:0;overflow:hidden}.sidebar-collapsed .main-content,.sidebar-collapsed footer{margin-left:0;width:100%}.aside-nav{transition:width .5s ease!important}footer{margin-top:auto;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}footer:is(.dark *){color:var(--dark-text-secondary)}@media (min-width:640px){footer{margin-left:15rem;transition:margin-left .5s ease;width:calc(100% - 15rem)}}h1{font-size:2.8em}h1,h2{font-weight:700}h2{font-size:2.5em}h3{font-size:2.1em}h3,h4{font-weight:700}h4{font-size:1.9em}h5{font-size:1.6em}h5,h6{font-weight:700}h6{font-size:1.3em}p{font-size:1em}.btn-primary-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary-sm:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-primary-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary-xl:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-info-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info-sm:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-info{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-info-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info-xl:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-success-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success-sm:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-success{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-success-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success-xl:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-warning-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning-sm:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-warning{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-warning-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning-xl:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-danger-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger-sm:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-danger-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger-xl:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-center{margin-right:auto}.btn-center,.btn-right{margin-left:auto;display:block}.page-title{display:block}@media (min-width:768px){.page-title{display:inline-flex;align-items:center;justify-content:space-between}}.card{height:-moz-fit-content;height:fit-content;width:100%}.card>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.card{border-radius:.25rem;background-color:var(--light-primary);padding:.75rem}.card:is(.dark *){background-color:var(--dark-secondary)}.card-title{margin-bottom:.5rem;justify-content:space-between;display:flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-2{display:grid}}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-3{display:grid}}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-4{display:grid}}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-5{display:grid}}.grid-6{grid-template-columns:repeat(6,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-6{display:grid}}.grid-7{grid-template-columns:repeat(7,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-7{display:grid}}.grid-8{grid-template-columns:repeat(8,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-8{display:grid}}.grid-9{grid-template-columns:repeat(9,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-9{display:grid}}.grid-10{grid-template-columns:repeat(10,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-10{display:grid}}.grid-11{grid-template-columns:repeat(11,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-11{display:grid}}.grid-12{grid-template-columns:repeat(12,minmax(0,1fr));gap:3rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-12{display:grid}}.center-flex{justify-content:center}@media (min-width:1024px){.center-flex{display:flex}}.between-flex{justify-content:space-between}@media (min-width:1024px){.between-flex{display:flex}}.around-flex{justify-content:space-around}@media (min-width:1024px){.around-flex{display:flex}.flex-content-2xl{width:80%}.flex-content-xl{width:66.666667%}.flex-content-lg{width:50%}.flex-content{width:33.333333%}.flex-content-sm{width:25%}}label{display:block;font-weight:500}.input-xl{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem .5rem}.input-xl:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-xl:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-xl:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-xl:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-xl:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-sm{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.input-sm:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-sm:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-sm:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-sm:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-sm:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-xl{margin-bottom:.5rem;display:flex;align-items:center}.input-group-xl i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:1rem;color:var(--light-text-secondary)}.input-group-xl i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-xl input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem}.input-group-xl input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-xl input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-xl input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-xl input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-xl input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group{margin-bottom:.5rem;display:flex;align-items:center}.input-group i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}.input-group i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input-group input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-sm{margin-bottom:.5rem;display:flex;align-items:center}.input-group-sm i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.375rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}.input-group-sm i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-sm input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem}.input-group-sm input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-sm input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-sm input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-sm input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-sm input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.helper-input{margin-top:-.5rem;font-size:.75rem;line-height:1rem;font-style:italic}.input-btn-xl{position:relative;width:100%}.input-btn-xl input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem .5rem}.input-btn-xl input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-xl input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn-xl input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-xl input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-xl input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-xl button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn-xl button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn-xl button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn-xl button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn-xl button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn-xl button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}.input-btn{position:relative;width:100%}.input-btn input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input-btn input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}.input-btn-sm{position:relative;width:100%}.input-btn-sm input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.input-btn-sm input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-sm input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn-sm input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-sm input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-sm input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-sm button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding-left:.625rem;padding-right:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn-sm button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn-sm button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn-sm button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn-sm button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn-sm button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}input[type=file]{width:100%;cursor:pointer;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg)}input[type=file]:focus{outline:2px solid transparent;outline-offset:2px}input[type=file]:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}input[type=file]:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}input[type=file]:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}select{display:block;width:100%;cursor:pointer;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg)}select:focus{outline:2px solid transparent;outline-offset:2px}select:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}select:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}select:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.choices__inner{display:block;min-height:42px;width:100%;overflow:hidden;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.375rem .5rem;vertical-align:top;font-size:.875rem;line-height:1.25rem}.choices__inner:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.tooltip.choices__list--dropdown>.tooltip-arrow:before,[role=tooltip].choices__list--dropdown>[data-popper-arrow]:after,[role=tooltip].choices__list--dropdown>[data-popper-arrow]:before{visibility:hidden}.choices__list--dropdown{position:absolute;top:100%;z-index:50;margin-top:-.25rem;width:100%;overflow:hidden;border-radius:.5rem;border-width:1px;border-color:var(--dark-fourth);background-color:var(--light-input-bg);visibility:hidden}.choices__list--dropdown:is(.dark *){background-color:var(--dark-input-bg)}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:var(--light-secondary)}.choices__list--dropdown .choices__item--selectable.is-highlighted:is(.dark *){background-color:var(--dark-secondary)}.toggle{display:inline-flex;cursor:pointer;align-items:center}.toggle .toggle-input{position:absolute;margin:-.25rem;height:.25rem;width:.25rem;overflow:hidden;white-space:nowrap;border-width:0;padding:0;clip:rect(0,0,0,0)}.toggle .toggle-slider{position:relative;margin-right:.5rem;height:1rem;width:1.75rem;border-radius:9999px;background-color:var(--light-third)}.toggle .toggle-slider:is(.dark *){background-color:var(--dark-third)}.toggle .toggle-slider{transition:background-color .2s ease-in-out}.toggle .toggle-slider:after{position:absolute;top:2px;left:2px;height:.75rem;width:.75rem;border-radius:9999px;border-width:1px;border-color:var(--light-third);background-color:var(--light-primary)}.toggle .toggle-slider:is(.dark *):after{border-color:var(--dark-fourth);background-color:var(--dark-secondary)}.toggle .toggle-slider:after{content:"";transition:transform .2s ease-in-out}.toggle .toggle-label{margin-right:.5rem;font-weight:500}.toggle input:checked+.toggle-slider{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.toggle input:checked+.toggle-slider:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.toggle input:checked+.toggle-slider:after{transform:translateX(100%)}.checkbox{margin-bottom:.25rem;display:flex;align-items:center}.checkbox input{margin-right:.5rem;height:1rem;width:1rem;border-radius:.25rem;border-color:var(--light-third);background-color:var(--light-secondary);--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.checkbox input:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.checkbox input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-third);--tw-ring-offset-color:#1f2937}.checkbox input:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity,1))}.checkbox label{margin-right:.5rem}.textarea{display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.625rem;--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.textarea:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.textarea:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-third);color:var(--light-primary)}.textarea:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.textarea:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.textarea:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.icon-picker{position:relative;z-index:30}.icon-picker i{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.icon-picker i:is(.dark *){color:var(--light-primary)}.icon-list{position:static;top:100%;left:1.75rem;z-index:5100;display:none;max-height:18rem;width:20rem;overflow-y:scroll;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);font-size:1.25rem;line-height:1.75rem}.icon-list:is(.dark *){background-color:var(--dark-input-bg)}.icon-list i{height:1.75rem;width:1.75rem;cursor:pointer;border-radius:.5rem;padding:.25rem;text-align:center}.icon-list i:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.page-loader{position:relative;height:80vh}.loader{width:48px;height:48px;margin:auto;top:50%;position:relative}.loader:before{width:48px;height:5px;background:#9b9b9b;opacity:.25;top:60px;border-radius:50%;animation:shadow .5s linear infinite}.loader:after,.loader:before{content:"";position:absolute;left:0}.loader:after{width:100%;height:100%;background:#a90a59;animation:bxSpin .5s linear infinite;top:0;border-radius:4px}@keyframes bxSpin{17%{border-bottom-right-radius:3px}25%{transform:translateY(9px) rotate(22.5deg)}50%{transform:translateY(18px) scaleY(.9) rotate(45deg);border-bottom-right-radius:40px}75%{transform:translateY(9px) rotate(67.5deg)}to{transform:translateY(0) rotate(90deg)}}@keyframes shadow{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}.content-loader{display:none}.table-container{position:relative;height:-moz-fit-content;height:fit-content;overflow-x:auto;border-radius:.5rem;border-width:1px}.table-container:is(.dark *){border-color:var(--dark-input-bg)}.table-container table{width:100%;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.table-container table:is(.dark *){color:var(--light-fourth)}.table-container table:where([dir=rtl],[dir=rtl] *){text-align:right}.table-container thead{border-bottom-width:1px;background-color:var(--light-secondary);text-transform:uppercase;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.table-container thead:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.table-container thead th{padding:.75rem .5rem}.table-container tbody tr{border-bottom-width:1px;background-color:var(--light-primary)}.table-container tbody tr:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth)}.table-container tbody td{padding:.75rem .5rem}.table-container-striped tbody tr:nth-child(odd){background-color:var(--light-primary)}.table-container-striped tbody tr:nth-child(odd):is(.dark *){background-color:var(--dark-secondary)}.table-container-striped tbody tr:nth-child(2n){background-color:var(--light-secondary)}.table-container-striped tbody tr:nth-child(2n):is(.dark *){background-color:var(--dark-third)}.dataTable-top{justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}.dataTable-top:is(.dark *){border-color:var(--dark-input-bg)}@media (min-width:1024px){.dataTable-top{display:flex}}.dataTable-input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.dataTable-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.dataTable-input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.dataTable-input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dataTable-input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dataTable-input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.dataTable-selector{text-align:right}.dataTable-bottom{justify-content:space-between;padding:.75rem .5rem;align-items:center}@media (min-width:1024px){.dataTable-bottom{display:flex}}.dataTable-pagination-list{display:flex;height:2rem;align-items:center}.dataTable-pagination-list>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.dataTable-pagination-list{font-size:.875rem;line-height:1.25rem;display:flex;align-items:center}.dataTable-pagination-list li{border-width:1px;border-color:var(--light-third);background-color:var(--light-primary);line-height:1.25;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1));display:flex;justify-content:center;align-items:center}.dataTable-pagination-list li:hover{background-color:var(--light-secondary);--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.dataTable-pagination-list li:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dataTable-pagination-list li:hover:is(.dark *){background-color:var(--dark-third);color:var(--light-primary)}.dataTable-pagination-list a{padding:.5rem .75rem}.dataTable-pagination-list .active{border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.dataTable-pagination-list .active:hover{--tw-bg-opacity:1;background-color:rgb(225 239 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity,1))}.dataTable-pagination-list .active:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.dataTable-sorter{position:relative;padding-right:20px}.dataTable-sorter:after,.dataTable-sorter:before{content:"";position:absolute;right:5px;border:solid transparent;width:0;height:0}.dataTable-sorter:before{border-width:0 4px 4px;border-bottom-color:#000;top:35%;transform:translateY(-100%)}.dataTable-sorter:after{border-width:4px 4px 0;border-top-color:#000;top:65%;transform:translateY(0)}.alert{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-secondary);padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.alert:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.alert-info{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.alert-info:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 66 159/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(118 169 250/var(--tw-text-opacity,1))}.alert-success{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(132 225 188/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(243 250 247/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(3 84 63/var(--tw-text-opacity,1))}.alert-success:is(.dark *){--tw-border-opacity:1;border-color:rgb(3 84 63/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(49 196 141/var(--tw-text-opacity,1))}.alert-warning{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(250 202 21/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 253 234/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(114 59 19/var(--tw-text-opacity,1))}.alert-warning:is(.dark *){--tw-border-opacity:1;border-color:rgb(114 59 19/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(250 202 21/var(--tw-text-opacity,1))}.alert-danger{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(248 180 180/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(155 28 28/var(--tw-text-opacity,1))}.alert-danger:is(.dark *){--tw-border-opacity:1;border-color:rgb(155 28 28/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.badge{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1));background-color:var(--light-secondary);padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.badge:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.badge-info{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(222 247 236/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.badge-info:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(118 169 250/var(--tw-text-opacity,1))}.badge-success{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(49 196 141/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(222 247 236/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(3 84 63/var(--tw-text-opacity,1))}.badge-success:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(49 196 141/var(--tw-text-opacity,1))}.badge-warning{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(250 202 21/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 246 178/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(114 59 19/var(--tw-text-opacity,1))}.badge-warning:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(250 202 21/var(--tw-text-opacity,1))}.badge-danger{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(249 128 128/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 232 232/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(155 28 28/var(--tw-text-opacity,1))}.badge-danger:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.avatar-rounded{border-radius:9999px}.avatar-rounded,.avatar-square{height:2.5rem;width:2.5rem;background-size:contain}.avatar-square{border-radius:.5rem}.avatar-rounded-ring{height:2.5rem;width:2.5rem;border-radius:9999px;background-size:contain;padding:.25rem;--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);--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.avatar-rounded-ring:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.avatar-square-ring{height:2.5rem;width:2.5rem;border-radius:.5rem;background-size:contain;padding:.25rem;--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);--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.avatar-square-ring:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.avatar-text{gap:1rem;display:flex;align-items:center}.dropdown,.dropdown-hover{position:relative;display:inline-block}.dropdown-opener{cursor:pointer}.dropdown-content{position:absolute;margin-top:.25rem;display:none;border-radius:.25rem;background-color:var(--light-primary);padding:.5rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(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)}.dropdown-content:is(.dark *){background-color:var(--dark-third)}kbd{border-radius:.5rem;border-width:1px;border-color:var(--light-fourth);background-color:var(--light-secondary);padding:.375rem .5rem;font-size:.75rem;line-height:1rem;font-weight:600;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}kbd:is(.dark *){--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1));background-color:var(--dark-secondary);--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.modal-container{position:fixed;top:0;right:0;left:0;z-index:600000;display:none;height:calc(100% - 1rem);width:100%;overflow-y:auto;overflow-x:hidden;justify-content:center;align-items:center}@media (min-width:768px){.modal-container{inset:0}}.modal-sm{position:relative;max-height:100%;width:100%;max-width:28rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-sm:is(.dark *){background-color:var(--dark-third)}.modal{position:relative;max-height:100%;width:100%;max-width:42rem;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal:is(.dark *){background-color:var(--dark-third)}.modal-lg{position:relative;max-height:100%;width:100%;max-width:56rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-lg:is(.dark *){background-color:var(--dark-third)}.modal-xl{position:relative;max-height:100%;width:100%;max-width:80rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-xl:is(.dark *){background-color:var(--dark-third)}.modal-header{justify-content:space-between;border-bottom-width:1px;padding:1rem;display:flex;align-items:center}.modal-header:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header{padding:1.25rem}}.modal-header-warning{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-warning:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-warning{padding:1.25rem}}.modal-header-success{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-success:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-success{padding:1.25rem}}.modal-header-danger{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-danger:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-danger{padding:1.25rem}}.modal-footer{display:flex;justify-content:flex-end}.modal-footer>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.modal-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;border-top-width:1px;border-color:var(--light-fourth);padding:1rem;display:flex}.modal-footer:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-footer{padding:1.25rem}}.modal-body{max-height:60vh}.modal-body>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.modal-body{overflow-y:auto;padding:1rem}@media (min-width:768px){.modal-body{max-height:60vh;overflow-y:auto;padding:1.25rem}}.pagination{display:flex;height:2rem;align-items:center}.pagination>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.pagination{font-size:.875rem;line-height:1.25rem}.pagination,.pagination-link{display:flex;align-items:center}.pagination-link{height:2rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-primary);padding-left:.75rem;padding-right:.75rem;line-height:1.25;color:rgb(107 114 128/var(--tw-text-opacity,1));justify-content:center}.pagination-link,.pagination-link:hover{--tw-text-opacity:1}.pagination-link:hover{background-color:var(--light-secondary);color:rgb(55 65 81/var(--tw-text-opacity,1))}.pagination-link:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.pagination-link:hover:is(.dark *){background-color:var(--dark-third);color:var(--light-primary)}.pagination-link-active{z-index:10;height:2rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));background-color:rgb(235 245 255/var(--tw-bg-opacity,1));padding-left:.75rem;padding-right:.75rem;line-height:1.25;color:rgb(28 100 242/var(--tw-text-opacity,1));display:flex;justify-content:center;align-items:center}.pagination-link-active,.pagination-link-active:hover{--tw-bg-opacity:1;--tw-text-opacity:1}.pagination-link-active:hover{background-color:rgb(225 239 254/var(--tw-bg-opacity,1));color:rgb(26 86 219/var(--tw-text-opacity,1))}.pagination-link-active:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.tab-menu{margin-bottom:1rem;border-bottom-width:1px;border-color:var(--light-fourth)}.tab-menu:is(.dark *){border-color:var(--dark-input-bg)}.tab-horizontal{margin-bottom:-1px;flex-wrap:wrap;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;display:flex}.tab-horizontal button{display:inline-block;border-bottom-width:2px;padding:1rem}.tab-vertical{margin-bottom:1rem;display:flex;flex-direction:column}.tab-vertical>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.tab-vertical{font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1));display:flex}.tab-vertical:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}@media (min-width:768px){.tab-vertical{margin-right:1rem;margin-bottom:0}}.tab-vertical button{display:inline-flex;width:100%;min-width:10rem;align-items:center;border-radius:.5rem;background-color:var(--light-primary);padding:.75rem 1rem}.a-side-nav-dropdown.tab-vertical button{max-height:9000px;opacity:1;margin:5px auto;padding-top:.4rem;padding-bottom:.4rem}.dataTable-pagination-list .tab-vertical button{border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.dataTable-pagination-list .tab-vertical button:hover{--tw-bg-opacity:1;background-color:rgb(225 239 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity,1))}.dataTable-pagination-list .tab-vertical button:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.tab-vertical button{align-items:center}.tab-vertical button:is(.dark *){background-color:var(--dark-fourth)}@media (min-width:768px){.tab-vertical-container{display:flex}}.tab-container{width:100%}.tab-content{display:none}.tab-button{width:100%;cursor:pointer;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-width:1px;padding:.25rem;display:flex;align-items:center}[data-tooltip-style^=light]+.tooltip-content>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip-content[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip-content[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip-content[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip-content[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip-content,.tooltip-content.invisible>.tooltip-arrow:before,.tooltip.tooltip-content>.tooltip-arrow:before,[role=tooltip].tooltip-content>[data-popper-arrow]:after,[role=tooltip].tooltip-content>[data-popper-arrow]:before{visibility:hidden}.tooltip-content{position:absolute;z-index:9000;display:inline-block;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary);--tw-shadow:0 1px 2px 0 rgba(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);opacity:0}.tooltip-content:is(.dark *){background-color:var(--dark-third);color:var(--dark-text-primary)}.flex{display:flex!important}.justify-center{justify-content:center!important}.items-center{align-items:center!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.opacity-0{opacity:0!important}.opacity-100{opacity:1!important}.transform-none{transform:none!important}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--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)}.focus\:ring-2:focus,.focus\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-4:focus{--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)}.focus\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.focus\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity,1))}.focus\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(75 85 99/var(--tw-divide-opacity,1))}.dark\:border-blue-500:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.dark\:border-transparent:is(.dark *){border-color:transparent}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-800\/50:is(.dark *){background-color:rgba(31,41,55,.5)}.dark\:bg-opacity-80:is(.dark *){--tw-bg-opacity:0.8}.dark\:text-blue-500:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:hover\:text-blue-500:hover:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:ml-11{margin-left:2.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}}@media (min-width:768px){.md\:flex{display:flex}}@media (min-width:1024px){.lg\:mt-0{margin-top:0}.lg\:mt-4{margin-top:1rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-1\/2{width:50%}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pb-0{padding-bottom:0}.lg\:pl-3{padding-left:.75rem}}.rtl\:justify-end:where([dir=rtl],[dir=rtl] *){justify-content:flex-end} \ No newline at end of file +*,:after,:before{--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:rgba(63,131,248,.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:rgba(63,131,248,.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: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{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,pre,samp{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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:"";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.\!tooltip>.tooltip-arrow:before{border-style:solid!important;border-color:#e5e7eb!important}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px!important;border-right-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px!important;border-left-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px!important;border-left-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.\!tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px!important;border-right-width:1px!important}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.\!tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px!important}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.\!tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px!important}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.\!tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px!important}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.\!tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px!important}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.\!tooltip.invisible>.tooltip-arrow:before{visibility:hidden!important}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:"";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E");background-color:currentColor;border-color:transparent;background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{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(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);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:"";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}.\!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}}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\!relative{position:relative!important}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[60px\]{bottom:60px}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.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}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.float-end{float:inline-end}.float-right{float:right}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-10{margin:-2.5rem}.-m-11{margin:-2.75rem}.-m-12{margin:-3rem}.-m-14{margin:-3.5rem}.-m-16{margin:-4rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-20{margin:-5rem}.-m-24{margin:-6rem}.-m-28{margin:-7rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-m-32{margin:-8rem}.-m-36{margin:-9rem}.-m-4{margin:-1rem}.-m-40{margin:-10rem}.-m-44{margin:-11rem}.-m-48{margin:-12rem}.-m-5{margin:-1.25rem}.-m-52{margin:-13rem}.-m-56{margin:-14rem}.-m-6{margin:-1.5rem}.-m-60{margin:-15rem}.-m-64{margin:-16rem}.-m-7{margin:-1.75rem}.-m-72{margin:-18rem}.-m-8{margin:-2rem}.-m-80{margin:-20rem}.-m-9{margin:-2.25rem}.-m-96{margin:-24rem}.m-0{margin:0}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-1\.5{margin:.375rem}.m-10{margin:2.5rem}.m-11{margin:2.75rem}.m-12{margin:3rem}.m-14{margin:3.5rem}.m-16{margin:4rem}.m-2{margin:.5rem}.m-2\.5{margin:.625rem}.m-20{margin:5rem}.m-24{margin:6rem}.m-28{margin:7rem}.m-3{margin:.75rem}.m-3\.5{margin:.875rem}.m-32{margin:8rem}.m-36{margin:9rem}.m-4{margin:1rem}.m-40{margin:10rem}.m-44{margin:11rem}.m-48{margin:12rem}.m-5{margin:1.25rem}.m-52{margin:13rem}.m-56{margin:14rem}.m-6{margin:1.5rem}.m-60{margin:15rem}.m-64{margin:16rem}.m-7{margin:1.75rem}.m-72{margin:18rem}.m-8{margin:2rem}.m-80{margin:20rem}.m-9{margin:2.25rem}.m-96{margin:24rem}.-mx-0{margin-left:0;margin-right:0}.-mx-0\.5{margin-left:-.125rem;margin-right:-.125rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-1\.5{margin-left:-.375rem;margin-right:-.375rem}.-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.-mx-11{margin-left:-2.75rem;margin-right:-2.75rem}.-mx-12{margin-left:-3rem;margin-right:-3rem}.-mx-14{margin-left:-3.5rem;margin-right:-3.5rem}.-mx-16{margin-left:-4rem;margin-right:-4rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-2\.5{margin-left:-.625rem;margin-right:-.625rem}.-mx-20{margin-left:-5rem;margin-right:-5rem}.-mx-24{margin-left:-6rem;margin-right:-6rem}.-mx-28{margin-left:-7rem;margin-right:-7rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-3\.5{margin-left:-.875rem;margin-right:-.875rem}.-mx-32{margin-left:-8rem;margin-right:-8rem}.-mx-36{margin-left:-9rem;margin-right:-9rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-40{margin-left:-10rem;margin-right:-10rem}.-mx-44{margin-left:-11rem;margin-right:-11rem}.-mx-48{margin-left:-12rem;margin-right:-12rem}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-mx-52{margin-left:-13rem;margin-right:-13rem}.-mx-56{margin-left:-14rem;margin-right:-14rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-mx-60{margin-left:-15rem;margin-right:-15rem}.-mx-64{margin-left:-16rem;margin-right:-16rem}.-mx-7{margin-left:-1.75rem;margin-right:-1.75rem}.-mx-72{margin-left:-18rem;margin-right:-18rem}.-mx-8{margin-left:-2rem;margin-right:-2rem}.-mx-80{margin-left:-20rem;margin-right:-20rem}.-mx-9{margin-left:-2.25rem;margin-right:-2.25rem}.-mx-96{margin-left:-24rem;margin-right:-24rem}.-my-0{margin-top:0;margin-bottom:0}.-my-0\.5{margin-top:-.125rem;margin-bottom:-.125rem}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.-my-1\.5{margin-top:-.375rem;margin-bottom:-.375rem}.-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.-my-11{margin-top:-2.75rem;margin-bottom:-2.75rem}.-my-12{margin-top:-3rem;margin-bottom:-3rem}.-my-14{margin-top:-3.5rem;margin-bottom:-3.5rem}.-my-16{margin-top:-4rem;margin-bottom:-4rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-2\.5{margin-top:-.625rem;margin-bottom:-.625rem}.-my-20{margin-top:-5rem;margin-bottom:-5rem}.-my-24{margin-top:-6rem;margin-bottom:-6rem}.-my-28{margin-top:-7rem;margin-bottom:-7rem}.-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.-my-3\.5{margin-top:-.875rem;margin-bottom:-.875rem}.-my-32{margin-top:-8rem;margin-bottom:-8rem}.-my-36{margin-top:-9rem;margin-bottom:-9rem}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.-my-40{margin-top:-10rem;margin-bottom:-10rem}.-my-44{margin-top:-11rem;margin-bottom:-11rem}.-my-48{margin-top:-12rem;margin-bottom:-12rem}.-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.-my-52{margin-top:-13rem;margin-bottom:-13rem}.-my-56{margin-top:-14rem;margin-bottom:-14rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.-my-60{margin-top:-15rem;margin-bottom:-15rem}.-my-64{margin-top:-16rem;margin-bottom:-16rem}.-my-7{margin-top:-1.75rem;margin-bottom:-1.75rem}.-my-72{margin-top:-18rem;margin-bottom:-18rem}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.-my-80{margin-top:-20rem;margin-bottom:-20rem}.-my-9{margin-top:-2.25rem;margin-bottom:-2.25rem}.-my-96{margin-top:-24rem;margin-bottom:-24rem}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.mx-11{margin-left:2.75rem;margin-right:2.75rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-14{margin-left:3.5rem;margin-right:3.5rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mx-20{margin-left:5rem;margin-right:5rem}.mx-24{margin-left:6rem;margin-right:6rem}.mx-28{margin-left:7rem;margin-right:7rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-36{margin-left:9rem;margin-right:9rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-40{margin-left:10rem;margin-right:10rem}.mx-44{margin-left:11rem;margin-right:11rem}.mx-48{margin-left:12rem;margin-right:12rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-52{margin-left:13rem;margin-right:13rem}.mx-56{margin-left:14rem;margin-right:14rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-60{margin-left:15rem;margin-right:15rem}.mx-64{margin-left:16rem;margin-right:16rem}.mx-7{margin-left:1.75rem;margin-right:1.75rem}.mx-72{margin-left:18rem;margin-right:18rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-80{margin-left:20rem;margin-right:20rem}.mx-9{margin-left:2.25rem;margin-right:2.25rem}.mx-96{margin-left:24rem;margin-right:24rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-11{margin-top:2.75rem;margin-bottom:2.75rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-14{margin-top:3.5rem;margin-bottom:3.5rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-24{margin-top:6rem;margin-bottom:6rem}.my-28{margin-top:7rem;margin-bottom:7rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-3\.5{margin-top:.875rem;margin-bottom:.875rem}.my-32{margin-top:8rem;margin-bottom:8rem}.my-36{margin-top:9rem;margin-bottom:9rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-40{margin-top:10rem;margin-bottom:10rem}.my-44{margin-top:11rem;margin-bottom:11rem}.my-48{margin-top:12rem;margin-bottom:12rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-52{margin-top:13rem;margin-bottom:13rem}.my-56{margin-top:14rem;margin-bottom:14rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-60{margin-top:15rem;margin-bottom:15rem}.my-64{margin-top:16rem;margin-bottom:16rem}.my-7{margin-top:1.75rem;margin-bottom:1.75rem}.my-72{margin-top:18rem;margin-bottom:18rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-80{margin-top:20rem;margin-bottom:20rem}.my-9{margin-top:2.25rem;margin-bottom:2.25rem}.my-96{margin-top:24rem;margin-bottom:24rem}.-mb-0{margin-bottom:0}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-mb-1\.5{margin-bottom:-.375rem}.-mb-10{margin-bottom:-2.5rem}.-mb-11{margin-bottom:-2.75rem}.-mb-12{margin-bottom:-3rem}.-mb-14{margin-bottom:-3.5rem}.-mb-16{margin-bottom:-4rem}.-mb-2{margin-bottom:-.5rem}.-mb-2\.5{margin-bottom:-.625rem}.-mb-20{margin-bottom:-5rem}.-mb-24{margin-bottom:-6rem}.-mb-28{margin-bottom:-7rem}.-mb-3{margin-bottom:-.75rem}.-mb-3\.5{margin-bottom:-.875rem}.-mb-32{margin-bottom:-8rem}.-mb-36{margin-bottom:-9rem}.-mb-4{margin-bottom:-1rem}.-mb-40{margin-bottom:-10rem}.-mb-44{margin-bottom:-11rem}.-mb-48{margin-bottom:-12rem}.-mb-5{margin-bottom:-1.25rem}.-mb-52{margin-bottom:-13rem}.-mb-56{margin-bottom:-14rem}.-mb-6{margin-bottom:-1.5rem}.-mb-60{margin-bottom:-15rem}.-mb-64{margin-bottom:-16rem}.-mb-7{margin-bottom:-1.75rem}.-mb-72{margin-bottom:-18rem}.-mb-8{margin-bottom:-2rem}.-mb-80{margin-bottom:-20rem}.-mb-9{margin-bottom:-2.25rem}.-mb-96{margin-bottom:-24rem}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-10{margin-left:-2.5rem}.-ml-11{margin-left:-2.75rem}.-ml-12{margin-left:-3rem}.-ml-14{margin-left:-3.5rem}.-ml-16{margin-left:-4rem}.-ml-2{margin-left:-.5rem}.-ml-2\.5{margin-left:-.625rem}.-ml-20{margin-left:-5rem}.-ml-24{margin-left:-6rem}.-ml-28{margin-left:-7rem}.-ml-3{margin-left:-.75rem}.-ml-3\.5{margin-left:-.875rem}.-ml-32{margin-left:-8rem}.-ml-36{margin-left:-9rem}.-ml-4{margin-left:-1rem}.-ml-40{margin-left:-10rem}.-ml-44{margin-left:-11rem}.-ml-48{margin-left:-12rem}.-ml-5{margin-left:-1.25rem}.-ml-52{margin-left:-13rem}.-ml-56{margin-left:-14rem}.-ml-6{margin-left:-1.5rem}.-ml-60{margin-left:-15rem}.-ml-64{margin-left:-16rem}.-ml-7{margin-left:-1.75rem}.-ml-72{margin-left:-18rem}.-ml-8{margin-left:-2rem}.-ml-80{margin-left:-20rem}.-ml-9{margin-left:-2.25rem}.-ml-96{margin-left:-24rem}.-mr-0{margin-right:0}.-mr-0\.5{margin-right:-.125rem}.-mr-1{margin-right:-.25rem}.-mr-1\.5{margin-right:-.375rem}.-mr-10{margin-right:-2.5rem}.-mr-11{margin-right:-2.75rem}.-mr-12{margin-right:-3rem}.-mr-14{margin-right:-3.5rem}.-mr-16{margin-right:-4rem}.-mr-2{margin-right:-.5rem}.-mr-2\.5{margin-right:-.625rem}.-mr-20{margin-right:-5rem}.-mr-24{margin-right:-6rem}.-mr-28{margin-right:-7rem}.-mr-3{margin-right:-.75rem}.-mr-3\.5{margin-right:-.875rem}.-mr-32{margin-right:-8rem}.-mr-36{margin-right:-9rem}.-mr-4{margin-right:-1rem}.-mr-40{margin-right:-10rem}.-mr-44{margin-right:-11rem}.-mr-48{margin-right:-12rem}.-mr-5{margin-right:-1.25rem}.-mr-52{margin-right:-13rem}.-mr-56{margin-right:-14rem}.-mr-6{margin-right:-1.5rem}.-mr-60{margin-right:-15rem}.-mr-64{margin-right:-16rem}.-mr-7{margin-right:-1.75rem}.-mr-72{margin-right:-18rem}.-mr-8{margin-right:-2rem}.-mr-80{margin-right:-20rem}.-mr-9{margin-right:-2.25rem}.-mr-96{margin-right:-24rem}.-mt-0{margin-top:0}.-mt-0\.5{margin-top:-.125rem}.-mt-1{margin-top:-.25rem}.-mt-1\.5{margin-top:-.375rem}.-mt-10{margin-top:-2.5rem}.-mt-11{margin-top:-2.75rem}.-mt-12{margin-top:-3rem}.-mt-14{margin-top:-3.5rem}.-mt-16{margin-top:-4rem}.-mt-2{margin-top:-.5rem}.-mt-2\.5{margin-top:-.625rem}.-mt-20{margin-top:-5rem}.-mt-24{margin-top:-6rem}.-mt-28{margin-top:-7rem}.-mt-3{margin-top:-.75rem}.-mt-3\.5{margin-top:-.875rem}.-mt-32{margin-top:-8rem}.-mt-36{margin-top:-9rem}.-mt-4{margin-top:-1rem}.-mt-40{margin-top:-10rem}.-mt-44{margin-top:-11rem}.-mt-48{margin-top:-12rem}.-mt-5{margin-top:-1.25rem}.-mt-52{margin-top:-13rem}.-mt-56{margin-top:-14rem}.-mt-6{margin-top:-1.5rem}.-mt-60{margin-top:-15rem}.-mt-64{margin-top:-16rem}.-mt-7{margin-top:-1.75rem}.-mt-72{margin-top:-18rem}.-mt-8{margin-top:-2rem}.-mt-80{margin-top:-20rem}.-mt-9{margin-top:-2.25rem}.-mt-96{margin-top:-24rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-11{margin-bottom:2.75rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-20{margin-bottom:5rem}.mb-24{margin-bottom:6rem}.mb-28{margin-bottom:7rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-32{margin-bottom:8rem}.mb-36{margin-bottom:9rem}.mb-4{margin-bottom:1rem}.mb-40{margin-bottom:10rem}.mb-44{margin-bottom:11rem}.mb-48{margin-bottom:12rem}.mb-5{margin-bottom:1.25rem}.mb-52{margin-bottom:13rem}.mb-56{margin-bottom:14rem}.mb-6{margin-bottom:1.5rem}.mb-60{margin-bottom:15rem}.mb-64{margin-bottom:16rem}.mb-7{margin-bottom:1.75rem}.mb-72{margin-bottom:18rem}.mb-8{margin-bottom:2rem}.mb-80{margin-bottom:20rem}.mb-9{margin-bottom:2.25rem}.mb-96{margin-bottom:24rem}.me-3{margin-inline-end:.75rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-10{margin-left:2.5rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.ml-16{margin-left:4rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-20{margin-left:5rem}.ml-24{margin-left:6rem}.ml-28{margin-left:7rem}.ml-3{margin-left:.75rem}.ml-3\.5{margin-left:.875rem}.ml-32{margin-left:8rem}.ml-36{margin-left:9rem}.ml-4{margin-left:1rem}.ml-40{margin-left:10rem}.ml-44{margin-left:11rem}.ml-48{margin-left:12rem}.ml-5{margin-left:1.25rem}.ml-52{margin-left:13rem}.ml-56{margin-left:14rem}.ml-6{margin-left:1.5rem}.ml-60{margin-left:15rem}.ml-64{margin-left:16rem}.ml-7{margin-left:1.75rem}.ml-72{margin-left:18rem}.ml-8{margin-left:2rem}.ml-80{margin-left:20rem}.ml-9{margin-left:2.25rem}.ml-96{margin-left:24rem}.mr-0{margin-right:0}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-10{margin-right:2.5rem}.mr-11{margin-right:2.75rem}.mr-12{margin-right:3rem}.mr-14{margin-right:3.5rem}.mr-16{margin-right:4rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-20{margin-right:5rem}.mr-24{margin-right:6rem}.mr-28{margin-right:7rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mr-32{margin-right:8rem}.mr-36{margin-right:9rem}.mr-4{margin-right:1rem}.mr-40{margin-right:10rem}.mr-44{margin-right:11rem}.mr-48{margin-right:12rem}.mr-5{margin-right:1.25rem}.mr-52{margin-right:13rem}.mr-56{margin-right:14rem}.mr-6{margin-right:1.5rem}.mr-60{margin-right:15rem}.mr-64{margin-right:16rem}.mr-7{margin-right:1.75rem}.mr-72{margin-right:18rem}.mr-8{margin-right:2rem}.mr-80{margin-right:20rem}.mr-9{margin-right:2.25rem}.mr-96{margin-right:24rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-11{margin-top:2.75rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-20{margin-top:5rem}.mt-24{margin-top:6rem}.mt-28{margin-top:7rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-32{margin-top:8rem}.mt-36{margin-top:9rem}.mt-4{margin-top:1rem}.mt-40{margin-top:10rem}.mt-44{margin-top:11rem}.mt-48{margin-top:12rem}.mt-5{margin-top:1.25rem}.mt-52{margin-top:13rem}.mt-56{margin-top:14rem}.mt-6{margin-top:1.5rem}.mt-60{margin-top:15rem}.mt-64{margin-top:16rem}.mt-7{margin-top:1.75rem}.mt-72{margin-top:18rem}.mt-8{margin-top:2rem}.mt-80{margin-top:20rem}.mt-9{margin-top:2.25rem}.mt-96{margin-top:24rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-0{height:0}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-1\/2{height:50%}.h-1\/3{height:33.333333%}.h-1\/4{height:25%}.h-1\/5{height:20%}.h-1\/6{height:16.666667%}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-2\/3{height:66.666667%}.h-2\/4{height:50%}.h-2\/5{height:40%}.h-2\/6{height:33.333333%}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-3\/4{height:75%}.h-3\/5{height:60%}.h-3\/6{height:50%}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-4\/5{height:80%}.h-4\/6{height:66.666667%}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-5\/6{height:83.333333%}.h-52{height:13rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.h-min{height:-moz-min-content;height:min-content}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0}.max-h-0\.5{max-height:.125rem}.max-h-1{max-height:.25rem}.max-h-1\.5{max-height:.375rem}.max-h-10{max-height:2.5rem}.max-h-11{max-height:2.75rem}.max-h-12{max-height:3rem}.max-h-14{max-height:3.5rem}.max-h-16{max-height:4rem}.max-h-2{max-height:.5rem}.max-h-2\.5{max-height:.625rem}.max-h-20{max-height:5rem}.max-h-24{max-height:6rem}.max-h-28{max-height:7rem}.max-h-3{max-height:.75rem}.max-h-3\.5{max-height:.875rem}.max-h-32{max-height:8rem}.max-h-36{max-height:9rem}.max-h-4{max-height:1rem}.max-h-40{max-height:10rem}.max-h-44{max-height:11rem}.max-h-48{max-height:12rem}.max-h-5{max-height:1.25rem}.max-h-52{max-height:13rem}.max-h-56{max-height:14rem}.max-h-6{max-height:1.5rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-7{max-height:1.75rem}.max-h-72{max-height:18rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-9{max-height:2.25rem}.max-h-96{max-height:24rem}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.max-h-full{max-height:100%}.max-h-max{max-height:-moz-max-content;max-height:max-content}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-min{min-height:-moz-min-content;min-height:min-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/12{width:8.333333%}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-10\/12{width:83.333333%}.w-11{width:2.75rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/12{width:16.666667%}.w-2\/3{width:66.666667%}.w-2\/4{width:50%}.w-2\/5{width:40%}.w-2\/6{width:33.333333%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/12{width:25%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-3\/6{width:50%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/12{width:33.333333%}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/12{width:41.666667%}.w-5\/6{width:83.333333%}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-6\/12{width:50%}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-7\/12{width:58.333333%}.w-72{width:18rem}.w-8{width:2rem}.w-8\/12{width:66.666667%}.w-80{width:20rem}.w-9{width:2.25rem}.w-9\/12{width:75%}.w-96{width:24rem}.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-min{width:-moz-min-content;width:min-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-\[60px\]{min-width:60px}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-0{max-width:0}.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-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}@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-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-11{gap:2.75rem}.gap-12{gap:3rem}.gap-14{gap:3.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-20{gap:5rem}.gap-24{gap:6rem}.gap-28{gap:7rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-32{gap:8rem}.gap-36{gap:9rem}.gap-4{gap:1rem}.gap-40{gap:10rem}.gap-44{gap:11rem}.gap-48{gap:12rem}.gap-5{gap:1.25rem}.gap-52{gap:13rem}.gap-56{gap:14rem}.gap-6{gap:1.5rem}.gap-60{gap:15rem}.gap-64{gap:16rem}.gap-7{gap:1.75rem}.gap-72{gap:18rem}.gap-8{gap:2rem}.gap-80{gap:20rem}.gap-9{gap:2.25rem}.gap-96{gap:24rem}.gap-x-0{-moz-column-gap:0;column-gap:0}.gap-x-0\.5{-moz-column-gap:.125rem;column-gap:.125rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-x-11{-moz-column-gap:2.75rem;column-gap:2.75rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-20{-moz-column-gap:5rem;column-gap:5rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-3\.5{-moz-column-gap:.875rem;column-gap:.875rem}.gap-x-32{-moz-column-gap:8rem;column-gap:8rem}.gap-x-36{-moz-column-gap:9rem;column-gap:9rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-40{-moz-column-gap:10rem;column-gap:10rem}.gap-x-44{-moz-column-gap:11rem;column-gap:11rem}.gap-x-48{-moz-column-gap:12rem;column-gap:12rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-52{-moz-column-gap:13rem;column-gap:13rem}.gap-x-56{-moz-column-gap:14rem;column-gap:14rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-60{-moz-column-gap:15rem;column-gap:15rem}.gap-x-64{-moz-column-gap:16rem;column-gap:16rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-x-72{-moz-column-gap:18rem;column-gap:18rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-x-80{-moz-column-gap:20rem;column-gap:20rem}.gap-x-9{-moz-column-gap:2.25rem;column-gap:2.25rem}.gap-x-96{-moz-column-gap:24rem;column-gap:24rem}.gap-y-0{row-gap:0}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-10{row-gap:2.5rem}.gap-y-11{row-gap:2.75rem}.gap-y-12{row-gap:3rem}.gap-y-14{row-gap:3.5rem}.gap-y-16{row-gap:4rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-20{row-gap:5rem}.gap-y-24{row-gap:6rem}.gap-y-28{row-gap:7rem}.gap-y-3{row-gap:.75rem}.gap-y-3\.5{row-gap:.875rem}.gap-y-32{row-gap:8rem}.gap-y-36{row-gap:9rem}.gap-y-4{row-gap:1rem}.gap-y-40{row-gap:10rem}.gap-y-44{row-gap:11rem}.gap-y-48{row-gap:12rem}.gap-y-5{row-gap:1.25rem}.gap-y-52{row-gap:13rem}.gap-y-56{row-gap:14rem}.gap-y-6{row-gap:1.5rem}.gap-y-60{row-gap:15rem}.gap-y-64{row-gap:16rem}.gap-y-7{row-gap:1.75rem}.gap-y-72{row-gap:18rem}.gap-y-8{row-gap:2rem}.gap-y-80{row-gap:20rem}.gap-y-9{row-gap:2.25rem}.gap-y-96{row-gap:24rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px*var(--tw-space-x-reverse));margin-left:calc(0px*(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem*var(--tw-space-x-reverse));margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-11>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.75rem*var(--tw-space-x-reverse));margin-left:calc(2.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(3rem*var(--tw-space-x-reverse));margin-left:calc(3rem*(1 - var(--tw-space-x-reverse)))}.space-x-14>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(3.5rem*var(--tw-space-x-reverse));margin-left:calc(3.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-16>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(4rem*var(--tw-space-x-reverse));margin-left:calc(4rem*(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.space-x-20>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(5rem*var(--tw-space-x-reverse));margin-left:calc(5rem*(1 - var(--tw-space-x-reverse)))}.space-x-24>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(6rem*var(--tw-space-x-reverse));margin-left:calc(6rem*(1 - var(--tw-space-x-reverse)))}.space-x-28>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(7rem*var(--tw-space-x-reverse));margin-left:calc(7rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.875rem*var(--tw-space-x-reverse));margin-left:calc(.875rem*(1 - var(--tw-space-x-reverse)))}.space-x-32>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(8rem*var(--tw-space-x-reverse));margin-left:calc(8rem*(1 - var(--tw-space-x-reverse)))}.space-x-36>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(9rem*var(--tw-space-x-reverse));margin-left:calc(9rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-x-40>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(10rem*var(--tw-space-x-reverse));margin-left:calc(10rem*(1 - var(--tw-space-x-reverse)))}.space-x-44>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(11rem*var(--tw-space-x-reverse));margin-left:calc(11rem*(1 - var(--tw-space-x-reverse)))}.space-x-48>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(12rem*var(--tw-space-x-reverse));margin-left:calc(12rem*(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem*var(--tw-space-x-reverse));margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-52>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(13rem*var(--tw-space-x-reverse));margin-left:calc(13rem*(1 - var(--tw-space-x-reverse)))}.space-x-56>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(14rem*var(--tw-space-x-reverse));margin-left:calc(14rem*(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-60>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(15rem*var(--tw-space-x-reverse));margin-left:calc(15rem*(1 - var(--tw-space-x-reverse)))}.space-x-64>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(16rem*var(--tw-space-x-reverse));margin-left:calc(16rem*(1 - var(--tw-space-x-reverse)))}.space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.75rem*var(--tw-space-x-reverse));margin-left:calc(1.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-72>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(18rem*var(--tw-space-x-reverse));margin-left:calc(18rem*(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.space-x-80>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(20rem*var(--tw-space-x-reverse));margin-left:calc(20rem*(1 - var(--tw-space-x-reverse)))}.space-x-9>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.25rem*var(--tw-space-x-reverse));margin-left:calc(2.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-96>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(24rem*var(--tw-space-x-reverse));margin-left:calc(24rem*(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*(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*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-11>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.75rem*var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem*var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem*var(--tw-space-y-reverse))}.space-y-24>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(6rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(6rem*var(--tw-space-y-reverse))}.space-y-28>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(7rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(7rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*var(--tw-space-y-reverse))}.space-y-32>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(8rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8rem*var(--tw-space-y-reverse))}.space-y-36>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(9rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(9rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-40>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(10rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(10rem*var(--tw-space-y-reverse))}.space-y-44>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(11rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(11rem*var(--tw-space-y-reverse))}.space-y-48>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(12rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(12rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-52>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(13rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(13rem*var(--tw-space-y-reverse))}.space-y-56>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(14rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(14rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-60>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(15rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(15rem*var(--tw-space-y-reverse))}.space-y-64>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(16rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16rem*var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem*var(--tw-space-y-reverse))}.space-y-72>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(18rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(18rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-80>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(20rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(20rem*var(--tw-space-y-reverse))}.space-y-9>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.25rem*var(--tw-space-y-reverse))}.space-y-96>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(24rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(24rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-bottom-right-radius:.5rem}.rounded-r-lg,.rounded-t-lg{border-top-right-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(195 221 253/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity,1))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1))}.border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity,1))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(188 240 218/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(14 159 110/var(--tw-border-opacity,1))}.border-light-third{border-color:var(--light-third)}.border-orange-400{--tw-border-opacity:1;border-color:rgb(255 138 76/var(--tw-border-opacity,1))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(255 90 31/var(--tw-border-opacity,1))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(144 97 249/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity,1))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity,1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(225 239 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity,1))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(222 247 236/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(243 250 247/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(229 237 255/var(--tw-bg-opacity,1))}.bg-light-primary{background-color:var(--light-primary)}.bg-light-text-primary{background-color:var(--light-text-primary)}.bg-light-third{background-color:var(--light-third)}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(254 236 220/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 248 241/var(--tw-bg-opacity,1))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 232 243/var(--tw-bg-opacity,1))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(237 235 254/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(246 245 255/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(253 232 232/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(213 245 246/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/50{background-color:hsla(0,0%,100%,.5)}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-amber-50{--tw-gradient-from:#fffbeb var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,251,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#ebf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(235,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-cyan-50{--tw-gradient-from:#ecfeff var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,254,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from:#06b6d4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(6,182,212,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f3faf7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,250,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from:#6875f5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(104,117,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from:#9061f9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(144,97,249,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500{--tw-gradient-from:#f05252 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,82,82,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:rgba(248,250,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-amber-600{--tw-gradient-to:rgba(217,119,6,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#d97706 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-cyan-600{--tw-gradient-to:rgba(8,145,178,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0891b2 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to:rgba(144,97,249,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#9061f9 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-600{--tw-gradient-to:rgba(126,58,242,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#7e3af2 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-red-600{--tw-gradient-to:rgba(224,36,36,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#e02424 var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-amber-700{--tw-gradient-to:#b45309 var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to:#e1effe var(--tw-gradient-to-position)}.to-cyan-700{--tw-gradient-to:#0e7490 var(--tw-gradient-to-position)}.to-emerald-100{--tw-gradient-to:#d1fae5 var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to:#ecfdf5 var(--tw-gradient-to-position)}.to-orange-100{--tw-gradient-to:#feecdc var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to:#7e3af2 var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to:#6c2bd9 var(--tw-gradient-to-position)}.to-red-700{--tw-gradient-to:#c81e1e var(--tw-gradient-to-position)}.to-slate-200{--tw-gradient-to:#e2e8f0 var(--tw-gradient-to-position)}.to-teal-100{--tw-gradient-to:#d5f5f6 var(--tw-gradient-to-position)}.bg-auto{background-size:auto}.bg-contain{background-size:contain}.bg-cover{background-size:cover}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-11{padding:2.75rem}.p-12{padding:3rem}.p-14{padding:3.5rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-20{padding:5rem}.p-24{padding:6rem}.p-28{padding:7rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-32{padding:8rem}.p-36{padding:9rem}.p-4{padding:1rem}.p-40{padding:10rem}.p-44{padding:11rem}.p-48{padding:12rem}.p-5{padding:1.25rem}.p-52{padding:13rem}.p-56{padding:14rem}.p-6{padding:1.5rem}.p-60{padding:15rem}.p-64{padding:16rem}.p-7{padding:1.75rem}.p-72{padding:18rem}.p-8{padding:2rem}.p-80{padding:20rem}.p-9{padding:2.25rem}.p-96{padding:24rem}.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-10{padding-left:2.5rem;padding-right:2.5rem}.px-11{padding-left:2.75rem;padding-right:2.75rem}.px-12{padding-left:3rem;padding-right:3rem}.px-14{padding-left:3.5rem;padding-right:3.5rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-20{padding-left:5rem;padding-right:5rem}.px-24{padding-left:6rem;padding-right:6rem}.px-28{padding-left:7rem;padding-right:7rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-32{padding-left:8rem;padding-right:8rem}.px-36{padding-left:9rem;padding-right:9rem}.px-4{padding-left:1rem;padding-right:1rem}.px-40{padding-left:10rem;padding-right:10rem}.px-44{padding-left:11rem;padding-right:11rem}.px-48{padding-left:12rem;padding-right:12rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-52{padding-left:13rem;padding-right:13rem}.px-56{padding-left:14rem;padding-right:14rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-60{padding-left:15rem;padding-right:15rem}.px-64{padding-left:16rem;padding-right:16rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-72{padding-left:18rem;padding-right:18rem}.px-8{padding-left:2rem;padding-right:2rem}.px-80{padding-left:20rem;padding-right:20rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.px-96{padding-left:24rem;padding-right:24rem}.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-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-11{padding-top:2.75rem;padding-bottom:2.75rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-28{padding-top:7rem;padding-bottom:7rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-36{padding-top:9rem;padding-bottom:9rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-40{padding-top:10rem;padding-bottom:10rem}.py-44{padding-top:11rem;padding-bottom:11rem}.py-48{padding-top:12rem;padding-bottom:12rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-52{padding-top:13rem;padding-bottom:13rem}.py-56{padding-top:14rem;padding-bottom:14rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-60{padding-top:15rem;padding-bottom:15rem}.py-64{padding-top:16rem;padding-bottom:16rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-72{padding-top:18rem;padding-bottom:18rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-80{padding-top:20rem;padding-bottom:20rem}.py-9{padding-top:2.25rem;padding-bottom:2.25rem}.py-96{padding-top:24rem;padding-bottom:24rem}.py-\[\.1rem\]{padding-top:.1rem;padding-bottom:.1rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-11{padding-bottom:2.75rem}.pb-12{padding-bottom:3rem}.pb-14{padding-bottom:3.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-28{padding-bottom:7rem}.pb-3{padding-bottom:.75rem}.pb-3\.5{padding-bottom:.875rem}.pb-32{padding-bottom:8rem}.pb-36{padding-bottom:9rem}.pb-4{padding-bottom:1rem}.pb-40{padding-bottom:10rem}.pb-44{padding-bottom:11rem}.pb-48{padding-bottom:12rem}.pb-5{padding-bottom:1.25rem}.pb-52{padding-bottom:13rem}.pb-56{padding-bottom:14rem}.pb-6{padding-bottom:1.5rem}.pb-60{padding-bottom:15rem}.pb-64{padding-bottom:16rem}.pb-7{padding-bottom:1.75rem}.pb-72{padding-bottom:18rem}.pb-8{padding-bottom:2rem}.pb-80{padding-bottom:20rem}.pb-9{padding-bottom:2.25rem}.pb-96{padding-bottom:24rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-12{padding-left:3rem}.pl-14{padding-left:3.5rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-20{padding-left:5rem}.pl-24{padding-left:6rem}.pl-28{padding-left:7rem}.pl-3{padding-left:.75rem}.pl-3\.5{padding-left:.875rem}.pl-32{padding-left:8rem}.pl-36{padding-left:9rem}.pl-4{padding-left:1rem}.pl-40{padding-left:10rem}.pl-44{padding-left:11rem}.pl-48{padding-left:12rem}.pl-5{padding-left:1.25rem}.pl-52{padding-left:13rem}.pl-56{padding-left:14rem}.pl-6{padding-left:1.5rem}.pl-60{padding-left:15rem}.pl-64{padding-left:16rem}.pl-7{padding-left:1.75rem}.pl-72{padding-left:18rem}.pl-8{padding-left:2rem}.pl-80{padding-left:20rem}.pl-9{padding-left:2.25rem}.pl-96{padding-left:24rem}.pr-0{padding-right:0}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-11{padding-right:2.75rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-20{padding-right:5rem}.pr-24{padding-right:6rem}.pr-28{padding-right:7rem}.pr-3{padding-right:.75rem}.pr-3\.5{padding-right:.875rem}.pr-32{padding-right:8rem}.pr-36{padding-right:9rem}.pr-4{padding-right:1rem}.pr-40{padding-right:10rem}.pr-44{padding-right:11rem}.pr-48{padding-right:12rem}.pr-5{padding-right:1.25rem}.pr-52{padding-right:13rem}.pr-56{padding-right:14rem}.pr-6{padding-right:1.5rem}.pr-60{padding-right:15rem}.pr-64{padding-right:16rem}.pr-7{padding-right:1.75rem}.pr-72{padding-right:18rem}.pr-8{padding-right:2rem}.pr-80{padding-right:20rem}.pr-9{padding-right:2.25rem}.pr-96{padding-right:24rem}.ps-4{padding-inline-start:1rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-10{padding-top:2.5rem}.pt-11{padding-top:2.75rem}.pt-12{padding-top:3rem}.pt-14{padding-top:3.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-28{padding-top:7rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-32{padding-top:8rem}.pt-36{padding-top:9rem}.pt-4{padding-top:1rem}.pt-40{padding-top:10rem}.pt-44{padding-top:11rem}.pt-48{padding-top:12rem}.pt-5{padding-top:1.25rem}.pt-52{padding-top:13rem}.pt-56{padding-top:14rem}.pt-6{padding-top:1.5rem}.pt-60{padding-top:15rem}.pt-64{padding-top:16rem}.pt-7{padding-top:1.75rem}.pt-72{padding-top:18rem}.pt-8{padding-top:2rem}.pt-80{padding-top:20rem}.pt-9{padding-top:2.25rem}.pt-96{padding-top:24rem}.text-left{text-align:left}.text-center{text-align:center}.text-justify{text-align:justify}.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-6xl{font-size:3.75rem;line-height:1}.text-7xl{font-size:4.5rem;line-height:1}.text-8xl{font-size:6rem;line-height:1}.text-9xl{font-size:8rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity,1))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity,1))}.text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(14 159 110/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(5 122 85/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(4 108 78/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(3 84 63/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(88 80 236/var(--tw-text-opacity,1))}.text-light-primary{color:var(--light-primary)}.text-light-text-primary{color:var(--light-text-primary)}.text-orange-400{--tw-text-opacity:1;color:rgb(255 138 76/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(208 56 1/var(--tw-text-opacity,1))}.text-orange-700{--tw-text-opacity:1;color:rgb(180 52 3/var(--tw-text-opacity,1))}.text-pink-600{--tw-text-opacity:1;color:rgb(214 31 105/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(126 58 242/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(108 43 217/var(--tw-text-opacity,1))}.text-purple-800{--tw-text-opacity:1;color:rgb(85 33 181/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(155 28 28/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(4 116 129/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(194 120 3/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{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 rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{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 rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(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)}.outline{outline-style:solid}.ring{--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(3px + 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)}.blur{--tw-blur:blur(8px)}.blur,.invert{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{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)!important}.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)}.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-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[-\:\=\]{-:=}.\[-_\:\.a-zA-Z0-9\\xc0-\\uffff\]{-_:.a-zA-Z0-9\xc0-\uffff}.\[-_a-zA-Z0-9\:\.\]{-_a-z-a--z0-9:.}.\[_\:a-zA-Z\\xc0-\\uffff\]{_:a-zA-Z\xc0-\uffff}:disabled{cursor:not-allowed!important}.main-content{margin-top:4rem;margin-left:0;min-height:calc(100vh - 9rem);flex-direction:column;padding-left:1rem;padding-right:1rem;display:flex}@media (min-width:640px){.main-content{margin-left:14rem}}@media (min-width:1024px){.main-content{padding-left:2.5rem;padding-right:2.5rem}}.main-content{transition:margin-left .5s ease}#toggleIcon{transition:transform .4s;display:inline-block}.flip{transform:rotateY(90deg)}.apexcharts-tooltip.apexcharts-theme-light{border:1px solid #e3e3e3;background:hsla(0,0%,100%,.96)}.apexcharts-yaxistooltip,.dark .apexcharts-tooltip.apexcharts-theme-light,.dark .apexcharts-xaxistooltip{border:1px solid #1e293b;background:#0d1220}.dark .apexcharts-xaxistooltip-text{color:#e3e3e3!important}body{overflow-x:hidden;background-color:var(--light-secondary);font-family:rubik;color:var(--light-text-primary)}body:is(.dark *){background-color:var(--dark-primary);color:var(--dark-text-primary)}hr{margin-top:1rem;margin-bottom:1rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background-color:var(--light-scrollbar)}:is(.dark *)::-webkit-scrollbar-thumb{background-color:var(--dark-scrollbar)}::-webkit-scrollbar-thumb{border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:var(--light-scrollbar-hover)}:is(.dark *)::-webkit-scrollbar-thumb:hover{background-color:var(--dark-scrollbar-hover)}::-webkit-scrollbar-track{background-color:var(--light-scrollbar-bg)}:is(.dark *)::-webkit-scrollbar-track{background-color:var(--dark-scrollbar-bg)}::-webkit-scrollbar-track{border-radius:10px}.link{color:rgb(28 100 242/var(--tw-text-opacity,1))}.link,.link:hover{--tw-text-opacity:1}.link:hover{color:rgb(26 86 219/var(--tw-text-opacity,1))}.link:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.link:hover:is(.dark *){--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.loading-icon{display:inline-block;margin-left:5px;border-radius:50%;border:2px solid #f3f3f3;border-top-color:#3498db;width:12px;height:12px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-btn.loading{cursor:not-allowed}.nav{position:fixed;top:0;z-index:50;width:100%;border-bottom-width:1px;border-color:var(--light-fourth);background-color:var(--light-primary)}.nav:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-secondary)}.aside-nav{position:fixed;top:0;left:0;z-index:40;height:100vh;width:15rem;--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-right-width:1px;border-color:var(--light-fourth);background-color:var(--light-primary);padding-top:2.75rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.aside-nav:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-secondary)}@media (min-width:640px){.aside-nav{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.a-side-nav{margin:auto;width:90%;border-radius:.6rem;padding:.25rem .75rem;display:flex;align-items:center}.a-side-nav:hover{background-color:var(--light-secondary)}.a-side-nav:hover:is(.dark *){background-color:var(--dark-third)}.a-side-nav i{width:1.25rem;flex-shrink:0;text-align:start;color:var(--light-text-secondary)}.side-nav-active{color:var(--light-primary)}.side-nav-active,.side-nav-active:hover{background-color:var(--nav-sky)}.side-nav-active:hover:is(.dark *){background-color:var(--nav-sky)}.side-nav-active i{color:var(--light-primary)}.side-nav-active i,.side-nav-active i:hover{background-color:var(--nav-sky)}.side-nav-drop-active{margin-left:.5rem;font-weight:500;color:var(--nav-sky)}.side-nav-drop-active:is(.dark *){color:var(--nav-sky-text-dark)}.a-side-nav-dropdown{background-color:var(--nav-sky-light);width:90%;max-height:0;opacity:0;overflow:hidden;border-radius:.6rem;margin-right:auto;margin-left:auto;transition:max-height .4s ease,opacity .4s ease,margin .4s ease,padding .4s ease;will-change:max-height,opacity,margin,padding}.a-side-nav-dropdown.active{max-height:9000px!important;opacity:1;margin:5px auto;padding-top:.4rem;padding-bottom:.4rem}.a-side-nav-dropdown:is(.dark *){background-color:var(--nav-sky-dark)}.a-side-nav-drop{transition:margin-left .2s;width:100%;padding-left:1rem;padding-right:.25rem;padding-top:.25rem;font-size:.875rem;line-height:1.25rem;display:flex;align-items:center}.a-side-nav-drop:hover{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub{transition:none;width:100%;display:block;align-items:center;padding-left:1rem;padding-right:.25rem;padding-top:.25rem;font-size:.9rem;line-height:1.25rem}.a-side-nav-drop-sub-title{transition:margin-left .2s,color .2s;margin-left:0}.a-side-nav-drop-sub:hover .a-side-nav-drop-sub-title{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub-link{transition:margin-left .2s,color .2s;margin-left:0}.a-side-nav-drop-sub-link:hover{margin-left:.5rem;color:var(--nav-sky)}.a-side-nav-drop-sub-link-active{margin-left:.5rem}.a-side-nav-dropdown ul{max-height:0;overflow:hidden;opacity:0;transition:max-height .4s ease,opacity .4s ease;will-change:max-height,opacity}.a-side-nav-dropdown ul.open{opacity:1;max-height:9000px!important}.span-side-nav{margin-left:.75rem;flex:1 1 0%;white-space:nowrap;text-align:left}.span-side-nav:where([dir=rtl],[dir=rtl] *){text-align:right}.sidebar-collapsed .aside-nav{width:0;overflow:hidden}.sidebar-collapsed .main-content,.sidebar-collapsed footer{margin-left:0;width:100%}.aside-nav{transition:width .5s ease!important}footer{margin-top:auto;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}footer:is(.dark *){color:var(--dark-text-secondary)}@media (min-width:640px){footer{margin-left:15rem;transition:margin-left .5s ease;width:calc(100% - 15rem)}}h1{font-size:2.8em}h1,h2{font-weight:700}h2{font-size:2.5em}h3{font-size:2.1em}h3,h4{font-weight:700}h4{font-size:1.9em}h5{font-size:1.6em}h5,h6{font-weight:700}h6{font-size:1.3em}p{font-size:1em}.btn-primary-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary-sm:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-primary-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-primary-xl:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.btn-primary-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(195 221 253/var(--tw-ring-opacity,1))}.btn-info-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info-sm:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-info{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-info-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(118 169 250/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-info-xl:hover{--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity,1))}.btn-info-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(225 239 254/var(--tw-ring-opacity,1))}.btn-success-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success-sm:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-success{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-success-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(14 159 110/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-success-xl:hover{--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1))}.btn-success-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(188 240 218/var(--tw-ring-opacity,1))}.btn-warning-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning-sm:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-warning{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-warning-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-warning-xl:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.btn-warning-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.btn-danger-sm{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger-sm:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger-sm:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.375rem .875rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-danger-xl{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(240 82 82/var(--tw-bg-opacity,1));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--light-primary)}.btn-danger-xl:hover{--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1))}.btn-danger-xl:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(251 213 213/var(--tw-ring-opacity,1))}.btn-center{margin-right:auto}.btn-center,.btn-right{margin-left:auto;display:block}.page-title{display:block}@media (min-width:768px){.page-title{display:inline-flex;align-items:center;justify-content:space-between}}.card{height:-moz-fit-content;height:fit-content;width:100%}.card>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.card{border-radius:.25rem;background-color:var(--light-primary);padding:.75rem}.card:is(.dark *){background-color:var(--dark-secondary)}.card-title{margin-bottom:.5rem;justify-content:space-between;display:flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-2{display:grid}}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-3{display:grid}}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-4{display:grid}}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-5{display:grid}}.grid-6{grid-template-columns:repeat(6,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-6{display:grid}}.grid-7{grid-template-columns:repeat(7,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-7{display:grid}}.grid-8{grid-template-columns:repeat(8,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-8{display:grid}}.grid-9{grid-template-columns:repeat(9,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-9{display:grid}}.grid-10{grid-template-columns:repeat(10,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-10{display:grid}}.grid-11{grid-template-columns:repeat(11,minmax(0,1fr));gap:1.5rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-11{display:grid}}.grid-12{grid-template-columns:repeat(12,minmax(0,1fr));gap:3rem;overflow-wrap:break-word}@media (min-width:1024px){.grid-12{display:grid}}.center-flex{justify-content:center}@media (min-width:1024px){.center-flex{display:flex}}.between-flex{justify-content:space-between}@media (min-width:1024px){.between-flex{display:flex}}.around-flex{justify-content:space-around}@media (min-width:1024px){.around-flex{display:flex}.flex-content-2xl{width:80%}.flex-content-xl{width:66.666667%}.flex-content-lg{width:50%}.flex-content{width:33.333333%}.flex-content-sm{width:25%}}label{display:block;font-weight:500}.input-xl{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem .5rem}.input-xl:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-xl:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-xl:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-xl:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-xl:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-sm{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.input-sm:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-sm:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-sm:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-sm:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-sm:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-xl{margin-bottom:.5rem;display:flex;align-items:center}.input-group-xl i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:1rem;color:var(--light-text-secondary)}.input-group-xl i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-xl input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem}.input-group-xl input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-xl input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-xl input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-xl input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-xl input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group{margin-bottom:.5rem;display:flex;align-items:center}.input-group i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.625rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}.input-group i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input-group input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-sm{margin-bottom:.5rem;display:flex;align-items:center}.input-group-sm i{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-width:1px;border-left-width:1px;border-bottom-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.375rem;font-size:.875rem;line-height:1.25rem;color:var(--light-text-secondary)}.input-group-sm i:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-sm input{display:block;width:100%;min-width:0;flex:1 1 0%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem}.input-group-sm input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-group-sm input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-group-sm input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-sm input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-group-sm input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.helper-input{margin-top:-.5rem;font-size:.75rem;line-height:1rem;font-style:italic}.input-btn-xl{position:relative;width:100%}.input-btn-xl input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.75rem .5rem}.input-btn-xl input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-xl input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn-xl input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-xl input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-xl input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-xl button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn-xl button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn-xl button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn-xl button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn-xl button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn-xl button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}.input-btn{position:relative;width:100%}.input-btn input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.5rem}.input-btn input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}.input-btn-sm{position:relative;width:100%}.input-btn-sm input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.input-btn-sm input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-sm input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.input-btn-sm input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-sm input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.input-btn-sm input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.input-btn-sm button{position:absolute;top:0;right:0;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1));padding-left:.625rem;padding-right:.625rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary)}.input-btn-sm button:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.input-btn-sm button: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(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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.input-btn-sm button:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.input-btn-sm button:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.input-btn-sm button:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity,1))}input[type=file]{width:100%;cursor:pointer;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg)}input[type=file]:focus{outline:2px solid transparent;outline-offset:2px}input[type=file]:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}input[type=file]:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}input[type=file]:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}select{display:block;width:100%;cursor:pointer;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg)}select:focus{outline:2px solid transparent;outline-offset:2px}select:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}select:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}select:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.choices__inner{display:block;min-height:42px;width:100%;overflow:hidden;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.375rem .5rem;vertical-align:top;font-size:.875rem;line-height:1.25rem}.choices__inner:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.tooltip.choices__list--dropdown>.tooltip-arrow:before,[role=tooltip].choices__list--dropdown>[data-popper-arrow]:after,[role=tooltip].choices__list--dropdown>[data-popper-arrow]:before{visibility:hidden}.choices__list--dropdown{position:absolute;top:100%;z-index:50;margin-top:-.25rem;width:100%;overflow:hidden;border-radius:.5rem;border-width:1px;border-color:var(--dark-fourth);background-color:var(--light-input-bg);visibility:hidden}.choices__list--dropdown:is(.dark *){background-color:var(--dark-input-bg)}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:var(--light-secondary)}.choices__list--dropdown .choices__item--selectable.is-highlighted:is(.dark *){background-color:var(--dark-secondary)}.toggle{display:inline-flex;cursor:pointer;align-items:center}.toggle .toggle-input{position:absolute;margin:-.25rem;height:.25rem;width:.25rem;overflow:hidden;white-space:nowrap;border-width:0;padding:0;clip:rect(0,0,0,0)}.toggle .toggle-slider{position:relative;margin-right:.5rem;height:1rem;width:1.75rem;border-radius:9999px;background-color:var(--light-third)}.toggle .toggle-slider:is(.dark *){background-color:var(--dark-third)}.toggle .toggle-slider{transition:background-color .2s ease-in-out}.toggle .toggle-slider:after{position:absolute;top:2px;left:2px;height:.75rem;width:.75rem;border-radius:9999px;border-width:1px;border-color:var(--light-third);background-color:var(--light-primary)}.toggle .toggle-slider:is(.dark *):after{border-color:var(--dark-fourth);background-color:var(--dark-secondary)}.toggle .toggle-slider:after{content:"";transition:transform .2s ease-in-out}.toggle .toggle-label{margin-right:.5rem;font-weight:500}.toggle input:checked+.toggle-slider{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.toggle input:checked+.toggle-slider:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.toggle input:checked+.toggle-slider:after{transform:translateX(100%)}.checkbox{margin-bottom:.25rem;display:flex;align-items:center}.checkbox input{margin-right:.5rem;height:1rem;width:1rem;border-radius:.25rem;border-color:var(--light-third);background-color:var(--light-secondary);--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.checkbox input:focus{--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);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.checkbox input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-third);--tw-ring-offset-color:#1f2937}.checkbox input:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity,1))}.checkbox label{margin-right:.5rem}.textarea{display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.625rem;--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.textarea:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.textarea:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-third);color:var(--light-primary)}.textarea:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.textarea:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.textarea:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.icon-picker{position:relative;z-index:30}.icon-picker i{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.icon-picker i:is(.dark *){color:var(--light-primary)}.icon-list{position:static;top:100%;left:1.75rem;z-index:5100;display:none;max-height:18rem;width:20rem;overflow-y:scroll;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);font-size:1.25rem;line-height:1.75rem}.icon-list:is(.dark *){background-color:var(--dark-input-bg)}.icon-list i{height:1.75rem;width:1.75rem;cursor:pointer;border-radius:.5rem;padding:.25rem;text-align:center}.icon-list i:hover{--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.page-loader{position:relative;height:80vh}.loader{width:48px;height:48px;margin:auto;top:50%;position:relative}.loader:before{width:48px;height:5px;background:#9b9b9b;opacity:.25;top:60px;border-radius:50%;animation:shadow .5s linear infinite}.loader:after,.loader:before{content:"";position:absolute;left:0}.loader:after{width:100%;height:100%;background:#a90a59;animation:bxSpin .5s linear infinite;top:0;border-radius:4px}@keyframes bxSpin{17%{border-bottom-right-radius:3px}25%{transform:translateY(9px) rotate(22.5deg)}50%{transform:translateY(18px) scaleY(.9) rotate(45deg);border-bottom-right-radius:40px}75%{transform:translateY(9px) rotate(67.5deg)}to{transform:translateY(0) rotate(90deg)}}@keyframes shadow{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}.content-loader{display:none}.table-container{position:relative;height:-moz-fit-content;height:fit-content;overflow-x:auto;border-radius:.5rem;border-width:1px}.table-container:is(.dark *){border-color:var(--dark-input-bg)}.table-container table{width:100%;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.table-container table:is(.dark *){color:var(--light-fourth)}.table-container table:where([dir=rtl],[dir=rtl] *){text-align:right}.table-container thead{border-bottom-width:1px;background-color:var(--light-secondary);text-transform:uppercase;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.table-container thead:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.table-container thead th{padding:.75rem .5rem}.table-container tbody tr{border-bottom-width:1px;background-color:var(--light-primary)}.table-container tbody tr:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth)}.table-container tbody td{padding:.75rem .5rem}.table-container-striped tbody tr:nth-child(odd){background-color:var(--light-primary)}.table-container-striped tbody tr:nth-child(odd):is(.dark *){background-color:var(--dark-secondary)}.table-container-striped tbody tr:nth-child(2n){background-color:var(--light-secondary)}.table-container-striped tbody tr:nth-child(2n):is(.dark *){background-color:var(--dark-third)}.dataTable-top{justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}.dataTable-top:is(.dark *){border-color:var(--dark-input-bg)}@media (min-width:1024px){.dataTable-top{display:flex}}.dataTable-input{margin-bottom:.5rem;display:block;width:100%;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-input-bg);padding:.25rem .5rem}.dataTable-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.dataTable-input:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-input-bg)}.dataTable-input:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dataTable-input:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dataTable-input:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.dataTable-selector{text-align:right}.dataTable-bottom{justify-content:space-between;padding:.75rem .5rem;align-items:center}@media (min-width:1024px){.dataTable-bottom{display:flex}}.dataTable-pagination-list{display:flex;height:2rem;align-items:center}.dataTable-pagination-list>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.dataTable-pagination-list{font-size:.875rem;line-height:1.25rem;display:flex;align-items:center}.dataTable-pagination-list li{border-width:1px;border-color:var(--light-third);background-color:var(--light-primary);line-height:1.25;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1));display:flex;justify-content:center;align-items:center}.dataTable-pagination-list li:hover{background-color:var(--light-secondary);--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.dataTable-pagination-list li:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dataTable-pagination-list li:hover:is(.dark *){background-color:var(--dark-third);color:var(--light-primary)}.dataTable-pagination-list a{padding:.5rem .75rem}.dataTable-pagination-list .active{border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.dataTable-pagination-list .active:hover{--tw-bg-opacity:1;background-color:rgb(225 239 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity,1))}.dataTable-pagination-list .active:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.dataTable-sorter{position:relative;padding-right:20px}.dataTable-sorter:after,.dataTable-sorter:before{content:"";position:absolute;right:5px;border:solid transparent;width:0;height:0}.dataTable-sorter:before{border-width:0 4px 4px;border-bottom-color:#000;top:35%;transform:translateY(-100%)}.dataTable-sorter:after{border-width:4px 4px 0;border-top-color:#000;top:65%;transform:translateY(0)}.alert{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-secondary);padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.alert:is(.dark *){border-color:var(--dark-text-secondary);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.alert-info{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.alert-info:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 66 159/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(118 169 250/var(--tw-text-opacity,1))}.alert-success{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(132 225 188/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(243 250 247/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(3 84 63/var(--tw-text-opacity,1))}.alert-success:is(.dark *){--tw-border-opacity:1;border-color:rgb(3 84 63/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(49 196 141/var(--tw-text-opacity,1))}.alert-warning{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(250 202 21/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 253 234/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(114 59 19/var(--tw-text-opacity,1))}.alert-warning:is(.dark *){--tw-border-opacity:1;border-color:rgb(114 59 19/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(250 202 21/var(--tw-text-opacity,1))}.alert-danger{margin-top:0;margin-bottom:0;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(248 180 180/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity,1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(155 28 28/var(--tw-text-opacity,1))}.alert-danger:is(.dark *){--tw-border-opacity:1;border-color:rgb(155 28 28/var(--tw-border-opacity,1));background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.badge{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1));background-color:var(--light-secondary);padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.badge:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.badge-info{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(222 247 236/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.badge-info:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(118 169 250/var(--tw-text-opacity,1))}.badge-success{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(49 196 141/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(222 247 236/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(3 84 63/var(--tw-text-opacity,1))}.badge-success:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(49 196 141/var(--tw-text-opacity,1))}.badge-warning{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(250 202 21/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 246 178/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(114 59 19/var(--tw-text-opacity,1))}.badge-warning:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(250 202 21/var(--tw-text-opacity,1))}.badge-danger{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(249 128 128/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(253 232 232/var(--tw-bg-opacity,1));padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(155 28 28/var(--tw-text-opacity,1))}.badge-danger:is(.dark *){background-color:var(--dark-third);--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.avatar-rounded{border-radius:9999px}.avatar-rounded,.avatar-square{height:2.5rem;width:2.5rem;background-size:contain}.avatar-square{border-radius:.5rem}.avatar-rounded-ring{height:2.5rem;width:2.5rem;border-radius:9999px;background-size:contain;padding:.25rem;--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);--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.avatar-rounded-ring:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.avatar-square-ring{height:2.5rem;width:2.5rem;border-radius:.5rem;background-size:contain;padding:.25rem;--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);--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.avatar-square-ring:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.avatar-text{gap:1rem;display:flex;align-items:center}.dropdown,.dropdown-hover{position:relative;display:inline-block}.dropdown-opener{cursor:pointer}.dropdown-content{position:absolute;margin-top:.25rem;display:none;border-radius:.25rem;background-color:var(--light-primary);padding:.5rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(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)}.dropdown-content:is(.dark *){background-color:var(--dark-third)}kbd{border-radius:.5rem;border-width:1px;border-color:var(--light-fourth);background-color:var(--light-secondary);padding:.375rem .5rem;font-size:.75rem;line-height:1rem;font-weight:600;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}kbd:is(.dark *){--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1));background-color:var(--dark-secondary);--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.modal-container{position:fixed;top:0;right:0;left:0;z-index:600000;display:none;height:calc(100% - 1rem);width:100%;overflow-y:auto;overflow-x:hidden;justify-content:center;align-items:center}@media (min-width:768px){.modal-container{inset:0}}.modal-sm{position:relative;max-height:100%;width:100%;max-width:28rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-sm:is(.dark *){background-color:var(--dark-third)}.modal{position:relative;max-height:100%;width:100%;max-width:42rem;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal:is(.dark *){background-color:var(--dark-third)}.modal-lg{position:relative;max-height:100%;width:100%;max-width:56rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-lg:is(.dark *){background-color:var(--dark-third)}.modal-xl{position:relative;max-height:100%;width:100%;max-width:80rem;overflow:hidden;border-radius:.5rem;background-color:var(--light-primary);--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(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)}.modal-xl:is(.dark *){background-color:var(--dark-third)}.modal-header{justify-content:space-between;border-bottom-width:1px;padding:1rem;display:flex;align-items:center}.modal-header:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header{padding:1.25rem}}.modal-header-warning{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-warning:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-warning{padding:1.25rem}}.modal-header-success{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(5 122 85/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-success:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-success{padding:1.25rem}}.modal-header-danger{justify-content:space-between;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity,1));padding:1rem;color:var(--light-primary);display:flex;align-items:center}.modal-header-danger:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-header-danger{padding:1.25rem}}.modal-footer{display:flex;justify-content:flex-end}.modal-footer>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.modal-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;border-top-width:1px;border-color:var(--light-fourth);padding:1rem;display:flex}.modal-footer:is(.dark *){border-color:var(--dark-text-secondary)}@media (min-width:768px){.modal-footer{padding:1.25rem}}.modal-body{max-height:60vh}.modal-body>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.modal-body{overflow-y:auto;padding:1rem}@media (min-width:768px){.modal-body{max-height:60vh;overflow-y:auto;padding:1.25rem}}.pagination{display:flex;height:2rem;align-items:center}.pagination>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*var(--tw-space-x-reverse));margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)))}.pagination{font-size:.875rem;line-height:1.25rem}.pagination,.pagination-link{display:flex;align-items:center}.pagination-link{height:2rem;border-width:1px;border-color:var(--light-third);background-color:var(--light-primary);padding-left:.75rem;padding-right:.75rem;line-height:1.25;color:rgb(107 114 128/var(--tw-text-opacity,1));justify-content:center}.pagination-link,.pagination-link:hover{--tw-text-opacity:1}.pagination-link:hover{background-color:var(--light-secondary);color:rgb(55 65 81/var(--tw-text-opacity,1))}.pagination-link:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-fourth);--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.pagination-link:hover:is(.dark *){background-color:var(--dark-third);color:var(--light-primary)}.pagination-link-active{z-index:10;height:2rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));background-color:rgb(235 245 255/var(--tw-bg-opacity,1));padding-left:.75rem;padding-right:.75rem;line-height:1.25;color:rgb(28 100 242/var(--tw-text-opacity,1));display:flex;justify-content:center;align-items:center}.pagination-link-active,.pagination-link-active:hover{--tw-bg-opacity:1;--tw-text-opacity:1}.pagination-link-active:hover{background-color:rgb(225 239 254/var(--tw-bg-opacity,1));color:rgb(26 86 219/var(--tw-text-opacity,1))}.pagination-link-active:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.tab-menu{margin-bottom:1rem;border-bottom-width:1px;border-color:var(--light-fourth)}.tab-menu:is(.dark *){border-color:var(--dark-input-bg)}.tab-horizontal{margin-bottom:-1px;flex-wrap:wrap;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;display:flex}.tab-horizontal button{display:inline-block;border-bottom-width:2px;padding:1rem}.tab-vertical{margin-bottom:1rem;display:flex;flex-direction:column}.tab-vertical>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.tab-vertical{font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1));display:flex}.tab-vertical:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}@media (min-width:768px){.tab-vertical{margin-right:1rem;margin-bottom:0}}.tab-vertical button{display:inline-flex;width:100%;min-width:10rem;align-items:center;border-radius:.5rem;background-color:var(--light-primary);padding:.75rem 1rem}.a-side-nav-dropdown.tab-vertical button{max-height:9000px;opacity:1;margin:5px auto;padding-top:.4rem;padding-bottom:.4rem}.dataTable-pagination-list .tab-vertical button{border-width:1px;--tw-border-opacity:1;border-color:rgb(164 202 254/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(235 245 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.dataTable-pagination-list .tab-vertical button:hover{--tw-bg-opacity:1;background-color:rgb(225 239 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity,1))}.dataTable-pagination-list .tab-vertical button:is(.dark *){border-color:var(--dark-input-bg);background-color:var(--dark-third);color:var(--light-primary)}.tab-vertical button{align-items:center}.tab-vertical button:is(.dark *){background-color:var(--dark-fourth)}@media (min-width:768px){.tab-vertical-container{display:flex}}.tab-container{width:100%}.tab-content{display:none}.tab-button{width:100%;cursor:pointer;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-width:1px;padding:.25rem;display:flex;align-items:center}[data-tooltip-style^=light]+.tooltip-content>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip-content[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip-content[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip-content[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip-content[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip-content[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip-content,.tooltip-content.invisible>.tooltip-arrow:before,.tooltip.tooltip-content>.tooltip-arrow:before,[role=tooltip].tooltip-content>[data-popper-arrow]:after,[role=tooltip].tooltip-content>[data-popper-arrow]:before{visibility:hidden}.tooltip-content{position:absolute;z-index:9000;display:inline-block;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--light-primary);--tw-shadow:0 1px 2px 0 rgba(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);opacity:0}.tooltip-content:is(.dark *){background-color:var(--dark-third);color:var(--dark-text-primary)}.flex{display:flex!important}.justify-center{justify-content:center!important}.items-center{align-items:center!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.opacity-0{opacity:0!important}.opacity-100{opacity:1!important}.transform-none{transform:none!important}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity,1))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-purple-200:hover{--tw-bg-opacity:1;background-color:rgb(220 215 254/var(--tw-bg-opacity,1))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(251 213 213/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity,1))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 66 159/var(--tw-text-opacity,1))}.hover\:text-cyan-800:hover{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity,1))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--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)}.focus\:ring-2:focus,.focus\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-4:focus{--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)}.focus\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity,1))}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity,1))}.focus\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity,1))}.focus\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(75 85 99/var(--tw-divide-opacity,1))}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity,1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity,1))}.dark\:border-blue-500:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity,1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 66 159/var(--tw-border-opacity,1))}.dark\:border-cyan-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity,1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(3 84 63/var(--tw-border-opacity,1))}.dark\:border-transparent:is(.dark *){border-color:transparent}.dark\:bg-amber-800\/50:is(.dark *){background-color:rgba(146,64,14,.5)}.dark\:bg-amber-900\/20:is(.dark *){background-color:rgba(120,53,15,.2)}.dark\:bg-amber-900\/30:is(.dark *){background-color:rgba(120,53,15,.3)}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity,1))}.dark\:bg-blue-800\/50:is(.dark *){background-color:rgba(30,66,159,.5)}.dark\:bg-blue-900\/20:is(.dark *){background-color:rgba(35,56,118,.2)}.dark\:bg-blue-900\/30:is(.dark *){background-color:rgba(35,56,118,.3)}.dark\:bg-cyan-800\/50:is(.dark *){background-color:rgba(21,94,117,.5)}.dark\:bg-cyan-900\/20:is(.dark *){background-color:rgba(22,78,99,.2)}.dark\:bg-cyan-900\/30:is(.dark *){background-color:rgba(22,78,99,.3)}.dark\:bg-emerald-900\/30:is(.dark *){background-color:rgba(6,78,59,.3)}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-800\/50:is(.dark *){background-color:rgba(31,41,55,.5)}.dark\:bg-green-800\/50:is(.dark *){background-color:rgba(3,84,63,.5)}.dark\:bg-green-900\/20:is(.dark *){background-color:rgba(1,71,55,.2)}.dark\:bg-green-900\/30:is(.dark *){background-color:rgba(1,71,55,.3)}.dark\:bg-indigo-900\/30:is(.dark *){background-color:rgba(54,47,120,.3)}.dark\:bg-orange-900\/20:is(.dark *){background-color:rgba(119,29,29,.2)}.dark\:bg-orange-900\/30:is(.dark *){background-color:rgba(119,29,29,.3)}.dark\:bg-pink-900\/30:is(.dark *){background-color:rgba(117,26,61,.3)}.dark\:bg-purple-900\/20:is(.dark *){background-color:rgba(74,29,150,.2)}.dark\:bg-purple-900\/30:is(.dark *){background-color:rgba(74,29,150,.3)}.dark\:bg-red-900\/20:is(.dark *){background-color:rgba(119,29,29,.2)}.dark\:bg-red-900\/30:is(.dark *){background-color:rgba(119,29,29,.3)}.dark\:bg-teal-900\/30:is(.dark *){background-color:rgba(1,68,81,.3)}.dark\:bg-opacity-80:is(.dark *){--tw-bg-opacity:0.8}.dark\:from-amber-600:is(.dark *){--tw-gradient-from:#d97706 var(--tw-gradient-from-position);--tw-gradient-to:rgba(217,119,6,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-amber-900\/20:is(.dark *){--tw-gradient-from:rgba(120,53,15,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(120,53,15,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from:rgba(35,56,118,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(35,56,118,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-cyan-600:is(.dark *){--tw-gradient-from:#0891b2 var(--tw-gradient-from-position);--tw-gradient-to:rgba(8,145,178,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-cyan-900\/20:is(.dark *){--tw-gradient-from:rgba(22,78,99,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(22,78,99,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-gray-800:is(.dark *){--tw-gradient-from:#1f2937 var(--tw-gradient-from-position);--tw-gradient-to:rgba(31,41,55,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from:rgba(1,71,55,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(1,71,55,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-indigo-600:is(.dark *){--tw-gradient-from:#5850ec var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,80,236,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-600:is(.dark *){--tw-gradient-from:#7e3af2 var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,58,242,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-600:is(.dark *){--tw-gradient-from:#e02424 var(--tw-gradient-from-position);--tw-gradient-to:rgba(224,36,36,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:via-amber-700:is(.dark *){--tw-gradient-to:rgba(180,83,9,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#b45309 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-cyan-700:is(.dark *){--tw-gradient-to:rgba(14,116,144,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0e7490 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-purple-600:is(.dark *){--tw-gradient-to:rgba(126,58,242,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#7e3af2 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-purple-700:is(.dark *){--tw-gradient-to:rgba(108,43,217,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#6c2bd9 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-700:is(.dark *){--tw-gradient-to:rgba(200,30,30,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#c81e1e var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-amber-800:is(.dark *){--tw-gradient-to:#92400e var(--tw-gradient-to-position)}.dark\:to-blue-800\/30:is(.dark *){--tw-gradient-to:rgba(30,66,159,.3) var(--tw-gradient-to-position)}.dark\:to-cyan-800:is(.dark *){--tw-gradient-to:#155e75 var(--tw-gradient-to-position)}.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-to:rgba(6,78,59,.2) var(--tw-gradient-to-position)}.dark\:to-emerald-900\/30:is(.dark *){--tw-gradient-to:rgba(6,78,59,.3) var(--tw-gradient-to-position)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to:#374151 var(--tw-gradient-to-position)}.dark\:to-orange-900\/30:is(.dark *){--tw-gradient-to:rgba(119,29,29,.3) var(--tw-gradient-to-position)}.dark\:to-purple-700:is(.dark *){--tw-gradient-to:#6c2bd9 var(--tw-gradient-to-position)}.dark\:to-purple-800:is(.dark *){--tw-gradient-to:#5521b5 var(--tw-gradient-to-position)}.dark\:to-red-800:is(.dark *){--tw-gradient-to:#9b1c1c var(--tw-gradient-to-position)}.dark\:to-teal-900\/30:is(.dark *){--tw-gradient-to:rgba(1,68,81,.3) var(--tw-gradient-to-position)}.dark\:text-amber-200:is(.dark *){--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(164 202 254/var(--tw-text-opacity,1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity:1;color:rgb(118 169 250/var(--tw-text-opacity,1))}.dark\:text-blue-500:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.dark\:text-cyan-200:is(.dark *){--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity,1))}.dark\:text-cyan-300:is(.dark *){--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.dark\:text-cyan-400:is(.dark *){--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity,1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity:1;color:rgb(188 240 218/var(--tw-text-opacity,1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity:1;color:rgb(132 225 188/var(--tw-text-opacity,1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(49 196 141/var(--tw-text-opacity,1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity:1;color:rgb(141 162 251/var(--tw-text-opacity,1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 140/var(--tw-text-opacity,1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity:1;color:rgb(255 138 76/var(--tw-text-opacity,1))}.dark\:text-pink-400:is(.dark *){--tw-text-opacity:1;color:rgb(241 126 184/var(--tw-text-opacity,1))}.dark\:text-purple-200:is(.dark *){--tw-text-opacity:1;color:rgb(220 215 254/var(--tw-text-opacity,1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity:1;color:rgb(202 191 253/var(--tw-text-opacity,1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity:1;color:rgb(172 148 250/var(--tw-text-opacity,1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity:1;color:rgb(251 213 213/var(--tw-text-opacity,1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity:1;color:rgb(248 180 180/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(249 128 128/var(--tw-text-opacity,1))}.dark\:text-teal-400:is(.dark *){--tw-text-opacity:1;color:rgb(22 189 202/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:hover\:bg-amber-800\/40:hover:is(.dark *){background-color:rgba(146,64,14,.4)}.dark\:hover\:bg-amber-900\/10:hover:is(.dark *){background-color:rgba(120,53,15,.1)}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity,1))}.dark\:hover\:bg-cyan-800\/40:hover:is(.dark *){background-color:rgba(21,94,117,.4)}.dark\:hover\:bg-cyan-900\/10:hover:is(.dark *){background-color:rgba(22,78,99,.1)}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:hover\:bg-purple-800\/40:hover:is(.dark *){background-color:rgba(85,33,181,.4)}.dark\:hover\:bg-purple-900\/10:hover:is(.dark *){background-color:rgba(74,29,150,.1)}.dark\:hover\:bg-red-800\/40:hover:is(.dark *){background-color:rgba(155,28,28,.4)}.dark\:hover\:bg-red-900\/10:hover:is(.dark *){background-color:rgba(119,29,29,.1)}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(164 202 254/var(--tw-text-opacity,1))}.dark\:hover\:text-blue-500:hover:is(.dark *){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity,1))}.dark\:hover\:text-cyan-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:ml-11{margin-left:2.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-initial{flex:0 1 auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}}@media (min-width:768px){.md\:flex{display:flex}.md\:h-40{height:10rem}.md\:w-40{width:10rem}.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\:flex-row{flex-direction:row}.md\:text-left{text-align:left}.md\:text-5xl{font-size:3rem;line-height:1}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:mt-0{margin-top:0}.lg\:mt-4{margin-top:1rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-1\/2{width:50%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pb-0{padding-bottom:0}.lg\:pl-3{padding-left:.75rem}}.rtl\:justify-end:where([dir=rtl],[dir=rtl] *){justify-content:flex-end} diff --git a/Admin/Resources/Vendors/Tinymce/Config/full.js b/Admin/Resources/Vendors/Tinymce/Config/full.js index e746be43..34eb3497 100644 --- a/Admin/Resources/Vendors/Tinymce/Config/full.js +++ b/Admin/Resources/Vendors/Tinymce/Config/full.js @@ -38,6 +38,23 @@ document.addEventListener("DOMContentLoaded", function () { xhr.send(formData); }); + function applyTinyCustomClasses(node) { + if (!node || !node.nodeName || !node.classList) return; + + const tag = node.nodeName.toLowerCase(); + const className = `${tag}-tmce`; + + Array.from(node.classList).forEach(cls => { + if (cls.endsWith('-tmce') && cls !== className) { + node.classList.remove(cls); + } + }); + + if (!node.classList.contains(className)) { + node.classList.add(className); + } + } + function initTinyMCE(skin) { tinymce.init({ selector: `.tinymce`, @@ -73,6 +90,25 @@ document.addEventListener("DOMContentLoaded", function () { const minHeight = textarea.getAttribute('data-tiny-height') || 350; editor.editorContainer.style.minHeight = `${minHeight}px`; }); + + editor.on('NodeChange', function(e) { + if (e.element) { + applyTinyCustomClasses(e.element); + } + }); + + editor.on('BeforeSetContent', function(e) { + if (e.content) { + const div = document.createElement('div'); + div.innerHTML = e.content; + + div.querySelectorAll('*').forEach(function(el) { + applyTinyCustomClasses(el); + }); + + e.content = div.innerHTML; + } + }); } }); } @@ -90,4 +126,4 @@ document.addEventListener("DOMContentLoaded", function () { tinymce.remove('.tinymce'); initTinyMCE(newTheme); }); -}); +}); \ No newline at end of file diff --git a/Admin/Resources/Vendors/Tinymce/Config/full_absolute_links.js b/Admin/Resources/Vendors/Tinymce/Config/full_absolute_links.js index 9117f483..b6782f62 100644 --- a/Admin/Resources/Vendors/Tinymce/Config/full_absolute_links.js +++ b/Admin/Resources/Vendors/Tinymce/Config/full_absolute_links.js @@ -38,6 +38,23 @@ document.addEventListener("DOMContentLoaded", function () { xhr.send(formData); }); + function applyTinyCustomClasses(node) { + if (!node || !node.nodeName || !node.classList) return; + + const tag = node.nodeName.toLowerCase(); + const className = `${tag}-tmce`; + + Array.from(node.classList).forEach(cls => { + if (cls.endsWith('-tmce') && cls !== className) { + node.classList.remove(cls); + } + }); + + if (!node.classList.contains(className)) { + node.classList.add(className); + } + } + function initTinyMCE(skin) { document.querySelectorAll('.tinymce').forEach(function(textarea) { const minHeight = textarea.getAttribute('data-tiny-height') || 350; @@ -77,6 +94,25 @@ document.addEventListener("DOMContentLoaded", function () { const minHeight = currentTextarea.getAttribute('data-tiny-height') || 350; editor.editorContainer.style.minHeight = `${minHeight}px`; }); + + editor.on('NodeChange', function(e) { + if (e.element) { + applyTinyCustomClasses(e.element); + } + }); + + editor.on('BeforeSetContent', function(e) { + if (e.content) { + const div = document.createElement('div'); + div.innerHTML = e.content; + + div.querySelectorAll('*').forEach(function(el) { + applyTinyCustomClasses(el); + }); + + e.content = div.innerHTML; + } + }); } }); }); diff --git a/Admin/Resources/Vendors/Tinymce/Config/light.js b/Admin/Resources/Vendors/Tinymce/Config/light.js index 51332138..c5961329 100644 --- a/Admin/Resources/Vendors/Tinymce/Config/light.js +++ b/Admin/Resources/Vendors/Tinymce/Config/light.js @@ -38,6 +38,23 @@ document.addEventListener("DOMContentLoaded", function () { xhr.send(formData); }); + function applyTinyCustomClasses(node) { + if (!node || !node.nodeName || !node.classList) return; + + const tag = node.nodeName.toLowerCase(); + const className = `${tag}-tmce`; + + Array.from(node.classList).forEach(cls => { + if (cls.endsWith('-tmce') && cls !== className) { + node.classList.remove(cls); + } + }); + + if (!node.classList.contains(className)) { + node.classList.add(className); + } + } + function initTinyMCE(skin) { document.querySelectorAll('.tinymce').forEach(function(textarea) { const minHeight = textarea.getAttribute('data-tiny-height') || 350; @@ -69,6 +86,25 @@ document.addEventListener("DOMContentLoaded", function () { const minHeight = currentTextarea.getAttribute('data-tiny-height') || 350; editor.editorContainer.style.minHeight = `${minHeight}px`; }); + + editor.on('NodeChange', function(e) { + if (e.element) { + applyTinyCustomClasses(e.element); + } + }); + + editor.on('BeforeSetContent', function(e) { + if (e.content) { + const div = document.createElement('div'); + div.innerHTML = e.content; + + div.querySelectorAll('*').forEach(function(el) { + applyTinyCustomClasses(el); + }); + + e.content = div.innerHTML; + } + }); } }); }); diff --git a/Admin/Resources/Vendors/Tinymce/Config/medium.js b/Admin/Resources/Vendors/Tinymce/Config/medium.js index 983876fe..6a0294a5 100644 --- a/Admin/Resources/Vendors/Tinymce/Config/medium.js +++ b/Admin/Resources/Vendors/Tinymce/Config/medium.js @@ -38,6 +38,23 @@ document.addEventListener("DOMContentLoaded", function () { xhr.send(formData); }); + function applyTinyCustomClasses(node) { + if (!node || !node.nodeName || !node.classList) return; + + const tag = node.nodeName.toLowerCase(); + const className = `${tag}-tmce`; + + Array.from(node.classList).forEach(cls => { + if (cls.endsWith('-tmce') && cls !== className) { + node.classList.remove(cls); + } + }); + + if (!node.classList.contains(className)) { + node.classList.add(className); + } + } + function initTinyMCE(skin) { document.querySelectorAll('.tinymce').forEach(function(textarea) { const minHeight = textarea.getAttribute('data-tiny-height') || 350; @@ -73,6 +90,25 @@ document.addEventListener("DOMContentLoaded", function () { const minHeight = currentTextarea.getAttribute('data-tiny-height') || 350; editor.editorContainer.style.minHeight = `${minHeight}px`; }); + + editor.on('NodeChange', function(e) { + if (e.element) { + applyTinyCustomClasses(e.element); + } + }); + + editor.on('BeforeSetContent', function(e) { + if (e.content) { + const div = document.createElement('div'); + div.innerHTML = e.content; + + div.querySelectorAll('*').forEach(function(el) { + applyTinyCustomClasses(el); + }); + + e.content = div.innerHTML; + } + }); } }); }); diff --git a/Admin/Resources/Vendors/Tinymce/skins/content/theme-dark/content.min.css b/Admin/Resources/Vendors/Tinymce/skins/content/theme-dark/content.min.css index c9fe30a0..e4924d0d 100644 --- a/Admin/Resources/Vendors/Tinymce/skins/content/theme-dark/content.min.css +++ b/Admin/Resources/Vendors/Tinymce/skins/content/theme-dark/content.min.css @@ -1 +1 @@ -body{background-color:#222f3e;color:#fff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} +body{background-color:#0E0E12;color:#fff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} diff --git a/Admin/Resources/Vendors/Tinymce/skins/ui/theme-dark/skin.min.css b/Admin/Resources/Vendors/Tinymce/skins/ui/theme-dark/skin.min.css index ace7263f..86c73136 100644 --- a/Admin/Resources/Vendors/Tinymce/skins/ui/theme-dark/skin.min.css +++ b/Admin/Resources/Vendors/Tinymce/skins/ui/theme-dark/skin.min.css @@ -1 +1 @@ -.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:2px solid #161f29;border-radius:10px;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox.tox-tinymce-inline{border:none;box-shadow:none;overflow:initial}.tox.tox-tinymce-inline .tox-editor-container{overflow:initial}.tox.tox-tinymce-inline .tox-editor-header{background-color:#222f3e;border:2px solid #161f29;border-radius:10px;box-shadow:none;overflow:hidden}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border-radius:6px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>div>div .tox-icon svg{display:block}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(0,101,216,.4);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon{background-color:#006ce7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover{background-color:#0060ce}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active{background-color:#0054b4}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon{background-color:#ffe89d;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover{background-color:#f2d574;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active{background-color:#e8c657;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon{background-color:#f2bfbf;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover{background-color:#e9a4a4;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active{background-color:#ee9494;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{display:none}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{font-size:14px;margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox .tox-advtemplate .tox-form__grid{flex:1}.tox .tox-advtemplate .tox-form__grid>div:first-child{display:flex;flex-direction:column;width:30%}.tox .tox-advtemplate .tox-form__grid>div:first-child>div:nth-child(2){flex-basis:0;flex-grow:1;overflow:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid>div:first-child{width:100%}}.tox .tox-advtemplate iframe{border-color:#161f29;border-radius:10px;border-style:solid;border-width:1px;margin:0 10px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#006ce7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#006ce7;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button::before{border-radius:6px;bottom:-1px;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #006ce7,0 0 0 3px rgba(0,108,231,.25);content:'';left:-1px;opacity:0;pointer-events:none;position:absolute;right:-1px;top:-1px}.tox .tox-button[disabled]{background-color:#006ce7;background-image:none;border-color:#006ce7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:focus-visible:not(:disabled)::before{opacity:1}.tox .tox-button:hover:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled[disabled]{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button.tox-button--enabled:focus:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:hover:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:active:not(:disabled){background-color:#003c81;background-image:none;border-color:#003c81;box-shadow:none;color:#fff}.tox .tox-button--icon-and-text,.tox .tox-button.tox-button--icon-and-text,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text{display:flex;padding:5px 4px}.tox .tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg{display:block;fill:currentColor}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled{background-color:#2b5c93;background-image:none;border-color:#2b5c93;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled[disabled]{background-color:#2b5c93;background-image:none;border-color:#2b5c93;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary.tox-button--enabled:focus:not(:disabled){background-color:#254f80;background-image:none;border-color:#254f80;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled:hover:not(:disabled){background-color:#254f80;background-image:none;border-color:#254f80;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled:active:not(:disabled){background-color:#1f436c;background-image:none;border-color:#1f436c;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:rgba(255,255,255,.3);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:6px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#006ce7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#006ce7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:6px;box-shadow:inset 0 0 0 1px #006ce7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:rgba(255,255,255,.15);border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:rgba(255,255,255,.15);color:rgba(255,255,255,.5);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;border-radius:3px;color:#fff;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#3389ec}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#599fef;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#3389ec}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#599fef;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#3389ec;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:28px;margin:6px 1px 5px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid transparent}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid transparent}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:5px 0 6px 11px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px -4px}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{fill:#fff;height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#3389ec}.tox div.tox-swatch:not(.tox-swatch--remove) svg{display:none;fill:#fff;height:24px;margin:calc((30px - 24px)/ 2) calc((30px - 24px)/ 2);width:24px}.tox div.tox-swatch:not(.tox-swatch--remove) svg path{fill:#fff;paint-order:stroke;stroke:#222f3e;stroke-width:2px}.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg{display:block}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #161f29;border-radius:6px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:#fff;font-size:12px;line-height:18px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__avatar img{border-radius:50%;height:36px;object-fit:cover;vertical-align:middle;width:36px}.tox .tox-user__name{color:#fff;font-size:14px;font-style:normal;font-weight:700;line-height:18px;text-transform:none}.tox:not([dir=rtl]) .tox-user__avatar img,.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar img,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#161f29;border-radius:10px;border-style:solid;border-width:0;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;max-height:calc(100vh - 8px * 2);width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(0,108,231,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #006ce7;color:#006ce7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#006ce7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;margin-inline-end:0;margin-inline-start:0;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--fullscreen{height:100%;max-width:100%}.tox .tox-dialog--fullscreen .tox-dialog__body-content{max-height:100%}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:none;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table thead th:first-child{padding-right:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__table td:first-child{padding-right:8px}.tox .tox-dialog__iframe.tox-dialog__iframe--opaque{background:#fff}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #161f29;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-edit-area::before{border:2px solid #fff;border-radius:4px;content:'';inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity .15s;z-index:1}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;height:100%;position:absolute;width:100%}.tox.tox-edit-focus .tox-edit-area::before{opacity:1}.tox.tox-inline-edit-area{border:1px dotted #161f29}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{display:grid;grid-template-columns:1fr min-content;z-index:2}.tox:not(.tox-tinymce-inline) .tox-editor-header{background-color:#222f3e;border-bottom:1px solid rgba(255,255,255,.15);box-shadow:none;padding:4px 0}.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition){transition:box-shadow .5s}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header{border-top:1px solid rgba(255,255,255,.15);box-shadow:none}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:#222f3e;box-shadow:none;padding:4px 0}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header{box-shadow:none}.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty{background:0 0;border:none;box-shadow:none;padding:0}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{box-sizing:border-box;max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#006ce7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:6px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column}.tox .tox-form__group--stretched .tox-textarea{flex:1}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textarea-wrap .tox-textarea:focus,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-custom-editor:focus-within,.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea-wrap:focus-within,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#006ce7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea-wrap{border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;display:flex;flex:1;overflow:hidden}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox .tox-textarea-wrap .tox-textarea{border:none}.tox .tox-textarea-wrap .tox-textarea:focus{border:none}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-imagepreview{background-color:#666;height:380px;overflow:hidden;position:relative;width:100%}.tox .tox-imagepreview.tox-imagepreview__loaded{overflow:auto}.tox .tox-imagepreview__container{display:flex;left:100vw;position:absolute;top:100vw}.tox .tox-imagepreview__image{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools .tox-spacer{flex:1}.tox .tox-image-tools .tox-bar{align-items:center;display:flex;height:60px;justify-content:center}.tox .tox-image-tools .tox-imagepreview,.tox .tox-image-tools .tox-imagepreview+.tox-bar{margin-top:8px}.tox .tox-image-tools .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-image-tools .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-image-tools .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-image-tools .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-image-tools .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-image-tools .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-image-tools .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:rgba(255,255,255,.15);border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px -4px}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(0,108,231,.5);border-color:rgba(0,108,231,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:none;display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0 4px}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:8px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:8px}@media only screen and (min-width:768px){.tox .tox-menu .tox-collection__item-label{overflow-wrap:break-word;word-break:normal}}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;grid-column:1/-1;grid-row:1;padding:0 11px 0 12px}.tox .tox-promotion+.tox-menubar{grid-column:1}.tox .tox-promotion{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#222f3e;grid-column:2;grid-row:1;padding-inline-end:8px;padding-inline-start:4px;padding-top:5px}.tox .tox-promotion-link{align-items:unsafe center;background-color:#e8f1f8;border-radius:5px;color:#086be6;cursor:pointer;display:flex;font-size:14px;height:26.6px;padding:4px 8px;white-space:nowrap}.tox .tox-promotion-link:hover{background-color:#b4d7ff}.tox .tox-promotion-link:focus{background-color:#d9edf7}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:5px 1px 6px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#334840;border-color:#3c5440;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#b5d199}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#442632;border-color:#55212b;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#e68080}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#222f3e;border-color:rgba(255,255,255,.15);color:#fff0b3}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff0b3}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fc0}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff0b3}.tox .tox-notification--info{background-color:#254161;border-color:#264972;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#83b7f3}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{align-self:center;color:#fff;font-size:14px;grid-column-end:3;grid-column-start:2;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{align-self:center;grid-column-end:2;grid-column-start:1;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{align-self:start;grid-column-end:4;grid-column-start:3;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification .tox-progress-bar{grid-column-end:4;grid-column-start:1;grid-row-end:3;grid-row-start:2;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #161f29;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#161f29 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #161f29 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #161f29 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #161f29;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #161f29;border-radius:6px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#006ce7;border:2px solid #0054b4;border-radius:6px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-form__controls-h-stack>.tox-slider:not(:first-of-type){margin-inline-start:8px}.tox .tox-form__controls-h-stack>.tox-form__group+.tox-slider{margin-inline-start:32px}.tox .tox-form__controls-h-stack>.tox-slider+.tox-form__group{margin-inline-start:32px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.75);display:flex;flex:0 0 auto;font-size:14px;font-weight:400;height:25px;overflow:hidden;padding:0 8px;position:relative;text-transform:none}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(255,255,255,.75);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){color:#fff;cursor:pointer}.tox .tox-statusbar__branding svg{fill:rgba(255,255,255,.8);height:1.14em;vertical-align:-.28em;width:3.6em}.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg,.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg{fill:#fff}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-bottom:3px;padding-left:1ch;padding-right:3px}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(255,255,255,.5)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#434e5b;border-radius:1px 1px 5px 1px;box-shadow:0 0 0 2px #434e5b}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:2ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:6px 1px 5px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#3389ec;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:42px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:56px;width:68px}.tox .tox-tbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-number-input{border-radius:3px;display:flex;margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-number-input .tox-input-wrapper{background:#2f4055;display:flex;pointer-events:none;text-align:center}.tox .tox-number-input .tox-input-wrapper:focus{background:#3389ec}.tox .tox-number-input input{border-radius:3px;color:#fff;font-size:14px;margin:2px 0;pointer-events:all;width:60px}.tox .tox-number-input input:hover{background:#3389ec;color:#fff}.tox .tox-number-input input:focus{background:#fff;color:#222f3e}.tox .tox-number-input button{background:#2f4055;color:#fff;height:28px;text-align:center;width:24px}.tox .tox-number-input button svg{display:block;fill:#fff;margin:0 auto;transform:scale(.67)}.tox .tox-number-input button:focus{background:#3389ec}.tox .tox-number-input button:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-number-input button:hover svg{fill:#fff}.tox .tox-number-input button:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-number-input button:active svg{fill:#fff}.tox .tox-number-input button.minus{border-radius:3px 0 0 3px}.tox .tox-number-input button.plus{border-radius:0 3px 3px 0}.tox .tox-number-input:focus:not(:active)>.tox-input-wrapper,.tox .tox-number-input:focus:not(:active)>button{background:#3389ec}.tox .tox-tbtn--select{margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;height:initial;margin:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke{background:#2f4055}.tox .tox-tbtn--bespoke+.tox-tbtn--bespoke{margin-inline-start:4px}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:6px 1px 5px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #3389ec inset}.tox .tox-split-button:focus{background:#3389ec;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox.tox-platform-touch .tox-split-button .tox-tbtn--select{padding:0 0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background-attachment:local;background-color:#222f3e;background-image:repeating-linear-gradient(rgba(255,255,255,.15) 0 1px,transparent 1px 39px);background-position:center top 40px;background-repeat:no-repeat;background-size:calc(100% - 11px * 2) calc(100% - 41px);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0;transform:perspective(1px)}.tox .tox-toolbar-overlord>.tox-toolbar,.tox .tox-toolbar-overlord>.tox-toolbar__overflow,.tox .tox-toolbar-overlord>.tox-toolbar__primary{background-position:center top 0;background-size:calc(100% - 11px * 2) calc(100% - 0px)}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-anchorbar,.tox .tox-toolbar-overlord{grid-column:1/-1}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord{border-top:1px solid transparent;margin-top:-1px;padding-bottom:1px;padding-top:1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child,.tox .tox-toolbar-overlord .tox-toolbar__primary{background-position:center top 39px}.tox .tox-editor-header>.tox-toolbar--scrolling,.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;background-position:center top 43px;background-size:calc(100% - 8px * 2) calc(100% - 51px);border:none;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);overscroll-behavior:none;padding:4px 0}.tox-pop .tox-pop__dialog .tox-toolbar{background-position:center top 43px;background-size:calc(100% - 11px * 2) calc(100% - 51px);padding:4px 0}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 11px 0 12px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid transparent}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid transparent}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:6px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tree{display:flex;flex-direction:column}.tox .tox-tree .tox-trbtn{align-items:center;background:0 0;border:0;border-radius:4px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;margin-bottom:4px;margin-top:4px;outline:0;overflow:hidden;padding:0;padding-left:8px;text-transform:none}.tox .tox-tree .tox-trbtn .tox-tree__label{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tree .tox-trbtn svg{display:block;fill:#fff}.tox .tox-tree .tox-trbtn:focus{background:#3389ec;border:0;box-shadow:none}.tox .tox-tree .tox-trbtn:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn:hover svg{fill:#fff}.tox .tox-tree .tox-trbtn:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn:active svg{fill:#fff}.tox .tox-tree .tox-trbtn--disabled,.tox .tox-tree .tox-trbtn--disabled:hover,.tox .tox-tree .tox-trbtn:disabled,.tox .tox-tree .tox-trbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tree .tox-trbtn--disabled svg,.tox .tox-tree .tox-trbtn--disabled:hover svg,.tox .tox-tree .tox-trbtn:disabled svg,.tox .tox-tree .tox-trbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tree .tox-trbtn--enabled,.tox .tox-tree .tox-trbtn--enabled:hover{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn--enabled:hover>*,.tox .tox-tree .tox-trbtn--enabled>*{transform:none}.tox .tox-tree .tox-trbtn--enabled svg,.tox .tox-tree .tox-trbtn--enabled:hover svg{fill:#fff}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled){color:#fff}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg{fill:#fff}.tox .tox-tree .tox-trbtn:active>*{transform:none}.tox .tox-tree .tox-trbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tree .tox-trbtn--labeled{padding:0 4px;width:unset}.tox .tox-tree .tox-trbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tree .tox-tree--directory{display:flex;flex-direction:column}.tox .tox-tree .tox-tree--directory.tox-tree--directory--expanded>.tox-tree--directory__label .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label{font-weight:700}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron{margin-right:6px;transition:transform .5s ease-in-out}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label.tox-tree--directory__label--active .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--leaf__label{font-weight:400}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg{fill:#fff}.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg{fill:#fff}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#fff}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#fff}.tox .tox-tree .tox-tree--directory__children{overflow:hidden;padding-left:16px}.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing,.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking{transition:height .5s ease-in-out}.tox .tox-tree .tox-trbtn.tox-tree--leaf__label{display:flex;justify-content:space-between}.tox .tox-view-wrap,.tox .tox-view-wrap__slot-container{background-color:#222f3e;display:flex;flex:1;flex-direction:column}.tox .tox-view{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-view__header{align-items:center;display:flex;font-size:16px;justify-content:space-between;padding:8px 8px 0 8px;position:relative}.tox .tox-view--mobile.tox-view__header,.tox .tox-view--mobile.tox-view__toolbar{padding:8px}.tox .tox-view--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-view__toolbar{display:flex;flex-direction:row;gap:8px;justify-content:space-between;padding:8px 8px 0 8px}.tox .tox-view__toolbar__group{display:flex;flex-direction:row;gap:12px}.tox .tox-view__header-end,.tox .tox-view__header-start{display:flex}.tox .tox-view__pane{height:100%;padding:8px;width:100%}.tox .tox-view__pane_panel{border:1px solid #161f29;border-radius:6px}.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end>*,.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start>*{margin-left:8px}.tox[dir=rtl] .tox-view__header .tox-view__header-end>*,.tox[dir=rtl] .tox-view__header .tox-view__header-start>*{margin-right:8px}.tox .tox-well{border:1px solid #161f29;border-radius:6px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #161f29;border-radius:6px;display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1}.tox.tox-tinymce-aux .tox-toolbar__overflow{box-shadow:0 0 0 1px rgba(255,255,255,.15)} +.tox{box-shadow:none;box-sizing:content-box;color:#151B22;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:2px solid #161f29;border-radius:10px;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox.tox-tinymce-inline{border:none;box-shadow:none;overflow:initial}.tox.tox-tinymce-inline .tox-editor-container{overflow:initial}.tox.tox-tinymce-inline .tox-editor-header{background-color:#151B22;border:2px solid #161f29;border-radius:10px;box-shadow:none;overflow:hidden}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border-radius:6px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>div>div .tox-icon svg{display:block}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(0,101,216,.4);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon{background-color:#006ce7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover{background-color:#0060ce}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active{background-color:#0054b4}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon{background-color:#ffe89d;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover{background-color:#f2d574;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active{background-color:#e8c657;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon{background-color:#f2bfbf;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover{background-color:#e9a4a4;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active{background-color:#ee9494;color:#151B22}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{display:none}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{font-size:14px;margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox .tox-advtemplate .tox-form__grid{flex:1}.tox .tox-advtemplate .tox-form__grid>div:first-child{display:flex;flex-direction:column;width:30%}.tox .tox-advtemplate .tox-form__grid>div:first-child>div:nth-child(2){flex-basis:0;flex-grow:1;overflow:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid>div:first-child{width:100%}}.tox .tox-advtemplate iframe{border-color:#161f29;border-radius:10px;border-style:solid;border-width:1px;margin:0 10px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#006ce7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#006ce7;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button::before{border-radius:6px;bottom:-1px;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #006ce7,0 0 0 3px rgba(0,108,231,.25);content:'';left:-1px;opacity:0;pointer-events:none;position:absolute;right:-1px;top:-1px}.tox .tox-button[disabled]{background-color:#006ce7;background-image:none;border-color:#006ce7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:focus-visible:not(:disabled)::before{opacity:1}.tox .tox-button:hover:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled[disabled]{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button.tox-button--enabled:focus:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:hover:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:active:not(:disabled){background-color:#003c81;background-image:none;border-color:#003c81;box-shadow:none;color:#fff}.tox .tox-button--icon-and-text,.tox .tox-button.tox-button--icon-and-text,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text{display:flex;padding:5px 4px}.tox .tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg{display:block;fill:currentColor}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled{background-color:#2b5c93;background-image:none;border-color:#2b5c93;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled[disabled]{background-color:#2b5c93;background-image:none;border-color:#2b5c93;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary.tox-button--enabled:focus:not(:disabled){background-color:#254f80;background-image:none;border-color:#254f80;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled:hover:not(:disabled){background-color:#254f80;background-image:none;border-color:#254f80;box-shadow:none;color:#fff}.tox .tox-button--secondary.tox-button--enabled:active:not(:disabled){background-color:#1f436c;background-image:none;border-color:#1f436c;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:rgba(255,255,255,.2);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:rgba(255,255,255,.3);border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:6px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#006ce7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#006ce7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:6px;box-shadow:inset 0 0 0 1px #006ce7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:rgba(255,255,255,.15);border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:rgba(255,255,255,.15);color:rgba(255,255,255,.5);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;border-radius:3px;color:#fff;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#3389ec}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#599fef;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#3389ec}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#599fef;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#3389ec;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:28px;margin:6px 1px 5px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid transparent}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid transparent}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:5px 0 6px 11px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px -4px}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{fill:#fff;height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#3389ec}.tox div.tox-swatch:not(.tox-swatch--remove) svg{display:none;fill:#fff;height:24px;margin:calc((30px - 24px)/ 2) calc((30px - 24px)/ 2);width:24px}.tox div.tox-swatch:not(.tox-swatch--remove) svg path{fill:#fff;paint-order:stroke;stroke:#151B22;stroke-width:2px}.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg{display:block}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #161f29;border-radius:6px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:#fff;font-size:12px;line-height:18px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__avatar img{border-radius:50%;height:36px;object-fit:cover;vertical-align:middle;width:36px}.tox .tox-user__name{color:#fff;font-size:14px;font-style:normal;font-weight:700;line-height:18px;text-transform:none}.tox:not([dir=rtl]) .tox-user__avatar img,.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar img,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#151B22}.tox .tox-dialog{background-color:#2b3b4e;border-color:#161f29;border-radius:10px;border-style:solid;border-width:0;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;max-height:calc(100vh - 8px * 2);width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(0,108,231,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #006ce7;color:#006ce7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#006ce7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;margin-inline-end:0;margin-inline-start:0;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--fullscreen{height:100%;max-width:100%}.tox .tox-dialog--fullscreen .tox-dialog__body-content{max-height:100%}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:none;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table thead th:first-child{padding-right:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__table td:first-child{padding-right:8px}.tox .tox-dialog__iframe.tox-dialog__iframe--opaque{background:#fff}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #161f29;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-edit-area::before{border:2px solid #fff;border-radius:4px;content:'';inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity .15s;z-index:1}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;height:100%;position:absolute;width:100%}.tox.tox-edit-focus .tox-edit-area::before{opacity:1}.tox.tox-inline-edit-area{border:1px dotted #161f29}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{display:grid;grid-template-columns:1fr min-content;z-index:2}.tox:not(.tox-tinymce-inline) .tox-editor-header{background-color:#151B22;border-bottom:1px solid rgba(255,255,255,.15);box-shadow:none;padding:4px 0}.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition){transition:box-shadow .5s}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header{border-top:1px solid rgba(255,255,255,.15);box-shadow:none}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:#151B22;box-shadow:none;padding:4px 0}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header{box-shadow:none}.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty{background:0 0;border:none;box-shadow:none;padding:0}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{box-sizing:border-box;max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#006ce7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:6px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column}.tox .tox-form__group--stretched .tox-textarea{flex:1}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textarea-wrap .tox-textarea:focus,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#151B22;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-custom-editor:focus-within,.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea-wrap:focus-within,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#006ce7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea-wrap{border-color:#161f29;border-radius:6px;border-style:solid;border-width:1px;display:flex;flex:1;overflow:hidden}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox .tox-textarea-wrap .tox-textarea{border:none}.tox .tox-textarea-wrap .tox-textarea:focus{border:none}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-imagepreview{background-color:#666;height:380px;overflow:hidden;position:relative;width:100%}.tox .tox-imagepreview.tox-imagepreview__loaded{overflow:auto}.tox .tox-imagepreview__container{display:flex;left:100vw;position:absolute;top:100vw}.tox .tox-imagepreview__image{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools .tox-spacer{flex:1}.tox .tox-image-tools .tox-bar{align-items:center;display:flex;height:60px;justify-content:center}.tox .tox-image-tools .tox-imagepreview,.tox .tox-image-tools .tox-imagepreview+.tox-bar{margin-top:8px}.tox .tox-image-tools .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-image-tools .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-image-tools .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-image-tools .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-image-tools .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-image-tools .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-image-tools .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:rgba(255,255,255,.15);border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px -4px}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(0,108,231,.5);border-color:rgba(0,108,231,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:none;display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0 4px}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:8px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:8px}@media only screen and (min-width:768px){.tox .tox-menu .tox-collection__item-label{overflow-wrap:break-word;word-break:normal}}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#151B22;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;grid-column:1/-1;grid-row:1;padding:0 11px 0 12px}.tox .tox-promotion+.tox-menubar{grid-column:1}.tox .tox-promotion{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#151B22;grid-column:2;grid-row:1;padding-inline-end:8px;padding-inline-start:4px;padding-top:5px}.tox .tox-promotion-link{align-items:unsafe center;background-color:#e8f1f8;border-radius:5px;color:#086be6;cursor:pointer;display:flex;font-size:14px;height:26.6px;padding:4px 8px;white-space:nowrap}.tox .tox-promotion-link:hover{background-color:#b4d7ff}.tox .tox-promotion-link:focus{background-color:#d9edf7}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:5px 1px 6px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#334840;border-color:#3c5440;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#b5d199}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#442632;border-color:#55212b;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#e68080}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#151B22;border-color:rgba(255,255,255,.15);color:#fff0b3}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff0b3}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fc0}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff0b3}.tox .tox-notification--info{background-color:#254161;border-color:#264972;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#83b7f3}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{align-self:center;color:#fff;font-size:14px;grid-column-end:3;grid-column-start:2;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{align-self:center;grid-column-end:2;grid-column-start:1;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{align-self:start;grid-column-end:4;grid-column-start:3;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification .tox-progress-bar{grid-column-end:4;grid-column-start:1;grid-row-end:3;grid-row-start:2;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#151B22;border:1px solid #161f29;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#151B22 transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#161f29 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #151B22 transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #161f29 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #151B22 transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #161f29 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #151B22;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #161f29;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;min-height:0}.tox .tox-sidebar{background-color:#151B22;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #161f29;border-radius:6px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#006ce7;border:2px solid #0054b4;border-radius:6px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-form__controls-h-stack>.tox-slider:not(:first-of-type){margin-inline-start:8px}.tox .tox-form__controls-h-stack>.tox-form__group+.tox-slider{margin-inline-start:32px}.tox .tox-form__controls-h-stack>.tox-slider+.tox-form__group{margin-inline-start:32px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#151B22;border-top:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.75);display:flex;flex:0 0 auto;font-size:14px;font-weight:400;height:25px;overflow:hidden;padding:0 8px;position:relative;text-transform:none}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(255,255,255,.75);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){color:#fff;cursor:pointer}.tox .tox-statusbar__branding svg{fill:rgba(255,255,255,.8);height:1.14em;vertical-align:-.28em;width:3.6em}.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg,.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg{fill:#fff}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-bottom:3px;padding-left:1ch;padding-right:3px}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(255,255,255,.5)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#434e5b;border-radius:1px 1px 5px 1px;box-shadow:0 0 0 2px #434e5b}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:2ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:6px 1px 5px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#3389ec;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:42px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:56px;width:68px}.tox .tox-tbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-number-input{border-radius:3px;display:flex;margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-number-input .tox-input-wrapper{background:#2f4055;display:flex;pointer-events:none;text-align:center}.tox .tox-number-input .tox-input-wrapper:focus{background:#3389ec}.tox .tox-number-input input{border-radius:3px;color:#fff;font-size:14px;margin:2px 0;pointer-events:all;width:60px}.tox .tox-number-input input:hover{background:#3389ec;color:#fff}.tox .tox-number-input input:focus{background:#fff;color:#151B22}.tox .tox-number-input button{background:#2f4055;color:#fff;height:28px;text-align:center;width:24px}.tox .tox-number-input button svg{display:block;fill:#fff;margin:0 auto;transform:scale(.67)}.tox .tox-number-input button:focus{background:#3389ec}.tox .tox-number-input button:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-number-input button:hover svg{fill:#fff}.tox .tox-number-input button:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-number-input button:active svg{fill:#fff}.tox .tox-number-input button.minus{border-radius:3px 0 0 3px}.tox .tox-number-input button.plus{border-radius:0 3px 3px 0}.tox .tox-number-input:focus:not(:active)>.tox-input-wrapper,.tox .tox-number-input:focus:not(:active)>button{background:#3389ec}.tox .tox-tbtn--select{margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;height:initial;margin:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke{background:#2f4055}.tox .tox-tbtn--bespoke+.tox-tbtn--bespoke{margin-inline-start:4px}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:6px 1px 5px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #3389ec inset}.tox .tox-split-button:focus{background:#3389ec;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox.tox-platform-touch .tox-split-button .tox-tbtn--select{padding:0 0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-toolbar-overlord{background-color:#151B22}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background-attachment:local;background-color:#151B22;background-image:repeating-linear-gradient(rgba(255,255,255,.15) 0 1px,transparent 1px 39px);background-position:center top 40px;background-repeat:no-repeat;background-size:calc(100% - 11px * 2) calc(100% - 41px);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0;transform:perspective(1px)}.tox .tox-toolbar-overlord>.tox-toolbar,.tox .tox-toolbar-overlord>.tox-toolbar__overflow,.tox .tox-toolbar-overlord>.tox-toolbar__primary{background-position:center top 0;background-size:calc(100% - 11px * 2) calc(100% - 0px)}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-anchorbar,.tox .tox-toolbar-overlord{grid-column:1/-1}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord{border-top:1px solid transparent;margin-top:-1px;padding-bottom:1px;padding-top:1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child,.tox .tox-toolbar-overlord .tox-toolbar__primary{background-position:center top 39px}.tox .tox-editor-header>.tox-toolbar--scrolling,.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#151B22;background-position:center top 43px;background-size:calc(100% - 8px * 2) calc(100% - 51px);border:none;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);overscroll-behavior:none;padding:4px 0}.tox-pop .tox-pop__dialog .tox-toolbar{background-position:center top 43px;background-size:calc(100% - 11px * 2) calc(100% - 51px);padding:4px 0}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 11px 0 12px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid transparent}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid transparent}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:6px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tree{display:flex;flex-direction:column}.tox .tox-tree .tox-trbtn{align-items:center;background:0 0;border:0;border-radius:4px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;margin-bottom:4px;margin-top:4px;outline:0;overflow:hidden;padding:0;padding-left:8px;text-transform:none}.tox .tox-tree .tox-trbtn .tox-tree__label{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tree .tox-trbtn svg{display:block;fill:#fff}.tox .tox-tree .tox-trbtn:focus{background:#3389ec;border:0;box-shadow:none}.tox .tox-tree .tox-trbtn:hover{background:#3389ec;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn:hover svg{fill:#fff}.tox .tox-tree .tox-trbtn:active{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn:active svg{fill:#fff}.tox .tox-tree .tox-trbtn--disabled,.tox .tox-tree .tox-trbtn--disabled:hover,.tox .tox-tree .tox-trbtn:disabled,.tox .tox-tree .tox-trbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tree .tox-trbtn--disabled svg,.tox .tox-tree .tox-trbtn--disabled:hover svg,.tox .tox-tree .tox-trbtn:disabled svg,.tox .tox-tree .tox-trbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tree .tox-trbtn--enabled,.tox .tox-tree .tox-trbtn--enabled:hover{background:#599fef;border:0;box-shadow:none;color:#fff}.tox .tox-tree .tox-trbtn--enabled:hover>*,.tox .tox-tree .tox-trbtn--enabled>*{transform:none}.tox .tox-tree .tox-trbtn--enabled svg,.tox .tox-tree .tox-trbtn--enabled:hover svg{fill:#fff}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled){color:#fff}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg{fill:#fff}.tox .tox-tree .tox-trbtn:active>*{transform:none}.tox .tox-tree .tox-trbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tree .tox-trbtn--labeled{padding:0 4px;width:unset}.tox .tox-tree .tox-trbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tree .tox-tree--directory{display:flex;flex-direction:column}.tox .tox-tree .tox-tree--directory.tox-tree--directory--expanded>.tox-tree--directory__label .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label{font-weight:700}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#fff}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron{margin-right:6px;transition:transform .5s ease-in-out}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label.tox-tree--directory__label--active .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--leaf__label{font-weight:400}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg{fill:#fff}.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg{fill:#fff}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#fff}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#fff}.tox .tox-tree .tox-tree--directory__children{overflow:hidden;padding-left:16px}.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing,.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking{transition:height .5s ease-in-out}.tox .tox-tree .tox-trbtn.tox-tree--leaf__label{display:flex;justify-content:space-between}.tox .tox-view-wrap,.tox .tox-view-wrap__slot-container{background-color:#151B22;display:flex;flex:1;flex-direction:column}.tox .tox-view{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-view__header{align-items:center;display:flex;font-size:16px;justify-content:space-between;padding:8px 8px 0 8px;position:relative}.tox .tox-view--mobile.tox-view__header,.tox .tox-view--mobile.tox-view__toolbar{padding:8px}.tox .tox-view--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-view__toolbar{display:flex;flex-direction:row;gap:8px;justify-content:space-between;padding:8px 8px 0 8px}.tox .tox-view__toolbar__group{display:flex;flex-direction:row;gap:12px}.tox .tox-view__header-end,.tox .tox-view__header-start{display:flex}.tox .tox-view__pane{height:100%;padding:8px;width:100%}.tox .tox-view__pane_panel{border:1px solid #161f29;border-radius:6px}.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end>*,.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start>*{margin-left:8px}.tox[dir=rtl] .tox-view__header .tox-view__header-end>*,.tox[dir=rtl] .tox-view__header .tox-view__header-start>*{margin-right:8px}.tox .tox-well{border:1px solid #161f29;border-radius:6px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #161f29;border-radius:6px;display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1}.tox.tox-tinymce-aux .tox-toolbar__overflow{box-shadow:0 0 0 1px rgba(255,255,255,.15)} diff --git a/Admin/Resources/Views/Includes/head.inc.php b/Admin/Resources/Views/Includes/head.inc.php index 82d1f017..4e9c1262 100644 --- a/Admin/Resources/Views/Includes/head.inc.php +++ b/Admin/Resources/Views/Includes/head.inc.php @@ -54,42 +54,45 @@ \ No newline at end of file diff --git a/Admin/Resources/Views/Includes/header.inc.php b/Admin/Resources/Views/Includes/header.inc.php index 1dc5e30e..be5c4543 100644 --- a/Admin/Resources/Views/Includes/header.inc.php +++ b/Admin/Resources/Views/Includes/header.inc.php @@ -433,28 +433,38 @@ class="a-side-nav isActiveNavbarItem($menu-> + diff --git a/Admin/Resources/Views/template.php b/Admin/Resources/Views/template.php index 4e6fa3fa..27ee0b75 100644 --- a/Admin/Resources/Views/template.php +++ b/Admin/Resources/Views/template.php @@ -3,21 +3,25 @@ use CMW\Manager\Views\View; use CMW\Utils\Website; -include_once ('Includes/head.inc.php'); +include_once('Includes/head.inc.php'); /* INCLUDE SCRIPTS / STYLES */ /* @var $includes */ /* @var $content */ View::loadInclude($includes, 'beforeScript'); +View::loadInclude($includes, 'beforePhp'); View::loadInclude($includes, 'styles'); -include_once ('Includes/header.inc.php'); +include_once('Includes/header.inc.php'); + +include_once('_notices.php'); echo $content; -include_once ('Includes/footer.inc.php'); +include_once('Includes/footer.inc.php'); /* INCLUDE SCRIPTS */ +View::loadInclude($includes, 'afterPhp'); View::loadInclude($includes, 'afterScript'); ?> diff --git a/Admin/Tailwind/cssgenerator.html b/Admin/Tailwind/cssgenerator.html index 1517fdd8..9433040a 100644 --- a/Admin/Tailwind/cssgenerator.html +++ b/Admin/Tailwind/cssgenerator.html @@ -451,7 +451,7 @@
-
+
diff --git a/App/Cli/Builder/AI/Copilot/AICopilotContextBuilder.php b/App/Cli/Builder/AI/Copilot/AICopilotContextBuilder.php new file mode 100644 index 00000000..f29bd0e0 --- /dev/null +++ b/App/Cli/Builder/AI/Copilot/AICopilotContextBuilder.php @@ -0,0 +1,44 @@ +init(); + } + + private function init(): void + { + $this->sayLn("Téléchargement de la documentation FR/Technical depuis GitHub..."); + + $baseDir = EnvManager::getInstance()->getValue("DIR") . '.copilot/'; + $targetDir = $baseDir . 'Technical'; + + $tmpRepo = sys_get_temp_dir() . '/cmw-doc'; + if (!is_dir($tmpRepo . '/.git')) { + shell_exec("git clone --depth=1 https://github.com/CraftMyWebsite/cmw-doc.git $tmpRepo"); + } else { + shell_exec("cd $tmpRepo && git pull"); + } + + if (!is_dir($baseDir) && !mkdir($baseDir, 0777, true) && !is_dir($baseDir)) { + throw new \RuntimeException(\sprintf('Directory "%s" was not created', $baseDir)); + } + + if (is_dir($targetDir)) { + $this->sayLn("Suppression de l'ancien dossier Technical..."); + shell_exec("rm -rf " . escapeshellarg($targetDir)); + } + shell_exec("cp -r " . escapeshellarg($tmpRepo . "/FR/Technical") . " " . escapeshellarg($targetDir)); + + $this->sayLn("Documentation copiée dans .copilot/Technical !"); + } +} diff --git a/App/Cli/Utils/Lang/en.php b/App/Cli/Utils/Lang/en.php index 29066306..b5163d8c 100644 --- a/App/Cli/Utils/Lang/en.php +++ b/App/Cli/Utils/Lang/en.php @@ -7,7 +7,9 @@ > cmw theme-init => Launch the theme Builder - > cmw package-init => Launch the package Builder'; + > cmw package-init => Launch the package Builder + + > cmw ai-copilot => Launch the AI Copilot context Builder'; const CLI_THEME_BUILDER_NAME = 'Enter the Theme name'; const CLI_THEME_BUILDER_VERSION = 'Enter the Theme version'; diff --git a/App/Cli/Utils/Lang/fr.php b/App/Cli/Utils/Lang/fr.php index 3d38a405..c7819a3e 100644 --- a/App/Cli/Utils/Lang/fr.php +++ b/App/Cli/Utils/Lang/fr.php @@ -7,7 +7,9 @@ > cmw theme-init => Lancez le constructeur de thèmes - > cmw package-init => Lancez le constructeur de packages"; + > cmw package-init => Lancez le constructeur de packages + + > cmw ai-copilot => Lancez le constructeur de context AI Copilot"; const CLI_THEME_BUILDER_NAME = 'Entrez le nom du thème'; const CLI_THEME_BUILDER_VERSION = 'Entrez la version du thème'; diff --git a/App/Manager/Api/PublicAPI.php b/App/Manager/Api/PublicAPI.php index 446ee6d2..a42b488e 100644 --- a/App/Manager/Api/PublicAPI.php +++ b/App/Manager/Api/PublicAPI.php @@ -57,6 +57,7 @@ public static function postData(string $url, array $data = []): mixed curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/x-www-form-urlencoded', "Adminkey: $adminKey", + 'X-Origin: ' . $_SERVER['HTTP_HOST'], ]); $response = curl_exec($ch); @@ -93,6 +94,7 @@ public static function getData(string $url): mixed 'ignore_errors' => true, 'header' => [ 'Adminkey: ' . UsersSessionsController::getInstance()->getCurrentUser()?->getUserKey(), + 'X-Origin: ' . $_SERVER['HTTP_HOST'], ], ], ]; @@ -124,6 +126,7 @@ public static function putData(string $url): mixed 'ignore_errors' => true, 'header' => [ 'Adminkey: ' . UsersSessionsController::getInstance()->getCurrentUser()?->getUserKey(), + 'X-Origin: ' . $_SERVER['HTTP_HOST'], ], ], ]; diff --git a/App/Manager/Download/DownloadManager.php b/App/Manager/Download/DownloadManager.php index e3cf50c2..3b212dd0 100644 --- a/App/Manager/Download/DownloadManager.php +++ b/App/Manager/Download/DownloadManager.php @@ -2,6 +2,7 @@ namespace CMW\Manager\Download; +use CMW\Exception\Core\Download\DownloadException; use CMW\Manager\Database\DatabaseManager; use CMW\Manager\Env\EnvManager; use CMW\Manager\Permission\PermissionManager; @@ -15,40 +16,49 @@ class DownloadManager * @param string $url * @param string $type * @param string $name - * @return bool + * @return void * @desc Download and install package with api return link, ex: "/Public/market/Resources/forum.zip" + * @throws DownloadException */ - public static function installPackageWithLink(string $url, #[ExpectedValues(['package', 'Theme'])] string $type, string $name): bool + public static function installPackageWithLink(string $url, #[ExpectedValues(['package', 'Theme'])] string $type, string $name): void { - if (!in_array($type, ['package', 'Theme'])) { - return false; + if (!in_array($type, ['package', 'Theme'], true)) { + throw new DownloadException('Type invalide'); } - file_put_contents(EnvManager::getInstance()->getValue('DIR') . 'Public/resource.zip', - fopen($url, 'rb')); + $baseDir = EnvManager::getInstance()->getValue('DIR'); + $zipPath = $baseDir . 'Public/resource.zip'; - $archiveUpdate = new ZipArchive; - if ($archiveUpdate->open(EnvManager::getInstance()->getValue('DIR') . 'Public/resource.zip') === TRUE) { - if ($type === 'package') { - $archiveUpdate->extractTo(EnvManager::getInstance()->getValue('DIR') . 'App/Package'); - } else { - $archiveUpdate->extractTo(EnvManager::getInstance()->getValue('DIR') . 'Public/Themes'); - } + $stream = @fopen($url, 'rb'); + if ($stream === false) { + throw new DownloadException('Impossible de télécharger le fichier distant (API)'); + } - $archiveUpdate->close(); + $bytes = @file_put_contents($zipPath, $stream); + if ($bytes === false) { + throw new DownloadException('Impossible d\'écrire le fichier ZIP sur le disque'); + } - // Delete download archive - unlink(EnvManager::getInstance()->getValue('DIR') . 'Public/resource.zip'); + $archiveUpdate = new ZipArchive(); + $openResult = $archiveUpdate->open($zipPath); - // INSTALL INIT FOLDER - if ($type === 'package') { - self::initPackages($name); - } + if ($openResult !== true) { + throw new DownloadException('Impossible d\'ouvrir l\'archive ZIP (code: ' . $openResult . ')'); + } + + $targetDir = $type === 'package' ? $baseDir . 'App/Package' : $baseDir . 'Public/Themes'; - return true; + if (!$archiveUpdate->extractTo($targetDir)) { + $archiveUpdate->close(); + throw new DownloadException('Erreur lors de l\'extraction de l\'archive ZIP (Permissions ou Espace disque)'); } - return false; + $archiveUpdate->close(); + @unlink($zipPath); + + if ($type === 'package') { + self::initPackages($name); + } } public static function initPackages(string ...$packages): void diff --git a/App/Manager/Env/EnvManager.php b/App/Manager/Env/EnvManager.php index 82041176..6f069085 100644 --- a/App/Manager/Env/EnvManager.php +++ b/App/Manager/Env/EnvManager.php @@ -209,14 +209,27 @@ public function addValue(string $key, ?string $value): void $key = mb_strtoupper(trim($key)); if (!$this->valueExistInFile($key)) { - $file = fopen($this->envPath . $this->envFileName, 'ab'); - $textToSet = static function (string $key, ?string $value) { - return $key . '=' . trim($value ?? 'UNDEFINED') . PHP_EOL; - }; + $path = $this->envPath . $this->envFileName; - $res = $textToSet($key, $value); - fwrite($file, $res); + $file = fopen($path, 'cb+'); + if ($file === false) { + ErrorManager::showCustomErrorPage('IO error', 'Unable to open .env'); + } + $needsNewline = false; + $size = filesize($path); + if ($size > 0) { + fseek($file, -1, SEEK_END); + $lastChar = fgetc($file); + $needsNewline = ($lastChar !== "\n"); + fseek($file, 0, SEEK_END); + } + + if ($needsNewline) { + fwrite($file, PHP_EOL); + } + $line = $key . '=' . trim($value ?? '') . PHP_EOL; + fwrite($file, $line); fclose($file); $this->load(); diff --git a/App/Manager/Loader/AutoLoad.php b/App/Manager/Loader/AutoLoad.php index 284f34d1..9759ee44 100644 --- a/App/Manager/Loader/AutoLoad.php +++ b/App/Manager/Loader/AutoLoad.php @@ -8,21 +8,6 @@ use CMW\Manager\Error\ErrorManager; use CMW\Utils\Website; use UnhandledMatchError; -use function array_pop; -use function array_slice; -use function count; -use function dirname; -use function explode; -use function get_declared_classes; -use function implode; -use function in_array; -use function ini_set; -use function is_file; -use function session_start; -use function session_status; -use function spl_autoload_register; -use function str_replace; -use function ucfirst; use const DIRECTORY_SEPARATOR; use const PHP_SESSION_ACTIVE; @@ -30,6 +15,9 @@ class AutoLoad { public static array $findNameSpace = []; + /* Cache for ignored packages */ + private static ?array $ignoredPackagesCache = null; + private static function isEnvValid(): bool { require_once('App/Manager/Error/ErrorManager.php'); @@ -40,7 +28,7 @@ private static function isEnvValid(): bool private static function updateEnv(): void { - EnvManager::getInstance()->setOrEditValue('DIR', dirname(__DIR__, 2) . '/'); + EnvManager::getInstance()->setOrEditValue('DIR', \dirname(__DIR__, 2) . '/'); EnvManager::getInstance()->setOrEditValue('PATH_URL', Website::getUrl()); } @@ -49,7 +37,7 @@ private static function register(): void spl_autoload_register(static function (string $class) { $classPart = explode('\\', $class); - if (in_array($class, get_declared_classes())) { + if (\in_array($class, get_declared_classes())) { return false; } @@ -57,7 +45,7 @@ private static function register(): void return false; } - if ((count($classPart) >= 4) && $classPart[2] === 'Installer') { + if ((\count($classPart) >= 4) && $classPart[2] === 'Installer') { return match (ucfirst($classPart[1])) { 'Controller' => self::callPackage($classPart, 'Installation/', '/Controllers/'), 'Model' => self::callPackage($classPart, 'Installation/', '/Models/'), @@ -158,17 +146,22 @@ private static function getPackageElements(array $namespace, string $elementName private static function callPackage(array $classPart, string $startDir, string $folderPackage = ''): bool { - if (empty($startDir) || count($classPart) < 4) { + if (empty($startDir) || \count($classPart) < 4) { return false; } $namespace = implode('\\', $classPart); $packageName = $classPart[2]; - $fileName = $classPart[count($classPart) - 1] . '.php'; + $fileName = $classPart[\count($classPart) - 1] . '.php'; + + // Check if package is ignored + if (\in_array($packageName, self::getIgnoredPackages(), true)) { + return false; + } $subFolderFile = ''; - if (count($classPart) > 4) { - $subFolderFile = implode('\\', array_slice($classPart, 3, -1)) . '\\'; + if (\count($classPart) > 4) { + $subFolderFile = implode('\\', \array_slice($classPart, 3, -1)) . '\\'; } $dir = EnvManager::getInstance()->getValue('DIR'); @@ -188,21 +181,21 @@ private static function callPackage(array $classPart, string $startDir, string $ private static function callPackageImplementations(array $classPart, string $startDir, string $folderPackage = ''): bool { - if (empty($startDir) || count($classPart) !== 5) { + if (empty($startDir) || \count($classPart) !== 5) { return false; } $namespace = implode('\\', $classPart); $packageName = $classPart[2]; - $fileName = $classPart[count($classPart) - 1] . '.php'; + $fileName = $classPart[\count($classPart) - 1] . '.php'; if (!PackageController::isInstalled($classPart[3])) { return false; } $subFolderFile = ''; - if (count($classPart) > 4) { - $subFolderFile = implode('\\', array_slice($classPart, 3, -1)) . '\\'; + if (\count($classPart) > 4) { + $subFolderFile = implode('\\', \array_slice($classPart, 3, -1)) . '\\'; } $dir = EnvManager::getInstance()->getValue('DIR'); @@ -222,17 +215,17 @@ private static function callPackageImplementations(array $classPart, string $sta private static function callCoreClass(array $classPart, string $startDir): bool { - if (count($classPart) < 3) { + if (\count($classPart) < 3) { return false; } $namespace = implode('\\', $classPart); - $classPart = array_slice($classPart, 2); + $classPart = \array_slice($classPart, 2); $fileName = array_pop($classPart) . '.php'; - $subFolderFile = count($classPart) ? implode('/', $classPart) . '/' : ''; + $subFolderFile = \count($classPart) ? implode('/', $classPart) . '/' : ''; $filePath = EnvManager::getInstance()->getValue('DIR') . $startDir . $subFolderFile . $fileName; @@ -246,6 +239,36 @@ private static function callCoreClass(array $classPart, string $startDir): bool return true; } + /** + * @return array + */ + private static function getIgnoredPackages(): array + { + if (self::$ignoredPackagesCache !== null) { + return self::$ignoredPackagesCache; + } + + $ignored = []; + + $envValue = EnvManager::getInstance()->getValue('DISABLED_PACKAGE'); + if ($envValue) { + $ignored = array_map('trim', explode(',', $envValue)); + } + + $path = EnvManager::getInstance()->getValue('DIR') . DIRECTORY_SEPARATOR . '.ignored_packages'; + if (is_file($path) && is_readable($path)) { + $file = file_get_contents($path); + if ($file) { + $lines = array_map('trim', explode("\n", $file)); + $ignored = array_merge($ignored, $lines); + } + } + + self::$ignoredPackagesCache = array_unique(array_filter($ignored)); + + return self::$ignoredPackagesCache; + } + public static function load(): void { if (!self::isEnvValid()) { diff --git a/App/Manager/Notice/WarningManager.php b/App/Manager/Notice/WarningManager.php new file mode 100644 index 00000000..fd726e98 --- /dev/null +++ b/App/Manager/Notice/WarningManager.php @@ -0,0 +1,86 @@ + message (pas des listes) + $_SESSION[self::SESSION_KEY] = [ + 'info' => [], + 'warning' => [], + 'error' => [], + ]; + } + } + + /** @param string|null $key clé de dédup (par défaut: hash du message) */ + public static function addWarning(string $message, ?string $key = null): void + { + self::boot(); + $key ??= sha1($message); + $_SESSION[self::SESSION_KEY]['warning'][$key] = $message; // overwrite = idempotent + } + + /** + * @param string $message + * @param string|null $key + * @return void + */ + public static function addInfo(string $message, ?string $key = null): void + { + self::boot(); + $key ??= sha1($message); + $_SESSION[self::SESSION_KEY]['info'][$key] = $message; + } + + /** + * @param string $message + * @param string|null $key + * @return void + */ + public static function addError(string $message, ?string $key = null): void + { + self::boot(); + $key ??= sha1($message); + $_SESSION[self::SESSION_KEY]['error'][$key] = $message; + } + + /** + * @return array{info:string[],warning:string[],error:string[]} + */ + public static function pullAll(): array + { + self::boot(); + $all = [ + 'info' => array_values($_SESSION[self::SESSION_KEY]['info']), + 'warning' => array_values($_SESSION[self::SESSION_KEY]['warning']), + 'error' => array_values($_SESSION[self::SESSION_KEY]['error']), + ]; + // reset + $_SESSION[self::SESSION_KEY] = ['info'=>[], 'warning'=>[], 'error'=>[]]; + return $all; + } + + /** + * @return bool + */ + public static function hasNotices(): bool + { + self::boot(); + foreach ($_SESSION[self::SESSION_KEY] as $map) { + if (!empty($map)) return true; + } + return false; + } +} diff --git a/App/Manager/Package/AbstractEntity.php b/App/Manager/Package/AbstractEntity.php index e2a2f881..50089118 100644 --- a/App/Manager/Package/AbstractEntity.php +++ b/App/Manager/Package/AbstractEntity.php @@ -2,7 +2,7 @@ namespace CMW\Manager\Package; -use CMW\Utils\Utils; +use CMW\Utils\Str; use InvalidArgumentException; use JsonException; use ReflectionClass; @@ -33,7 +33,7 @@ public static function toEntity(array $brutData): static // Replace snake_case to camelCase $data = []; foreach ($brutData as $key => $value) { - $data[Utils::snakeToCamelCase($key)] = $value; + $data[Str::snakeToCamelCase($key)] = $value; } $reflector = new ReflectionClass(static::class); @@ -188,4 +188,32 @@ public static function fromEntitiesToArray(array $data): array } return $toReturn; } + + /** + *

This method check if required fields are presents.

+ *

If $fromDb is true, it means that the data comes from the database, so we translate field names from snake_case to camelCase.

+ * @param array $data + * @param bool $fromDb + * @return bool + */ + public static function validateFields(array $data, bool $fromDb = true): bool + { + $reflector = new ReflectionClass(static::class); + $constructor = $reflector->getConstructor(); + $parameters = $constructor?->getParameters() ?? []; + + foreach ($parameters as $parameter) { + $name = $parameter->getName(); + if ($fromDb) { + $name = Str::camelToSnakeCase($name); + } + + if (!\array_key_exists($name, $data) && !$parameter->isOptional() && !$parameter->allowsNull() && !$parameter->isDefaultValueAvailable()) { + return false; + } + } + + return true; + } + } diff --git a/App/Manager/Package/Adapter/LegacyPackageAdapter.php b/App/Manager/Package/Adapter/LegacyPackageAdapter.php new file mode 100644 index 00000000..0f267534 --- /dev/null +++ b/App/Manager/Package/Adapter/LegacyPackageAdapter.php @@ -0,0 +1,25 @@ +v1->name(); } + public function version(): string { return $this->v1->version(); } + + public function cmwVersion(): string { return UpdatesManager::getCmwLatest(); } + public function imageLink(): ?string { return null; } + public function authors(): array { return $this->v1->authors(); } + public function isGame(): bool { return $this->v1->isGame(); } + public function isCore(): bool { return $this->v1->isCore(); } + public function menus(): ?array { return $this->v1->menus(); } + public function compatiblesPackages(): array { return []; } + public function requiredPackages(): array { return $this->v1->requiredPackages(); } + public function uninstall(): bool { return $this->v1->uninstall(); } +} diff --git a/App/Manager/Package/IPackageConfig.php b/App/Manager/Package/IPackageConfig.php index b035fbec..e16a1a28 100644 --- a/App/Manager/Package/IPackageConfig.php +++ b/App/Manager/Package/IPackageConfig.php @@ -2,6 +2,11 @@ namespace CMW\Manager\Package; + +/** + * @deprecated + * @desc Update your packages quickly will be completely removed in beta-03 + */ interface IPackageConfig { public function name(): string; diff --git a/App/Manager/Package/IPackageConfigV2.php b/App/Manager/Package/IPackageConfigV2.php new file mode 100644 index 00000000..526c89da --- /dev/null +++ b/App/Manager/Package/IPackageConfigV2.php @@ -0,0 +1,74 @@ +Ex: ['Teyir', 'Zomb']

. + */ + public function authors(): array; + + /** + * @return bool + * @desc Will be classified in the 'GAMES' category in the admin menu + */ + public function isGame(): bool; + + /** + * @return bool + * @desc Return false! + */ + public function isCore(): bool; + + /** + * @return \CMW\Manager\Package\PackageMenuType[]|null + * @desc The auto generated menu in admin + */ + public function menus(): ?array; + + /** + * @return array + * @desc List all the compatibles packages + */ + public function compatiblesPackages(): array; + + /** + * @return string[] + * @desc List all the required packages. For automatic installation + */ + public function requiredPackages(): array; + + /** + * @return bool + * @desc + *

Uninstall package (PHP Requests, clean etc...)

+ *

PLEASE USE Package/$package/Init/uninstall.sql FOR SQL OPERATIONS !!

+ */ + public function uninstall(): bool; +} diff --git a/App/Manager/Security/HealthReport.php b/App/Manager/Security/HealthReport.php index 274ff290..d95360a0 100644 --- a/App/Manager/Security/HealthReport.php +++ b/App/Manager/Security/HealthReport.php @@ -58,6 +58,10 @@ public function generateReport(): string foreach (PackageController::getInstalledPackages() as $package) { $packages .= ' - ' . $package->name() . ' @' . $package->version() . " \n "; } + $ignoredPackages = ''; + foreach (PackageController::getIgnoredPackages() as $ignoredPackage) { + $ignoredPackages .= ' - ?!' . $ignoredPackage . "!? \n "; + } // Themes $themes = ''; @@ -70,6 +74,10 @@ public function generateReport(): string $themes .= " \n "; } + $ignoredThemes = ''; + foreach (ThemeLoader::getIgnoredThemes() as $ignoredTheme) { + $ignoredThemes .= ' - ?!' . $ignoredTheme . "!? \n "; + } // CMS $cmsVersion = UpdatesManager::getVersion(); @@ -108,10 +116,12 @@ public function generateReport(): string ----- PACKAGES ----- => Packages: $packages + $ignoredPackages ----- THEMES ----- => Themes: $themes + $ignoredThemes ----- CMS ----- => Version: $cmsVersion diff --git a/App/Manager/Theme/Adapter/LegacyThemeAdapter.php b/App/Manager/Theme/Adapter/LegacyThemeAdapter.php new file mode 100644 index 00000000..3c4f55b7 --- /dev/null +++ b/App/Manager/Theme/Adapter/LegacyThemeAdapter.php @@ -0,0 +1,19 @@ +v1->name(); } + public function version(): string { return $this->v1->version(); } + public function cmwVersion(): string { return $this->v1->cmwVersion(); } + public function imageLink(): ?string { return $this->v1->imageLink(); } + public function authors(): array { return $this->v1->authors(); } + public function compatiblesPackages(): array { return $this->v1->compatiblesPackages(); } + public function requiredPackages(): array { return $this->v1->requiredPackages(); } +} \ No newline at end of file diff --git a/App/Manager/Theme/IThemeConfig.php b/App/Manager/Theme/IThemeConfig.php index 8bb870b9..63acecba 100644 --- a/App/Manager/Theme/IThemeConfig.php +++ b/App/Manager/Theme/IThemeConfig.php @@ -3,26 +3,26 @@ namespace CMW\Manager\Theme; /** - * @desc Use this interface only for theme configuration - * @see SOON WIKI LINK + * @deprecated + * @desc Update your themes quickly will be completely removed in beta-03 */ interface IThemeConfig { /** * @return string - * @desc The theme name. + * @desc The theme name. (Same as Folder Theme Name) */ public function name(): string; /** * @return string - * @desc The theme version. Please use the same as the CMW Market version. + * @desc The theme version. Never use the precedents known by the market */ public function version(): string; /** * @return string - * @desc The current supported CMW Version. + * @desc The compatible CMW (CORE) version (always specify the latest one when updating) */ public function cmwVersion(): string; @@ -46,13 +46,13 @@ public function authors(): array; /** * @return string[] - * @desc List all the compatibles packages list optional packages. + * @desc List all the compatibles packages */ public function compatiblesPackages(): array; /** * @return string[] - * @desc List all the required packages. + * @desc List all the required packages. For automatic installation */ public function requiredPackages(): array; } diff --git a/App/Manager/Theme/IThemeConfigV2.php b/App/Manager/Theme/IThemeConfigV2.php new file mode 100644 index 00000000..46681a8c --- /dev/null +++ b/App/Manager/Theme/IThemeConfigV2.php @@ -0,0 +1,51 @@ +Ex: ['Teyir', 'Zomb']

. + */ + public function authors(): array; + + /** + * @return string[] + * @desc List all the compatibles packages + */ + public function compatiblesPackages(): array; + + /** + * @return string[] + * @desc List all the required packages. For automatic installation + */ + public function requiredPackages(): array; +} diff --git a/App/Manager/Theme/Loader/ThemeLoader.php b/App/Manager/Theme/Loader/ThemeLoader.php index e6649380..5c2a9b49 100644 --- a/App/Manager/Theme/Loader/ThemeLoader.php +++ b/App/Manager/Theme/Loader/ThemeLoader.php @@ -4,21 +4,32 @@ use CMW\Manager\Env\EnvManager; use CMW\Manager\Manager\AbstractManager; +use CMW\Manager\Notice\WarningManager; use CMW\Manager\Theme\Exceptions\ThemeNotFoundException; use CMW\Manager\Theme\IThemeConfig; +use CMW\Manager\Theme\IThemeConfigV2; +use CMW\Manager\Theme\Adapter\LegacyThemeAdapter; use CMW\Manager\Theme\ThemeManager; use CMW\Model\Core\CoreModel; use CMW\Utils\Directory; class ThemeLoader extends AbstractManager { - public function getCurrentTheme(): IThemeConfig + private static ?array $ignoredThemesCache = null; + + private const FALLBACK_THEME = 'Sampler'; + + public function getCurrentTheme(): IThemeConfigV2 { $currentThemeName = ThemeManager::$defaultThemeName; $isInstallation = EnvManager::getInstance()->getValue('INSTALLSTEP') !== '-1'; if (!$isInstallation) { - $currentThemeName = CoreModel::getInstance()->fetchOption('Theme'); + $currentThemeName = CoreModel::getInstance()->fetchOption('theme'); + } + + if (self::isDisabled($currentThemeName) || !$this::getInstance()->isLocalThemeExist($currentThemeName)) { + $currentThemeName = self::FALLBACK_THEME; } if (!$this::getInstance()->isLocalThemeExist($currentThemeName)) { @@ -30,9 +41,9 @@ public function getCurrentTheme(): IThemeConfig /** * @param string $themeName - * @return IThemeConfig|null + * @return IThemeConfigV2|null */ - public function getTheme(string $themeName): ?IThemeConfig + public function getTheme(string $themeName): ?IThemeConfigV2 { $namespace = 'CMW\\Theme\\' . $themeName . '\Theme'; @@ -42,15 +53,21 @@ public function getTheme(string $themeName): ?IThemeConfig $classInstance = new $namespace(); - if (!is_subclass_of($classInstance, IThemeConfig::class)) { - return null; + if ($classInstance instanceof IThemeConfigV2) { + return $classInstance; } - return $classInstance; + if ($classInstance instanceof IThemeConfig) { + WarningManager::addError("Le thème {$themeName} utilise l'ancienne interface IThemeConfig. Migre vers IThemeConfigV2 ou mets à jour le thème pour rester compatible.
IThemeConfig sera supprimé en beta-03."); + error_log("[CMW] Theme '$themeName' uses IThemeConfig (deprecated, removed in beta-03). Migrate to IThemeConfigV2 or update your theme."); + return new LegacyThemeAdapter($classInstance); + } + + return null; } /** - * @return IThemeConfig[] + * @return IThemeConfigV2[] */ public function getInstalledThemes(): array { @@ -59,6 +76,10 @@ public function getInstalledThemes(): array $themeDirs = Directory::getFolders($themesFolder); foreach ($themeDirs as $theme) { + if (self::isDisabled($theme)) { + continue; + } + $themeFile = "$themesFolder/$theme/Theme.php"; if (file_exists($themeFile) && !empty(file_get_contents($themeFile))) { $toReturn[] = $this->getTheme($theme); @@ -93,4 +114,54 @@ public function isLocalThemeExist(string $name): bool return file_exists("Public/Themes/$name/Theme.php"); } + public static function getIgnoredThemes(): array + { + if (self::$ignoredThemesCache !== null) { + return self::$ignoredThemesCache; + } + + $ignored = []; + + $envValue = EnvManager::getInstance()->getValue('DISABLED_THEME'); + if ($envValue) { + $envIgnored = array_map('trim', explode(',', $envValue)); + + foreach ($envIgnored as $themeName) { + if (strcasecmp($themeName, self::FALLBACK_THEME) === 0) { + continue; + } + + error_log("[CMW] Theme '$themeName' USER RUN THEME BUT API CMW NOT ALLOW THIS ON THIS DOMAIN : {$_SERVER['SERVER_NAME']}, SUPPORT D'ONT HELP THIS USER AND NOTIFY ADMIN QUICKLY !"); + WarningManager::addError("Le thème {$themeName} a été desactiver. CraftMyWebsite a remarqué que vous tentez d'installer un thème payant en contournant le système de vérification.
Votre domaine {$_SERVER['SERVER_NAME']} n'est pas autorisé pour faire fonctionner {$themeName}.
Veuillez corriger cela rapidement sous peine de prendre des sanctions (blacklistage de votre site sur l'api de craftmywebsite.fr)"); + } + + $ignored = $envIgnored; + } + + $path = EnvManager::getInstance()->getValue('DIR') . DIRECTORY_SEPARATOR . '.ignored_themes'; + if (is_file($path) && is_readable($path)) { + $file = file_get_contents($path); + if ($file) { + $lines = array_map('trim', explode("\n", $file)); + $ignored = array_merge($ignored, $lines); + } + } + + $ignored = array_filter($ignored, static fn($t) => strcasecmp($t, self::FALLBACK_THEME) !== 0); + + self::$ignoredThemesCache = array_unique(array_filter($ignored)); + + return self::$ignoredThemesCache; + } + +private static function isDisabled(string $theme): bool + { + foreach (self::getIgnoredThemes() as $ignored) { + if (strcasecmp($ignored, $theme) === 0) { + return true; + } + } + return false; + } + } \ No newline at end of file diff --git a/App/Manager/Theme/Market/ThemeMarketManager.php b/App/Manager/Theme/Market/ThemeMarketManager.php index 169dde7a..de483124 100644 --- a/App/Manager/Theme/Market/ThemeMarketManager.php +++ b/App/Manager/Theme/Market/ThemeMarketManager.php @@ -4,8 +4,9 @@ use CMW\Manager\Api\PublicAPI; use CMW\Manager\Manager\AbstractManager; -use CMW\Manager\Theme\IThemeConfig; +use CMW\Manager\Theme\IThemeConfigV2; use CMW\Manager\Theme\Loader\ThemeLoader; +use CMW\Manager\Updater\UpdatesManager; class ThemeMarketManager extends AbstractManager { @@ -15,11 +16,14 @@ class ThemeMarketManager extends AbstractManager */ public function getMarketThemes(): array { + if (UpdatesManager::isTestAPI()) { + return PublicAPI::getData('market/resources/all/states/0'); + } return PublicAPI::getData('market/resources/filtered/0'); } /** - * @return IThemeConfig[] + * @return IThemeConfigV2[] * @desc Return all themes local (remove thème get from the public market) */ public function getLocalThemes(): array diff --git a/App/Manager/Updater/UpdatesManager.php b/App/Manager/Updater/UpdatesManager.php index a9a17663..02dc812c 100644 --- a/App/Manager/Updater/UpdatesManager.php +++ b/App/Manager/Updater/UpdatesManager.php @@ -7,6 +7,24 @@ class UpdatesManager { + /** + * @return bool + * @desc Return if the website can test update + */ + public static function isTestAPI(): bool + { + return (bool)EnvManager::getInstance()->getValue('TEST_API_UPDATE'); + } + + /** + * @return bool + * @desc Return if the website is in recette env + */ + public static function isRecette(): bool + { + return (bool)EnvManager::getInstance()->getValue('IS_RECETTE'); + } + /** * @return string * @desc Return the local CMW version @@ -23,6 +41,9 @@ public static function getVersion(): string */ public static function getCmwLatest(): mixed { + if (self::isTestAPI()) { + return PublicAPI::getData('cms/latest/test'); + } return PublicAPI::getData('cms/latest'); } diff --git a/App/Manager/Xml/SitemapItemEntity.php b/App/Manager/Xml/SitemapItemEntity.php new file mode 100644 index 00000000..c0244349 --- /dev/null +++ b/App/Manager/Xml/SitemapItemEntity.php @@ -0,0 +1,73 @@ +loc = $loc; + $this->lastmod = $lastmod; + $this->priority = $priority; + $this->slug = $slug; + + $this->slugEncoded = base64_encode($this->slug); + } + + /** + * @return string + */ + public function getLoc(): string + { + return $this->loc; + } + + /** + * @return string + */ + public function getLastmod(): string + { + return $this->lastmod; + } + + /** + * @return float + */ + public function getPriority(): float + { + return $this->priority; + } + + /** + * @return string + */ + public function getSlug(): string + { + return $this->slug; + } + + /** + *

Base64 encoded slug

+ * @return string + */ + public function getSlugEncoded(): string + { + return $this->slugEncoded; + } +} \ No newline at end of file diff --git a/App/Manager/Xml/SitemapManager.php b/App/Manager/Xml/SitemapManager.php index 9fc26845..b3a042fa 100644 --- a/App/Manager/Xml/SitemapManager.php +++ b/App/Manager/Xml/SitemapManager.php @@ -5,7 +5,6 @@ use CMW\Manager\Env\EnvManager; use CMW\Manager\Manager\AbstractManager; use CMW\Utils\File; -use CMW\Utils\Log; use function str_starts_with; class SitemapManager extends AbstractManager @@ -101,7 +100,6 @@ public function update(string $slug, float $priority): bool $loc = $this->getLocation($slug); foreach ($content->url as $url) { - Log::debug($url); if ((string)$url->loc === $loc) { $url->lastmod = date('c'); @@ -197,4 +195,91 @@ private function getLocation(string $slug): string return $pathUrl . $slug; } + + /** + * @return SitemapItemEntity[] + * @desc Get all URLs from sitemap + */ + public function getAll(): array + { + $file = EnvManager::getInstance()->getValue('DIR') . 'sitemap.xml'; + + if (!file_exists($file)) { + return []; + } + + $content = XmlManager::getInstance()->read($file); + + if (!$content) { + return []; + } + + $toReturn = []; + foreach ($content->url as $url) { + $toReturn[] = new SitemapItemEntity( + (string)$url->loc, + (string)$url->lastmod, + (float)$url->priority, + $this->getSlugFromLocation((string)$url->loc) + ); + } + + return $toReturn; + } + + /** + * @param string $slug + * @return SitemapItemEntity|null + * @desc Get specific URL by slug + */ + public function getBySlug(string $slug): ?SitemapItemEntity + { + $file = EnvManager::getInstance()->getValue('DIR') . 'sitemap.xml'; + + if (!file_exists($file)) { + return null; + } + + $content = XmlManager::getInstance()->read($file); + + if (!$content) { + return null; + } + + $loc = $this->getLocation($slug); + + foreach ($content->url as $url) { + if ((string)$url->loc === $loc) { + return new SitemapItemEntity( + (string)$url->loc, + (string)$url->lastmod, + (float)$url->priority, + $this->getSlugFromLocation((string)$url->loc) + ); + } + } + + return null; + } + + /** + * @param string $location + * @return string + */ + private function getSlugFromLocation(string $location): string + { + $pathUrl = EnvManager::getInstance()->getValue('PATH_URL'); + + if (str_starts_with($location, $pathUrl)) { + $slug = str_replace($pathUrl, '', $location); + } else { + $slug = $location; + } + + if (str_starts_with($slug, '/')) { + $slug = substr($slug, 1); + } + + return $slug === '' ? '/' : $slug; + } } diff --git a/App/Package/Core/Controllers/Api/External/CheckerController.php b/App/Package/Core/Controllers/Api/External/CheckerController.php new file mode 100644 index 00000000..488f25c7 --- /dev/null +++ b/App/Package/Core/Controllers/Api/External/CheckerController.php @@ -0,0 +1,119 @@ +getActivations(); + if (!$rows) return; + + $acts = []; + foreach ($rows as $r) { + $acts[] = [ + 'resId' => (int)$r['resource_id'], + 'activationKey' => EncryptManager::decrypt($r['resource_key']), + ]; + } + + $res = PublicAPI::postData('market/resources/check', ['activations' => $acts]); + + if (empty($res) || empty($res['success']) || empty($res['results']) || !is_array($res['results'])) { + return; + } + + foreach ($res['results'] as $r) { + $type = (int)($r['type'] ?? 0); + $name = $r['name'] ?? null; + if (!$name) continue; + + if (in_array($r['status'], ['invalid_key','unlinked_domain'], true)) { + $this->notifyFor($r); + } + + if ($r['status'] === 'ok') { + $this->removeDisabled($type, $name); + continue; + } + + $daysLeft = (int)($r['days_left'] ?? 7); + $shouldDisable = (int)($r['should_disable'] ?? 0); + + if ($shouldDisable === 1 || $daysLeft <= 0) { + $this->addDisabled($type, $name); + } + } + } + + private function getCsvEnv(string $key): array { + $val = EnvManager::getInstance()->getValue($key) ?? ''; + $val = trim($val); + if ($val === '') { + return []; + } + return array_values(array_unique(array_filter(array_map('trim', explode(',', $val))))); + } + + private function setCsvEnv(string $key, array $values): void { + $values = array_values(array_unique(array_filter(array_map('trim', $values)))); + EnvManager::getInstance()->setOrEditValue($key, $values ? implode(',', $values) : ''); + } + + private function addDisabled(int $type, string $name): void { + $key = $type === 1 ? 'DISABLED_PACKAGE' : 'DISABLED_THEME'; + $list = $this->getCsvEnv($key); + if (!in_array($name, $list, true)) { + $list[] = $name; + $this->setCsvEnv($key, $list); + } + } + + private function removeDisabled(int $type, string $name): void { + $key = $type === 1 ? 'DISABLED_PACKAGE' : 'DISABLED_THEME'; + $list = $this->getCsvEnv($key); + $list = array_values(array_filter($list, static fn($n) => $n !== $name)); + $this->setCsvEnv($key, $list); + } + + private function notifyFor(array $r): void + { + // status-specific message + if ($r['status'] === 'unlinked_domain') { + error_log("[CMW] API CHECKER RUN '{$r['market_name']}' BUT API CMW NOT ALLOW THIS ON THIS DOMAIN (GRACE PERIOD) : {$_SERVER['HTTP_HOST']}, SUPPORT D'ONT HELP THIS USER AND NOTIFY ADMIN QUICKLY !"); + if ($r['days_left'] !== 0) { + WarningManager::addInfo( + "CraftMyWebsite.fr a détecté que le domaine {$_SERVER['HTTP_HOST']} n’est pas lié à votre clé d'activation pour {$r['market_name']}.
". + "Ajoute le domaine pour corriger le problème.
". + "Délai restant : {$r['days_left']} jour(s)." + ); + } + } elseif ($r['status'] === 'invalid_key') { + error_log("[CMW] API CHECKER RUN '{$r['market_name']}' BUT API CMW NOT ALLOW THIS BECAUSE KEY NOT EXIST (GRACE PERIOD) : {$_SERVER['HTTP_HOST']}, SUPPORT D'ONT HELP THIS USER AND NOTIFY ADMIN QUICKLY !"); + if ($r['days_left'] !== 0) { + WarningManager::addInfo( + "CraftMyWebsite.fr a détecté une clé d’activation invalide pour {$r['market_name']}.
" . + "Aucune correction possible, la clé n'existe plus chez CraftMyWebSite.fr (certainement une suppression de votre compte) La ressource sera désactivée dans {$r['days_left']} jour(s)." + ); + } + } + } +} diff --git a/App/Package/Core/Controllers/ConditionController.php b/App/Package/Core/Controllers/ConditionController.php deleted file mode 100644 index 713b6e1c..00000000 --- a/App/Package/Core/Controllers/ConditionController.php +++ /dev/null @@ -1,96 +0,0 @@ -getCGV(); - $cgu = ConditionModel::getInstance()->getCGU(); - - View::createAdminView('Core', 'Condition/condition') - ->addScriptBefore('Admin/Resources/Vendors/Tinymce/tinymce.min.js', 'Admin/Resources/Vendors/Tinymce/Config/full.js') - ->addVariableList(['cgv' => $cgv, 'cgu' => $cgu]) - ->view(); - } - - #[NoReturn] #[Link('/condition', Link::POST, [], '/cmw-admin')] - private function conditionDashboardPost(): void - { - UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.settings.conditions'); - - [$cguContent, $cguState, $cgvContent, $cgvState] = Utils::filterInput( - 'cguContent', 'cguState', 'cgvContent', 'cgvState' - ); - - $user = UsersSessionsController::getInstance()->getCurrentUser(); - - if (is_null($user)) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.toaster.internalError')); - - Redirect::redirectPreviousRoute(); - } - - $userId = UsersSessionsController::getInstance()->getCurrentUser()?->getId(); - - $cguState = $cguState === NULL ? 0 : 1; - $cgvState = $cgvState === NULL ? 0 : 1; - - ConditionModel::getInstance()->updateCondition($cguContent, $cguState, $cgvContent, $cgvState, $userId); - - Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), - LangManager::translate('core.toaster.config.success')); - - Redirect::redirectPreviousRoute(); - } - - /* //////////////////// FRONT PUBLIC //////////////////// */ - - #[Link('/cgv', Link::GET)] - private function frontCGUPublic(): void - { - $cgv = ConditionModel::getInstance()->getCGV(); - - if (!$cgv?->isState()) { - Redirect::redirectToHome(); - } - - View::createPublicView('Core', 'cgv')->addVariableList(['cgv' => $cgv])->view(); - } - - #[Link('/cgu', Link::GET)] - private function frontCGVPublic(): void - { - $cgu = ConditionModel::getInstance()->getCGU(); - - if (!$cgu?->isState()) { - Redirect::redirectToHome(); - } - - View::createPublicView('Core', 'cgu')->addVariableList(['cgu' => $cgu])->view(); - } -} diff --git a/App/Package/Core/Controllers/CoreController.php b/App/Package/Core/Controllers/CoreController.php index d262e2e3..d7e0d1dd 100644 --- a/App/Package/Core/Controllers/CoreController.php +++ b/App/Package/Core/Controllers/CoreController.php @@ -2,6 +2,7 @@ namespace CMW\Controller\Core; +use CMW\Controller\Core\Api\External\CheckerController; use CMW\Controller\Users\UsersController; use CMW\Interface\Core\IDashboardElements; use CMW\Interface\Core\ITopBarElements; @@ -36,7 +37,7 @@ class CoreController extends AbstractController public static function getThemePath(): string { - self::$themeName = CoreModel::getInstance()->fetchOption('Theme'); + self::$themeName = CoreModel::getInstance()->fetchOption('theme'); return (empty($themeName = self::$themeName)) ? '' : "./Public/Themes/$themeName/"; } @@ -54,7 +55,7 @@ public static function formatDate(string $date): string private function adminDashboard(): void { UsersController::redirectIfNotHavePermissions('core.dashboard'); - + CheckerController::getInstance()->checkActivationAPI(); // Redirect to the dashboard if ($_GET['url'] === 'cmw-admin') { Redirect::redirect(EnvManager::getInstance()->getValue('PATH_SUBFOLDER') . 'cmw-admin/dashboard'); diff --git a/App/Package/Core/Controllers/MaintenanceController.php b/App/Package/Core/Controllers/MaintenanceController.php index 664fdbc8..eeda6f91 100644 --- a/App/Package/Core/Controllers/MaintenanceController.php +++ b/App/Package/Core/Controllers/MaintenanceController.php @@ -3,6 +3,7 @@ namespace CMW\Controller\Core; use CMW\Controller\Users\UsersController; +use CMW\Manager\Filter\FilterManager; use CMW\Manager\Flash\Alert; use CMW\Manager\Flash\Flash; use CMW\Manager\Lang\LangManager; @@ -47,7 +48,11 @@ private function adminConfigurationPost(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.settings.maintenance'); - [$title, $description, $targetDate, $type, $overrideThemeCode] = Utils::filterInput('title', 'description', 'target-date', 'type', 'overrideThemeCode'); + $title = FilterManager::filterInputStringPost('title'); + $description = FilterManager::filterInputStringPost('description'); + $targetDate = FilterManager::filterInputStringPost('target-date'); + $type = FilterManager::filterInputIntPost('noRegister'); + $overrideThemeCode = FilterManager::filterInputIntPost('overrideThemeCode'); $isEnable = isset($_POST['isEnable']) ? 1 : 0; $noEnd = isset($_POST['noEnd']) ? 1 : 0; @@ -114,12 +119,12 @@ public function redirectMaintenance(): void } // /// Login checks - if ($maintenance->getType() === 1 && + if ($maintenance->getType() === 0 && (Website::isCurrentPage('login') || Website::isCurrentPage('register') || Website::isCurrentPage('login/forgot') || Website::isCurrentPage('login/validate/tfa'))) { return; } - if ($maintenance->getType() === 2 && + if ($maintenance->getType() === 1 && (Website::isCurrentPage('login') || Website::isCurrentPage('login/forgot') || Website::isCurrentPage('login/validate/tfa'))) { return; } diff --git a/App/Package/Core/Controllers/PackageController.php b/App/Package/Core/Controllers/PackageController.php index eae506e9..4fa7fdb4 100644 --- a/App/Package/Core/Controllers/PackageController.php +++ b/App/Package/Core/Controllers/PackageController.php @@ -2,19 +2,27 @@ namespace CMW\Controller\Core; +use CMW\Controller\Core\Api\External\CheckerController; use CMW\Controller\Users\UsersController; +use CMW\Exception\Core\Download\DownloadException; use CMW\Manager\Api\PublicAPI; use CMW\Manager\Database\DatabaseManager; use CMW\Manager\Download\DownloadManager; use CMW\Manager\Env\EnvManager; +use CMW\Manager\Filter\FilterManager; use CMW\Manager\Flash\Alert; use CMW\Manager\Flash\Flash; use CMW\Manager\Lang\LangManager; +use CMW\Manager\Notice\WarningManager; use CMW\Manager\Package\AbstractController; use CMW\Manager\Package\IPackageConfig; +use CMW\Manager\Package\IPackageConfigV2; +use CMW\Manager\Package\Adapter\LegacyPackageAdapter; use CMW\Manager\Router\Link; +use CMW\Manager\Security\EncryptManager; use CMW\Manager\Updater\UpdatesManager; use CMW\Manager\Views\View; +use CMW\Model\Core\ActivatedModel; use CMW\Utils\Directory; use CMW\Utils\Redirect; use JetBrains\PhpStorm\NoReturn; @@ -26,7 +34,6 @@ use function file_get_contents; use function in_array; use function is_null; -use function is_subclass_of; use function scandir; /** @@ -38,9 +45,10 @@ class PackageController extends AbstractController { public static array $corePackages = ['Core', 'Users', 'Pages']; + private static ?array $ignoredEnvCache = null; /** - * @return IPackageConfig[] + * @return IPackageConfigV2[] * @desc Return packages they are not natives, like Core and Users */ public static function getInstalledPackages(): array @@ -54,7 +62,10 @@ public static function getInstalledPackages(): array } if (file_exists("$packagesFolder/$package/Package.php") && !in_array($package, self::$corePackages, true)) { - $toReturn[] = self::getPackage($package); + $packageInstance = self::getPackage($package); + if ($packageInstance !== null) { + $toReturn[] = $packageInstance; + } } } @@ -62,7 +73,7 @@ public static function getInstalledPackages(): array } /** - * @return IPackageConfig[] + * @return IPackageConfigV2[] * @desc Return natives packages (core, users) => self::$corePackages */ public static function getCorePackages(): array @@ -71,7 +82,10 @@ public static function getCorePackages(): array $packagesFolder = 'App/Package/'; foreach (self::$corePackages as $package) { if (file_exists("$packagesFolder/$package/Package.php")) { - $toReturn[] = self::getPackage($package); + $packageInstance = self::getPackage($package); + if ($packageInstance !== null) { + $toReturn[] = $packageInstance; + } } } @@ -79,7 +93,7 @@ public static function getCorePackages(): array } /** - * @return IPackageConfig[] + * @return IPackageConfigV2[] * @desc Return getCorePackages() and getInstalledPackages() */ public static function getAllPackages(): array @@ -87,8 +101,14 @@ public static function getAllPackages(): array return array_merge(self::getCorePackages(), self::getInstalledPackages()); } - public static function getPackage(string $packageName): ?IPackageConfig + public static function getPackage(string $packageName): ?IPackageConfigV2 { + if (self::isDisabled($packageName)) { + error_log("[CMW] Package '$packageName' USER RUN PACKAGE BUT API CMW NOT ALLOW THIS ON THIS DOMAIN : {$_SERVER['SERVER_NAME']}, SUPPORT D'ONT HELP THIS USER AND NOTIFY ADMIN QUICKLY !"); + WarningManager::addError("Le package {$packageName} a été désactivé. CraftMyWebsite a remarqué une tentative d'installation en contournant la vérification.
Votre domaine {$_SERVER['SERVER_NAME']} n'est pas autorisé pour {$packageName}.
Veuillez corriger cela rapidement sous peine de prendre des sanctions (blacklistage de votre site sur l'api de craftmywebsite.fr)"); + return null; + } + $namespace = 'CMW\\Package\\' . $packageName . '\Package'; if (!class_exists($namespace)) { @@ -97,11 +117,17 @@ public static function getPackage(string $packageName): ?IPackageConfig $classInstance = new $namespace(); - if (!is_subclass_of($classInstance, IPackageConfig::class)) { - return null; + if ($classInstance instanceof IPackageConfigV2) { + return $classInstance; + } + + if ($classInstance instanceof IPackageConfig) { + WarningManager::addError("Le package {$packageName} utilise l'ancienne interface IPackageConfig. Migre vers IPackageConfigV2 ou met à jour le package pour rester compatible.
IPackageConfig ne sera plus disponnible en beta-03"); + error_log("[CMW] Package '$packageName' Uses IPackageConfig (deprecated removed in beta-03). Consider migrating to IPackageConfigV2. or update the package if you haven't already!"); + return new LegacyPackageAdapter($classInstance); } - return $classInstance; + return null; } public static function isInstalled(string $package): bool @@ -109,17 +135,43 @@ public static function isInstalled(string $package): bool return self::getPackage($package) !== null; } + public static function getIgnoredPackages(): array + { + if (self::$ignoredEnvCache !== null) { + return self::$ignoredEnvCache; + } + + $env = EnvManager::getInstance()->getValue('DISABLED_PACKAGE') ?: ''; + $list = array_filter(array_map('trim', explode(',', $env))); + self::$ignoredEnvCache = array_values(array_unique($list)); + + return self::$ignoredEnvCache; + } + + public static function isDisabled(string $package): bool + { + foreach (self::getIgnoredPackages() as $p) { + if (strcasecmp($p, $package) === 0) { + return true; + } + } + return false; + } + /** * @return array * @desc Return the list of public packages from our market */ public static function getMarketPackages(): array { + if (UpdatesManager::isTestAPI()) { + return PublicAPI::getData('market/resources/all/states/1'); + } return PublicAPI::getData('market/resources/filtered/1'); } /** - * @return IPackageConfig[] + * @return IPackageConfigV2[] * @desc Return all packages local (remove packages get from the public market) */ public static function getLocalPackages(): array @@ -148,9 +200,12 @@ public static function getLocalPackages(): array private function adminPackageManage(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.packages.market'); + CheckerController::getInstance()->checkActivationAPI(); $installedPackages = self::getInstalledPackages(); - $packagesList = self::getMarketPackages(); + $packagesList = array_filter(self::getMarketPackages(), static function ($pkg) { + return !self::isInstalled($pkg['name']) && !self::isDisabled($pkg['name']); + }); View::createAdminView('Core', 'Package/market') ->addVariableList(['installedPackages' => $installedPackages, 'packagesList' => $packagesList]) @@ -161,6 +216,7 @@ private function adminPackageManage(): void private function adminMyPackage(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.packages.manage'); + CheckerController::getInstance()->checkActivationAPI(); $installedPackages = self::getInstalledPackages(); $packagesList = self::getMarketPackages(); @@ -170,9 +226,9 @@ private function adminMyPackage(): void ->view(); } - #[Link('/install/:id', Link::GET, ['id' => '[0-9]+'], '/cmw-admin/packages')] #[NoReturn] - private function adminPackageInstallation(int $id): void + #[Link('/install', Link::POST, [], '/cmw-admin/packages')] + private function adminPackageInstallation(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.packages.market'); @@ -184,23 +240,122 @@ private function adminPackageInstallation(int $id): void } } - $package = PublicAPI::putData("market/resources/install/$id"); + $id = FilterManager::filterInputIntPost('resId'); + $status = FilterManager::filterInputStringPost('status'); + $activationKey = FilterManager::filterInputStringPost('activationKey'); - if (empty($package)) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.toaster.internalError') . ' (API)'); - Redirect::redirectPreviousRoute(); + if ($status === 'online') { + $status = 0; + } else { + $status = 1; } - if (!DownloadManager::installPackageWithLink($package['file'], 'package', $package['name'])) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.downloads.errors.internalError', - ['name' => $package['name'], 'version' => $package['version_name']])); + // Check market dependencies + $thisPackage = PublicAPI::getData("market/resources/$id"); + + $missing = []; + if (!empty($thisPackage['dependencies'])) { + foreach ($thisPackage['dependencies'] as $dep) { + if (is_null(PackageController::getPackage($dep['market_name'] ?? $dep['name'] ?? null))) { + $missing[] = ''.($dep['market_name'] ?? $dep['name']).''; + } + } + + if (!empty($missing)) { + $count = count($missing); + $list = $count > 1 + ? implode(', ', array_slice($missing, 0, -1)).' et '.end($missing) + : $missing[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + 'Veuillez installer '.$label.$list.' avant d\'installer '.$thisPackage['market_name']. + ' car il en a besoin pour fonctionner.' + ); + Redirect::redirectPreviousRoute(); + } + + // Check versions of installed dependencies update before install + $blocking = []; + foreach ($thisPackage['dependencies'] as $dep) { + // Récup local + $local = self::getPackage($dep['market_name'] ?? $dep['name'] ?? null); + if ($local === null) { + continue; + } + + $depIdOrSlug = $dep['id'] ?? ($dep['name'] ?? null); + $depApi = $depIdOrSlug ? PublicAPI::getData("market/resources/{$depIdOrSlug}") : null; + if (!is_array($depApi) || empty($depApi['version_name'])) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." (version distante inconnue)"; + continue; + } + + $remote = ltrim((string)$depApi['version_name'], "vV"); + $localV = ltrim((string)$local->version(), "vV"); + + if (version_compare($localV, $remote, '<')) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." {$localV} ➜ {$remote}"; + } + } + + if (!empty($blocking)) { + $count = count($blocking); + $list = $count > 1 + ? implode(', ', array_slice($blocking, 0, -1)).' et '.end($blocking) + : $blocking[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + "Veuillez d'abord mettre à jour {$label}{$list} avant d'installer {$thisPackage['market_name']}." + ); + Redirect::redirectPreviousRoute(); + } + } + + $data = [ + 'resId' => $id, + 'status' => $status, + 'activationKey' => $activationKey, + ]; + + $package = PublicAPI::postData("market/resources/install" , $data); + + if (isset($package['error'])) { + $code = $package['error']['code'] ?? 'UNKNOWN'; + $desc = $package['error']['description']['Description'] + ?? $package['error']['description']['description'] + ?? ($package['error']['info'] ?? 'Erreur inconnue'); + + Flash::send(Alert::ERROR, "Erreur ".$code, $desc); Redirect::redirectPreviousRoute(); + } elseif (!empty($package['file'])) { + try { + DownloadManager::installPackageWithLink($package['file'], 'package', $package['name']); + } catch (DownloadException $e) { + Flash::send( + Alert::ERROR, + LangManager::translate('core.toaster.error'), + LangManager::translate('core.toaster.theme.unableUpdate') . $e->getMessage(), + ); + Redirect::redirectPreviousRoute(); + } + if (!empty($activationKey)) { + ActivatedModel::getInstance()->addActivation(EncryptManager::encrypt($activationKey), $thisPackage['id'], $thisPackage['name']); + } + Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), + LangManager::translate('core.Package.toasters.install.success', ['package' => $package['name']])); + } else { + Flash::send(Alert::ERROR, "Erreur", "Une erreur est survenue sur l'API, contacte le support de CraftMyWebsite."); } - Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), - LangManager::translate('core.Package.toasters.install.success', ['package' => $package['name']])); + sleep(2); Redirect::redirectPreviousRoute(); } @@ -221,13 +376,13 @@ private function adminPackageDelete(string $package): void Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), LangManager::translate('core.Package.toasters.delete.success', ['package' => $package])); - + ActivatedModel::getInstance()->removeActivationByResName($package); Redirect::redirectPreviousRoute(); } - #[Link('/update/:id/:actualVersion/:packageName', Link::GET, ['id' => '[0-9]+', 'actualVersion' => '.*?', 'packageName' => '.*?'], '/cmw-admin/packages')] + #[Link('/update', Link::POST, [], '/cmw-admin/packages')] #[NoReturn] - private function adminPackageUpdate(int $id, string $actualVersion, string $packageName): void + private function adminPackageUpdate(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.packages.manage'); @@ -239,7 +394,82 @@ private function adminPackageUpdate(int $id, string $actualVersion, string $pack } } - $updates = PublicAPI::getData("market/resources/updates/$id/$actualVersion"); + $id = FilterManager::filterInputIntPost('resId'); + $actualVersion = FilterManager::filterInputStringPost('localVersion'); + $packageName = FilterManager::filterInputStringPost('packageName'); + $status = FilterManager::filterInputStringPost('status'); + + $statusInt = ($status === 'test') ? 1 : 0; + + //Check if dependencies have update before update this + $current = PublicAPI::getData("market/resources/$id"); + $blocking = []; + + if (!empty($current['dependencies'])) { + foreach ($current['dependencies'] as $dep) { + $local = self::getPackage($dep['market_name']); + if ($local === null) { + $blocking[] = "{$dep['market_name']} (non installé)"; + continue; + } + + $depApi = PublicAPI::getData("market/resources/{$dep['id']}"); + if (!is_array($depApi) || empty($depApi['version_name'])) { + $blocking[] = "{$dep['market_name']} (version distante inconnue)"; + continue; + } + + $remote = ltrim((string)$depApi['version_name'], "vV"); + $localV = ltrim((string)$local->version(), "vV"); + + if (version_compare($localV, $remote, '<')) { + $blocking[] = "{$dep['market_name']} {$localV} ➜ {$remote}"; + } + } + + if (!empty($blocking)) { + $count = count($blocking); + $list = $count > 1 + ? implode(', ', array_slice($blocking, 0, -1)).' et '.end($blocking) + : $blocking[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + "Veuillez d'abord mettre à jour {$label}{$list} avant d'actualiser {$packageName}." + ); + Redirect::redirectPreviousRoute(); + } + } + + $activation = ActivatedModel::getInstance()->getActivationByResId($id); + $activationKey = $activation['resource_key'] ?? null; + if ($activationKey) { + $decryptedActivationKey = EncryptManager::decrypt($activationKey); + } else { + $decryptedActivationKey = null; + } + + $data = [ + 'resId' => $id, + 'version' => $actualVersion, + 'status' => $statusInt, + 'activationKey' => $decryptedActivationKey, + ]; + + $updates = PublicAPI::postData("market/resources/updates", $data); + + if (isset($updates['error'])) { + $code = $updates['error']['code'] ?? 'UNKNOWN'; + $desc = $updates['error']['description']['Description'] + ?? $updates['error']['description']['description'] + ?? ($updates['error']['info'] ?? 'Erreur inconnue'); + + Flash::send(Alert::ERROR, "Erreur ".$code, $desc); + Redirect::redirectPreviousRoute(); + } if (empty($updates)) { Flash::send( @@ -250,17 +480,12 @@ private function adminPackageUpdate(int $id, string $actualVersion, string $pack Redirect::redirectPreviousRoute(); } - if (isset($updates['error'])) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), $updates['error']['code']); - Redirect::redirectPreviousRoute(); - } - // Update package if (!Directory::delete(EnvManager::getInstance()->getValue('DIR') . "App/Package/$packageName")) { Flash::send( Alert::ERROR, LangManager::translate('core.toaster.error'), - "Unable to delete folder " . EnvManager::getInstance()->getValue('DIR') . "App/Package/$packageName", + LangManager::translate('core.toaster.theme.unableDeleteFolder') . EnvManager::getInstance()->getValue('DIR') . "App/Package/$packageName", ); Redirect::redirectPreviousRoute(); } @@ -283,11 +508,13 @@ private function adminPackageUpdate(int $id, string $actualVersion, string $pack } if ($i === $lastUpdateIndex) { - if (!DownloadManager::installPackageWithLink($update['file'], 'package', $packageName)) { + try { + DownloadManager::installPackageWithLink($update['file'], 'package', $packageName); + } catch (DownloadException $e) { Flash::send( Alert::ERROR, LangManager::translate('core.toaster.error'), - "Unable to install the package update " . $update['title'], + LangManager::translate('core.toaster.theme.unableUpdate') . $e->getMessage(), ); Redirect::redirectPreviousRoute(); } @@ -298,7 +525,7 @@ private function adminPackageUpdate(int $id, string $actualVersion, string $pack LangManager::translate('core.Package.toasters.update.success', ['package' => $packageName])); //Reload too fast redirect not refresh correctly - sleep(1); + sleep(5); Redirect::redirectPreviousRoute(); } diff --git a/App/Package/Core/Controllers/TermsController.php b/App/Package/Core/Controllers/TermsController.php new file mode 100644 index 00000000..2b1f45d5 --- /dev/null +++ b/App/Package/Core/Controllers/TermsController.php @@ -0,0 +1,185 @@ +getLatestPerType(); + $byType = []; + foreach ($lastestTerms as $term) { + $byType[$term->getType()->value] = $term; + } + + View::createAdminView('Core', 'Terms/manage') + ->addScriptBefore('Admin/Resources/Vendors/Tinymce/tinymce.min.js', 'Admin/Resources/Vendors/Tinymce/Config/full.js') + ->addVariableList(['types' => TermType::cases(), 'terms' => $byType]) + ->view(); + } + + #[NoReturn] + #[Link('/terms', Link::POST, [], '/cmw-admin')] + private function termsDashboardPost(): void + { + UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.settings.conditions'); + + $userId = UsersSessionsController::getInstance()->getCurrentUser()?->getId(); + if (is_null($userId)) { + Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), LangManager::translate('core.toaster.internalError')); + Redirect::redirectPreviousRoute(); + } + + $payload = $_POST['term'] ?? []; + $model = new TermsModel(); + $published = 0; + + foreach (TermType::cases() as $type) { + $key = $type->value; + if (!isset($payload[$key])) continue; + + $content = trim((string)($payload[$key]['content'] ?? '')); + $requires = isset($payload[$key]['requires_accept']) && $payload[$key]['requires_accept'] === '1'; + + $isActive = isset($payload[$key]['is_active']) && $payload[$key]['is_active'] === '1'; + try { + $model->setTypeActive($type, $isActive); + } catch (\RuntimeException $e) { + + } + + // Dernière version pour comparaison + $latest = $model->getLatestByType($type); + $prevContent = $latest?->getContent() ?? ''; + $prevRequires = $latest?->getRequireAccept() ?? true; + + $changedContent = hash('sha256', $content) !== hash('sha256', $prevContent); + $changedRequires = (bool)$requires !== (bool)$prevRequires; + + if ($changedContent || $changedRequires) { + $id = $model->publish($type, $content, $requires, (int)$userId); + if ($id) $published++; + } + } + + Flash::send( + Alert::SUCCESS, + LangManager::translate('core.toaster.success'), + $published > 0 + ? sprintf(LangManager::translate('core.terms.toaster.savedN'), ['d' => $published]) + : LangManager::translate('core.terms.toaster.noChange') + ); + + Redirect::redirectPreviousRoute(); + } + + /* //////////////////// FRONT PUBLIC //////////////////// */ + + #[Link('/all_terms', Link::GET)] + private function frontAllPublic(): void + { + $model = TermsModel::getInstance(); + + $latestActive = $model->getLatestPerTypeActive(); + $byType = []; + foreach ($latestActive as $term) { + $byType[$term->getType()->value] = $term; + } + + View::createPublicView('Core', 'Terms/all') + ->addVariableList([ + 'terms' => $byType, + 'types' => $model->getActiveTypes(), + ]) + ->view(); + } + + private function renderTermPublic(TermType $type, string $template): void + { + $model = TermsModel::getInstance(); + if (!$model->isTypeActive($type)) { + Redirect::errorPage(404); + } + + $term = $model->getLatestByType($type); + if (!$term) { + Redirect::errorPage(404); + } + + View::createPublicView('Core', $template) + ->addVariableList(['term' => $term]) + ->view(); + } + + #[Link('/cgu', Link::GET)] + #[Link('/terms_of_service', Link::GET)] + private function frontToServicePublic(): void + { + $this->renderTermPublic(TermType::TERMS_OF_SERVICE, 'Terms/terms_of_service'); + } + + #[Link('/cgv', Link::GET)] + #[Link('/terms_of_sale', Link::GET)] + private function frontToSalesPublic(): void + { + $this->renderTermPublic(TermType::TERMS_OF_SALE, 'Terms/terms_of_sale'); + } + + #[Link('/privacy_policy', Link::GET)] + private function frontPrivacyPolicyPublic(): void + { + $this->renderTermPublic(TermType::PRIVACY_POLICY, 'Terms/privacy_policy'); + } + + #[Link('/legal_notice', Link::GET)] + private function frontLegalNoticePublic(): void + { + $this->renderTermPublic(TermType::LEGAL_NOTICE, 'Terms/legal_notice'); + } + + #[Link('/cookie_policy', Link::GET)] + private function frontCookiePolicyPublic(): void + { + $this->renderTermPublic(TermType::COOKIE_POLICY, 'Terms/cookie_policy'); + } + + #[Link('/acceptable_use', Link::GET)] + private function frontAcceptableUsePublic(): void + { + $this->renderTermPublic(TermType::ACCEPTABLE_USE, 'Terms/acceptable_use'); + } + + #[Link('/terms_of_license', Link::GET)] + private function frontLicensePublic(): void + { + $this->renderTermPublic(TermType::LICENSE, 'Terms/license'); + } + + #[Link('/refund_policy', Link::GET)] + private function frontRefundPolicyPublic(): void + { + $this->renderTermPublic(TermType::REFUND_POLICY, 'Terms/refund_policy'); + } +} diff --git a/App/Package/Core/Controllers/ThemeController.php b/App/Package/Core/Controllers/ThemeController.php index 5281e4f4..92eb3fda 100644 --- a/App/Package/Core/Controllers/ThemeController.php +++ b/App/Package/Core/Controllers/ThemeController.php @@ -2,7 +2,9 @@ namespace CMW\Controller\Core; +use CMW\Controller\Core\Api\External\CheckerController; use CMW\Controller\Users\UsersController; +use CMW\Exception\Core\Download\DownloadException; use CMW\Manager\Api\PublicAPI; use CMW\Manager\Cache\SimpleCacheManager; use CMW\Manager\Database\DatabaseManager; @@ -14,6 +16,7 @@ use CMW\Manager\Lang\LangManager; use CMW\Manager\Package\AbstractController; use CMW\Manager\Router\Link; +use CMW\Manager\Security\EncryptManager; use CMW\Manager\Security\SecurityManager; use CMW\Manager\Theme\Config\ThemeMapper; use CMW\Manager\Theme\Config\ThemeSettingsMapper; @@ -26,6 +29,7 @@ use CMW\Manager\Updater\UpdatesManager; use CMW\Manager\Uploads\ImagesManager; use CMW\Manager\Views\View; +use CMW\Model\Core\ActivatedModel; use CMW\Model\Core\CoreModel; use CMW\Model\Core\ThemeModel; use CMW\Utils\Directory; @@ -47,6 +51,7 @@ class ThemeController extends AbstractController private function adminThemeMarket(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.themes.market'); + CheckerController::getInstance()->checkActivationAPI(); $currentTheme = ThemeLoader::getInstance()->getCurrentTheme(); $installedThemes = ThemeLoader::getInstance()->getInstalledThemes(); @@ -65,6 +70,7 @@ private function adminThemeMarket(): void private function adminThemeConfiguration(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.themes.manage'); + CheckerController::getInstance()->checkActivationAPI(); $currentTheme = ThemeLoader::getInstance()->getCurrentTheme(); $installedThemes = ThemeLoader::getInstance()->getInstalledThemes(); @@ -114,8 +120,8 @@ private function adminThemeConfigurationRegenerate(): void } #[NoReturn] - #[Link('/install/:id', Link::GET, ['id' => '[0-9]+'], '/cmw-admin/theme')] - private function adminThemeInstallation(int $id): void + #[Link('/install', Link::POST, [], '/cmw-admin/theme')] + private function adminThemeInstallation(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.themes.manage'); @@ -127,21 +133,119 @@ private function adminThemeInstallation(int $id): void } } - $theme = PublicAPI::putData("market/resources/install/$id"); + $id = FilterManager::filterInputIntPost('resId'); + $status = FilterManager::filterInputStringPost('status'); + $activationKey = FilterManager::filterInputStringPost('activationKey'); - if (empty($theme)) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.toaster.internalError') . ' (API)'); - Redirect::redirectPreviousRoute(); + if ($status === 'online') { + $status = 0; + } else { + $status = 1; } - if (!DownloadManager::installPackageWithLink($theme['file'], 'Theme', $theme['name'])) { - Flash::send(Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.downloads.errors.internalError', - ['name' => $theme['name'], 'version' => $theme['version_name']])); + // Check market dependencies + $thisTheme = PublicAPI::getData("market/resources/$id"); + + $missing = []; + if (!empty($thisTheme['dependencies'])) { + foreach ($thisTheme['dependencies'] as $dep) { + if (is_null(PackageController::getPackage($dep['market_name'] ?? $dep['name'] ?? null))) { + $missing[] = ''.($dep['market_name'] ?? $dep['name']).''; + } + } + + if (!empty($missing)) { + $count = count($missing); + $list = $count > 1 + ? implode(', ', array_slice($missing, 0, -1)).' et '.end($missing) + : $missing[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + 'Veuillez installer '.$label.$list.' avant d\'installer '.$thisTheme['market_name']. + ' car il en a besoin pour fonctionner.' + ); + Redirect::redirectPreviousRoute(); + } + + // Check versions of installed dependencies update before install + $blocking = []; + foreach ($thisTheme['dependencies'] as $dep) { + // Récup local + $local = ThemeLoader::getInstance()->getTheme($dep['name'] ?? null); + if ($local === null) { + continue; + } + + $depIdOrSlug = $dep['id'] ?? ($dep['name'] ?? null); + $depApi = $depIdOrSlug ? PublicAPI::getData("market/resources/{$depIdOrSlug}") : null; + if (!is_array($depApi) || empty($depApi['version_name'])) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." (version distante inconnue)"; + continue; + } + + $remote = ltrim((string)$depApi['version_name'], "vV"); + $localV = ltrim((string)$local->version(), "vV"); + + if (version_compare($localV, $remote, '<')) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." {$localV} ➜ {$remote}"; + } + } + + if (!empty($blocking)) { + $count = count($blocking); + $list = $count > 1 + ? implode(', ', array_slice($blocking, 0, -1)).' et '.end($blocking) + : $blocking[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + "Veuillez d'abord mettre à jour {$label}{$list} avant d'installer {$thisTheme['market_name']}." + ); + Redirect::redirectPreviousRoute(); + } + } + + $data = [ + 'resId' => $id, + 'status' => $status, + 'activationKey' => $activationKey, + ]; + + $theme = PublicAPI::postData("market/resources/install" , $data); + + if (isset($theme['error'])) { + $code = $theme['error']['code'] ?? 'UNKNOWN'; + $desc = $theme['error']['description']['Description'] + ?? $theme['error']['description']['description'] + ?? ($theme['error']['info'] ?? 'Erreur inconnue'); + + Flash::send(Alert::ERROR, "Erreur ".$code, $desc); Redirect::redirectPreviousRoute(); + } elseif (!empty($theme['file'])) { + try { + DownloadManager::installPackageWithLink($theme['file'], 'Theme', $theme['name']); + } catch (DownloadException $e) { + Flash::send( + Alert::ERROR, + LangManager::translate('core.toaster.error'), + LangManager::translate('core.toaster.theme.unableUpdate') . $e->getMessage(), + ); + Redirect::redirectPreviousRoute(); + } + } else { + Flash::send(Alert::ERROR, "Erreur", "Une erreur est survenue sur l'API, contacte le support de CraftMyWebsite."); } + if (!empty($activationKey)) { + ActivatedModel::getInstance()->addActivation(EncryptManager::encrypt($activationKey), $thisTheme['id'], $thisTheme['name']); + } // Install Theme settings ThemeFileManager::getInstance()->installThemeSettings($theme['name']); CoreModel::getInstance()->updateOption('theme', $theme['name']); @@ -152,6 +256,8 @@ private function adminThemeInstallation(int $id): void Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), LangManager::translate('core.toaster.theme.installed', ['theme' => $theme['name']])); + sleep(2); + Redirect::redirect('cmw-admin/theme/manage'); } @@ -159,6 +265,7 @@ private function adminThemeInstallation(int $id): void private function adminThemeManage(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.themes.edit'); + CheckerController::getInstance()->checkActivationAPI(); //Vérifie si la valeur par défaut est en base de donnée si ce n'est pas le cas, on l'ajoute, cela permet aux mises à jour des thèmes de gérer les nouvelles valeurs :) $themeMenus = ThemeEditorProcessor::getInstance()->getThemeMenus(); @@ -266,9 +373,9 @@ private function adminThemeManagePost(): void } } - #[Link('/update/:id/:actualVersion/:themeName', Link::GET, ['id' => '[0-9]+', 'actualVersion' => '.*?', 'themeName' => '.*?'], '/cmw-admin/theme')] + #[Link('/update', Link::POST, [], '/cmw-admin/theme')] #[NoReturn] - private function adminThemeUpdate(int $id, string $actualVersion, string $themeName): void + private function adminThemeUpdate(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.themes.manage'); @@ -280,53 +387,180 @@ private function adminThemeUpdate(int $id, string $actualVersion, string $themeN } } - $updates = PublicAPI::getData("market/resources/updates/$id/$actualVersion"); + $id = FilterManager::filterInputIntPost('resId'); + $actualVersion = FilterManager::filterInputStringPost('localVersion'); + $themeName = FilterManager::filterInputStringPost('themeName'); + $status = FilterManager::filterInputStringPost('status'); + + $statusInt = ($status === 'test') ? 1 : 0; - if (Directory::delete(EnvManager::getInstance()->getValue('DIR') . "Public/Theme/$themeName")) { - $lastUpdateIndex = count($updates) - 1; - foreach ($updates as $i => $update) { - if (!empty($update['sql_updater'])) { - $file = file_get_contents($update['sql_updater']); + $current = PublicAPI::getData("market/resources/$id"); - if (!$file) { - Flash::send( - Alert::ERROR, - LangManager::translate('core.toaster.error'), - $update['sql_updater'], - ); - Redirect::redirectPreviousRoute(); - } + if (isset($current['error'])) { + $code = $current['error']['code'] ?? 'UNKNOWN'; + $desc = $current['error']['description']['Description'] + ?? $current['error']['description']['description'] + ?? ($current['error']['info'] ?? 'Erreur inconnue'); - DatabaseManager::getLiteInstance()->query($file); + Flash::send(Alert::ERROR, "Erreur ".$code, $desc); + Redirect::redirectPreviousRoute(); + } + + $blocking = []; + + if (!empty($current['dependencies'])) { + $missing = []; + foreach ($current['dependencies'] as $dep) { + if (is_null(PackageController::getPackage($dep['market_name'] ?? $dep['name'] ?? null))) { + $missing[] = ''.($dep['market_name'] ?? $dep['name']).''; } + } + + if (!empty($missing)) { + $count = count($missing); + $list = $count > 1 + ? implode(', ', array_slice($missing, 0, -1)) . ' et ' . end($missing) + : $missing[0]; - if ($i === $lastUpdateIndex) { - if (!DownloadManager::installPackageWithLink($update['file'], 'Theme', $themeName)) { - Flash::send( - Alert::ERROR, - LangManager::translate('core.toaster.error'), - LangManager::translate('core.toaster.theme.unableUpdate') . $update['title'], - ); - Redirect::redirectPreviousRoute(); - } + $label = $count > 1 ? 'les packages ' : 'le package '; + + Flash::send( + Alert::WARNING, + 'Packages', + 'Veuillez installer '.$label.$list. + ' avant de mettre à jour '.$current['market_name'].' car il en a besoin pour fonctionner.' + ); + Redirect::redirectPreviousRoute(); + } + + foreach ($current['dependencies'] as $dep) { + // Ici tu avais ThemeLoader::getInstance()->getTheme(), je garde la logique + $local = ThemeLoader::getInstance()->getTheme($dep['name'] ?? null); + if ($local === null) { + continue; + } + + $depIdOrSlug = $dep['id'] ?? ($dep['name'] ?? null); + $depApi = $depIdOrSlug ? PublicAPI::getData("market/resources/{$depIdOrSlug}") : null; + + if (!is_array($depApi) || empty($depApi['version_name'])) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." (version distante inconnue)"; + continue; + } + + $remote = ltrim((string)$depApi['version_name'], "vV"); + $localV = ltrim((string)$local->version(), "vV"); + + if (version_compare($localV, $remote, '<')) { + $blocking[] = "".($dep['market_name'] ?? $dep['name'])." {$localV} ➜ {$remote}"; } } - //Une fois que toutes les mises à jour sont terminé, on rajoute les nouvelles configs : - ThemeFileManager::getInstance()->updateThemeSettings($themeName); + if (!empty($blocking)) { + $count = count($blocking); + $list = $count > 1 + ? implode(', ', array_slice($blocking, 0, -1)) . ' et ' . end($blocking) + : $blocking[0]; + + $label = $count > 1 ? 'les packages ' : 'le package '; - SimpleCacheManager::deleteSpecificCacheFile("config", "Themes/$themeName"); + Flash::send( + Alert::WARNING, + 'Packages', + "Veuillez d'abord mettre à jour {$label}{$list} avant d'actualiser {$themeName}." + ); + Redirect::redirectPreviousRoute(); + } + } - Flash::send(Alert::SUCCESS, LangManager::translate('core.toaster.success'), - LangManager::translate('core.theme.toasters.update.success', ['theme' => $themeName])); + $activation = ActivatedModel::getInstance()->getActivationByResId($id); + $activationKey = $activation['resource_key'] ?? null; + if ($activationKey) { + $decryptedActivationKey = EncryptManager::decrypt($activationKey); } else { + $decryptedActivationKey = null; + } + + $data = [ + 'resId' => $id, + 'version' => $actualVersion, + 'status' => $statusInt, + 'activationKey' => $decryptedActivationKey, + ]; + + $updates = PublicAPI::postData("market/resources/updates", $data); + + if (isset($updates['error'])) { + $code = $updates['error']['code'] ?? 'UNKNOWN'; + $desc = $updates['error']['description']['Description'] + ?? $updates['error']['description']['description'] + ?? ($updates['error']['info'] ?? 'Erreur inconnue'); + + Flash::send(Alert::ERROR, "Erreur ".$code, $desc); + Redirect::redirectPreviousRoute(); + } + + if (empty($updates)) { Flash::send( Alert::ERROR, LangManager::translate('core.toaster.error'), - LangManager::translate('core.toaster.theme.unableDeleteFolder') . EnvManager::getInstance()->getValue('DIR') . "Public/Theme/$themeName", + "No updates available for this theme", ); + Redirect::redirectPreviousRoute(); + } + + if (!Directory::delete(EnvManager::getInstance()->getValue('DIR') . "Public/Themes/$themeName")) { + Flash::send( + Alert::ERROR, + LangManager::translate('core.toaster.error'), + LangManager::translate('core.toaster.theme.unableDeleteFolder') + . EnvManager::getInstance()->getValue('DIR') . "Public/Themes/$themeName", + ); + Redirect::redirectPreviousRoute(); + } + + $lastUpdateIndex = count($updates) - 1; + foreach ($updates as $i => $update) { + if (!empty($update['sql_updater'])) { + $file = file_get_contents($update['sql_updater']); + + if (!$file) { + Flash::send( + Alert::ERROR, + LangManager::translate('core.toaster.error'), + $update['sql_updater'], + ); + Redirect::redirectPreviousRoute(); + } + + DatabaseManager::getLiteInstance()->query($file); + } + + if ($i === $lastUpdateIndex) { + try { + DownloadManager::installPackageWithLink($update['file'], 'Theme', $themeName); + } catch (DownloadException $e) { + Flash::send( + Alert::ERROR, + LangManager::translate('core.toaster.error'), + LangManager::translate('core.toaster.theme.unableUpdate') . $e->getMessage(), + ); + Redirect::redirectPreviousRoute(); + } + } } + ThemeFileManager::getInstance()->updateThemeSettings($themeName); + SimpleCacheManager::deleteSpecificCacheFile("config", "Themes/$themeName"); + + Flash::send( + Alert::SUCCESS, + LangManager::translate('core.toaster.success'), + LangManager::translate('core.theme.toasters.update.success', ['theme' => $themeName]) + ); + + sleep(2); + Redirect::redirectPreviousRoute(); } @@ -365,6 +599,7 @@ private function adminThemeDelete(string $theme): void LangManager::translate('core.toaster.success'), LangManager::translate('core.toaster.theme.delete.success', ['theme' => $themeName]), ); + ActivatedModel::getInstance()->removeActivationByResName($themeName); break; case UninstallThemeType::ERROR_THEME_NOT_FOUND: Flash::send(Alert::ERROR, diff --git a/App/Package/Core/Controllers/UpdatesController.php b/App/Package/Core/Controllers/UpdatesController.php index 14c28ca5..52216ba3 100644 --- a/App/Package/Core/Controllers/UpdatesController.php +++ b/App/Package/Core/Controllers/UpdatesController.php @@ -2,6 +2,7 @@ namespace CMW\Controller\Core; +use CMW\Controller\Core\Api\External\CheckerController; use CMW\Controller\Users\UsersController; use CMW\Manager\Api\PublicAPI; use CMW\Manager\Cache\SimpleCacheManager; @@ -62,6 +63,7 @@ public static function groupBy($key, $data): array private function adminUpdates(): void { UsersController::redirectIfNotHavePermissions('core.dashboard', 'core.update'); + CheckerController::getInstance()->checkActivationAPI(); $latestVersion = UpdatesManager::getCmwLatest(); $latestVersionChangelogGroup = self::groupBy('type', $latestVersion['changelog']); diff --git a/App/Package/Core/Entities/ConditionEntity.php b/App/Package/Core/Entities/ConditionEntity.php deleted file mode 100644 index 0dec2d09..00000000 --- a/App/Package/Core/Entities/ConditionEntity.php +++ /dev/null @@ -1,80 +0,0 @@ -id = $id; - $this->content = $content; - $this->state = $state; - $this->update = $update; - $this->lastEditor = $lastEditor; - } - - /** - * @return int - */ - public function getId(): int - { - return $this->id; - } - - /** - * @return string - */ - public function getContent(): string - { - return $this->content; - } - - /** - * @return bool - */ - public function isState(): bool - { - return $this->state; - } - - /** - * @return string - */ - public function getUpdate(): string - { - return $this->update; - } - - /** - * @return string - */ - public function getUpdateFormatted(): string - { - return Date::formatDate($this->update); - } - - /** - * @return ?UserEntity - */ - public function getLastEditor(): ?UserEntity - { - return $this->lastEditor; - } -} diff --git a/App/Package/Core/Entities/MailConfigEntity.php b/App/Package/Core/Entities/MailConfigEntity.php index 57ce00b2..b014d068 100644 --- a/App/Package/Core/Entities/MailConfigEntity.php +++ b/App/Package/Core/Entities/MailConfigEntity.php @@ -116,7 +116,7 @@ public function getProtocol(): ?string */ public function getBody(): ?string { - return $this->body; + return $this->body !== '' ? $this->body : null; } /** diff --git a/App/Package/Core/Entities/MaintenanceEntity.php b/App/Package/Core/Entities/MaintenanceEntity.php index ba7fb312..1f074f7c 100644 --- a/App/Package/Core/Entities/MaintenanceEntity.php +++ b/App/Package/Core/Entities/MaintenanceEntity.php @@ -75,6 +75,7 @@ public function getDescription(): ?string /** * @return int|null + * @desc 0 = Register / 1 = No Register */ public function getType(): ?int { diff --git a/App/Package/Core/Entities/TermsEntity.php b/App/Package/Core/Entities/TermsEntity.php new file mode 100644 index 00000000..091e956f --- /dev/null +++ b/App/Package/Core/Entities/TermsEntity.php @@ -0,0 +1,86 @@ +id = $id; + $this->type = $type; + $this->content = $content; + $this->requireAccept = $requireAccept; + $this->publishedAt = $publishedAt; + $this->lastEditor = $lastEditor; + } + + public function getId(): int + { + return $this->id; + } + + public function getType(): TermType + { + return $this->type; + } + + public function getContent(): string + { + return $this->content; + } + + public function getRequireAccept(): int + { + return $this->requireAccept; + } + + public function getPublishedAt(): string + { + return Date::formatDate($this->publishedAt); + } + + public function getLastEditor(): ?UserEntity + { + return $this->lastEditor; + } + + public function getSlug(): string + { + return match ($this->type) { + TermType::TERMS_OF_SERVICE => 'terms_of_service', + TermType::TERMS_OF_SALE => 'terms_of_sale', + TermType::PRIVACY_POLICY => 'privacy_policy', + TermType::LEGAL_NOTICE => 'legal_notice', + TermType::COOKIE_POLICY => 'cookie_policy', + TermType::ACCEPTABLE_USE => 'acceptable_use', + TermType::LICENSE => 'terms_of_license', + TermType::REFUND_POLICY => 'refund_policy', + }; + } + +} diff --git a/App/Package/Core/Exception/Download/DownloadException.php b/App/Package/Core/Exception/Download/DownloadException.php new file mode 100644 index 00000000..4ec769ab --- /dev/null +++ b/App/Package/Core/Exception/Download/DownloadException.php @@ -0,0 +1,27 @@ +code]: $this->message\n"; + } +} diff --git a/App/Package/Core/Implementations/Core/CoreMenusImplementations.php b/App/Package/Core/Implementations/Core/CoreMenusImplementations.php index 2d358527..8bc38071 100644 --- a/App/Package/Core/Implementations/Core/CoreMenusImplementations.php +++ b/App/Package/Core/Implementations/Core/CoreMenusImplementations.php @@ -4,6 +4,7 @@ use CMW\Interface\Core\IMenus; use CMW\Manager\Lang\LangManager; +use CMW\Type\Core\Enum\TermType; class CoreMenusImplementations implements IMenus { @@ -12,8 +13,14 @@ public function getRoutes(): array return [ LangManager::translate('core.home') => 'home', LangManager::translate('core.nolink') => '', - LangManager::translate('core.cgu') => 'cgu', - LangManager::translate('core.cgv') => 'cgv' + TermType::TERMS_OF_SERVICE->label() => 'terms_of_service', + TermType::TERMS_OF_SALE->label() => 'terms_of_sale', + TermType::PRIVACY_POLICY->label() => 'privacy_policy', + TermType::LEGAL_NOTICE->label() => 'legal_notice', + TermType::COOKIE_POLICY->label() => 'cookie_policy', + TermType::ACCEPTABLE_USE->label() => 'acceptable_use', + TermType::LICENSE->label() => 'terms_of_license', + TermType::REFUND_POLICY->label() => 'refund_policy', ]; } diff --git a/App/Package/Core/Lang/en.php b/App/Package/Core/Lang/en.php index 824c96cf..e3cd7ff6 100644 --- a/App/Package/Core/Lang/en.php +++ b/App/Package/Core/Lang/en.php @@ -34,6 +34,29 @@ 'updateby' => 'Updated by %author%', 'on' => 'on %date%', ], + 'terms' => [ + 'title' => 'Terms and Conditions', + 'requires_accept' => 'Users must accept them again?', + 'mandatory' => 'This term is mandatory (GDPR / CCPA / PIPEDA / UK GDPR / APPI ...)', + 'use' => 'Active', + 'requires_accept_explain' => 'Requires users to revalidate %type% at their next login. Recommended for major changes to remain compliant with the law.', + 'last_published' => "Last updated:", + 'last_editor' => 'Author:', + 'type' => [ + 'TERMS_OF_SERVICE' => 'Terms of Service', + 'TERMS_OF_SALE' => 'Terms of Sale', + 'PRIVACY_POLICY' => 'Privacy Policy', + 'LEGAL_NOTICE' => 'Legal Notice', + 'COOKIE_POLICY' => 'Cookie Policy', + 'ACCEPTABLE_USE' => 'Code of Conduct', + 'LICENSE' => 'Intellectual Property', + 'REFUND_POLICY' => 'Refund Policy', + ], + 'toaster' => [ + 'savedN' => 'Configuration saved — %d item(s) updated.', + 'noChange' => 'No changes.', + ], + ], 'dashboard' => [ 'title' => 'Dashboard', 'desc' => 'Welcome to your administration panel!', @@ -53,7 +76,7 @@ 'days' => 'Days', 'weeks' => 'Weeks', 'months' => 'Months', - 'alpha' => 'Please note that CraftMyWebsite2 is currently in alpha phase and is not yet complete.
Its use in a production environment is strongly discouraged. Key features may be missing or may not work as expected.
During this phase, complete system reinstalls may be required.
We appreciate your understanding and patience while we work on CraftMyWebsite.', + 'alpha' => 'Please note that CraftMyWebsite2 is currently in BETA phase and is not yet complete.
Its use in a production environment is strongly discouraged. Key features may be missing or may not work as expected.
During this phase, complete system reinstalls may be required.
We appreciate your understanding and patience while we work on CraftMyWebsite.', 'updateWarning' => 'Attention :The current version of your CMS is not the latest available. It is strongly recommended to update your CMS to benefit from the latest security fixes as well as new features added.', ], 'menus' => [ @@ -134,7 +157,7 @@ 'reset' => 'Theme configuration reset', 'updateBeforeInstall' => 'Please update CMS before installing this theme!', 'updateBeforeUpdate' => 'Please update the CMS before updating your themes!', - 'unableUpdate' => 'Unable to install this theme! : ', + 'unableUpdate' => 'Unable to install : ', 'unableDeleteFolder' => 'Unable to remove folder : ', 'delete' => [ 'success' => 'Theme %theme% deleted successfully', @@ -405,14 +428,7 @@ 'title' => 'Settings', 'targetDateTitle' => 'Target date', 'useMyCode' => 'Use my code', - 'loginRegister' => [ - 'title' => 'Login / Registers', - 'type' => [ - 0 => 'All disabled', - 1 => 'Enable logins / registers', - 2 => 'Only enable logins', - ], - ], + 'neRegister' => 'Disable register', 'maintenanceTitle' => [ 'label' => 'Title', 'placeholder' => 'We are coming soon !', @@ -526,7 +542,7 @@ 'settings' => 'Site Settings', 'maintenance' => 'Maintenance mode', 'mail' => 'SMTP and mails', - 'cg' => 'General conditions', + 'cg' => 'Termes & Conditions', 'security' => 'Security', ], 'update' => 'CMW Updates', diff --git a/App/Package/Core/Lang/fr.php b/App/Package/Core/Lang/fr.php index f4f646d2..86001236 100644 --- a/App/Package/Core/Lang/fr.php +++ b/App/Package/Core/Lang/fr.php @@ -34,6 +34,29 @@ 'updateby' => 'Mis à jour par %author%', 'on' => 'le %date%', ], + 'terms' => [ + 'title' => 'Terms et conditions', + 'requires_accept' => 'Les utilisateurs doivent l\'accepter à nouveau ?', + 'mandatory' => 'Ce terme est obligatoire (RGPD / CCPA / PIPEDA / LPRPDE / UK GDPR / APPI ...)', + 'use' => 'Actif', + 'requires_accept_explain' => 'Oblige les utilisateurs à revalider %type% à leur prochaine connexion. Recommandé pour les changements majeurs afin de rester conforme à la loi.', + 'last_published' => "Dernière mise à jour :", + 'last_editor' => 'Auteur :', + 'type' => [ + 'TERMS_OF_SERVICE' => 'Condition d\'utilisation', + 'TERMS_OF_SALE' => 'Condition de ventes', + 'PRIVACY_POLICY' => 'Politique de confidentialité', + 'LEGAL_NOTICE' => 'Mentions légales', + 'COOKIE_POLICY' => 'Politique relative aux cookies', + 'ACCEPTABLE_USE' => 'Code de conduite', + 'LICENSE' => 'Propriété intellectuelle', + 'REFUND_POLICY' => 'Politique de remboursement', + ], + 'toaster' => [ + 'savedN' => 'Configuration enregistrée — %d élément(s) mis à jour.', + 'noChange' => 'Aucun changement.', + ], + ], 'dashboard' => [ 'title' => 'Tableau de bord', 'desc' => "Bienvenue sur votre panneau d'administration !", @@ -53,7 +76,7 @@ 'days' => 'Jours', 'weeks' => 'Semaines', 'months' => 'Mois', - 'alpha' => 'Veuillez noter que CraftMyWebsite2 est actuellement en phase alpha et n\'est pas encore achevé.
Son utilisation en environnement de production est fortement déconseillée. Des fonctionnalités clés peuvent manquer ou ne pas fonctionner comme prévu.
Pendant cette phase, des réinstallations complètes du système pourront être nécessaires.
Nous vous remercions de votre compréhension et de votre patience pendant que nous travaillons sur CraftMyWebsite.', + 'alpha' => 'Veuillez noter que CraftMyWebsite2 est actuellement en phase BETA et n\'est pas encore achevé.
Son utilisation en environnement de production est fortement déconseillée. Des fonctionnalités clés peuvent manquer ou ne pas fonctionner comme prévu.
Pendant cette phase, des réinstallations complètes du système pourront être nécessaires.
Nous vous remercions de votre compréhension et de votre patience pendant que nous travaillons sur CraftMyWebsite.', 'updateWarning' => 'Attention : La version actuelle de votre CMS n\'est pas la dernière disponible.Il est fortement conseillé de mettre à jour votre CMS pour bénéficier des derniers correctifs de sécurité ainsi que des nouvelles fonctionnalités ajoutées.', ], 'menus' => [ @@ -134,7 +157,7 @@ 'reset' => 'Configuration du thème réinitialisée', 'updateBeforeInstall' => 'Veuillez mettre à jour le CMS avant d\'installer ce thème !', 'updateBeforeUpdate' => 'Veuillez mettre à jour le CMS avant de mettre à jour vos thèmes !', - 'unableUpdate' => 'Impossible d\'installer la mises à jour du thème : ', + 'unableUpdate' => 'Impossible d\'installer : ', 'unableDeleteFolder' => 'Impossible du supprimer le dossier : ', 'delete' => [ 'success' => 'Theme %theme% supprimé avec succès', @@ -407,14 +430,7 @@ 'title' => 'Réglages', 'targetDateTitle' => 'Se termine le', 'useMyCode' => 'Utiliser mon code', - 'loginRegister' => [ - 'title' => 'Connexions / Inscriptions', - 'type' => [ - 0 => 'Tout désactiver', - 1 => 'Activer les connexions / inscriptions', - 2 => 'Activer uniquement les connexions', - ], - ], + 'neRegister' => 'Désactiver les inscriptions', 'maintenanceTitle' => [ 'label' => 'Titre', 'placeholder' => 'Nous revenons très vite !', @@ -529,7 +545,7 @@ 'settings' => 'Réglages du site', 'maintenance' => 'Mode maintenance', 'mail' => 'SMTP et mails', - 'cg' => 'Conditions générales', + 'cg' => 'Termes et Conditions', 'security' => 'Sécurité', ], 'update' => 'Mises à jour', diff --git a/App/Package/Core/Models/ActivatedModel.php b/App/Package/Core/Models/ActivatedModel.php new file mode 100644 index 00000000..8c7ae42a --- /dev/null +++ b/App/Package/Core/Models/ActivatedModel.php @@ -0,0 +1,97 @@ +prepare($sql); + + if (!$req->execute()) { + return []; + } + + $req = $req->fetchAll(); + + if (!empty($req)) { + return $req; + } + + return []; + } + + /** + * @param int $resId + * @return ?array + */ + public function getActivationByResId(int $resId): ?array + { + $sql = "SELECT * FROM cmw_actived_resources WHERE resource_id = :resource_id ORDER BY activated_resource_id DESC LIMIT 1"; + $db = DatabaseManager::getInstance(); + + $req = $db->prepare($sql); + + if (!$req->execute(['resource_id' => $resId])) { + return null; + } + + $row = $req->fetch(); + + return $row ?: null; + } + + /** + * @param string $activationKey + * @param int $ressourceId + * @param string $resName + * @return false|int + * @desc Add Key for user to res + */ + public function addActivation(string $activationKey, int $ressourceId, string $resName): false|int + { + $var = [ + 'resource_key' => $activationKey, + 'resource_id' => $ressourceId, + 'resource_name' => $resName, + ]; + + $sql = "INSERT INTO cmw_actived_resources (resource_key, resource_id, resource_name) VALUES (:resource_key, :resource_id, :resource_name)"; + + $db = DatabaseManager::getInstance(); + $req = $db->prepare($sql); + + if (!$req->execute($var)) { + return false; + } + + return $db->lastInsertId(); + } + + /** + * @param string $resName + * @return void + */ + public function removeActivationByResName(string $resName): void + { + $sql = 'DELETE FROM cmw_actived_resources WHERE resource_name = :name'; + $db = DatabaseManager::getInstance(); + + $req = $db->prepare($sql); + $req->execute(['name' => $resName]); + } +} diff --git a/App/Package/Core/Models/CoreModel.php b/App/Package/Core/Models/CoreModel.php index 74601258..92baa7c1 100644 --- a/App/Package/Core/Models/CoreModel.php +++ b/App/Package/Core/Models/CoreModel.php @@ -2,47 +2,58 @@ namespace CMW\Model\Core; +use CMW\Manager\Cache\SimpleCacheManager; use CMW\Manager\Database\DatabaseManager; use CMW\Manager\Package\AbstractModel; -use function get_defined_constants; -use function mb_strtoupper; -use function str_starts_with; /** * Class: @coreController * @package Core * @author CraftMyWebsite Team - * @version 1.0 */ class CoreModel extends AbstractModel { + private const string CACHE_KEY = 'options'; + private const string CACHE_SUBFOLDER = 'Core'; + public function fetchOption(string $option): ?string { - // TODO Le cache ne fonctionne pas et du coup ralenti le chargement des page - /*if (SimpleCacheManager::cacheExist('options', "Options")){ - $data = SimpleCacheManager::getCache('options', "Options"); - - foreach ($data as $conf) { - if ($conf['option_name'] === $option){ - return $conf['option_value'] ?? "UNDEFINED_$option"; + // Check cache + if (SimpleCacheManager::checkCache(self::CACHE_KEY, self::CACHE_SUBFOLDER)) { + $cachedOptions = SimpleCacheManager::getCache(self::CACHE_KEY, self::CACHE_SUBFOLDER); + + // Search in cached data + if (\is_array($cachedOptions)) { + foreach ($cachedOptions as $conf) { + if (($conf['option_name'] === $option) && isset($conf['option_value'])) { + return $conf['option_value']; + } } } - }*/ + } $db = DatabaseManager::getInstance(); - $req = $db->prepare('SELECT option_value FROM cmw_core_options WHERE option_name = ?'); + $req = $db->prepare('SELECT option_name, option_value FROM cmw_core_options'); - if (!$req->execute([$option])){ + if (!$req->execute()) { return null; } - $option = $req->fetch(); + $allOptions = $req->fetchAll(); - if (!$option){ - return null; + // Store in cache + if (!empty($allOptions)) { + SimpleCacheManager::storeCache($allOptions, self::CACHE_KEY, self::CACHE_SUBFOLDER); } - return $option['option_value']; + // Find and return the requested option + foreach ($allOptions as $conf) { + if ($conf['option_name'] === $option) { + return $conf['option_value'] ?? null; + } + } + + return null; } /** @@ -71,17 +82,82 @@ public function fetchOptions(): array } /** - * @param string $option_name - * @param string $option_value + * @param string $optionName + * @param string $optionValue * @return bool */ - public function updateOption(string $option_name, string $option_value): bool + public function updateOption(string $optionName, string $optionValue): bool { - $sql = 'INSERT INTO cmw_core_options (option_name, option_value, option_updated) - VALUES (:option_name, :option_value, NOW()) + $sql = 'INSERT INTO cmw_core_options (option_name, option_value, option_updated) + VALUES (:option_name, :option_value, NOW()) ON DUPLICATE KEY UPDATE option_value=VALUES(option_value), option_updated=NOW()'; $db = DatabaseManager::getInstance(); - return $db->prepare($sql)->execute(['option_name' => $option_name, 'option_value' => $option_value]); + $result = $db->prepare($sql)->execute(['option_name' => $optionName, 'option_value' => $optionValue]); + + //Update cache + if ($result) { + $this->updateOptionCacheValue($optionName, $optionValue); + } + + return $result; + } + + /** + * @param string $optionName + * @return bool + */ + public function deleteOption(string $optionName): bool + { + $sql = 'DELETE FROM cmw_core_options WHERE option_name = :option_name'; + $db = DatabaseManager::getInstance(); + + $result = $db->prepare($sql)->execute(['option_name' => $optionName]); + + //Update cache + if ($result) { + $this->updateOptionCacheValue($optionName, ''); + } + + return $result; + } + + /** + *

Update the option value in the cache only.

+ * @param string $optionName + * @param string $optionValue + * @return void + */ + private function updateOptionCacheValue(string $optionName, string $optionValue): void + { + if (SimpleCacheManager::cacheExist(self::CACHE_KEY, self::CACHE_SUBFOLDER)) { + $cachedOptions = SimpleCacheManager::getCache(self::CACHE_KEY, self::CACHE_SUBFOLDER); + + if (\is_array($cachedOptions)) { + foreach ($cachedOptions as &$conf) { + if ($conf['option_name'] === $optionName) { + $conf['option_value'] = $optionValue; + SimpleCacheManager::storeCache($cachedOptions, self::CACHE_KEY, self::CACHE_SUBFOLDER); + return; + } + } + unset($conf); + + // If not found, add it + $cachedOptions[] = ['option_name' => $optionName, 'option_value' => $optionValue]; + SimpleCacheManager::storeCache($cachedOptions, self::CACHE_KEY, self::CACHE_SUBFOLDER); + } + } + } + + /** + *

Clear the options cache

+ * @return void + */ + public function clearOptionsCache(): void + { + if (SimpleCacheManager::cacheExist(self::CACHE_KEY, self::CACHE_SUBFOLDER)) { + SimpleCacheManager::deleteSpecificCacheFile(self::CACHE_KEY, self::CACHE_SUBFOLDER); + } } } diff --git a/App/Package/Core/Models/TermsModel.php b/App/Package/Core/Models/TermsModel.php new file mode 100644 index 00000000..f2f3969f --- /dev/null +++ b/App/Package/Core/Models/TermsModel.php @@ -0,0 +1,213 @@ +getUserById((int)$row['term_last_editor']); + } + + return new TermsEntity( + (int)$row['term_id'], + TermType::from((string)$row['term_type']), + (string)$row['term_content'], + (int)$row['term_requires_accept'], + (string)$row['term_published_at'], + $editor + ); + } + + /** + * @param \CMW\Type\Core\Enum\TermType $type + * @return \CMW\Entity\Core\TermsEntity|null + */ + public function getLatestByType(TermType $type): ?TermsEntity + { + $stmt = $this->pdo()->prepare( + 'SELECT * FROM cmw_core_terms WHERE term_type = :type ORDER BY term_id DESC LIMIT 1' + ); + if (!$stmt->execute(['type' => $type->value])) return null; + $row = $stmt->fetch(PDO::FETCH_ASSOC); + return $row ? $this->hydrate($row) : null; + } + + /** @return TermsEntity[] */ + public function getLatestPerType(): array + { + $sql = " + SELECT t.* + FROM cmw_core_terms t + INNER JOIN ( + SELECT term_type, MAX(term_id) AS last_id + FROM cmw_core_terms + GROUP BY term_type + ) m ON m.term_type = t.term_type AND m.last_id = t.term_id + ORDER BY t.term_type + "; + $stmt = $this->pdo()->prepare($sql); + if (!$stmt->execute()) return []; + + $out = []; + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $out[] = $this->hydrate($row); + } + return $out; + } + + /** @return TermsEntity[] */ + public function listHistory(TermType $type, int $limit = 50, int $offset = 0): array + { + $sql = " + SELECT * + FROM cmw_core_terms + WHERE term_type = :type + ORDER BY term_id DESC + LIMIT :limit OFFSET :offset + "; + $stmt = $this->pdo()->prepare($sql); + $stmt->bindValue(':type', $type->value, PDO::PARAM_STR); + $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); + $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); + + if (!$stmt->execute()) return []; + + $out = []; + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $out[] = $this->hydrate($row); + } + return $out; + } + + /** + * Publie une nouvelle version (INSERT-only). + * @return int|null term_id inséré + */ + public function publish(TermType $type, string $htmlContent, bool $requiresAccept, int $editorUserId): ?int + { + $stmt = $this->pdo()->prepare(" + INSERT INTO cmw_core_terms (term_type, term_content, term_requires_accept, term_published_at, term_last_editor) + VALUES (:type, :content, :req, NOW(), :editor) + "); + + $ok = $stmt->execute([ + 'type' => $type->value, + 'content' => $htmlContent, + 'req' => $requiresAccept ? 1 : 0, + 'editor' => $editorUserId, + ]); + + return $ok ? (int)$this->pdo()->lastInsertId() : null; + } + + /** + * Dernière date de publication qui REQUIERT re-acceptation (cutoff global). + */ + public function getLastRequiredCutoff(): DateTimeImmutable + { + $row = $this->pdo()->query( + "SELECT MAX(term_published_at) AS last_update FROM cmw_core_terms WHERE term_requires_accept = 1" + )?->fetch(PDO::FETCH_ASSOC); + + $ts = $row['last_update'] ?? '1970-01-01 00:00:00'; + return new DateTimeImmutable($ts); + } + + /** @return TermType[] */ + public function getOutdatedTypesSince(DateTimeInterface $acceptedAt): array + { + $sql = " + SELECT term_type, MAX(term_published_at) AS latest + FROM cmw_core_terms + WHERE term_requires_accept = 1 + GROUP BY term_type + HAVING latest > :cutoff + "; + $stmt = $this->pdo()->prepare($sql); + $stmt->execute(['cutoff' => $acceptedAt->format('Y-m-d H:i:s')]); + + $types = []; + foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { + $types[] = TermType::from($row['term_type']); + } + return $types; + } + + public function isTypeActive(TermType $type): bool + { + if ($type->isMandatory()) { + return true; + } + + $stmt = $this->pdo()->prepare( + "SELECT is_active FROM cmw_core_terms_settings WHERE term_type = :t LIMIT 1" + ); + $stmt->execute(['t' => $type->value]); + $row = $stmt->fetch(\PDO::FETCH_ASSOC); + + // défaut: actif si non configuré (change en false si tu veux) + return $row ? (bool)$row['is_active'] : true; + } + + public function setTypeActive(TermType $type, bool $active): void + { + if ($active === false && $type->isMandatory()) { + throw new \RuntimeException('This term type is mandatory and cannot be disabled.'); + } + + $stmt = $this->pdo()->prepare(" + INSERT INTO cmw_core_terms_settings (term_type, is_active) + VALUES (:t, :a) + ON DUPLICATE KEY UPDATE is_active = VALUES(is_active) + "); + $stmt->execute(['t' => $type->value, 'a' => $active ? 1 : 0]); + } + + /** @return TermsEntity[] actifs seulement */ + public function getLatestPerTypeActive(): array + { + $all = $this->getLatestPerType(); + $out = []; + foreach ($all as $term) { + if ($this->isTypeActive($term->getType())) { + $out[] = $term; + } + } + return $out; + } + + /** @return TermType[] */ + public function getActiveTypes(): array + { + $types = []; + foreach (TermType::cases() as $t) { + if ($this->isTypeActive($t)) { + $types[] = $t; + } + } + return $types; + } + +} diff --git a/App/Package/Core/Package.php b/App/Package/Core/Package.php index 4dc4c2d8..667f6dc0 100644 --- a/App/Package/Core/Package.php +++ b/App/Package/Core/Package.php @@ -3,18 +3,17 @@ namespace CMW\Package\Core; use CMW\Manager\Lang\LangManager; -use CMW\Manager\Package\IPackageConfig; +use CMW\Manager\Package\IPackageConfigV2; use CMW\Manager\Package\PackageMenuType; use CMW\Manager\Package\PackageSubMenuType; use CMW\Manager\Theme\Loader\ThemeLoader; -use CMW\Manager\Theme\ThemeManager; use CMW\Manager\Updater\UpdatesManager; /** * @var $isUpToDate bool */ -class Package implements IPackageConfig +class Package implements IPackageConfigV2 { public function name(): string { @@ -26,9 +25,19 @@ public function version(): string return '1.0.0'; } + public function cmwVersion(): string + { + return "2.0"; + } + + public function imageLink(): ?string + { + return null; + } + public function authors(): array { - return ['CraftMyWebsiteTeam']; + return ['CraftMyWebsite']; } public function isGame(): bool @@ -72,7 +81,7 @@ public function menus(): ?array new PackageSubMenuType( title: LangManager::translate('core.menu.setting.cg'), permission: 'core.settings.conditions', - url: 'condition', + url: 'terms', subMenus: [] ), new PackageSubMenuType( @@ -144,6 +153,11 @@ public function menus(): ?array ]; } + public function compatiblesPackages(): array + { + return ["Core"]; + } + public function requiredPackages(): array { return []; diff --git a/App/Package/Core/Public/Terms/acceptable_use.view.php b/App/Package/Core/Public/Terms/acceptable_use.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/acceptable_use.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/all.view.php b/App/Package/Core/Public/Terms/all.view.php new file mode 100644 index 00000000..80670f24 --- /dev/null +++ b/App/Package/Core/Public/Terms/all.view.php @@ -0,0 +1,34 @@ + $terms */ + +/* TITRE ET DESCRIPTION */ +Website::setTitle('Termes et conditions'); +Website::setDescription('Termes et conditions'); +?> + + +
+ + value; if (!isset($terms[$key])) continue; $term=$terms[$key]; ?> +
+

label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
getContent(); ?>
+
+ +
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/cookie_policy.view.php b/App/Package/Core/Public/Terms/cookie_policy.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/cookie_policy.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/legal_notice.view.php b/App/Package/Core/Public/Terms/legal_notice.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/legal_notice.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/license.view.php b/App/Package/Core/Public/Terms/license.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/license.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/privacy_policy.view.php b/App/Package/Core/Public/Terms/privacy_policy.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/privacy_policy.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/refund_policy.view.php b/App/Package/Core/Public/Terms/refund_policy.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/refund_policy.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/terms_of_sale.view.php b/App/Package/Core/Public/Terms/terms_of_sale.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/terms_of_sale.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/Terms/terms_of_service.view.php b/App/Package/Core/Public/Terms/terms_of_service.view.php new file mode 100644 index 00000000..66c8ba6b --- /dev/null +++ b/App/Package/Core/Public/Terms/terms_of_service.view.php @@ -0,0 +1,33 @@ +getType()->label())); +Website::setDescription(htmlspecialchars($term->getType()->label()) . ' ' . htmlspecialchars($term->getPublishedAt())); +?> + + + +
+
+

getType()->label()) ?>

+

Dernière mise à jour : getPublishedAt()) ?>

+
+ +
+ getContent() ?> +
+
\ No newline at end of file diff --git a/App/Package/Core/Public/cgu.view.php b/App/Package/Core/Public/cgu.view.php deleted file mode 100644 index a6c64e85..00000000 --- a/App/Package/Core/Public/cgu.view.php +++ /dev/null @@ -1,19 +0,0 @@ - - -
- -getContent() ?> - -

Écrit par getLastEditor()->getPseudo() ?>, mis à jour le getUpdate() ?>

- -
\ No newline at end of file diff --git a/App/Package/Core/Public/cgv.view.php b/App/Package/Core/Public/cgv.view.php deleted file mode 100644 index 7fee5e87..00000000 --- a/App/Package/Core/Public/cgv.view.php +++ /dev/null @@ -1,19 +0,0 @@ - - -
- -getContent() ?> - -

Écrit par getLastEditor()->getPseudo() ?>, mis à jour le getUpdate() ?>

- -
\ No newline at end of file diff --git a/App/Package/Core/Type/Enum/TermType.php b/App/Package/Core/Type/Enum/TermType.php new file mode 100644 index 00000000..188228d5 --- /dev/null +++ b/App/Package/Core/Type/Enum/TermType.php @@ -0,0 +1,46 @@ + $c->value, self::cases()); + } + + public function label(): string + { + return match ($this) { + self::TERMS_OF_SERVICE => LangManager::translate('core.terms.type.TERMS_OF_SERVICE'), + self::TERMS_OF_SALE => LangManager::translate('core.terms.type.TERMS_OF_SALE'), + self::PRIVACY_POLICY => LangManager::translate('core.terms.type.PRIVACY_POLICY'), + self::LEGAL_NOTICE => LangManager::translate('core.terms.type.LEGAL_NOTICE'), + self::COOKIE_POLICY => LangManager::translate('core.terms.type.COOKIE_POLICY'), + self::ACCEPTABLE_USE => LangManager::translate('core.terms.type.ACCEPTABLE_USE'), + self::LICENSE => LangManager::translate('core.terms.type.LICENSE'), + self::REFUND_POLICY => LangManager::translate('core.terms.type.REFUND_POLICY'), + }; + } + + public function isMandatory(): bool + { + return match ($this) { + self::TERMS_OF_SERVICE, + self::PRIVACY_POLICY, + self::LEGAL_NOTICE, + self::COOKIE_POLICY => true, + default => false, + }; + } +} \ No newline at end of file diff --git a/App/Package/Core/Views/Condition/condition.admin.view.php b/App/Package/Core/Views/Condition/condition.admin.view.php deleted file mode 100644 index 8609b6e2..00000000 --- a/App/Package/Core/Views/Condition/condition.admin.view.php +++ /dev/null @@ -1,56 +0,0 @@ - - -
-

- -
- -
- insertHiddenToken() ?> -
- -
-
-
- -
- -

- $cgv->getLastEditor()?->getPseudo()]) ?> - $cgv->getUpdateFormatted()]) ?> -

-
-
-
-
- -
- -

- $cgu->getLastEditor()?->getPseudo()]) ?> - $cgu->getUpdateFormatted()]) ?> -

-
-
-
\ No newline at end of file diff --git a/App/Package/Core/Views/Mail/mailConfig.admin.view.php b/App/Package/Core/Views/Mail/mailConfig.admin.view.php index 17487fce..cd82b936 100644 --- a/App/Package/Core/Views/Mail/mailConfig.admin.view.php +++ b/App/Package/Core/Views/Mail/mailConfig.admin.view.php @@ -302,7 +302,7 @@ class="btn-primary"> enableSnippets: false }) - if (localStorage.getItem('theme') === 'theme-dark') { + if (localStorage.getItem('color-theme') === 'dark') { editor.setTheme("ace/theme/cmw_dark"); } else { editor.setTheme("ace/theme/cmw_light"); diff --git a/App/Package/Core/Views/Maintenance/maintenance.admin.view.php b/App/Package/Core/Views/Maintenance/maintenance.admin.view.php index 8122e489..b2f72508 100644 --- a/App/Package/Core/Views/Maintenance/maintenance.admin.view.php +++ b/App/Package/Core/Views/Maintenance/maintenance.admin.view.php @@ -42,6 +42,14 @@ class="toggle-input">
+
+ +
-
- - -
diff --git a/App/Package/Core/Views/Notification/main.admin.view.php b/App/Package/Core/Views/Notification/main.admin.view.php index c1b903c5..9d9b4a91 100644 --- a/App/Package/Core/Views/Notification/main.admin.view.php +++ b/App/Package/Core/Views/Notification/main.admin.view.php @@ -6,7 +6,7 @@ use CMW\Manager\Security\SecurityManager; /* @var \CMW\Manager\Notification\NotificationEntity[] $notifications */ -/* @var \CMW\Manager\Package\IPackageConfig[] $packages */ +/* @var \CMW\Manager\Package\IPackageConfigV2[] $packages */ /* @var string $showOnDiscord */ /* @var string $webhookDiscord */ /* @var string $sendMail */ diff --git a/App/Package/Core/Views/Package/market.admin.view.php b/App/Package/Core/Views/Package/market.admin.view.php index 94699a86..b8a1df8f 100644 --- a/App/Package/Core/Views/Package/market.admin.view.php +++ b/App/Package/Core/Views/Package/market.admin.view.php @@ -1,5 +1,7 @@ + +
Votre site est en mode test API.
+ +
-
img
-
+
En attente : ' : '' ?>
- - + + +
+
+ insertHiddenToken() ?> + + + +
+
+ insertHiddenToken() ?> + + + +
+
+ +
+ +
+ insertHiddenToken() ?> + + + +
+
+ + + +
+ + +
+ +
+ + +
+ + + +
@@ -65,11 +157,6 @@ class="fa-regular fa-star"> (0) - -
\ No newline at end of file +
+ + \ No newline at end of file diff --git a/App/Package/Core/Views/Package/package.admin.view.php b/App/Package/Core/Views/Package/package.admin.view.php index 6c9ee3ed..3143f106 100644 --- a/App/Package/Core/Views/Package/package.admin.view.php +++ b/App/Package/Core/Views/Package/package.admin.view.php @@ -1,5 +1,7 @@ version() !== $pkg['version_name']) { + $needsUpdate = false; + + // Mode normal: uniquement versions stables + if (!$testMode && $pkg['version_status'] === 0 && $local->version() !== $pkg['version_name']) { + $needsUpdate = true; + } + + // Mode test: on autorise aussi les versions en attente + if ($testMode && $local->version() !== $pkg['version_name']) { + $needsUpdate = true; + } + + if ($needsUpdate) { $packagesToUpdate[] = $pkg; } else { $packagesUpToDate[] = $pkg; } } - -function renderCard($name, $image, $description, $author = null, $versionTarget = null, $version = null, $id = null, $notVerified = false, $updateBadge = false, $downloads = null, $versionCMW = null, $releaseDate = null) { +function renderCard($name, $image, $description, $author = null, $versionStatus = null, $versionTarget = null, $version = null, $id = null, $notVerified = false, $updateBadge = false, $downloads = null, $versionCMW = null, $releaseDate = null, $targetStatusSlug = 'online' +) { $uniqueId = $id ?? $name; ?>
@@ -35,13 +50,17 @@ function renderCard($name, $image, $description, $author = null, $versionTarget img
-
+
En attente : ' : '' ?>
- - - +
+ insertHiddenToken() ?> + + + + + +
+
+ +
+

Pour obliger les utilisateurs à accepter les conditions avant de créer un compte ou de se connecter, rendez-vous dans les paramètres des utilisateurs et activez cette option.

+
+ +
+ insertHiddenToken() ?> + +
+ value; + /** @var \CMW\Entity\Core\TermsEntity|null $entity */ + $entity = $terms[$key] ?? null; + $content = $entity?->getContent() ?? ''; + $slug = $entity->getSlug() ?? ''; + $requires = $entity?->getRequireAccept() ?? true; + $published= $entity?->getPublishedAt() ?? '—'; + $editor = $entity?->getLastEditor()?->getPseudo() ?? '—'; + $hash = hash('sha256', $content); + $isActive = $type->isMandatory() ? true : $model->isTypeActive($type); + ?> +
+
+
+
+ +
+ + · + + +
+ +
+ +
+ htmlspecialchars(type_label($type))]) ?> +
+ + isMandatory()): ?> +
+

+
+ + + + + + + +
+ +
+
diff --git a/App/Package/Core/Views/Theme/Editor/Includes/header.inc.php b/App/Package/Core/Views/Theme/Editor/Includes/header.inc.php index 122ff4f1..d4d3e6e5 100644 --- a/App/Package/Core/Views/Theme/Editor/Includes/header.inc.php +++ b/App/Package/Core/Views/Theme/Editor/Includes/header.inc.php @@ -186,11 +186,11 @@ class="fa-solid fa-right-from-bracket"> insertHiddenToken() ?> + +
diff --git a/App/Package/Users/Type/LoginStatus.php b/App/Package/Users/Type/LoginStatus.php index 7394a8e5..084542a4 100644 --- a/App/Package/Users/Type/LoginStatus.php +++ b/App/Package/Users/Type/LoginStatus.php @@ -10,5 +10,6 @@ enum LoginStatus case OK_NEED_2FA; case OK_ENFORCE_2FA; case OK_LONG_DATE; + case OK_NEED_TERMS; } diff --git a/App/Package/Users/Views/Settings/general.admin.view.php b/App/Package/Users/Views/Settings/general.admin.view.php index 9b291e4b..ea7b28aa 100644 --- a/App/Package/Users/Views/Settings/general.admin.view.php +++ b/App/Package/Users/Views/Settings/general.admin.view.php @@ -16,6 +16,9 @@ - +
@@ -43,30 +46,38 @@
-
-
- insertHiddenToken() ?> + +
- - + - - + -
- + + +
+
+
+
- -
+
+ + +
+
+
diff --git a/App/Package/Users/Views/manage.admin.view.php b/App/Package/Users/Views/manage.admin.view.php index 52e7239d..bc7e0f72 100644 --- a/App/Package/Users/Views/manage.admin.view.php +++ b/App/Package/Users/Views/manage.admin.view.php @@ -2,6 +2,7 @@ use CMW\Entity\Users\RoleEntity; use CMW\Entity\Users\UserEntity; +use CMW\Entity\Users\UserSettingsEntity; use CMW\Manager\Env\EnvManager; use CMW\Manager\Lang\LangManager; use CMW\Manager\Security\SecurityManager; @@ -61,26 +62,32 @@
- + + getNeedTerms()):?> + + - + - - - - - + + + + + getNeedTerms()):?> + + + diff --git a/App/Package/Users/Views/user.admin.view.php b/App/Package/Users/Views/user.admin.view.php index 0ed90e80..3920eec9 100644 --- a/App/Package/Users/Views/user.admin.view.php +++ b/App/Package/Users/Views/user.admin.view.php @@ -2,13 +2,16 @@ use CMW\Entity\Users\RoleEntity; use CMW\Entity\Users\UserEntity; +use CMW\Entity\Users\UserTokenEntity; use CMW\Manager\Env\EnvManager; use CMW\Manager\Lang\LangManager; use CMW\Manager\Security\SecurityManager; use CMW\Model\Users\RolesModel; +use CMW\Utils\Date; /** @var UserEntity $user */ /** @var RoleEntity[] $roles */ +/** @var UserTokenEntity[] $tokens */ $title = LangManager::translate('users.edit.title', ['pseudo' => $user->getPseudo()]); $description = LangManager::translate('users.edit.desc'); @@ -141,12 +144,12 @@ class="fa fa-arrows-rotate">
get2Fa()->isEnabled()): ?> - 2FA + 2FA - 2FA + 2FA @@ -157,8 +160,92 @@ class="fa fa-arrows-rotate">
- +
+

+
+ +
+ + +
+ +
+ + count($tokens)]) ?> +
+ +
+ +
+
+ +
+
+ +
+
+
+ getDeviceName() ?> +
+
+ + + getIpAddress()) ?> + +
+
+
+ + : + getCreatedAt()) ?> +
+
+ + : + getLastUsedAt()) ?> +
+
+ + : + getExpiresAt()) ?> +
+
+
+
+ + +
+ + + +
+
+
+ +
+ + + +
+
+
2fa
getMail() ?>getPseudo() ?>getHighestRole()?->getName() ?>getCreated() ?>getLastConnection() ?>getLoginMethode()) ?>getPseudo() ?>getHighestRole()?->getName() ?>getCreated() ?>getLastConnection() ?>getTermsAccepted() ? '' : '' ?> getTermsAcceptedAt() ? ' - ' . $user->getTermsAcceptedAt() : '' ?>getLoginMethode()) ?> get2Fa()->isEnabled()): ?>