@lukso/up-connector 0.8.3-dev.c409ee8 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account-modal.cjs +3 -3
- package/dist/account-modal.js +2 -2
- package/dist/auto-setup.cjs +3 -3
- package/dist/auto-setup.js +2 -2
- package/dist/backup-modal.cjs +3 -3
- package/dist/backup-modal.js +2 -2
- package/dist/chunk-2BZE2DLW.js +1186 -0
- package/dist/chunk-2BZE2DLW.js.map +1 -0
- package/dist/chunk-455JZ6IZ.cjs +1186 -0
- package/dist/chunk-455JZ6IZ.cjs.map +1 -0
- package/dist/{chunk-BLDF6KQ6.js → chunk-47T7DEEN.js} +2 -2
- package/dist/chunk-A47V7DY2.js +31 -0
- package/dist/chunk-A47V7DY2.js.map +1 -0
- package/dist/{chunk-ODKUPDLA.cjs → chunk-D4X5RQWB.cjs} +3 -3
- package/dist/{chunk-ODKUPDLA.cjs.map → chunk-D4X5RQWB.cjs.map} +1 -1
- package/dist/chunk-DR5ABNGN.cjs +31 -0
- package/dist/chunk-DR5ABNGN.cjs.map +1 -0
- package/dist/{chunk-2HIZGOPY.cjs → chunk-DXCWF7PX.cjs} +3 -3
- package/dist/{chunk-2HIZGOPY.cjs.map → chunk-DXCWF7PX.cjs.map} +1 -1
- package/dist/{chunk-2GXVRHI5.cjs → chunk-EWIDQS53.cjs} +3 -3
- package/dist/{chunk-2GXVRHI5.cjs.map → chunk-EWIDQS53.cjs.map} +1 -1
- package/dist/{chunk-4E7SPZWU.js → chunk-HROZAHML.js} +2 -2
- package/dist/{chunk-KSO3XK5R.cjs → chunk-OIB4M2BJ.cjs} +3 -3
- package/dist/{chunk-KSO3XK5R.cjs.map → chunk-OIB4M2BJ.cjs.map} +1 -1
- package/dist/{chunk-HYTGLJAK.js → chunk-PUIFBRHQ.js} +2 -2
- package/dist/{chunk-6W7FRKLF.js → chunk-XFMPPOEM.js} +2 -2
- package/dist/connect-modal/index.cjs +2 -2
- package/dist/connect-modal/index.d.cts +1 -1
- package/dist/connect-modal/index.d.ts +1 -1
- package/dist/connect-modal/index.js +1 -1
- package/dist/{index-DZolGZOk.d.ts → index-2LsIVyuU.d.cts} +1 -1
- package/dist/{index-DZolGZOk.d.cts → index-2LsIVyuU.d.ts} +1 -1
- package/dist/index.cjs +10 -10
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- package/dist/restore-modal.cjs +3 -3
- package/dist/restore-modal.js +2 -2
- package/package.json +12 -12
- package/dist/chunk-AE2OVY26.js +0 -1186
- package/dist/chunk-AE2OVY26.js.map +0 -1
- package/dist/chunk-GUAUME2K.js +0 -31
- package/dist/chunk-GUAUME2K.js.map +0 -1
- package/dist/chunk-IBS6LDIM.cjs +0 -31
- package/dist/chunk-IBS6LDIM.cjs.map +0 -1
- package/dist/chunk-R4L3CREG.cjs +0 -1186
- package/dist/chunk-R4L3CREG.cjs.map +0 -1
- /package/dist/{chunk-BLDF6KQ6.js.map → chunk-47T7DEEN.js.map} +0 -0
- /package/dist/{chunk-4E7SPZWU.js.map → chunk-HROZAHML.js.map} +0 -0
- /package/dist/{chunk-HYTGLJAK.js.map → chunk-PUIFBRHQ.js.map} +0 -0
- /package/dist/{chunk-6W7FRKLF.js.map → chunk-XFMPPOEM.js.map} +0 -0
|
@@ -0,0 +1,1186 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__decorateClass
|
|
3
|
+
} from "./chunk-EUXUH3YW.js";
|
|
4
|
+
|
|
5
|
+
// src/connect-modal/connect-modal.base.ts
|
|
6
|
+
import { css, LitElement, unsafeCSS } from "lit";
|
|
7
|
+
|
|
8
|
+
// src/connect-modal/styles/styles.css?__raw__
|
|
9
|
+
var styles_default = '/**\n * @file Main styles\n *\n * This file contain general styles that should be applied to host page.\n */\n:root {\n --neutral-10: #121b21;\n --neutral-15: #1b2832;\n --neutral-20: #243542;\n --neutral-25: #2d4253;\n --neutral-30: #365063;\n --neutral-35: #3e5d74;\n --neutral-40: #476a85;\n --neutral-45: #507795;\n --neutral-50: #5985a6;\n --neutral-55: #6a91af;\n --neutral-60: #7a9db8;\n --neutral-65: #8ba9c1;\n --neutral-70: #9cb6c9;\n --neutral-75: #acc2d2;\n --neutral-80: #bdcedb;\n --neutral-85: #cddae4;\n --neutral-90: #dee7ed;\n --neutral-95: #eef3f6;\n --neutral-97: #f5f8fa;\n --neutral-98: #f8fafb;\n --neutral-100: #ffffff;\n --honey-72: #fad275;\n --honey-75: #fbd784;\n --honey-82: #fce2a6;\n --honey-85: #fce7b5;\n --honey-92: #fef2d8;\n --coral-65: #f37c58;\n --coral-74: #f69e83;\n --coral-75: #f7a288;\n --coral-84: #fac3b3;\n --coral-85: #fac7b7;\n --coral-94: #fde9e2;\n --warm-77: #ffbb8a;\n --warm-87: #ffd8bd;\n --warm-97: #fff6f0;\n --sea-salt-57: #7fa4a4;\n --sea-salt-67: #9db9b9;\n --sea-salt-88: #dbe6e6;\n --cloud-43: #447c97;\n --cloud-75: #a7c7d7;\n --cloud-88: #d5e4ec;\n --ocean-38: #3c6286;\n --ocean-75: #a7c0d7;\n --ocean-88: #d5e1ec;\n --sky-64: #68a5de;\n --sky-75: #96c1e8;\n --sky-85: #c0daf1;\n --lukso-50: #aa5578;\n --lukso-60: #bb7793;\n --lukso-70: #cc99ae;\n --lukso-80: #ddbbc9;\n --lukso-90: #eedde4;\n --yellow-25: #804d00;\n --yellow-55: #ffa31a;\n --yellow-65: #ffb84d;\n --yellow-75: #ffcc80;\n --yellow-85: #ffe0b3;\n --yellow-95: #fff5e5;\n --green-45: #31b452;\n --green-54: #47cd68;\n --green-63: #6bd686;\n --green-75: #9be4ad;\n --green-85: #c3efce;\n --green-95: #ebfaef;\n --blue-40: #0452c8;\n --blue-50: #0567fa;\n --blue-60: #3785fb;\n --blue-75: #82b3fc;\n --blue-85: #b4d1fd;\n --blue-95: #e6f0fe;\n --red-55: #e23636;\n --red-65: #e96363;\n --red-75: #ef8f8f;\n --red-85: #f5bcbc;\n --red-95: #fce9e9;\n --purple-15: #1d202f;\n --purple-18: #232739;\n --purple-31: #3c4262;\n --purple-41: #4f5882;\n --purple-51: #646ea0;\n --purple-58: #7a83ae;\n --purple-63: #8a92b7;\n --purple-82: #c6cadc;\n --purple-94: #ecedf3;\n --pink-90: #f8dad3;\n --pink-91: #f9ddd7;\n --pink-92: #f9e1dc;\n --pink-93: #fae5e0;\n --pink-94: #fbe9e5;\n --pink-95: #fcece9;\n --pink-96: #fcf0ed;\n --pink-97: #fdf4f2;\n --measure-50: #e8178a;\n --measure-70: #f174b9;\n --measure-80: #f6a2d0;\n --measure-97: #fef1f8;\n --grey-10: #1a1a1a;\n --grey-15: #262626;\n --grey-20: #333333;\n --grey-25: #404040;\n --grey-30: #4d4d4d;\n --grey-35: #595959;\n --grey-40: #666666;\n --grey-45: #737373;\n --grey-50: #808080;\n --grey-55: #8c8c8c;\n --grey-60: #999999;\n --grey-65: #a6a6a6;\n --grey-70: #b3b3b3;\n --grey-75: #bfbfbf;\n --grey-80: #cccccc;\n --gradient-1-start: #D39B9D;\n --gradient-1-end: #9071D1;\n --gradient-2-start: #F8DAD3;\n --gradient-2-end: #CC99AE;\n --gradient-3-start: #393e56;\n --gradient-3-end: #646ea0;\n}\n/**\n * @file Fonts\n *\n * This file contains all fonts used in designs.\n */\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-Regular.woff2") format("woff2");\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-ExtraBold.woff2") format("woff2");\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-Bold.woff2") format("woff2");\n font-weight: bold;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-SemiBold.woff2") format("woff2");\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-Medium.woff2") format("woff2");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: Inter;\n src: url("/assets/fonts/Inter-Thin.woff2") format("woff2");\n font-weight: 100;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: "PT Mono";\n src: url("/assets/fonts/PT-Mono-Regular.woff2") format("woff2");\n font-weight: normal;\n font-style: normal;\n}\n@font-face {\n font-family: "PT Mono";\n src: url("/assets/fonts/PT-Mono-Bold.woff2") format("woff2");\n font-weight: bold;\n font-style: normal;\n}\n/**\n * @file Typography\n *\n * This file contains all typography classes used in designs.\n * They should be used instead of individual font attributes.\n *\n * You can use them same as the normal Tailwind classes, e.g.: class="heading-inter-26-semi-bold"\n */\n/**\n * @file Variables\n *\n * This file contains all CSS variables used in designs.\n */\n/**\n * Tailwind v4 shadow system variables\n * Web components use Tailwind v4 internally, which requires these CSS variables\n * to be initialized for box-shadow to render correctly in Tailwind v3 consumers.\n */\n*,\n::after,\n::before,\n::backdrop,\n::file-selector-button {\n --tw-border-style: solid;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-colored: 0 0 #0000;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n}\n.tippy-box[data-animation=fade][data-state=hidden] {\n opacity: 0;\n}\n.tippy-arrow::before {\n content: "";\n position: absolute;\n border-color: transparent;\n border-style: solid;\n}\n.tippy-box[data-placement^=top] > .tippy-arrow::before {\n border-top-color: initial;\n transform-origin: center top;\n}\n.tippy-box[data-placement^=bottom] > .tippy-arrow::before {\n border-bottom-color: initial;\n transform-origin: center bottom;\n}\n.tippy-box[data-placement^=left] > .tippy-arrow::before {\n border-left-color: initial;\n transform-origin: center left;\n}\n.tippy-box[data-placement^=right] > .tippy-arrow::before {\n border-right-color: initial;\n transform-origin: center right;\n}\n.tippy-box[data-inertia][data-state=visible] {\n transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11);\n}\n.tippy-arrow {\n width: 16px;\n height: 16px;\n}\n.tippy-size-medium {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-size-medium[data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-size-medium[data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-size-medium[data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-size-medium[data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-size-medium[data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-size-medium[data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-size-medium[data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-size-medium[data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-size-large {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-size-large[data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-size-large[data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-size-large[data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-size-large[data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-size-large[data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-size-large[data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-size-large[data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-size-large[data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-variant-dark {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-variant-dark[data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-dark[data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-dark[data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-dark[data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-dark > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-variant-dark > .tippy-svg-arrow {\n fill: #365063;\n}\n.tippy-variant-light {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-variant-light[data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-light[data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-light[data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-light[data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-light > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n}\n.tippy-variant-light > .tippy-svg-arrow {\n fill: #f5f8fa;\n}\n.tippy-variant-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-variant-white[data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-white[data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-white[data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-white[data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-white > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.tippy-variant-white > .tippy-svg-arrow {\n fill: #ffffff;\n}\n.tippy-variant-success {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-variant-success[data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-success[data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-success[data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-success[data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-success > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n}\n.tippy-variant-success > .tippy-svg-arrow {\n fill: #47cd68;\n}\n.tippy-variant-danger {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-variant-danger[data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-danger[data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-danger[data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-danger[data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-variant-danger > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-variant-danger > .tippy-svg-arrow {\n fill: #e96363;\n}\n.tippy-box[data-theme~=dark-medium] {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-box[data-theme~=dark-medium] {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=dark-medium] > .tippy-svg-arrow {\n fill: #365063;\n}\n.tippy-box[data-theme~=dark-large] {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=dark-large][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=dark-large][data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-box[data-theme~=dark-large] {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=dark-large] > .tippy-svg-arrow {\n fill: #365063;\n}\n.tippy-box[data-theme~=light-medium] {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=light-medium][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=light-medium][data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-box[data-theme~=light-medium] {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=light-medium] > .tippy-svg-arrow {\n fill: #f5f8fa;\n}\n.tippy-box[data-theme~=light-large] {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=light-large][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=light-large][data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-box[data-theme~=light-large][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=light-large][data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-box[data-theme~=light-large][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=light-large][data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-box[data-theme~=light-large][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=light-large][data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-box[data-theme~=light-large] {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=light-large][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-large][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-large][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-large][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=light-large] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=light-large] > .tippy-svg-arrow {\n fill: #f5f8fa;\n}\n.tippy-box[data-theme~=white-medium] {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=white-medium][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=white-medium][data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-box[data-theme~=white-medium] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=white-medium] > .tippy-svg-arrow {\n fill: #ffffff;\n}\n.tippy-box[data-theme~=white-large] {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=white-large][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=white-large][data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-box[data-theme~=white-large][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=white-large][data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-box[data-theme~=white-large][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=white-large][data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-box[data-theme~=white-large][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=white-large][data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-box[data-theme~=white-large] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=white-large][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-large][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-large][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-large][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=white-large] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=white-large] > .tippy-svg-arrow {\n fill: #ffffff;\n}\n.tippy-box[data-theme~=success-medium] {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=success-medium][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=success-medium][data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-box[data-theme~=success-medium] {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=success-medium] > .tippy-svg-arrow {\n fill: #47cd68;\n}\n.tippy-box[data-theme~=success-large] {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=success-large][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=success-large][data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-box[data-theme~=success-large][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=success-large][data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-box[data-theme~=success-large][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=success-large][data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-box[data-theme~=success-large][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=success-large][data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-box[data-theme~=success-large] {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=success-large][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-large][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-large][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-large][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=success-large] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=success-large] > .tippy-svg-arrow {\n fill: #47cd68;\n}\n.tippy-box[data-theme~=danger-medium] {\n border-radius: 4px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 10px;\n font-weight: 600;\n font-style: normal;\n line-height: 12px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=top] > .tippy-arrow::before {\n bottom: -6px;\n left: 2px;\n border-width: 6px 6px 0;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] > .tippy-arrow::before {\n top: -6px;\n left: 2px;\n border-width: 0 6px 6px;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=left] > .tippy-arrow::before {\n border-width: 6px 0 6px 6px;\n right: -6px;\n top: 2px;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=right] > .tippy-arrow::before {\n left: -6px;\n top: 2px;\n border-width: 6px 6px 6px 0;\n}\n.tippy-box[data-theme~=danger-medium] {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=danger-medium] > .tippy-svg-arrow {\n fill: #e96363;\n}\n.tippy-box[data-theme~=danger-large] {\n border-radius: 8px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tippy-box[data-theme~=danger-large][data-placement^=top] > .tippy-arrow {\n bottom: 0;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=top] > .tippy-arrow::before {\n bottom: -8px;\n left: 0;\n border-width: 8px 8px 0;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] > .tippy-arrow {\n top: 0;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] > .tippy-arrow::before {\n top: -8px;\n left: 0;\n border-width: 0 8px 8px;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=left] > .tippy-arrow {\n right: 0;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=left] > .tippy-arrow::before {\n border-width: 8px 0 8px 8px;\n right: -8px;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=right] > .tippy-arrow {\n left: 0;\n}\n.tippy-box[data-theme~=danger-large][data-placement^=right] > .tippy-arrow::before {\n left: -8px;\n border-width: 8px 8px 8px 0;\n}\n.tippy-box[data-theme~=danger-large] {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large][data-placement^=top] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large][data-placement^=left] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large][data-placement^=right] .tippy-arrow::before {\n --tw-border-opacity: 1;\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large] > .tippy-backdrop {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n}\n.tippy-box[data-theme~=danger-large] > .tippy-svg-arrow {\n fill: #e96363;\n}\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com\n */\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n::before,\n::after {\n --tw-content: \'\';\n}\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user\'s configured `sans` font-family by default.\n5. Use the user\'s configured `sans` font-feature-settings by default.\n6. Use the user\'s configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n/*\nRemove the default font size and weight for headings.\n*/\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\na {\n color: inherit;\n text-decoration: inherit;\n}\n/*\nAdd the correct font weight in Edge and Safari.\n*/\nb,\nstrong {\n font-weight: bolder;\n}\n/*\n1. Use the user\'s configured `mono` font-family by default.\n2. Use the user\'s configured `mono` font-feature-settings by default.\n3. Use the user\'s configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\ncode,\nkbd,\nsamp,\npre {\n font-family: "PT Mono", sans-serif; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n/*\nAdd the correct font size in all browsers.\n*/\nsmall {\n font-size: 80%;\n}\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsub {\n bottom: -0.25em;\n}\nsup {\n top: -0.5em;\n}\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\nbutton,\nselect {\n text-transform: none;\n}\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\nbutton,\ninput:where([type=\'button\']),\ninput:where([type=\'reset\']),\ninput:where([type=\'submit\']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n:-moz-focusring {\n outline: auto;\n}\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n:-moz-ui-invalid {\n box-shadow: none;\n}\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\nprogress {\n vertical-align: baseline;\n}\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n[type=\'search\'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n/*\nAdd the correct display in Chrome and Safari.\n*/\nsummary {\n display: list-item;\n}\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\nfieldset {\n margin: 0;\n padding: 0;\n}\nlegend {\n padding: 0;\n}\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n/*\nPrevent resizing textareas horizontally by default.\n*/\ntextarea {\n resize: vertical;\n}\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user\'s configured gray 400 color.\n*/\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n/*\nSet the default cursor for buttons.\n*/\nbutton,\n[role="button"] {\n cursor: pointer;\n}\n/*\nMake sure disabled buttons don\'t get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden]:where(:not([hidden="until-found"])) {\n display: none;\n}\n.heading-inter-21-semi-bold {\n font-family: Inter, sans-serif;\n font-size: 21px;\n font-weight: 600;\n font-style: normal;\n line-height: 26px;\n}\n.paragraph-inter-16-regular {\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-weight: 400;\n font-style: normal;\n line-height: 24px;\n}\n.paragraph-inter-14-regular {\n font-family: Inter, sans-serif;\n font-size: 14px;\n font-weight: 400;\n font-style: normal;\n line-height: 22px;\n}\n.paragraph-inter-14-semi-bold {\n font-family: Inter, sans-serif;\n font-size: 14px;\n font-weight: 600;\n font-style: normal;\n line-height: 22px;\n}\n.paragraph-inter-13-regular {\n font-family: Inter, sans-serif;\n font-size: 13px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n}\n.paragraph-inter-12-regular {\n font-family: Inter, sans-serif;\n font-size: 12px;\n font-weight: 400;\n font-style: normal;\n line-height: 20px;\n}\n.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n.prose {\n color: var(--tw-prose-body);\n max-width: 65ch;\n}\n.prose :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n}\n.prose :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-lead);\n font-size: 1.25em;\n line-height: 1.6;\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n}\n.prose :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-bold);\n font-weight: 600;\n}\n.prose :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: decimal;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-inline-start: 1.625em;\n}\n.prose :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: upper-alpha;\n}\n.prose :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: lower-alpha;\n}\n.prose :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: upper-alpha;\n}\n.prose :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: lower-alpha;\n}\n.prose :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: upper-roman;\n}\n.prose :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: lower-roman;\n}\n.prose :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: upper-roman;\n}\n.prose :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: lower-roman;\n}\n.prose :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: decimal;\n}\n.prose :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n list-style-type: disc;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-inline-start: 1.625em;\n}\n.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {\n font-weight: 400;\n color: var(--tw-prose-counters);\n}\n.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {\n color: var(--tw-prose-bullets);\n}\n.prose :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.25em;\n}\n.prose :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n border-color: var(--tw-prose-hr);\n border-top-width: 1px;\n margin-top: 3em;\n margin-bottom: 3em;\n}\n.prose :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 500;\n font-style: italic;\n color: var(--tw-prose-quotes);\n border-inline-start-width: 0.25rem;\n border-inline-start-color: var(--tw-prose-quote-borders);\n quotes: "\\201C""\\201D""\\2018""\\2019";\n margin-top: 1.6em;\n margin-bottom: 1.6em;\n padding-inline-start: 1em;\n}\n.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {\n content: open-quote;\n}\n.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {\n content: close-quote;\n}\n.prose :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 800;\n font-size: 2.25em;\n margin-top: 0;\n margin-bottom: 0.8888889em;\n line-height: 1.1111111;\n}\n.prose :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 900;\n color: inherit;\n}\n.prose :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 700;\n font-size: 1.5em;\n margin-top: 2em;\n margin-bottom: 1em;\n line-height: 1.3333333;\n}\n.prose :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 800;\n color: inherit;\n}\n.prose :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n font-size: 1.25em;\n margin-top: 1.6em;\n margin-bottom: 0.6em;\n line-height: 1.6;\n}\n.prose :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 700;\n color: inherit;\n}\n.prose :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 700;\n color: inherit;\n}\n.prose :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n display: block;\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-weight: 500;\n font-family: inherit;\n color: var(--tw-prose-kbd);\n box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);\n font-size: 0.875em;\n border-radius: 0.3125rem;\n padding-top: 0.1875em;\n padding-inline-end: 0.375em;\n padding-bottom: 0.1875em;\n padding-inline-start: 0.375em;\n}\n.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-code);\n font-weight: 600;\n font-size: 0.875em;\n}\n.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {\n content: "`";\n}\n.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {\n content: "`";\n}\n.prose :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n font-size: 0.875em;\n}\n.prose :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n font-size: 0.9em;\n}\n.prose :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: inherit;\n}\n.prose :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-pre-code);\n background-color: var(--tw-prose-pre-bg);\n overflow-x: auto;\n font-weight: 400;\n font-size: 0.875em;\n line-height: 1.7142857;\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n border-radius: 0.375rem;\n padding-top: 0.8571429em;\n padding-inline-end: 1.1428571em;\n padding-bottom: 0.8571429em;\n padding-inline-start: 1.1428571em;\n}\n.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n background-color: transparent;\n border-width: 0;\n border-radius: 0;\n padding: 0;\n font-weight: inherit;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n line-height: inherit;\n}\n.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {\n content: none;\n}\n.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {\n content: none;\n}\n.prose :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n width: 100%;\n table-layout: auto;\n margin-top: 2em;\n margin-bottom: 2em;\n font-size: 0.875em;\n line-height: 1.7142857;\n}\n.prose :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-th-borders);\n}\n.prose :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n vertical-align: bottom;\n padding-inline-end: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-inline-start: 0.5714286em;\n}\n.prose :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-td-borders);\n}\n.prose :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n border-bottom-width: 0;\n}\n.prose :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n vertical-align: baseline;\n}\n.prose :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n border-top-width: 1px;\n border-top-color: var(--tw-prose-th-borders);\n}\n.prose :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n vertical-align: top;\n}\n.prose :where(th, td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n text-align: start;\n}\n.prose :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-captions);\n font-size: 0.875em;\n line-height: 1.4285714;\n margin-top: 0.8571429em;\n}\n.prose {\n --tw-prose-body: oklch(37.3% 0.034 259.733);\n --tw-prose-headings: oklch(21% 0.034 264.665);\n --tw-prose-lead: oklch(44.6% 0.03 256.802);\n --tw-prose-links: oklch(21% 0.034 264.665);\n --tw-prose-bold: oklch(21% 0.034 264.665);\n --tw-prose-counters: oklch(55.1% 0.027 264.364);\n --tw-prose-bullets: oklch(87.2% 0.01 258.338);\n --tw-prose-hr: oklch(92.8% 0.006 264.531);\n --tw-prose-quotes: oklch(21% 0.034 264.665);\n --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);\n --tw-prose-captions: oklch(55.1% 0.027 264.364);\n --tw-prose-kbd: oklch(21% 0.034 264.665);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);\n --tw-prose-code: oklch(21% 0.034 264.665);\n --tw-prose-pre-code: oklch(92.8% 0.006 264.531);\n --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);\n --tw-prose-th-borders: oklch(87.2% 0.01 258.338);\n --tw-prose-td-borders: oklch(92.8% 0.006 264.531);\n --tw-prose-invert-body: oklch(87.2% 0.01 258.338);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);\n --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);\n --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);\n --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);\n --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);\n --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);\n font-size: 1rem;\n line-height: 1.75;\n}\n.prose :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n}\n.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.375em;\n}\n.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.375em;\n}\n.prose :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n}\n.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.25em;\n}\n.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n}\n.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.25em;\n}\n.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n.prose :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n}\n.prose :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n padding-inline-start: 1.625em;\n}\n.prose :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.5714286em;\n padding-inline-end: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-inline-start: 0.5714286em;\n}\n.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-sm {\n font-size: 0.875rem;\n line-height: 1.6;\n}\n.prose-sm :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose-sm :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.2857143em;\n line-height: 1.5555556;\n margin-top: 0.8888889em;\n margin-bottom: 0.8888889em;\n}\n.prose-sm :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.1111111em;\n padding-left: 1em;\n border-left-width: 0.25rem;\n font-style: italic;\n color: inherit;\n}\n.prose-sm :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2.1428571em;\n margin-top: 0.75em;\n margin-bottom: 0.5em;\n line-height: 1.2;\n}\n.prose-sm :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.4285714em;\n margin-top: 0.65em;\n margin-bottom: 0.45em;\n line-height: 1.25;\n}\n.prose-sm :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.2857143em;\n margin-top: 0.6em;\n margin-bottom: 0.4em;\n line-height: 1.3;\n}\n.prose-sm :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.35em;\n line-height: 1.35;\n}\n.prose-sm :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n}\n.prose-sm :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n}\n.prose-sm :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-sm :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n}\n.prose-sm :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8571429em;\n border-radius: 0.3125rem;\n padding-top: 0.1428571em;\n padding-inline-end: 0.3571429em;\n padding-bottom: 0.1428571em;\n padding-inline-start: 0.3571429em;\n}\n.prose-sm :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8571429em;\n}\n.prose-sm :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n}\n.prose-sm :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n}\n.prose-sm :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8571429em;\n line-height: 1.45;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n border-radius: 0.25rem;\n padding-top: 0.6666667em;\n padding-inline-end: 1em;\n padding-bottom: 0.6666667em;\n padding-inline-start: 1em;\n box-sizing: border-box;\n max-width: 100%;\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n}\n.prose-sm :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.5714286em;\n padding-left: 1.25em;\n}\n.prose-sm :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.5714286em;\n padding-left: 1.25em;\n}\n.prose-sm :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-sm :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4285714em;\n}\n.prose-sm :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4285714em;\n}\n.prose-sm :where(.prose-sm > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5714286em;\n margin-bottom: 0.5714286em;\n}\n.prose-sm :where(.prose-sm > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.1428571em;\n}\n.prose-sm :where(.prose-sm > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.1428571em;\n}\n.prose-sm :where(.prose-sm > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.1428571em;\n}\n.prose-sm :where(.prose-sm > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.1428571em;\n}\n.prose-sm :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-sm :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.1428571em;\n margin-bottom: 1.1428571em;\n}\n.prose-sm :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.1428571em;\n}\n.prose-sm :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.2857143em;\n padding-inline-start: 1.5714286em;\n}\n.prose-sm :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-sm :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-sm :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-sm :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-sm :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-sm :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8571429em;\n line-height: 1.5;\n}\n.prose-sm :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 1em;\n padding-bottom: 0.6666667em;\n padding-inline-start: 1em;\n}\n.prose-sm :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-sm :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-sm :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.6666667em;\n padding-inline-end: 1em;\n padding-bottom: 0.6666667em;\n padding-inline-start: 1em;\n}\n.prose-sm :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-sm :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-sm :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n}\n.prose-sm :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-sm :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8571429em;\n line-height: 1.3333333;\n margin-top: 0.6666667em;\n}\n.prose-sm :where(.prose-sm > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-sm :where(.prose-sm > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-sm {\n max-width: none;\n}\n.prose-sm :where(h5):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.45em;\n margin-bottom: 0.3em;\n line-height: 1.4;\n}\n.prose-sm :where(h6):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.4em;\n margin-bottom: 0.25em;\n line-height: 1.45;\n}\n.prose-sm :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose-sm :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)):hover {\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\n text-decoration: none;\n}\n.prose-base {\n font-size: 1rem;\n line-height: 1.6;\n}\n.prose-base :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose-base :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.25em;\n line-height: 1.6;\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n}\n.prose-base :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1em;\n padding-left: 1em;\n border-left-width: 0.25rem;\n font-style: italic;\n color: inherit;\n}\n.prose-base :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2.25em;\n margin-top: 0.75em;\n margin-bottom: 0.5em;\n line-height: 1.2;\n}\n.prose-base :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.5em;\n margin-top: 0.65em;\n margin-bottom: 0.45em;\n line-height: 1.25;\n}\n.prose-base :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.25em;\n margin-top: 0.6em;\n margin-bottom: 0.4em;\n line-height: 1.3;\n}\n.prose-base :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.35em;\n line-height: 1.35;\n}\n.prose-base :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-base :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-base :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-base :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-base :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n border-radius: 0.3125rem;\n padding-top: 0.1875em;\n padding-inline-end: 0.375em;\n padding-bottom: 0.1875em;\n padding-inline-start: 0.375em;\n}\n.prose-base :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n}\n.prose-base :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n}\n.prose-base :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n}\n.prose-base :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n line-height: 1.45;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n border-radius: 0.375rem;\n padding-top: 0.8571429em;\n padding-inline-end: 1.1428571em;\n padding-bottom: 0.8571429em;\n padding-inline-start: 1.1428571em;\n box-sizing: border-box;\n max-width: 100%;\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n}\n.prose-base :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.625em;\n padding-left: 1.25em;\n}\n.prose-base :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.625em;\n padding-left: 1.25em;\n}\n.prose-base :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-base :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.375em;\n}\n.prose-base :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.375em;\n}\n.prose-base :where(.prose-base > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n.prose-base :where(.prose-base > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n}\n.prose-base :where(.prose-base > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.25em;\n}\n.prose-base :where(.prose-base > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n}\n.prose-base :where(.prose-base > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.25em;\n}\n.prose-base :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-base :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n}\n.prose-base :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.25em;\n}\n.prose-base :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n padding-inline-start: 1.625em;\n}\n.prose-base :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-base :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-base :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-base :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-base :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-base :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n line-height: 1.7142857;\n}\n.prose-base :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-inline-start: 0.5714286em;\n}\n.prose-base :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-base :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-base :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.5714286em;\n padding-inline-end: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-inline-start: 0.5714286em;\n}\n.prose-base :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-base :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-base :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-base :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-base :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n line-height: 1.4285714;\n margin-top: 0.8571429em;\n}\n.prose-base :where(.prose-base > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-base :where(.prose-base > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-base {\n max-width: none;\n}\n.prose-base :where(h5):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.45em;\n margin-bottom: 0.3em;\n line-height: 1.4;\n}\n.prose-base :where(h6):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.4em;\n margin-bottom: 0.25em;\n line-height: 1.45;\n}\n.prose-base :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose-base :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)):hover {\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\n text-decoration: none;\n}\n.prose-lg {\n font-size: 1.125rem;\n line-height: 1.6;\n}\n.prose-lg :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose-lg :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.2222222em;\n line-height: 1.4545455;\n margin-top: 1.0909091em;\n margin-bottom: 1.0909091em;\n}\n.prose-lg :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1em;\n padding-left: 1em;\n border-left-width: 0.25rem;\n font-style: italic;\n color: inherit;\n}\n.prose-lg :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2.6666667em;\n margin-top: 0.75em;\n margin-bottom: 0.5em;\n line-height: 1.2;\n}\n.prose-lg :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.6666667em;\n margin-top: 0.65em;\n margin-bottom: 0.45em;\n line-height: 1.25;\n}\n.prose-lg :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.3333333em;\n margin-top: 0.6em;\n margin-bottom: 0.4em;\n line-height: 1.3;\n}\n.prose-lg :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.35em;\n line-height: 1.35;\n}\n.prose-lg :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7777778em;\n margin-bottom: 1.7777778em;\n}\n.prose-lg :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7777778em;\n margin-bottom: 1.7777778em;\n}\n.prose-lg :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-lg :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7777778em;\n margin-bottom: 1.7777778em;\n}\n.prose-lg :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n border-radius: 0.3125rem;\n padding-top: 0.2222222em;\n padding-inline-end: 0.4444444em;\n padding-bottom: 0.2222222em;\n padding-inline-start: 0.4444444em;\n}\n.prose-lg :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n}\n.prose-lg :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8666667em;\n}\n.prose-lg :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n}\n.prose-lg :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n line-height: 1.45;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n border-radius: 0.375rem;\n padding-top: 1em;\n padding-inline-end: 1.5em;\n padding-bottom: 1em;\n padding-inline-start: 1.5em;\n box-sizing: border-box;\n max-width: 100%;\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n}\n.prose-lg :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.5555556em;\n padding-left: 1.25em;\n}\n.prose-lg :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.5555556em;\n padding-left: 1.25em;\n}\n.prose-lg :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-lg :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4444444em;\n}\n.prose-lg :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4444444em;\n}\n.prose-lg :where(.prose-lg > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.8888889em;\n margin-bottom: 0.8888889em;\n}\n.prose-lg :where(.prose-lg > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-lg :where(.prose-lg > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.3333333em;\n}\n.prose-lg :where(.prose-lg > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-lg :where(.prose-lg > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.3333333em;\n}\n.prose-lg :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-lg :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n margin-bottom: 1.3333333em;\n}\n.prose-lg :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-lg :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.6666667em;\n padding-inline-start: 1.5555556em;\n}\n.prose-lg :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-lg :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-lg :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-lg :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-lg :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-lg :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n line-height: 1.5;\n}\n.prose-lg :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0.75em;\n padding-bottom: 0.75em;\n padding-inline-start: 0.75em;\n}\n.prose-lg :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-lg :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-lg :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.75em;\n padding-inline-end: 0.75em;\n padding-bottom: 0.75em;\n padding-inline-start: 0.75em;\n}\n.prose-lg :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-lg :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-lg :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7777778em;\n margin-bottom: 1.7777778em;\n}\n.prose-lg :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-lg :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n line-height: 1.5;\n margin-top: 1em;\n}\n.prose-lg :where(.prose-lg > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-lg :where(.prose-lg > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-lg {\n max-width: none;\n}\n.prose-lg :where(h5):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.45em;\n margin-bottom: 0.3em;\n line-height: 1.4;\n}\n.prose-lg :where(h6):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.4em;\n margin-bottom: 0.25em;\n line-height: 1.45;\n}\n.prose-lg :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose-lg :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)):hover {\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\n text-decoration: none;\n}\n.prose-xl {\n font-size: 1.25rem;\n line-height: 1.6;\n}\n.prose-xl :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose-xl :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.2em;\n line-height: 1.5;\n margin-top: 1em;\n margin-bottom: 1em;\n}\n.prose-xl :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.0666667em;\n padding-left: 1em;\n border-left-width: 0.25rem;\n font-style: italic;\n color: inherit;\n}\n.prose-xl :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2.8em;\n margin-top: 0.75em;\n margin-bottom: 0.5em;\n line-height: 1.2;\n}\n.prose-xl :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.8em;\n margin-top: 0.65em;\n margin-bottom: 0.45em;\n line-height: 1.25;\n}\n.prose-xl :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.5em;\n margin-top: 0.6em;\n margin-bottom: 0.4em;\n line-height: 1.3;\n}\n.prose-xl :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.35em;\n line-height: 1.35;\n}\n.prose-xl :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-xl :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-xl :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-xl :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-xl :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n border-radius: 0.3125rem;\n padding-top: 0.25em;\n padding-inline-end: 0.4em;\n padding-bottom: 0.25em;\n padding-inline-start: 0.4em;\n}\n.prose-xl :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n}\n.prose-xl :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8611111em;\n}\n.prose-xl :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n}\n.prose-xl :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n line-height: 1.45;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n border-radius: 0.5rem;\n padding-top: 1.1111111em;\n padding-inline-end: 1.3333333em;\n padding-bottom: 1.1111111em;\n padding-inline-start: 1.3333333em;\n box-sizing: border-box;\n max-width: 100%;\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n}\n.prose-xl :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.6em;\n padding-left: 1.25em;\n}\n.prose-xl :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n padding-inline-start: 1.6em;\n padding-left: 1.25em;\n}\n.prose-xl :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-xl :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4em;\n}\n.prose-xl :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4em;\n}\n.prose-xl :where(.prose-xl > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.8em;\n margin-bottom: 0.8em;\n}\n.prose-xl :where(.prose-xl > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.2em;\n}\n.prose-xl :where(.prose-xl > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.2em;\n}\n.prose-xl :where(.prose-xl > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.2em;\n}\n.prose-xl :where(.prose-xl > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.2em;\n}\n.prose-xl :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n.prose-xl :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n}\n.prose-xl :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.2em;\n}\n.prose-xl :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.6em;\n padding-inline-start: 1.6em;\n}\n.prose-xl :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-xl :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-xl :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-xl :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-xl :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-xl :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n line-height: 1.5555556;\n}\n.prose-xl :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0.6666667em;\n padding-bottom: 0.8888889em;\n padding-inline-start: 0.6666667em;\n}\n.prose-xl :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-xl :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-xl :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.8888889em;\n padding-inline-end: 0.6666667em;\n padding-bottom: 0.8888889em;\n padding-inline-start: 0.6666667em;\n}\n.prose-xl :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-xl :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-xl :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-xl :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-xl :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.9em;\n line-height: 1.5555556;\n margin-top: 1em;\n}\n.prose-xl :where(.prose-xl > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-xl :where(.prose-xl > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-xl {\n max-width: none;\n}\n.prose-xl :where(h5):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.45em;\n margin-bottom: 0.3em;\n line-height: 1.4;\n}\n.prose-xl :where(h6):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.4em;\n margin-bottom: 0.25em;\n line-height: 1.45;\n}\n.prose-xl :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose-xl :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)):hover {\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\n text-decoration: none;\n}\n.prose-2xl {\n font-size: 1.5rem;\n line-height: 1.6666667;\n}\n.prose-2xl :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n margin-bottom: 1.3333333em;\n}\n.prose-2xl :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.25em;\n line-height: 1.4666667;\n margin-top: 1.0666667em;\n margin-bottom: 1.0666667em;\n}\n.prose-2xl :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.7777778em;\n margin-bottom: 1.7777778em;\n padding-inline-start: 1.1111111em;\n}\n.prose-2xl :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2.6666667em;\n margin-top: 0;\n margin-bottom: 0.875em;\n line-height: 1;\n}\n.prose-2xl :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 2em;\n margin-top: 1.5em;\n margin-bottom: 0.8333333em;\n line-height: 1.0833333;\n}\n.prose-2xl :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 1.5em;\n margin-top: 1.5555556em;\n margin-bottom: 0.6666667em;\n line-height: 1.2222222;\n}\n.prose-2xl :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.6666667em;\n margin-bottom: 0.6666667em;\n line-height: 1.5;\n}\n.prose-2xl :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-2xl :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-2xl :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-2xl :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-2xl :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8333333em;\n border-radius: 0.375rem;\n padding-top: 0.25em;\n padding-inline-end: 0.3333333em;\n padding-bottom: 0.25em;\n padding-inline-start: 0.3333333em;\n}\n.prose-2xl :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8333333em;\n}\n.prose-2xl :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.875em;\n}\n.prose-2xl :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8888889em;\n}\n.prose-2xl :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8333333em;\n line-height: 1.8;\n margin-top: 2em;\n margin-bottom: 2em;\n border-radius: 0.5rem;\n padding-top: 1.2em;\n padding-inline-end: 1.6em;\n padding-bottom: 1.2em;\n padding-inline-start: 1.6em;\n}\n.prose-2xl :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n margin-bottom: 1.3333333em;\n padding-inline-start: 1.5833333em;\n}\n.prose-2xl :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n margin-bottom: 1.3333333em;\n padding-inline-start: 1.5833333em;\n}\n.prose-2xl :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n}\n.prose-2xl :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4166667em;\n}\n.prose-2xl :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0.4166667em;\n}\n.prose-2xl :where(.prose-2xl > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.8333333em;\n margin-bottom: 0.8333333em;\n}\n.prose-2xl :where(.prose-2xl > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-2xl :where(.prose-2xl > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.3333333em;\n}\n.prose-2xl :where(.prose-2xl > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-2xl :where(.prose-2xl > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 1.3333333em;\n}\n.prose-2xl :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.6666667em;\n margin-bottom: 0.6666667em;\n}\n.prose-2xl :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n margin-bottom: 1.3333333em;\n}\n.prose-2xl :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 1.3333333em;\n}\n.prose-2xl :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0.5em;\n padding-inline-start: 1.5833333em;\n}\n.prose-2xl :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 3em;\n margin-bottom: 3em;\n}\n.prose-2xl :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-2xl :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-2xl :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-2xl :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-2xl :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8333333em;\n line-height: 1.4;\n}\n.prose-2xl :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0.6em;\n padding-bottom: 0.8em;\n padding-inline-start: 0.6em;\n}\n.prose-2xl :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-2xl :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-2xl :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-top: 0.8em;\n padding-inline-end: 0.6em;\n padding-bottom: 0.8em;\n padding-inline-start: 0.6em;\n}\n.prose-2xl :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-start: 0;\n}\n.prose-2xl :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n padding-inline-end: 0;\n}\n.prose-2xl :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose-2xl :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose-2xl :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n font-size: 0.8333333em;\n line-height: 1.6;\n margin-top: 1em;\n}\n.prose-2xl :where(.prose-2xl > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-top: 0;\n}\n.prose-2xl :where(.prose-2xl > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {\n margin-bottom: 0;\n}\n.prose-slate {\n --tw-prose-body: oklch(37.2% 0.044 257.287);\n --tw-prose-headings: oklch(20.8% 0.042 265.755);\n --tw-prose-lead: oklch(44.6% 0.043 257.281);\n --tw-prose-links: oklch(20.8% 0.042 265.755);\n --tw-prose-bold: oklch(20.8% 0.042 265.755);\n --tw-prose-counters: oklch(55.4% 0.046 257.417);\n --tw-prose-bullets: oklch(86.9% 0.022 252.894);\n --tw-prose-hr: oklch(92.9% 0.013 255.508);\n --tw-prose-quotes: oklch(20.8% 0.042 265.755);\n --tw-prose-quote-borders: oklch(92.9% 0.013 255.508);\n --tw-prose-captions: oklch(55.4% 0.046 257.417);\n --tw-prose-kbd: oklch(20.8% 0.042 265.755);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(20.8% 0.042 265.755) 10%, transparent);\n --tw-prose-code: oklch(20.8% 0.042 265.755);\n --tw-prose-pre-code: oklch(92.9% 0.013 255.508);\n --tw-prose-pre-bg: oklch(27.9% 0.041 260.031);\n --tw-prose-th-borders: oklch(86.9% 0.022 252.894);\n --tw-prose-td-borders: oklch(92.9% 0.013 255.508);\n --tw-prose-invert-body: oklch(86.9% 0.022 252.894);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.4% 0.04 256.788);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.4% 0.04 256.788);\n --tw-prose-invert-bullets: oklch(44.6% 0.043 257.281);\n --tw-prose-invert-hr: oklch(37.2% 0.044 257.287);\n --tw-prose-invert-quotes: oklch(96.8% 0.007 247.896);\n --tw-prose-invert-quote-borders: oklch(37.2% 0.044 257.287);\n --tw-prose-invert-captions: oklch(70.4% 0.04 256.788);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(86.9% 0.022 252.894);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(44.6% 0.043 257.281);\n --tw-prose-invert-td-borders: oklch(37.2% 0.044 257.287);\n}\n.prose-gray {\n --tw-prose-body: oklch(37.3% 0.034 259.733);\n --tw-prose-headings: oklch(21% 0.034 264.665);\n --tw-prose-lead: oklch(44.6% 0.03 256.802);\n --tw-prose-links: oklch(21% 0.034 264.665);\n --tw-prose-bold: oklch(21% 0.034 264.665);\n --tw-prose-counters: oklch(55.1% 0.027 264.364);\n --tw-prose-bullets: oklch(87.2% 0.01 258.338);\n --tw-prose-hr: oklch(92.8% 0.006 264.531);\n --tw-prose-quotes: oklch(21% 0.034 264.665);\n --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);\n --tw-prose-captions: oklch(55.1% 0.027 264.364);\n --tw-prose-kbd: oklch(21% 0.034 264.665);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);\n --tw-prose-code: oklch(21% 0.034 264.665);\n --tw-prose-pre-code: oklch(92.8% 0.006 264.531);\n --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);\n --tw-prose-th-borders: oklch(87.2% 0.01 258.338);\n --tw-prose-td-borders: oklch(92.8% 0.006 264.531);\n --tw-prose-invert-body: oklch(87.2% 0.01 258.338);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);\n --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);\n --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);\n --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);\n --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);\n --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);\n}\n.prose-zinc {\n --tw-prose-body: oklch(37% 0.013 285.805);\n --tw-prose-headings: oklch(21% 0.006 285.885);\n --tw-prose-lead: oklch(44.2% 0.017 285.786);\n --tw-prose-links: oklch(21% 0.006 285.885);\n --tw-prose-bold: oklch(21% 0.006 285.885);\n --tw-prose-counters: oklch(55.2% 0.016 285.938);\n --tw-prose-bullets: oklch(87.1% 0.006 286.286);\n --tw-prose-hr: oklch(92% 0.004 286.32);\n --tw-prose-quotes: oklch(21% 0.006 285.885);\n --tw-prose-quote-borders: oklch(92% 0.004 286.32);\n --tw-prose-captions: oklch(55.2% 0.016 285.938);\n --tw-prose-kbd: oklch(21% 0.006 285.885);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.006 285.885) 10%, transparent);\n --tw-prose-code: oklch(21% 0.006 285.885);\n --tw-prose-pre-code: oklch(92% 0.004 286.32);\n --tw-prose-pre-bg: oklch(27.4% 0.006 286.033);\n --tw-prose-th-borders: oklch(87.1% 0.006 286.286);\n --tw-prose-td-borders: oklch(92% 0.004 286.32);\n --tw-prose-invert-body: oklch(87.1% 0.006 286.286);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.5% 0.015 286.067);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.5% 0.015 286.067);\n --tw-prose-invert-bullets: oklch(44.2% 0.017 285.786);\n --tw-prose-invert-hr: oklch(37% 0.013 285.805);\n --tw-prose-invert-quotes: oklch(96.7% 0.001 286.375);\n --tw-prose-invert-quote-borders: oklch(37% 0.013 285.805);\n --tw-prose-invert-captions: oklch(70.5% 0.015 286.067);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(87.1% 0.006 286.286);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(44.2% 0.017 285.786);\n --tw-prose-invert-td-borders: oklch(37% 0.013 285.805);\n}\n.prose-neutral {\n --tw-prose-body: oklch(37.1% 0 0);\n --tw-prose-headings: oklch(20.5% 0 0);\n --tw-prose-lead: oklch(43.9% 0 0);\n --tw-prose-links: oklch(20.5% 0 0);\n --tw-prose-bold: oklch(20.5% 0 0);\n --tw-prose-counters: oklch(55.6% 0 0);\n --tw-prose-bullets: oklch(87% 0 0);\n --tw-prose-hr: oklch(92.2% 0 0);\n --tw-prose-quotes: oklch(20.5% 0 0);\n --tw-prose-quote-borders: oklch(92.2% 0 0);\n --tw-prose-captions: oklch(55.6% 0 0);\n --tw-prose-kbd: oklch(20.5% 0 0);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(20.5% 0 0) 10%, transparent);\n --tw-prose-code: oklch(20.5% 0 0);\n --tw-prose-pre-code: oklch(92.2% 0 0);\n --tw-prose-pre-bg: oklch(26.9% 0 0);\n --tw-prose-th-borders: oklch(87% 0 0);\n --tw-prose-td-borders: oklch(92.2% 0 0);\n --tw-prose-invert-body: oklch(87% 0 0);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.8% 0 0);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.8% 0 0);\n --tw-prose-invert-bullets: oklch(43.9% 0 0);\n --tw-prose-invert-hr: oklch(37.1% 0 0);\n --tw-prose-invert-quotes: oklch(97% 0 0);\n --tw-prose-invert-quote-borders: oklch(37.1% 0 0);\n --tw-prose-invert-captions: oklch(70.8% 0 0);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(87% 0 0);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(43.9% 0 0);\n --tw-prose-invert-td-borders: oklch(37.1% 0 0);\n}\n.prose-stone {\n --tw-prose-body: oklch(37.4% 0.01 67.558);\n --tw-prose-headings: oklch(21.6% 0.006 56.043);\n --tw-prose-lead: oklch(44.4% 0.011 73.639);\n --tw-prose-links: oklch(21.6% 0.006 56.043);\n --tw-prose-bold: oklch(21.6% 0.006 56.043);\n --tw-prose-counters: oklch(55.3% 0.013 58.071);\n --tw-prose-bullets: oklch(86.9% 0.005 56.366);\n --tw-prose-hr: oklch(92.3% 0.003 48.717);\n --tw-prose-quotes: oklch(21.6% 0.006 56.043);\n --tw-prose-quote-borders: oklch(92.3% 0.003 48.717);\n --tw-prose-captions: oklch(55.3% 0.013 58.071);\n --tw-prose-kbd: oklch(21.6% 0.006 56.043);\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21.6% 0.006 56.043) 10%, transparent);\n --tw-prose-code: oklch(21.6% 0.006 56.043);\n --tw-prose-pre-code: oklch(92.3% 0.003 48.717);\n --tw-prose-pre-bg: oklch(26.8% 0.007 34.298);\n --tw-prose-th-borders: oklch(86.9% 0.005 56.366);\n --tw-prose-td-borders: oklch(92.3% 0.003 48.717);\n --tw-prose-invert-body: oklch(86.9% 0.005 56.366);\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: oklch(70.9% 0.01 56.259);\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: oklch(70.9% 0.01 56.259);\n --tw-prose-invert-bullets: oklch(44.4% 0.011 73.639);\n --tw-prose-invert-hr: oklch(37.4% 0.01 67.558);\n --tw-prose-invert-quotes: oklch(97% 0.001 106.424);\n --tw-prose-invert-quote-borders: oklch(37.4% 0.01 67.558);\n --tw-prose-invert-captions: oklch(70.9% 0.01 56.259);\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: oklch(86.9% 0.005 56.366);\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: oklch(44.4% 0.011 73.639);\n --tw-prose-invert-td-borders: oklch(37.4% 0.01 67.558);\n}\n.prose-red {\n --tw-prose-links: oklch(57.7% 0.245 27.325);\n --tw-prose-invert-links: oklch(63.7% 0.237 25.331);\n}\n.prose-orange {\n --tw-prose-links: oklch(64.6% 0.222 41.116);\n --tw-prose-invert-links: oklch(70.5% 0.213 47.604);\n}\n.prose-amber {\n --tw-prose-links: oklch(66.6% 0.179 58.318);\n --tw-prose-invert-links: oklch(76.9% 0.188 70.08);\n}\n.prose-yellow {\n --tw-prose-links: oklch(68.1% 0.162 75.834);\n --tw-prose-invert-links: oklch(79.5% 0.184 86.047);\n}\n.prose-lime {\n --tw-prose-links: oklch(64.8% 0.2 131.684);\n --tw-prose-invert-links: oklch(76.8% 0.233 130.85);\n}\n.prose-green {\n --tw-prose-links: oklch(62.7% 0.194 149.214);\n --tw-prose-invert-links: oklch(72.3% 0.219 149.579);\n}\n.prose-emerald {\n --tw-prose-links: oklch(59.6% 0.145 163.225);\n --tw-prose-invert-links: oklch(69.6% 0.17 162.48);\n}\n.prose-teal {\n --tw-prose-links: oklch(60% 0.118 184.704);\n --tw-prose-invert-links: oklch(70.4% 0.14 182.503);\n}\n.prose-cyan {\n --tw-prose-links: oklch(60.9% 0.126 221.723);\n --tw-prose-invert-links: oklch(71.5% 0.143 215.221);\n}\n.prose-sky {\n --tw-prose-links: oklch(58.8% 0.158 241.966);\n --tw-prose-invert-links: oklch(68.5% 0.169 237.323);\n}\n.prose-blue {\n --tw-prose-links: oklch(54.6% 0.245 262.881);\n --tw-prose-invert-links: oklch(62.3% 0.214 259.815);\n}\n.prose-indigo {\n --tw-prose-links: oklch(51.1% 0.262 276.966);\n --tw-prose-invert-links: oklch(58.5% 0.233 277.117);\n}\n.prose-violet {\n --tw-prose-links: oklch(54.1% 0.281 293.009);\n --tw-prose-invert-links: oklch(60.6% 0.25 292.717);\n}\n.prose-purple {\n --tw-prose-links: oklch(55.8% 0.288 302.321);\n --tw-prose-invert-links: oklch(62.7% 0.265 303.9);\n}\n.prose-fuchsia {\n --tw-prose-links: oklch(59.1% 0.293 322.896);\n --tw-prose-invert-links: oklch(66.7% 0.295 322.15);\n}\n.prose-pink {\n --tw-prose-links: oklch(59.2% 0.249 0.584);\n --tw-prose-invert-links: oklch(65.6% 0.241 354.308);\n}\n.prose-rose {\n --tw-prose-links: oklch(58.6% 0.253 17.585);\n --tw-prose-invert-links: oklch(64.5% 0.246 16.439);\n}\n.prose-invert {\n --tw-prose-body: var(--tw-prose-invert-body);\n --tw-prose-headings: var(--tw-prose-invert-headings);\n --tw-prose-lead: var(--tw-prose-invert-lead);\n --tw-prose-links: var(--tw-prose-invert-links);\n --tw-prose-bold: var(--tw-prose-invert-bold);\n --tw-prose-counters: var(--tw-prose-invert-counters);\n --tw-prose-bullets: var(--tw-prose-invert-bullets);\n --tw-prose-hr: var(--tw-prose-invert-hr);\n --tw-prose-quotes: var(--tw-prose-invert-quotes);\n --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);\n --tw-prose-captions: var(--tw-prose-invert-captions);\n --tw-prose-kbd: var(--tw-prose-invert-kbd);\n --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);\n --tw-prose-code: var(--tw-prose-invert-code);\n --tw-prose-pre-code: var(--tw-prose-invert-pre-code);\n --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);\n --tw-prose-th-borders: var(--tw-prose-invert-th-borders);\n --tw-prose-td-borders: var(--tw-prose-invert-td-borders);\n}\n.prose-inherit {\n --tw-prose-body: inherit;\n --tw-prose-headings: inherit;\n --tw-prose-lead: inherit;\n --tw-prose-links: inherit;\n --tw-prose-bold: inherit;\n --tw-prose-counters: inherit;\n --tw-prose-bullets: inherit;\n}\n.visible {\n visibility: visible;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.left-0 {\n left: 0px;\n}\n.right-0 {\n right: 0px;\n}\n.top-\\[13px\\] {\n top: 13px;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.m-0 {\n margin: 0px;\n}\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.my-6 {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n.mb-0 {\n margin-bottom: 0px;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-1\\.5 {\n margin-bottom: 0.375rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-5 {\n margin-bottom: 1.25rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-3 {\n margin-top: 0.75rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n.contents {\n display: contents;\n}\n.hidden {\n display: none;\n}\n.h-1\\.5 {\n height: 0.375rem;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-12 {\n height: 3rem;\n}\n.h-16 {\n height: 4rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.w-14 {\n width: 3.5rem;\n}\n.w-16 {\n width: 4rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-full {\n width: 100%;\n}\n.max-w-none {\n max-width: none;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.transform {\n 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));\n}\n@keyframes bounce2 {\n 0% {\n transform: translateY(-6px);\n }\n 100% {\n transform: translateY(10);\n }\n}\n.animate-bounce2 {\n animation: bounce2 1s ease-in-out infinite alternate;\n}\n@keyframes fade-in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n.animate-fade-in {\n animation: fade-in 0.5s ease-in-out;\n}\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.resize {\n resize: both;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-\\[max-content\\2c auto\\2c max-content\\] {\n grid-template-columns: max-content auto max-content;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.break-all {\n word-break: break-all;\n}\n.\\!rounded-10 {\n border-radius: 10px !important;\n}\n.\\!rounded-12 {\n border-radius: 12px !important;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-12 {\n border-radius: 12px;\n}\n.rounded-4 {\n border-radius: 4px;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-blue-60 {\n --tw-border-opacity: 1;\n border-color: rgb(55 133 251 / var(--tw-border-opacity, 1));\n}\n.border-neutral-80 {\n --tw-border-opacity: 1;\n border-color: rgb(189 206 219 / var(--tw-border-opacity, 1));\n}\n.border-neutral-90 {\n --tw-border-opacity: 1;\n border-color: rgb(222 231 237 / var(--tw-border-opacity, 1));\n}\n.border-red-55 {\n --tw-border-opacity: 1;\n border-color: rgb(226 54 54 / var(--tw-border-opacity, 1));\n}\n.border-yellow-55 {\n --tw-border-opacity: 1;\n border-color: rgb(255 163 26 / var(--tw-border-opacity, 1));\n}\n.bg-blue-95 {\n --tw-bg-opacity: 1;\n background-color: rgb(230 240 254 / var(--tw-bg-opacity, 1));\n}\n.bg-green-45 {\n --tw-bg-opacity: 1;\n background-color: rgb(49 180 82 / var(--tw-bg-opacity, 1));\n}\n.bg-green-54 {\n --tw-bg-opacity: 1;\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\n}\n.bg-green-95 {\n --tw-bg-opacity: 1;\n background-color: rgb(235 250 239 / var(--tw-bg-opacity, 1));\n}\n.bg-neutral-80 {\n --tw-bg-opacity: 1;\n background-color: rgb(189 206 219 / var(--tw-bg-opacity, 1));\n}\n.bg-neutral-90 {\n --tw-bg-opacity: 1;\n background-color: rgb(222 231 237 / var(--tw-bg-opacity, 1));\n}\n.bg-neutral-95 {\n --tw-bg-opacity: 1;\n background-color: rgb(238 243 246 / var(--tw-bg-opacity, 1));\n}\n.bg-neutral-98 {\n --tw-bg-opacity: 1;\n background-color: rgb(248 250 251 / var(--tw-bg-opacity, 1));\n}\n.bg-red-55 {\n --tw-bg-opacity: 1;\n background-color: rgb(226 54 54 / var(--tw-bg-opacity, 1));\n}\n.bg-red-65 {\n --tw-bg-opacity: 1;\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\n}\n.bg-red-95 {\n --tw-bg-opacity: 1;\n background-color: rgb(252 233 233 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-55 {\n --tw-bg-opacity: 1;\n background-color: rgb(255 163 26 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-95 {\n --tw-bg-opacity: 1;\n background-color: rgb(255 245 229 / var(--tw-bg-opacity, 1));\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-10 {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n.py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.font-mono {\n font-family: "PT Mono", sans-serif;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-relaxed {\n line-height: 1.625;\n}\n.tracking-wide {\n letter-spacing: 0.025em;\n}\n.text-green-45 {\n --tw-text-opacity: 1;\n color: rgb(49 180 82 / var(--tw-text-opacity, 1));\n}\n.text-green-54 {\n --tw-text-opacity: 1;\n color: rgb(71 205 104 / var(--tw-text-opacity, 1));\n}\n.text-neutral-10 {\n --tw-text-opacity: 1;\n color: rgb(18 27 33 / var(--tw-text-opacity, 1));\n}\n.text-neutral-20 {\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.text-neutral-40 {\n --tw-text-opacity: 1;\n color: rgb(71 106 133 / var(--tw-text-opacity, 1));\n}\n.text-neutral-50 {\n --tw-text-opacity: 1;\n color: rgb(89 133 166 / var(--tw-text-opacity, 1));\n}\n.text-neutral-60 {\n --tw-text-opacity: 1;\n color: rgb(122 157 184 / var(--tw-text-opacity, 1));\n}\n.text-red-55 {\n --tw-text-opacity: 1;\n color: rgb(226 54 54 / var(--tw-text-opacity, 1));\n}\n.text-red-65 {\n --tw-text-opacity: 1;\n color: rgb(233 99 99 / var(--tw-text-opacity, 1));\n}\n.text-yellow-55 {\n --tw-text-opacity: 1;\n color: rgb(255 163 26 / var(--tw-text-opacity, 1));\n}\n.outline {\n outline-style: solid;\n}\n.blur {\n --tw-blur: blur(8px);\n 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);\n}\n.filter {\n 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);\n}\n.backdrop-filter {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\nstrong {\n font-weight: 600;\n}\n.hover\\:border-neutral-60:hover {\n --tw-border-opacity: 1;\n border-color: rgb(122 157 184 / var(--tw-border-opacity, 1));\n}\n.hover\\:text-neutral-20:hover {\n --tw-text-opacity: 1;\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\n}\n.hover\\:opacity-60:hover {\n opacity: 0.6;\n}\n.dark\\:border-neutral-60:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(122 157 184 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-neutral-70:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(156 182 201 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-yellow-55\\/50:is(.dark *) {\n border-color: rgb(255 163 26 / 0.5);\n}\n.dark\\:bg-blue-95\\/10:is(.dark *) {\n background-color: rgb(230 240 254 / 0.1);\n}\n.dark\\:bg-green-95\\/10:is(.dark *) {\n background-color: rgb(235 250 239 / 0.1);\n}\n.dark\\:bg-green-95\\/20:is(.dark *) {\n background-color: rgb(235 250 239 / 0.2);\n}\n.dark\\:bg-neutral-10:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(18 27 33 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-neutral-20:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(36 53 66 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-neutral-70:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(156 182 201 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-neutral-80:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(189 206 219 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-yellow-95\\/10:is(.dark *) {\n background-color: rgb(255 245 229 / 0.1);\n}\n.dark\\:text-green-45:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(49 180 82 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-neutral-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-neutral-50:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(89 133 166 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-neutral-60:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(122 157 184 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-neutral-90:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(222 231 237 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-neutral-95:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(238 243 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-yellow-55:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 163 26 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:border-neutral-60:hover:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(122 157 184 / var(--tw-border-opacity, 1));\n}\n@media (min-width: 640px) {\n .sm\\:w-\\[372px\\] {\n width: 372px;\n }\n}\n';
|
|
10
|
+
|
|
11
|
+
// src/connect-modal/connect-modal.base.ts
|
|
12
|
+
var style = css`
|
|
13
|
+
${unsafeCSS(styles_default)}
|
|
14
|
+
`;
|
|
15
|
+
var ConnectModalBase = class extends LitElement {
|
|
16
|
+
static {
|
|
17
|
+
this.styles = [style];
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// src/connect-modal/connect-modal.ts
|
|
22
|
+
import { withDeviceService as withDeviceService3, withTheme as withTheme4 } from "@lukso/core/mixins";
|
|
23
|
+
import debug4 from "debug";
|
|
24
|
+
import { html as html5 } from "lit";
|
|
25
|
+
import { property as property4, state as state2 } from "lit/decorators.js";
|
|
26
|
+
|
|
27
|
+
// src/connect-modal/services/wagmi.ts
|
|
28
|
+
import { getChainById } from "@lukso/core/chains";
|
|
29
|
+
import { slug } from "@lukso/core/utils";
|
|
30
|
+
import debug from "debug";
|
|
31
|
+
|
|
32
|
+
// src/connect-modal/utils/chainParams.ts
|
|
33
|
+
function constructAddEthereumChainParameter(chain) {
|
|
34
|
+
return {
|
|
35
|
+
chainName: chain.name,
|
|
36
|
+
nativeCurrency: {
|
|
37
|
+
name: chain.nativeCurrency.name,
|
|
38
|
+
symbol: chain.nativeCurrency.symbol,
|
|
39
|
+
decimals: chain.nativeCurrency.decimals
|
|
40
|
+
},
|
|
41
|
+
rpcUrls: [...chain.rpcUrls.default.http],
|
|
42
|
+
blockExplorerUrls: chain.blockExplorers?.default.url ? [chain.blockExplorers.default.url] : void 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/connect-modal/services/wagmi.ts
|
|
47
|
+
var logInfo = debug("connect-modal:info");
|
|
48
|
+
var UP_EXTENSION_ID = "cloud.universalprofile";
|
|
49
|
+
var WagmiService = class {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.setup = null;
|
|
52
|
+
this.wagmiCore = null;
|
|
53
|
+
}
|
|
54
|
+
configure(setup) {
|
|
55
|
+
this.setup = setup;
|
|
56
|
+
}
|
|
57
|
+
getSetup() {
|
|
58
|
+
return this.setup;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Ensure wagmi/core is loaded and return initialized state
|
|
62
|
+
* Returns { core, config } if ready, null otherwise
|
|
63
|
+
*/
|
|
64
|
+
async init() {
|
|
65
|
+
if (!this.setup) return null;
|
|
66
|
+
if (!this.wagmiCore) {
|
|
67
|
+
try {
|
|
68
|
+
this.wagmiCore = await import("@wagmi/core");
|
|
69
|
+
} catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { core: this.wagmiCore, config: this.setup.wagmiConfig };
|
|
74
|
+
}
|
|
75
|
+
async getConnection() {
|
|
76
|
+
const wagmi = await this.init();
|
|
77
|
+
if (!wagmi) return null;
|
|
78
|
+
try {
|
|
79
|
+
return wagmi.core.getConnection(wagmi.config);
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async watchConnection(callback) {
|
|
85
|
+
const wagmi = await this.init();
|
|
86
|
+
if (!wagmi) return null;
|
|
87
|
+
try {
|
|
88
|
+
return wagmi.core.watchConnection(wagmi.config, { onChange: callback });
|
|
89
|
+
} catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async disconnect() {
|
|
94
|
+
const wagmi = await this.init();
|
|
95
|
+
if (!wagmi) return false;
|
|
96
|
+
try {
|
|
97
|
+
await wagmi.core.disconnect(wagmi.config);
|
|
98
|
+
return true;
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.warn("Failed to disconnect from wagmi", error);
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
var wagmiService = new WagmiService();
|
|
106
|
+
function fromWagmiConnector(connector, connectFn, chainId) {
|
|
107
|
+
let type = "injected";
|
|
108
|
+
const rdns = connector.id;
|
|
109
|
+
if (connector.id === "walletConnect" || connector.type === "walletConnect") {
|
|
110
|
+
type = "walletconnect";
|
|
111
|
+
} else if (connector.id === "injected" || connector.type === "injected") {
|
|
112
|
+
type = "injected";
|
|
113
|
+
if (connector.id === UP_EXTENSION_ID || connector.id.includes(UP_EXTENSION_ID)) {
|
|
114
|
+
type = "extension";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
id: connector.uid || connector.id,
|
|
119
|
+
name: connector.name,
|
|
120
|
+
rdns,
|
|
121
|
+
type,
|
|
122
|
+
slug: slug(connector.name),
|
|
123
|
+
connect: async () => {
|
|
124
|
+
await connectFn({ connector, chainId });
|
|
125
|
+
},
|
|
126
|
+
getProvider: connector.getProvider ? () => connector.getProvider() : void 0,
|
|
127
|
+
switchChain: connector.switchChain ? async (params) => {
|
|
128
|
+
if (!params.chainId) {
|
|
129
|
+
console.warn("No chainId provided for switchChain, skipping");
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
let addEthereumChainParameter = params.addEthereumChainParameter;
|
|
133
|
+
if (!addEthereumChainParameter) {
|
|
134
|
+
const chain = getChainById(params.chainId);
|
|
135
|
+
if (chain) {
|
|
136
|
+
addEthereumChainParameter = constructAddEthereumChainParameter(chain);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
await connector.switchChain({
|
|
140
|
+
chainId: params.chainId,
|
|
141
|
+
addEthereumChainParameter
|
|
142
|
+
});
|
|
143
|
+
logInfo(
|
|
144
|
+
`Switched to chainId ${params.chainId} via connector "${connector.name}"`
|
|
145
|
+
);
|
|
146
|
+
} : void 0
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function fromWagmiConnectors(connectors, connectFn, chainId, embeddedWalletId) {
|
|
150
|
+
const result = [];
|
|
151
|
+
let embeddedWalletConnector;
|
|
152
|
+
let embeddedWallet;
|
|
153
|
+
if (embeddedWalletId) {
|
|
154
|
+
embeddedWalletConnector = connectors.find(
|
|
155
|
+
(connector) => connector.id === embeddedWalletId || connector.id.includes(embeddedWalletId)
|
|
156
|
+
);
|
|
157
|
+
if (embeddedWalletConnector) {
|
|
158
|
+
embeddedWallet = fromWagmiConnector(
|
|
159
|
+
embeddedWalletConnector,
|
|
160
|
+
connectFn,
|
|
161
|
+
chainId
|
|
162
|
+
);
|
|
163
|
+
result.push({
|
|
164
|
+
...embeddedWallet,
|
|
165
|
+
type: "embedded",
|
|
166
|
+
slug: "passkey-wallet"
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const UP_EXTENSION_ID2 = "cloud.universalprofile";
|
|
171
|
+
const upExtensionConnector = connectors.find(
|
|
172
|
+
(connector) => connector !== embeddedWalletConnector && (connector.id === UP_EXTENSION_ID2 || connector.id.includes(UP_EXTENSION_ID2))
|
|
173
|
+
);
|
|
174
|
+
let upExtension;
|
|
175
|
+
if (upExtensionConnector) {
|
|
176
|
+
upExtension = fromWagmiConnector(upExtensionConnector, connectFn, chainId);
|
|
177
|
+
}
|
|
178
|
+
const walletConnectors = connectors.filter(
|
|
179
|
+
(connector) => connector !== embeddedWalletConnector && connector !== upExtensionConnector
|
|
180
|
+
).map((connector) => fromWagmiConnector(connector, connectFn, chainId));
|
|
181
|
+
if (upExtension) {
|
|
182
|
+
result.push(upExtension);
|
|
183
|
+
}
|
|
184
|
+
const walletConnect = walletConnectors.find(
|
|
185
|
+
(connector) => connector.type === "walletconnect"
|
|
186
|
+
);
|
|
187
|
+
if (walletConnect) {
|
|
188
|
+
result.push({
|
|
189
|
+
...walletConnect,
|
|
190
|
+
type: "mobile",
|
|
191
|
+
slug: "up-mobile"
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
const others = walletConnectors.filter(
|
|
195
|
+
(connector) => connector !== embeddedWallet && connector !== upExtension && connector !== walletConnect
|
|
196
|
+
);
|
|
197
|
+
result.push(...others);
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
function setupWagmi(setup) {
|
|
201
|
+
wagmiService.configure(setup);
|
|
202
|
+
}
|
|
203
|
+
function getWagmiSetup() {
|
|
204
|
+
return wagmiService.getSetup();
|
|
205
|
+
}
|
|
206
|
+
async function getConnection() {
|
|
207
|
+
return wagmiService.getConnection();
|
|
208
|
+
}
|
|
209
|
+
async function watchConnection(callback) {
|
|
210
|
+
return wagmiService.watchConnection(callback);
|
|
211
|
+
}
|
|
212
|
+
async function disconnect() {
|
|
213
|
+
return wagmiService.disconnect();
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// src/connect-modal/connect-modal.ts
|
|
217
|
+
import "@lukso/web-components/dist/components/lukso-modal";
|
|
218
|
+
|
|
219
|
+
// src/connect-modal/components/eoa-connection-view.ts
|
|
220
|
+
import { Task } from "@lit/task";
|
|
221
|
+
import {
|
|
222
|
+
withDeviceService,
|
|
223
|
+
withIntlService,
|
|
224
|
+
withTheme
|
|
225
|
+
} from "@lukso/core/mixins";
|
|
226
|
+
import debug2 from "debug";
|
|
227
|
+
import { html as html2, nothing } from "lit";
|
|
228
|
+
import { property, state } from "lit/decorators.js";
|
|
229
|
+
import { keyed } from "lit/directives/keyed.js";
|
|
230
|
+
|
|
231
|
+
// src/connect-modal/connect-modal.config.ts
|
|
232
|
+
var SUPPORTED_WALLET_IDS_MOBILE = [
|
|
233
|
+
"c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96"
|
|
234
|
+
// MetaMask
|
|
235
|
+
];
|
|
236
|
+
var SUPPORTED_WALLET_IDS_DESKTOP = [
|
|
237
|
+
"c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96",
|
|
238
|
+
// MetaMask
|
|
239
|
+
"ecc4036f814562b41a5268adc86270fba1365471402006302e70169465b7ac18",
|
|
240
|
+
// Zerion
|
|
241
|
+
"fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa"
|
|
242
|
+
// Coinbase
|
|
243
|
+
// '1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369', // Rainbow - temporary hide due to issue in Wagmi detection of this wallet
|
|
244
|
+
];
|
|
245
|
+
var WALLETS_API_URL = "https://explorer-api.walletconnect.com/v3/wallets";
|
|
246
|
+
var REOWN_PROJECT_ID = "68cee9cbecf1293488f207237e89f337";
|
|
247
|
+
var MOBILE_APP_DEEP_LINK_PREFIX = "io.universaleverything.universalprofiles";
|
|
248
|
+
|
|
249
|
+
// src/connect-modal/connect-modal.templates.ts
|
|
250
|
+
import { cn } from "@lukso/web-components/tools";
|
|
251
|
+
import { html } from "lit";
|
|
252
|
+
|
|
253
|
+
// src/connect-modal/images/up-cube-glass.png
|
|
254
|
+
var up_cube_glass_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIMAAACMCAYAAABfyxqzAAA6J0lEQVR4XuzOsQkAAAgEMd1/aRsXsBKeBK6/CgYAAAAAQG+/7hMMe+8CbktV3In/aq3u/Tj7vM99Apd7BRQBCSIhURFFjQ/GSESDcTTRaJSoCURN/BKdLxlM4pi/yd9EzJjRkDGZjDET4zMaRMQHBOUiCKIIyPNxQbivc849j/3oXqsGdvXZ9a3Vu/fHF89BmJn+vv763bv3qlpV9auqVeuMMy5Ims3d1rlNSZoerN141976H/7uO5vAVGt+qT3J3GvlmZ/oZm7cOR5nuNaBfQdb55//urH6+PjYZB3Zn3/oE/s2b978w3tv/+4173vf791NRFzQwgBw/48ZHuXlggsuMMDO2r59P2ytuPbE0r7u5K5dh0//2rlvmrvz7oW5bsfN5d7PZV03k9bTubN//rjJ/Ycw1nNouhwNz6h5jwRgu9om8h5gDzAAXiNtsU1T4K57crjcIXMeu57QBIhRt4Qjt2P/HXfsv+S226758H88+8y71okp/h8znHvuuemVV15Zf85zzhl/+tOfsenee+/dutLJt2d5tu033nrulgcf7G7tZryl3elM79q5ZXpqBvV2G4ljWABYXQXuvKuLRiMdEJIAeAYWF7tIU6poNNazTMUuy70WABHYMzxkMUauswGyjJmsoROObWAs6V11xbe+/pbXvvxFewFYAO7/VmYgAFx17YILPlbfs+fWqVtuuXHuLee9ddvM7K4dBw8s7ej2eke86pXPOHzvvJvNunYqy13LO1vLHeA94IueesdtbdTqFhDagJnhcw+yBCr/vPRyOSyIKM8Id+g5sG49yWVmwBgSchplFkAYgqhYAZAhWMPIHXOWGTrt1AaayeJ/3jY3fVHxNMv6fxYzUNAqgR4+I9mxY0f9ZS971abvfe+uHaud5Z1ve9tbn/Cjvb0jFxfzI2c3TW07+gn18fkl1K2BufNOoN3OQTBgBg4e7CIxQgkqfoJIiQQLeO1jcNq80tKedR8jF73uC1L58jUiuUYGAFU8bweXhCGAPlO0285v2d40pzwZV85NJq8EYPQXH9/MQEp88DnnnGPTdNPO173hzU+7+dbbjnv+855zzK4j5w47sOC35Y4mCZRkDsgdcPPNXSQJwcDAe488czCWQsK4kHjOy9b3t7x2TXW4h3JjxJK6O6TpWYW2bPW0L06xPgJr1xhBV+Y1iaTaxCbFOQAopElqgU7HubFW3Z52Ct24ZSp5YSAhHqfMYIv24Xe/+73bX/qy17z1sJ07zm40zcwPb/N9Qi/MA6srbVhjwYN/zGAULcSsdHEFsZnlmLV14MsEZTxyjevirstD+qMZIg30Fm1IJbKe1H2wPgPTv1f/n7GAIWGIdsfnE5O15Nmn0DUzE8kvKBs+vpiBig/PL7zwf04+78VnXrh1++wLdn/HodfJYYyHIQMU4pk9wXsGu4JzPOCZB90pJrj2/HLPpqCxY6JVENADrIQHmYIHudqSqX4nwxgCGVUVxpQ/wxZSw3Gx7+U4SUXHUMEoKyu5m5tr2Bc+w3y5XrOvB5AAyB8nzKCw6Lof7HvJUUdt+vCXv9pLct/zjZo1AIG9ikXPgM8Bdkr0tR0e1cO9iFnPVXpdUYAqqaH3lM8Fz7MgCgY4tnj0UI9JiE9EgDKEELfYuoLQIDVwU2HGARN5lkas1whLy7nbdVjDPuNnko/WLb1nIyUEbQQjdDP+06u/i1ff9MN5nptrAgzKCxyuXZcHvZfDa6qaVddX9myu6P2eGQakameYKMEw4j5yocBcakUhuiE5RUJga+U8QxmdCsngWfYF5eh1S0BSA2qGcGjFueef1rL79t3/jlNOPPx/bZSEoPVmhDx3f/NPX8he3O0615og651wOtZWCggo+w5wXEEU1m2wRA3ruUzoiJf0pI/6V9zXTIQYKDIeTYUKMtq7QbIlQ5BFUY2xesor+gEByhjKEPAZAO75s140ZX704OJLn7hr+jv6NY85ZhBOXVxc+v2Lv5G+eWkpc+MT1no3omd5RQTqvasU+4LxueqaEkyNvUp9MPKHgs5uAO8j27EK/HNB/CRAEYNdT0poHhKRIBImIVBxrMZXkhJ8zpiZcP4FZ4ybv7joEyf9zq+/er9+0mOHGQgA33nv/p+9+765T994y5KfnkyMZ8ArMYQ+HPU4J9e9U9rpTRHtVG/Hf78sBmiEemHR2Z4jRuHovgpA4YZyo95gjWxhARO3MEXvN+FvGavvMaDB+XoiDD/eJLTGGKf9THPxt8776Ekf/eivO/2CxwYzGGbmdg83f/ii+da2wxqU5/p1ZKIfcqGl7wu4yGo4AhRhvkoCqM7lEcaij4w9Dq5X8lXMK/G18g1UEJhExMMUKw1vbQf9dgKQKDOAoKu1hMQAaZ0w2YQfGydz+k/XbyCiMxVh/ESZQQXyN7957zvvenDb27Is60tVX5jxeQ4kifYA+Mjrx2v7EcVC+0G3XN2Dna9GCxwT0etB+f74WkRMjh1IkahX72PRw8sMESJjfZ81cpKkE6kONoRaKu043jRIU3Y7d9Ztmqx8+JgjJ94LIAWQrYOu//GW8847r77r2CPe/O3vL/H0TGJcznCMPicfts1g/7yHzzkW2yqmIXztAyLp1ilqiGCdbt0wkR1Ji7hnKyHVv6DXIlTBUKLpPWDVJXqOAEIYrzAxU4W8Fosf7SCFSnMFIvIeyAVi2bvuXnWnPnX8rbff86MvH33k9m+vB+S0+PEWft/7/uqs2+7efJYHU+4Ka9kQnv+sOo7emWKiZXHH3TmMCQNAovvl/tyvuZb1ui9WFFsGdFXKlqlcFudKcAokkCID1hXy+8oQBLDTnu89AH1PeVWYOHAegVU6+AodJFKlWmWZAnEkhoThyJq9+3P/pCdNv/JpJ53w15/85Cd7AOgnKhmOO/GEV3/qcw7jE9Tn2iwHts+ZvjhbXvZwTonGXOwW55w0fuCIin0A2uuGOn20MfW9cpuVY9b75Xrsg3YVDgxS/0ehEvT9HN7LrPYRvKJXkwjxja1kWP02lSKViMoVyAs5kINhDOjb17TN2S8/52IAp6v98OgzA51yyinJgfn6U6xdgfc0+FPWCBQkArKeh9PeBnhZHaCMwBjuDPJDdH5eEFotQ7kedSXO9SRHDh3Sc0rIkm2gKIir8JcdXFRD0Mo+oMzILIxibCwRQpsBDEUu6onUpVBNrnhfloMMkbvxh/6objf7vXo9/ZMfhyGSH09FfHBznmOSjOgzeOHeWrpGYEKueB/kVY+TD8U+jfAEapRQe2iI/SJd7QPiKaGpHDsySej9FBEcfQNVeC2dvlNEvdoRRBERGXB58eyo0DYGMFx/or+vW7C0MwHIQPaBB7t++9bmeVdccdOnTz/9uB+uveJRVRNXX33trueeeRqs6NWBBKjVlMDiUIoidqwGGLyqAbUWQ2mgolgJygZK1BRgV2JxfbfRd5e9lEOQS1kNDaecKfdsUBUKCZnIQ5kOUGkn0iF0orGR9vUUem49gJwYMMZcf8Mq/9wZT/48gCf/+6Hhj7GsdPJNeRZZ5ww0Uqsq2QW9NTbUZNeXPYZkZYUtIFpwTrbGyr2sel7Vh1PVBBcanqzMpoYroiWGltXXy4xgAIrfob+rNo6HtkVgW0VwyeuWxSejKIqBvI/gDF/3PTexd//qhcUTyaPKDD+6f99sEYBRseb7kkHgZP/YgfSX4JUY2rONNiYodFSRPKRE9nrOu0AMh8TmyN5QozD0AYlaKC9UzRjl64qE9Lj8XXotOo7UEJEyhxrIpX1tAw/kOZl9+7suaTZf8eWv3fhUAewwjxozvOncN8/ddpsLMDr1PWVKDO+VCAijk6oqlKiA2gTawCa4LucwvPdRRW9WNKKPKMGCb9JzvsJ4pAp1oDA1MlxHO7UoJHCZMhQn7uh9nqWNnWfkztpvX93mF5xx/D9I9vejKBk2bdo8u7rakwPWF6aW1GbItGF9jJ+NrLDlxuWSm7FMBNZVlpHiPmamIHQul9R+UakRiG5dq4SJKdCEQaHaWAkeqhRdeZg3M1SrMR6V09F35Y7hmHj3d/3U2972zj/U+OyjwAzz8505IhN4Fa1VZmBIPiP7wKArE8qXexyZ4jAOJ2sjVCyR2C/tK0EoRhdGdmQbrlTqnWEz2wRYWWHMLzAWFxgHDuq6tMyYX2TkOWDlfeWXUWSUKmXgK3wTGp9RlZnlZObnu47Ssdd/7GMX71LMs8FootvFDEcfZowwhPey79QTraggDkGEaWfVHdsBVB1NksPIq8eR9Caj0sAPdJl4Qb1TtZbYIq5iqcD8sQrSqKtJgeVDjBNPSHD4YQnqdUKjAYw1CWkNqNeAbg/43CUdLC8zbBJ+O8kmhJZeYa3RW4ObYyQjEJuR58Ze+90efuk/vvjvX/96nK4B1w1lBp4RqKTiKk0Am4TSgFGhh6OQNpkhmD6WDirCASV+wCRMikhcxlhYKqBYAdrrNep/Z61OaNQItTrQqBOaTYK18p2rbY9Dh4D9Bzy6Xcb0NCGt0yBnUhN0hBFOOCHBS15cr8yGarWAE49LcenXu5icpIEk0niGqiVfac+GARMGgVRKau4FAe2O83vncdTua+89+2dP2fEZFJc2jBkWFlYnDI0HvdgkBGuA3If5A3pDwRARlqahMWTN/lldZeQZkGWAd2pvWAKmZwnshEjktLdkPUbNEn7+zBrGmgatJtBoEup1IEkIaQoYI2vV0m4Dd9/tccWVXey5P8emTVYE2Rr2Z6DTZUyO26EqjEi/Z2HJI8/QX00SB7CUkS0Ar76RivxN3YsDYuwZ3htzy82rfPozj/izhwYgXXzBBa/vbag7+rjjd7S+cXkbiYW+0IpodRljvE4gQKNv4oSSxrDqOygQgkJKClXKyhLj2CclaLUsxppAa4ww1iJMTRHm5xmXfqUzUEtMGPSWpWXgrW9qYm6OhqCKINu6aukzzpOfbB5am7juuhz/cnEX4y1CWlN1Q57QXnHSnMoA0SI2hc8ZLpcMaj9EOlAFelE1gRCqUIyI1H+SkcENN/nGm996zh88xAzv1q64zszwkY98JJmdRo3h4QeDEkXPEgETLYObftjDTbfmhUoB0oTQbBCmJ4BDiwBIrWKyQ2FX3xj7xZc38aRjhnffzZsI3/oW4b49vs8glCjRUyvEVIIHUucRL97L+04+OcHYuMHHP76KRoNQHyMQy/WVNo9kBECkGzi+XoGiqDoJV6G8chFp7EJQHDHIEx2c7/JPHdf6lQsvvPBPzj///KUNkQy7d9/eOO15qBmjX80QZpgYI1x5dRdXfyfDa145hplJ6jdezRbi0QCdNvDXH1sFe8DWB0QK3M/ecf/4sO1U0YPlXcvzjOUFD+cJZMQGsBborAI+f4TpPD6+Vs5RzHPg2CcanPaMFJdd1sNYzyBJgW7XY2nRFMSKiRcwQ5jQUpFHqReiT4uNRl3C9wa+EkPX3ODoGae94s3A+e/fEGZoNldqvgdLkWctSU1fhF72lR5e9fImjt45aKSA0PUG0FthkRhNIK0RbAKYVGngPYGI4R1GLt0OIy/0d96RlqolEjGlUShbYabGOiJHV8x4zMCznlXH5ZfnWF328B7otoHVJQ6IHy9ilDJMRaAKqI6HmEhiqqlAJYcoRYnC3otNc9iObb/0kCPqzx5a+5fW1c/gXK2RedhAr7FAMu+FuLOzA0bQhBWvYwZWFhjtZY/VVcHiWa49WTyRcq+1GL1YIKlrSpl3jF4GsCeYiowR9d6Jobm6zGivsoSak2o7glmQwRN2UJ8Jsy6wsuiwckjVBFGZiVzf+JX3Vy7VybNlP8mamhgSwlBXNhcS1sEbs+3GO+4/YkOcTsvL3abLQUShHyApGpJ45NuFCF1hAF4LtmTKzeJi1VB49SLIxYo3Z/C8yxmgCqRAauxe8JZ5vPypD+JlT7sfZ//0/Tj3pXvxwB6PJBnt2Nqx02J50Q+CccvzHuBqh1jPSQibQJo6R9UaKyYS8yinqu6otFOGJ1jcdnuOX/nF3zwZAK87Mxw6tDymsffCaCkamItzaVLhFYRIAMcqUTR4FWcPjYZ+DKDXYeQZF2M21c1c1q3l71lY8Mh6QGsSaLSAW67P8Oaz9iPPR0uksZZF3hPKGwusLjowj3TQIXMAjEZbq/S+GUIdqlAFqIiOxqF4awxuvvneEzdEMuzcedTY8mrkIhYDUmCiB9IUlYsLUspC1zM7xcuG9HyV2G4vM1y+5kFkeA1ywdBoRoIzqI8nqLXqMGmKw45uYN9B4O47RhsqZES9rDFcp6tob7ha7Tvp1B1NVQKr+lz8bhpldESxCzJAzn7rhjDDuW99y+Q9d3eAKD6fWgtXENsmIdFiSuQu6CGyH32VsZUE1fdkImm82iYiGYrnedTQvBowcZjB5uNrmDumhokdFq3DDAxj5NJedYG/IsuUuYct3cyj15XrYRb3v6+UDbgi54ZLJwYBuJ7PxzeEGe68dd9EamvxBw/cucyMxFZRURqvlyu764v0FI9UE5on6Bw06UMZAQTWxq9Qzq1NCVrbDManCa0Zg8a0xaZpg+1HjoYhe/d6NCYMiEjDFG4E83QB5yIKctyTy9FwQjmNjlEtWRSK6UsYHg88uIzzfvOlzQ1hhh5n4zyASdrDbQpwPhIFaDZw7gDDSiviKCNJU8SHLqTSAERajodZ7Bgz8lnR/dOEessgbRAak4Qbr+3inFc10WgKk1Utt9/hMDVrkTYLIqZiyFYsglRIEY8yQTWCIBoqWSsYXG01ZTQdHpAmBt1VU98QZsi7foKDsQPq9csKpW3sKDTByL1wkqbR0wCVqAEYh4/LhqiPxCQRicpKlPBUwZB79zIW9ue465YefnBFD699TQtnv7aJXBh6qK9hz30et9+ao9HUd3sjCSZVS6fwf8Co34BpeJ4tVaTWVRaXULtLfRI2vMUYAlm/MZIhz924/gttKGvUFjCGRkJL57zo9AHBGOzLhhpQnVDiGKg1gHRMCKU36e9XcVKvB+zcCjznGXW88qVj+NgnZvC632jC5aFqimMYl1za7YelKdGM5zwbLUnabQ8DHqAuUIwOwiRZQ0qh0VZjlMFlIu4igjGSsU5AuiEeSMcYA5Uzd2xC8JmOHax83okoR5zPl8T/kUbHFLwQLqnJfbllCQI58XKiYkA2e6CeAr/zhxOBpHB5gF70eRakdN8DHpdd0sEROxIQSOwAK6oxy1CxiBfQs0qGqFeXk6kjUcGFzKfYdR2UoIrzOzQYWKsZpBa1DZEMvsctsNJJJQOJ0wkkaqICbmW5NDyTEgqmjK1NEkcx494q78ozhvOsjeeFKUzxfqooL+K9rhIEqhjGX9z73j9aRk2CwQItHSNNDXIvHkZwBTP0oMQxw7OxaETvJ6LR0mFY8gsRbPGb9boBzAYxQ8ZoMYUhZwKQFLkMRAxDqPLXiyhOgcRWRu/EBjGhLyJuC8eFjcE0QBLeKeaPBMsjX1hW7wUhZQ54xzuXcN+1PbTmaPB9xhLqTcBxOFJLVhX3+xd8P1gHGt6DYYIerqiCwu/h0p/hMm9w+F5rJXmniOmadWeGpUNLTav6PKhPkOfCjsM5XJ0wPivEPJXgkzZGpDZKUNoX4pkZ7OUpMixENPTvq0PABaGNqIZbb2e84VcWcNMXupjdapA0bZH/KKqo3iBMTALfviaDc+jHWfbv97j/fo979nh84atd3H236zM+meqWLyPOKukx+t8oHBV6pNYglTEN6UO1OGndbYaTT37y+K13eBijlrEhIV7WFXuBUG3s5E69lo5Dy0YGzap4HpEnIKO4ew7eWRjDg77imWESDp5l9U0odDWxmFX1c9vtHv/48TYu/tQKJrvApiMtGocZUFowSh0wELU4Zy3+5bNtXPqvXbgMWFr0WF4UA3nLExLMbTFIpiPBwHEOQ1hk1MTpzQYqeUaxtVXEby1gk0LNsTf79u1bf2Z45jMPr193wxImJ23QkJaAzDFMnIUT55YUHsoYjZENYWKSYuTiWSKU2ts00cMSjehDOjZycd73GXh+wePeOxxuuSnHt69q45bv5aixw0w9xfiOBGO7DOoti2aLUK9LviSxMJezwMxmi7wNpAmj3rSY3WL799QmgVqruN8WZGQd10lecaUxyhwROCg75EamYNAA3SWmYCRGsnnzZrPuzLB3H9K0ZkNoSYCxmtam+X+x+1SMraKIh2buKBpS2JjSaOdXT3IiZBRSBC1txdhJrbXQj1LeeVMPXeexuuJRHzNILKGREmbGEjTG6xjbajG53WJsktCaMEgTILGFCmNBEpxQX12YOWC1w2gvMQyAme0GrTrpMEEt7aOENeUEFy55ZUfVoRieHmcoVJWeYZaXl2n9oWWOGnx5iBgZkQx27bhCB0reg0Y9xbQhfQBie0xPjWaGgwc8XM7BWAcGq4oJlhDGLR1i7Lmjh9YEoWUIs3MpbJKiPmXRmLCoz5i+V7LZAppNg+aYDq03htTIJEaaUH+MxAP3ZNi1KcEREwbOA0sLjP0NxtYtJrR/TMWILSVVSTpY6PUqziCjzxCFo9GcI9tut9efGXoZEoVhqv8EgmmQiitDwARrSfB7KhxsTVjxJHOMrVvtyAyie/Y4pKl0AwYXz8u+TWhE0Ee+sTnWQG3cwDYB1IDpbSlaM+i7p2u1YtxDXb5P9G7oZmcPJAn1U+rnpgze8f9NYXo2pOi9ezw+/rk2JlsESkOV6DWmUV1TKrIvKFIKRHFMQt9vtBPAediDBw/a9WYGch61odm7kJQzZoxcHlZd45MWzAxTVDOzaVjroF4jHPvEkZ/Y1+9jLQmXZ05D4XAKW6uY0jH1dfnkDoN03MADaE0BE9MiBWqpMIASR5GPlgYSh9L2bRZveWOzSK4JJdGOIwxe/qImPvOlNsbHCSaJhuObqvyE0LNIwhT6rKbFqgSmiDkslBkY2Bg/Q862pLuM7I23CL0sbBSKUtPHxoBjjzNYWgKsJWnvrICbDNx1r8MLfq6OsWZFChqhP8jl5h9kaE1aeb8XPW5J2Nya0R5cdoxkitAcN2hNEianCePTps9c9YIRqICDlBT7BSHVupfcxhc8vx5JsBAF7dxh0GoZdNqae8F4RIOGNS8zLiyK4AAkqx7rRClwEt2l1dVVuz7MoJOFWM9IKXYLF/6DiQmCY+4nc9CIlO9f//UWjjjc4I7bHfbu93hwr8OeH3ns2894xVlNPPPUpMiZLD9rCPjq17rorUpsglnd11RY0VaRSeU31FsGtSYhqQlUtDbsVQw9pniyEQe4Qk3MThNGLTKEgJHnpAVMWFYemcQQSw9ZzbBnSKGnRblcQZazyfPx9Xc6+RykGDk0VGqJ6cOvu+/yQ7xiqmtNCvzuO1t4+2+2cObza3jh8+p43avG8K7fbuGZT1dGYC5HDldWgc//cxszUwAsIfMMAqmVD8DYkSnIQhTSgiDBmD2jagDqDlckoAyFPJftqGW1DRw8JDhUy/vF82WU0QLptvqPcMwXcVjbgwjYtinBe9/7x7SuzPAwVvWMJPxh9Xp1e4yfOinBVdf2gpS4YCF19554osULX1jHc59Tw/HHG9Trcr7KcCQC/vLDK8gWPWotsTuYCbWaBKyMoUeUVe1ZITARwRiWfcMByC+3rp5iMDqrHnfc6UpjO9jr9/7bd7rotRkw5fbgkgQoj/zmkFqjq80EJS90EG+rAQCL62szPIxVXR5LKhXnnR7j5J+q4c57HZaXQlVRpm0cLBqRpl5EKP/xM11c8c9tTM8aySNwax5BmcUlKZgyKWElJQQXPgyfB3+gsoB0XA2ONKyOVtPgk//U7ktCqYgrq00kTvP5r3bxtX/rwbo4Da+aoCr59bgahZbfRzHzeg8P0PIyra/N8DBWZWaiAE2ES95jnHF6ik/9SzcS9aOX8n2aW2iThxmhg4/90RI2bzKwUwYwohbqqaAYk+pEH5NTCr2ItFyAtbL//Zty5JB9UseZksAAHEmo+P96JthE3vlf/vgQ/usHV/CFL3TwLw+tF/33Nt79B0v40me7wBIhaRCYlJIcGbjMjzxBlkOlUC4NFI9XkX0yZmV9oeXBgzXrQYlCIcBEia3dHnDUzhTf+GYbl13exfOfXdcwMT1CxoDGO5ZXGX/2p6v42idWccSsQfPIBEipT/x6KqolqQPEBGcYY2MGN9/i8IyfZWHgDmNpBVha8Fg+9HBOIOPiL7YxPSlwzGUMk9CIDxlOGVOoo3qTMLc5wS23Olx7TYYsk8ZtjBu0ZgljM4QkDetExiV7iCpmuqHh2VrFoHz5PHX8AZGKsNDc0F4vWV+n0+zsFHEEFJjL5WzabcZEi/Dlr/Sw90eMl53VQLMp95RRwvDg0cIhxhe/0MXf/7dl9O732DJt0DrWIq0TGmMSMWzWxHGVFLkUxoij6IH7HN79e8sgZnQWPFbmPQ7d45F1gHQK2PJECzudDEoJpQWhKPCaRNmpcZENA9gaocGASRlpy2J6i4VJVQrZGmASWa3V6htCPK3NxnGxUrlHa1ePivwZPVTPsO5aV7xzbJ0znbKsS/BMcbZObBwYK4Ngt2y1uOGmDNd/P8OpJ9dwytNSbNksxTGMCUvRdLrch5bfuyHD7su7uPobHXT2ekyNGUweYTFxlEVjymJ8Wp5Pk4IRLAXRPGMZYy0DQx4+I0xOWHRmLWY2OxnfMWHQGCc0Wwa2Jj02seoNlSUspBEXGmWrQMQ0CYkPCWqlBoQSykTvMWFNR6vV7aLwZoUXMlal+jtqKxgp3uDWrq2uMzPkeUYeMNHcTMHCBKSJeBGd99g8Z/vOmau+1cOll7bhOgbjiUdKQM5A1vFYXnLY+4DHykIOdBk1MMamUkwcmWBsW4KJTQbjU4SJKYNGQ+IDidV4gTSScDinMmg3Sc0gMWZiM+C9WfPhi65P1a4AFIHQMCaIB+QaLT1kIEzEFLqDSb9v2HSZsjVKP41dqxCqmKUvLu+jCMkD3kaFcXgtsNdbXzXRbLYNEYFHjOAgFlY3VpwyHkADwKatBtObTH8E86G9BgcezLF6iJG3PQxJBZSpaQuTmr6ruDaToNECmmPo2wFjrUIKIIwAgpV4LHEHgYsJB6ljloIiXmEHtBURoqrkVI4mV9FvChCFL79Sy/+GRK62GUzZ/8AVtg1HGetEDNb8wvWWDDmxBxFXQ5Sc1POWOACFvszrQK8reYOT08Bhx1jkrsgu9vpPLRU61gC1hqAFmwKDYKFOLxSEyrkgIHGBGjSlVpNRbfCeCDpWYbrqa0R6moyusLEkiIhJuk/xeY7UVDV8rKhKw1LSgFUy8EaV8dFZ46orv5qBOFaj0mTCFM4BcDEc0ipshgikMBBEwR8eENMKwyt8DVGNinujxAJXTdAcUEZ7VkAtPRczwmjGqfYneL21pAtILwSG62j/hEJK65UYAFCr1XjdmQGsxHBaxEs/XraS3ZMPJJ1Y2aaQHEk4w4zWfqRAIvugFH+QIKvbUmpcBVrR94CHEY7UGEM1DFbxXiZ4XLmuTGCKShQO83nxEFuTRtc1J4rKFBdtR/obGyMZiEKozFysNNqBwiQSIlUzo6R7OZzLMq7DWJ7vksL7UdL/ZWjGVUU5vdaKpJjI8XiGGP+r5FF4MGJAjIsKMhDKHs6ymoiOKyu/KU3IA2xp49SEYyaQVpskUogTEVfFtA8sZjnviv2KCUQDhlA1ERFY6aMW/+jJKHWJiRsTJpJKsf4PH9WOYgGraW5liRLV8bVGVanPAq0V/5BKgtj5xMqM7ABvGM7LRxteUxP5+hfrUKdGdeNKUiZp7aFYl3u17NkNU+W644Oq8dVFLGLoxxjCYL5Sl1cOsqAhxxR9J5EytjWxRzH+fzHU1CGJphZ5KqsLikdHcTX98nQFLb/VbcwcVVRVfyic6NtAy58SlyOdrBZU9TRFusTELc9f5fW9ZMpTCCmoD86NHG1jjF4rQ0GFk2Rla8QuKBMw4I9Qt1slPmxaSMJ8pLKPfKV6TjurSAcrt3geX1p/ZhDQEuvostElEK7Y+ihT2hYVXUNxXMZPMQP5ioQQViZk2Ua9Ofwtqh52p/dzcF7V1jDvpDBBOPmqj+0V2Xe+SmrIHnsCWRa0kY9mVFUVgGhv+X3jALZaAoD7GWZjvDEGZHXv1UhhClCiTh9m1l7hYl0YUUcJLBBSLX0Qa6Orehgt/VHqzQE9SrEIVvFfslEYFen3CGMKRtBWeT5PCus9swFY1W7hKCpUDlGcZVXNFxR4NoPa0r2ew9vf/vYNm8pQDEiJ3g2yhxPtcjJ1r+UBIvBOupuHMIl++RAPnI+SfjkU51qXOvZVVKGAcPAKDyEm82ipVKaGWoM85LmsPDuOGtoE1WoecLINgYcnkIkG11QaliGMZLemHgdyA0my1QN3rTsz6EsK55BnClQwqdhU28ECBBJk4Vl5oeT9U6zObiCW1TFFSlz1Heg2zgss9+zqxBdCwASxP6PsgY/BCkf+EV11LnATvsiRRhdjD1RSHBgKYTdRGVHpsTIZGQkJHFolNzbW3gibQQ0zSoRQnhneh9E4IoXcSqAKp08lKonBgBIPceOX3hsxRgA3IwLH+3EvDqRBKAk8R2I8GiijHloGs0o9ZWgJmjmvo8msfqpQiggWjKA0FFdUpmGFtVxMW7Sw4tffz9BoNDwMeFDQK55fqgZ4pzmREkpVtysPWLu6EpsSIoKy8VxSiImvW6aAKWWrxFWCmrIziis5Iz6l74kdDkIEgONphOLOb9SG8kMcU6lhMQwLI8R4LphLmUmlg3KHZ5XQ7bZHr02+1Wqtb1X5dnvMg5mtUdEMJXa5VC4Xos7rdT80KA+VLPEs+BgyqRhFhKhijPJ01WX4GvZybeTQKaDPV0FdA527W4gWZB2BoFMdx+MdpEhYcaz3+Bzw6ZozT/SDYdY2iZiCSjQgdHsOziX59PT0+jJDmtbZWPIm0cZi1rma6ykhzxmpJdTSwZS9qjOlkZQyXgkPEx2zPDukc44sz8sVJ3jEtbIRGu77oe/WJBJihRMeAKuK0C2roSdzDSqTJTmQUChgPABntCyyhu4J5Fml3JDcBqNTHGHTbILNc+B77hlff2hpNR9A/jRJ2tg1P+jiZ55SR2sM2HfQ4769HklKOnWOIAkl+Np5FzV+FRxj6PPDmIOikxzpe9beLy1VEQAi5UYNKYcud7YquuS1BRxExARe90VpxM5QkvZkRs5yrEXb9D/nmUiPGvEgwddHk7mrsRt+V5oYbJmjbPPmfesrGZaWOp4sc0GUoJevtBlf+3YHE03CahcCKw3Be1ZCcliXwQ05h/icMkAE0WKGiG/XmAcLw2ntyQyA1Tm2YJW5AT2HvDiOpYEPYy4caZ3cqxdQkUYcClf28J4GxBPakqAx0rkrKaMCyuvqNbBWwOY4xV+4xBr4zZs3r69k2LIldwBl8GhkVJYYhoB2lwfWrHdrf1Z7uoskAliJr8eBGgoJobuAi4WBigFWhlDR77TXII+oqI/Gv6W3aBKOPG91oAqp76C4jwfH8OG0U0SKfuqkSEKRpwxKtkbaKXfCKFlPRocTqWPUm4FNrtxo1YiXtDuTffKTn1x3NaF1mUzo3hU3q/ryvQsJKDBnQESVKr4aQTBCO4LdQCgrfC0bAhVD1iJUEQsUo65bXQKJJs/GEUNlvFKSslNjtzhWy5FARU9mZBlJgKpAX1YLbgwkkScgZwb3ZASZtYA8TvCk3WCYN7gA/uuNJtrOpuh6YELUhGJ2ikSz9jA5xaz1mlgJrYTh2FnDKqb1pLi1qTyhOsf7egzHituhAaBAAonK0Ic8czhjPQ+JKVgO3Omkdok4yjiqHqs9GomIbxCkdKEZzMZrYNKCkFaLgWdOEo3hRUJQTfMtja+ubG+IQaDuuvsZvv71r+dbNtEB79wmkAWvNSJpAQoPCZRog2s6PPtiVSYRlylro/vQiCzDR1bCqHE6yt5gsAGc4LWo50c2BUduRw/F8ZHep6H7Gk/hAiJSlOJOLLCRWAjt+wRlqZpLtk9ZgkGahJ3Fu8LUWbMsM0K9VkgoQ5p7EeVxJMb2+WdDklu+eumNP5iaOfbYxYVeCG+c7HqNlmlvLKAnBqqCQx2chVCxrDYUnsHrPcyss7oxqhcnVIgnBKY43B2Hwsv1nFWi6bzVqvMRfps874DIb+FI0+x9hkGtqDzPYY1FYuWcz8Lf9U52TAI4iHpJUzUo4+wZY4B2z2G1a3sbwgzt5Qe+snXz8WcvLhb1k0045Iy8ngvG/fm1lUuTkkOPtXdX5RAa9bgRSLW3V8QgxFKC+8gWUQZWY5IjFePzWDoxWOPtGiewZfjKcEAMJ4mDWfoEiYh30WUEQ4TxsQQMoFYTBuNMJS5Y/0dWQE3KJRmiJg6polOoYEhrFnv3drFts+1sBDPQl3Z/+bL/8oLnu/vvZwMiEl+DZtusESZNVGQRAtijWcFO7mE9WRri6IXe6rhSnAYeiPP+VtVN5dB3bdgSVFXXpl7zsQucVXUUC+UAJy40z0QPlOMtpNARkHYza6UAWM7OTps+sbttkRbIdII1r3C5QBgAegwLEjsD5XIEWS/DkYe3uhvCDJ//7+9f+t3zfn+39/TMxMpAWxjtzQCjlhDYh7jdeSGe94PZY1TEFtfgqRD9sWiOe2ns3o49iKHRJ++Gwk6uGgXO0blycEqPNYpqB04qhgbkCpxhwjwMJmGCtb5hiWBTg1oKjNVJejQRuh7IBDFp+xXPJx5ArlImy8XuoJSCUW7MHtMzE/jSl29ubwAzCL1v+t4173nK8WdccuMtyx4wJu8UkCgROOQ8B5E9YQzFzN6pTpVrahS4IV2aNTNVCKvxDjEKFcTHrmVlFI4HLQwvKaCp+E5+Jirfg2H2DDEodcF/NqTBFaO2FYh08jJLErGsJ4SJlkUtJXTbJKO7a8ChZQYZlbA8iPnIy/JCSpATriTHsCaMazebhGt3/2Blo+bCtm987XO/f/8Bf9UN36en11Jw1gXlGUBruXdRhjKrAQR2jNwxWM5rT3eBC1mXyMrnivFpIdpQPe2VmkMJGUscTXnTYEIgNJg01cwHiCJMm7MM66FGqsVAQVgDKS5SM2g2DMZbFhaEXnfN0CUkiTBEuy2eXNEvRRtS8aGFv8cT4DNGDoI1gi4sAWREakxMTi5vFDM4APTPH/+H15/z2td8/3/+/UFqtRrU6TB6eTRFoedwpE/Ogia8g88R6Gb2NoopqC9RX0Lw5NRZZVReKeSUF3AQr46SV9SXH+dQ6C6palkjttoWSnTldBn5jUSeF2LIChCIBAXIiG+DRk3mB0/rFj4TF7ZZUyfEyL04l3oZ4HIPMiG8ca5AFb6wvQjIDGByAFZVRTHX6AZIBl3M+ef/8qETTz79DaeeeuTffe/GZddsGOtWGD2naIHB6lNg7hPIOS/OJ8eSISVSQf0VHFnnhqEMxTo83Zd9/WDVlRqM8oMXM8tNoiUIhOL9BaMRqWeRtKRhwRxC4NIcEFYnQgEMjGWQZSTJIG1NVktIE0JSo746SKyRaZu7OoAHzGAamJcgIxOlrLqiYxGplLIMJyhKoCqLuugRgYxUrvUovi2hDZIMKh2S556+8yuHVtzf7tvX/NV9Bzp5q0WJXwGy3CNngNmplGDuMwA7D7cGMx3rDO9D/AwEdeUhAmuq+4enq8HrSSIOrHmQznDHgBLZaol3sqwuYyIQybExmk0kQwIMDMm+ISOlAqyHNYwk7RNiYOEbMlopLguyuoPgAq8xIwnzJBkjz4uuxUar5XvAFdLEO50vK3OExAGJF7RimTZUMmAtVDPZsv/pB7d3Tt59fXJSt+28NWQOwYC7GTLPksMgRsSgfqLMUMs6ORkTvFNCGUEAQghWyUClqrQaD9F8S13I6Jb1ujBD0YOITX9rQCBb3ENCZKkrSYNC6bbfxTVruRAGMMYEYyaJLAw4ylIVQvlCUAmajLxaVM6VsBZIU4JzHA1qFbbxIFHBBeIwJFNK5znQy4pJ52tmaYOZQROSjj+68RLHfP3f/dPyJjKGZ1KilZUUK6sZej1Gzh6+iLxZYp19BQopybLqZ6GsNGhYBlen9olGNJnAWjewOkxerve3JIS0gCHt3RZCeCMiQqcQgoYjLel+vLiSC53gWFWQzIehDMRQuyVmAtV7CglqNXE0OV+ckfcNvKeOAfLqsk4tiln8PWyD0ag1Dm00MwTg7VOf/Pppr3nFGTd++gtLSTdLuJ6AxhopVjsenfbDTOHhvPwBdqwxB5AwA4zicbNGLAKJiC729XxAZABkDCx5wMhkJMJM5emTKCrKYCLdZyFVbpVbZXWaj15QUvEiSLs5iPUWhEEJSwBTQTx48ZWREdrrfaV5BRIL1OpApx0NdzcKtcU80uq2zktwq9fp4egnbBopGQjru1gA7qKLPrXzRb/w8m9etXuZs8xS5hkuZzjHyDJG7hy882Af5okL2SxMn7qsYpr8gIq2XOQoKJ2nBFGwLzEQrexRghIEldka3Cm1FD3yXqHvD9zQPFApxB6sEkWfhwl9EaCBLWFAyJzMZ+ELxEYiqmBMWCrZpEAjBdIaobPisH3LOC770h/9/Ic+8AfXbahkiA3KN77xFXevvrp39lNPHP/MNdct+dQkRriUYQHYmpUommf4gUvNwnuVEgApPZgGdHMUxp1jizFOYFR3sG51Jb1uosINFL6UouLdpAaeLvq66HllUBnL4IOButZrAI5o9DA6UwSvek5z4sSQLKRRgcxokG5P6LRzjE8CN15//cFHTzLokgLIDi52zty/UL/o2ocYgtmablcQRq8rxDCSrVnKiRSD3wY9NJytjbROkbINPDwMGTB7EExQqJpJrW+KnFTSjhpZExiqz8szo1tMZ7mgofV2NLuJYaAp0LQW9tdyBPAwgCkONfYNQzo5aycTSE6DQica7UhScVaRkfP79yzhrJdtWf6LP37PSX/7txd0Hl1mUKmTPzi//NqFxdb7rvvuIed9YrsZI+8xuj0Pdr6IJvrII2jATiCYGJk+poEigwrO5nXjdLUqpF+LU4nZCIE1pV6PCfCeBsxnytMwKBYmFqSi409UVVToKZdLLCj3DCZ1hgn0pT7qoESYYnWxi0MHejj9Wc3rX/CsyZeoqHpUmUEZ4o579/9m182964YbDuXOJUm3y8hzj2625oFkiVEU+WEaGKK4OGfFwiHxLGnkyqihhXjPR0w1eqluxiBlziih2WhOXqxLyIPAcgiBjSYJC3spw1FpLs9+G3p5NQ3QF4mTK1VH2uKP2th2+AwWH/ziu3/nt37h7x5FNVFtVN6zZ/63l/Ppd9zw3UXnfWq7XY8s5/7IYO8LZvA8CAL5Nd3Ha43CQal/SxUEojAApYNpGWQUhrHngRMpKOZlqFK0yLl/b1Oa6HYvjCqqoyh8bqSIKKkY0Z9UhciQyv3dLBQaNjESvzAS+Fo52MWhhR6/5CVb6RMXnX/chz70oSUA/BNkBmWI2+468NuZn33Hd7+3KCqjy8id76sML541YYpc094YiMachYBAjjmiVejKpliNcwT3QgCiBpl6J+P3KHHkfEUtEVLhFKVVeRgYeHjyEHWvlfFqdSPnYMoMTwTPQDdjZJm8R/IXCGRJEEUKZF2Plf1dJI0mnnr8/Kf/w/N3nKefVkWkR2dhAPbCv3j/le/+/d/pzsxOPufBB1e9tTYAh6wwDARSdKa4PkQM2rOD1DsqS4zh0U3W03pOmZD0OGQyhPdoVI6Ce4hUyunwe9YBNwOGUrMzZ8A5FseY4ZALSaOlvrgPYFhTMELhSGNmrB7sInPwz33uNF36ub96xZVXfqWnrfCTZAYlQ/KB979v97t+97cPzm2e+rkHHmYIY4nUqweGQj1TQKUwNC9iUB5ibScK/DqBx5Lius16HTQshyGWQqMneVA0Wugk/eAITTCB9DhExEbzFEhgeOFpLCAjqVNJ5v/2gzgH2eK3+1tg9UAPmfP55s0t++xTe+962S8872oA9jHEDFo//QP///u+8973vOuWidnxs/bv7/rij1ABzkKRTKLHDUPjAJCLlgjyjMYmDAUE1MZXwgUdTSFexCQaSyjxgD4fvLd8MXxGA1zBt4TPrB3q+FUGQ1PeGBLnUXcMyXsSad72wRxZ7t3k5ETykhfVrjlyW/NdOm4M+AkbkNUoo9fjUx9YwGev2r0A51LvnDfdnkPuGFmP4XktqVUnPZdxDRSGccFQVoqTm+OyOWUVopfLBUMJFcPoCRX+BL0Qzz5bHiIdVZ8h+c/GirEbmgpCdIgLPhg+SKmB7zp0lhycQ57Um8lrfrF15xFb6FkaXAc/RplBGeLP/+ozu97yppdd8fmLFwzD+qwH080EemaZYCdxSqlDRxjExLwu+jLKzy8XTayofR4M7NVCpMZUT5OkBqISxpgyh1XrlZhELKsmxOirCtXIJFtYrY2ZrXj02h6Z935mZsI87afo1tNOaZ4RYSs8hplBGeJv/uZzE294w1lXXnJ5d25hoe2cs7aXMbLcIc9FLIpnjgFPSkhPj5CflZnIMPR5rdqthFH5Ag5d1gSqzIoqBzKjssaxr7ICr5LVkLeBFkeDoWBSOA+C63pkbY88Y+45phNO2IxnPnX1Hw7fPv7OmBEeD8wA1WfALXetfGH/wdrJ99234vLc2L4fIvPwmYcLRwrKfnnK3Qjq6TH70U4jLs3vIMwTgZcSM6gaKc8yFgh6S/pMPPgWNjRorRPaW/lRKZYuncLlgCu8uM6DO11PT3ziHE56Cu7/1u5Lf+1Nrz7zBjUWpbUeL8wQe2T8/GL7PQ/MN974UEzFE6WmmzvkXSD3UvEj90o8HdVE2mtH1eMPUumiW7yWwGGunngchvQlFLrGTYA4bJHHIHBvcMnIjQSSFDajTKyFobzsctEBwHCOYG2tmK2nh6OeOIfZKfjDtvRuuPpbV37gV3/5eZcBKm2hy+OKGeJynO6SS2549qnPPPETV+xeRa/jfOZgul0nk4l6Cf26nEW/ex7YEFwVNIodQUrk0hmOUQgbMHkQmTBSYSIJQTo0Hj4YiC+eVV77Xk3/Y18QmwyyLMfs3BTSGq3N9oPtW1sYn4RPE3QnxtG+6spb9jdbjfuOOnLqts9/7u+/3dyGKy44/3xJWIkMxcc1M8QRzy9+8WvbTjr1OZ++e4/buee+pX4fcs6i5xzYCVPINMLqCfSeYLy2iBWrK6J9uQIsRSn2caUPHw/f19An2AuBxZUuwaPUJshy+T6fO1hbx1FHT8L5tfQ1IEnJZ73VrDGWLtUTLBx9VHrgs5/9tx8tLM7f32qN7TnpxGPu/Yf/8Zd777lnz8Hp6dlDJ5ywZfWCCy7w1TRUJnicM0O1HXHZ125949FPPuZdN93Sbhw40OkHt8R9TAO4xaBBHF96IIFLBOwTR2HiYJ+L8wx2snUFcXu9HFPTk0gTC0QTu9ebKXYemaxNsMrWIK+lyMea6O7efdtSq9WYr9Xs/qlWfS/zwX1//ZG/3Ldly9YH6+Ppvpm52X1TjUMHP/jBD3Z27dqVPzyqfWRoLD7eoIXwmF0UFp177rnp05/9y7/0pGNOfIPD9BNXVnIDsrjrni663SUYY9Fp97Bl2ybMzVrkOZcH6kqAKpr01IB8x5O1joA8SdAlS71aQh1r0d65w7b/9YvXHXpw796FZrO+aC0W6jUzPz3VOriyMj9/0Uf+fGHnzm1LbeTLm1qzK8D0Q8RFT3rw428hPMaXaPYIvP3tF8xu337sCddef8NTznnlqw8/YucT6lmn5486ptn+/GevdJd/4/LOzPRkj41pJwn1PJvVhLiTJEk7SdN2zZh2s5mszMw0OktL93YuvPDC3s6dO7M0TbPNmzd7AO6hUjceAP/v9uLYBgAAhAGQ/v+0mze0CSxMLPavBwAAAAAAwAElO8Bk/3a8PwAAAABJRU5ErkJggg==";
|
|
255
|
+
|
|
256
|
+
// src/connect-modal/connect-modal.templates.ts
|
|
257
|
+
var renderCloseButton = (theme) => html`<lukso-icon name="close-lg"
|
|
258
|
+
class="cursor-pointer transition-opacity hover:opacity-60" color="${theme === "dark" ? "neutral-100" : "neutral-20"}"></lukso-icon>`;
|
|
259
|
+
var renderBackButton = (theme) => html`<lukso-icon name="arrow-left-lg" class="cursor-pointer transition-opacity hover:opacity-60" color="${theme === "dark" ? "neutral-100" : "neutral-20"}"></lukso-icon>`;
|
|
260
|
+
var renderLogo = () => html`<img src="${up_cube_glass_default}" alt="" class="mb-5 w-14 animate-bounce2" />`;
|
|
261
|
+
var renderTitle = (title) => html`<h2 class="m-0 mb-4 text-neutral-20 dark:text-neutral-100 heading-inter-21-semi-bold">
|
|
262
|
+
${title}
|
|
263
|
+
</h2>`;
|
|
264
|
+
var renderPlaceholder = (style2) => html`<div class="${cn("bg-neutral-90 dark:bg-neutral-20 rounded-4 animate-pulse", style2)}"></div>`;
|
|
265
|
+
|
|
266
|
+
// src/connect-modal/components/eoa-connection-view.ts
|
|
267
|
+
import "@lukso/web-components/dist/components/lukso-button";
|
|
268
|
+
import "@lukso/web-components/dist/components/lukso-icon";
|
|
269
|
+
import "@lukso/web-components/dist/components/lukso-tag";
|
|
270
|
+
var logInfo2 = debug2("connect-modal:info");
|
|
271
|
+
var EoaConnectionView = class extends withTheme(
|
|
272
|
+
withIntlService(withDeviceService(ConnectModalBase))
|
|
273
|
+
) {
|
|
274
|
+
constructor() {
|
|
275
|
+
super(...arguments);
|
|
276
|
+
this.connectors = [];
|
|
277
|
+
this.isConnecting = false;
|
|
278
|
+
this.connectingRdns = void 0;
|
|
279
|
+
/**
|
|
280
|
+
* Task to fetch EOA wallets - handles loading/error states automatically
|
|
281
|
+
*/
|
|
282
|
+
this.walletsTask = new Task(this, {
|
|
283
|
+
task: async ([_isMobile], { signal }) => {
|
|
284
|
+
const walletIds = this.supportedWalletIds();
|
|
285
|
+
const url = `${WALLETS_API_URL}?projectId=${REOWN_PROJECT_ID}&ids=${walletIds.join(",")}`;
|
|
286
|
+
const response = await fetch(url, { signal });
|
|
287
|
+
if (!response.ok) {
|
|
288
|
+
throw new Error("Failed to fetch wallets");
|
|
289
|
+
}
|
|
290
|
+
const data = await response.json();
|
|
291
|
+
return Object.entries(data.listings || {}).map(([, wallet]) => {
|
|
292
|
+
const connector = this.eoaConnectors.find(
|
|
293
|
+
(connector2) => connector2.rdns === wallet.rdns
|
|
294
|
+
);
|
|
295
|
+
return {
|
|
296
|
+
...wallet,
|
|
297
|
+
isInstalled: connector?.rdns === wallet.rdns,
|
|
298
|
+
connector
|
|
299
|
+
};
|
|
300
|
+
}).sort(
|
|
301
|
+
(a, b) => a.isInstalled === b.isInstalled ? 0 : a.isInstalled ? -1 : 1
|
|
302
|
+
);
|
|
303
|
+
},
|
|
304
|
+
args: () => [this.device?.isMobile]
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Get WalletConnect connector
|
|
309
|
+
*/
|
|
310
|
+
get walletConnectConnector() {
|
|
311
|
+
return this.connectors.find((connector) => connector.type === "mobile");
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get EOA connectors
|
|
315
|
+
*/
|
|
316
|
+
get eoaConnectors() {
|
|
317
|
+
return this.connectors.filter(
|
|
318
|
+
(connector) => connector.type !== "embedded" && connector.type !== "extension" && connector.type !== "mobile" && connector.rdns !== "io.lukso.up-extension" && connector.slug !== "injected"
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Get supported wallet IDs based on device type
|
|
323
|
+
*
|
|
324
|
+
* @returns
|
|
325
|
+
*/
|
|
326
|
+
supportedWalletIds() {
|
|
327
|
+
return this.device?.isMobile ? SUPPORTED_WALLET_IDS_MOBILE : SUPPORTED_WALLET_IDS_DESKTOP;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get device type
|
|
331
|
+
*/
|
|
332
|
+
deviceType() {
|
|
333
|
+
if (this.device?.isMobile || this.device?.isTablet) {
|
|
334
|
+
if (this.device?.isIOS) {
|
|
335
|
+
return "ios";
|
|
336
|
+
}
|
|
337
|
+
return "android";
|
|
338
|
+
}
|
|
339
|
+
if (this.device?.isChrome) {
|
|
340
|
+
return "chrome";
|
|
341
|
+
}
|
|
342
|
+
if (this.device?.isFirefox) {
|
|
343
|
+
return "firefox";
|
|
344
|
+
}
|
|
345
|
+
if (this.device?.isSafari) {
|
|
346
|
+
return "safari";
|
|
347
|
+
}
|
|
348
|
+
if (this.device?.isEdge) {
|
|
349
|
+
return "edge";
|
|
350
|
+
}
|
|
351
|
+
if (this.device?.isOpera) {
|
|
352
|
+
return "opera";
|
|
353
|
+
}
|
|
354
|
+
return "browser";
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Close modal
|
|
358
|
+
*/
|
|
359
|
+
handleClose() {
|
|
360
|
+
this.dispatchEvent(
|
|
361
|
+
new CustomEvent("on-close", { bubbles: true, composed: true })
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Back to initial screen
|
|
366
|
+
*/
|
|
367
|
+
handleBack() {
|
|
368
|
+
this.dispatchEvent(
|
|
369
|
+
new CustomEvent("on-back", { bubbles: true, composed: true })
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Handle wallet connect click
|
|
374
|
+
*
|
|
375
|
+
* @param wallet
|
|
376
|
+
*/
|
|
377
|
+
handleConnect(wallet, event) {
|
|
378
|
+
event.stopPropagation();
|
|
379
|
+
this.connectingRdns = wallet.rdns;
|
|
380
|
+
if (this.device?.isMobile) {
|
|
381
|
+
this.connectMobile(wallet);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
this.connectDesktop(wallet);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Connect to wallet on desktop using selected connector
|
|
388
|
+
*
|
|
389
|
+
* @param wallet
|
|
390
|
+
*/
|
|
391
|
+
async connectDesktop(wallet) {
|
|
392
|
+
if (!wallet.isInstalled) {
|
|
393
|
+
window.open(wallet.app[this.deviceType()], "_blank");
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const connector = wallet.connector;
|
|
397
|
+
if (connector) {
|
|
398
|
+
try {
|
|
399
|
+
logInfo2("Connecting via connector:", connector);
|
|
400
|
+
this.isConnecting = true;
|
|
401
|
+
const setup = getWagmiSetup();
|
|
402
|
+
await connector.switchChain?.({ chainId: setup?.chainId });
|
|
403
|
+
await connector.connect();
|
|
404
|
+
this.dispatchEvent(
|
|
405
|
+
new CustomEvent("on-connect", {
|
|
406
|
+
detail: { connector },
|
|
407
|
+
bubbles: true,
|
|
408
|
+
composed: true
|
|
409
|
+
})
|
|
410
|
+
);
|
|
411
|
+
} catch (error) {
|
|
412
|
+
this.dispatchEvent(
|
|
413
|
+
new CustomEvent("on-error", {
|
|
414
|
+
detail: { error },
|
|
415
|
+
bubbles: true,
|
|
416
|
+
composed: true
|
|
417
|
+
})
|
|
418
|
+
);
|
|
419
|
+
} finally {
|
|
420
|
+
this.isConnecting = false;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Connect to wallet on mobile using WalletConnect
|
|
426
|
+
*/
|
|
427
|
+
async connectMobile(wallet) {
|
|
428
|
+
const connector = this.walletConnectConnector;
|
|
429
|
+
if (connector) {
|
|
430
|
+
try {
|
|
431
|
+
logInfo2("Connecting via WalletConnect connector:", connector);
|
|
432
|
+
this.isConnecting = true;
|
|
433
|
+
const connectPromise = connector.connect();
|
|
434
|
+
const provider = await connector.getProvider?.();
|
|
435
|
+
if (provider) {
|
|
436
|
+
const handleDisplayUri = (displayUri) => {
|
|
437
|
+
logInfo2("WalletConnect URI received:", displayUri);
|
|
438
|
+
const encodedUri = encodeURIComponent(displayUri);
|
|
439
|
+
if (wallet.mobile?.native) {
|
|
440
|
+
window.location.href = `${wallet.mobile.native}wc?uri=${encodedUri}`;
|
|
441
|
+
} else if (wallet.rdns === "com.coinbase.wallet") {
|
|
442
|
+
window.location.href = `cbwallet://wc?uri=${encodedUri}`;
|
|
443
|
+
} else {
|
|
444
|
+
window.location.href = displayUri;
|
|
445
|
+
}
|
|
446
|
+
provider.off("display_uri", handleDisplayUri);
|
|
447
|
+
};
|
|
448
|
+
provider.on("display_uri", handleDisplayUri);
|
|
449
|
+
}
|
|
450
|
+
await connectPromise;
|
|
451
|
+
this.dispatchEvent(
|
|
452
|
+
new CustomEvent("on-connect", {
|
|
453
|
+
detail: { connector },
|
|
454
|
+
bubbles: true,
|
|
455
|
+
composed: true
|
|
456
|
+
})
|
|
457
|
+
);
|
|
458
|
+
} catch (error) {
|
|
459
|
+
this.dispatchEvent(
|
|
460
|
+
new CustomEvent("on-error", {
|
|
461
|
+
detail: { error },
|
|
462
|
+
bubbles: true,
|
|
463
|
+
composed: true
|
|
464
|
+
})
|
|
465
|
+
);
|
|
466
|
+
} finally {
|
|
467
|
+
this.isConnecting = false;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Render the list of EOA wallets
|
|
473
|
+
*/
|
|
474
|
+
renderWalletsList() {
|
|
475
|
+
return this.walletsTask.render({
|
|
476
|
+
// Success state
|
|
477
|
+
complete: (wallets) => html2`${wallets.map((wallet) => {
|
|
478
|
+
const isLoading = this.isConnecting && this.connectingRdns === wallet.rdns;
|
|
479
|
+
const isInstalled = this.eoaConnectors.some(
|
|
480
|
+
(connector) => connector.rdns === wallet.rdns
|
|
481
|
+
);
|
|
482
|
+
const logo = wallet.image_url?.sm ? html2`<img src="${wallet.image_url.sm}" alt="${wallet.name} logo" class="h-8 rounded-full mr-2" />` : nothing;
|
|
483
|
+
return keyed(
|
|
484
|
+
wallet.slug,
|
|
485
|
+
html2`<lukso-button
|
|
486
|
+
.theme=${this.theme}
|
|
487
|
+
variant="secondary"
|
|
488
|
+
size=${this.device?.isMobile ? "medium" : "large"}
|
|
489
|
+
is-full-width
|
|
490
|
+
?disabled=${this.isConnecting}
|
|
491
|
+
?is-loading=${isLoading}
|
|
492
|
+
loading-text=${wallet.name}
|
|
493
|
+
@click=${(event) => this.handleConnect(wallet, event)}
|
|
494
|
+
>
|
|
495
|
+
<div
|
|
496
|
+
class="grid w-full grid-cols-[max-content,auto,max-content] items-center gap-3 text-left animate-fade-in"
|
|
497
|
+
>
|
|
498
|
+
${logo}
|
|
499
|
+
<div class="truncate">${wallet.name}</div>
|
|
500
|
+
<div class="flex items-center">
|
|
501
|
+
${isInstalled ? html2`<lukso-tag
|
|
502
|
+
size="${this.device?.isMobile ? "x-small" : "small"}"
|
|
503
|
+
text-color="green-45"
|
|
504
|
+
background-color="${this.theme === "dark" ? "neutral-20" : "neutral-100"}"
|
|
505
|
+
border-color="green-45"
|
|
506
|
+
>
|
|
507
|
+
${this.formatMessage("connect_modal_installed")}
|
|
508
|
+
</lukso-tag>` : nothing}
|
|
509
|
+
</div>
|
|
510
|
+
</div>
|
|
511
|
+
</lukso-button>`
|
|
512
|
+
);
|
|
513
|
+
})}`,
|
|
514
|
+
// Loading state
|
|
515
|
+
pending: () => html2`${this.supportedWalletIds().map(
|
|
516
|
+
() => renderPlaceholder(
|
|
517
|
+
`w-full ${this.device?.isMobile ? "h-10 !rounded-10" : "h-12 !rounded-12"}`
|
|
518
|
+
)
|
|
519
|
+
)}`,
|
|
520
|
+
// Error state
|
|
521
|
+
error: (_error) => {
|
|
522
|
+
return html2`<div class="flex flex-col justify-center items-center py-10">
|
|
523
|
+
<div class="mb-4">${this.formatMessage("connect_modal_failed_to_load")}</div>
|
|
524
|
+
<lukso-button size="medium" variant="secondary" @click=${() => this.walletsTask.run()}>${this.formatMessage("connect_modal_try_again")}</lukso-button>
|
|
525
|
+
</div>`;
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Main render method
|
|
531
|
+
*/
|
|
532
|
+
render() {
|
|
533
|
+
return html2`
|
|
534
|
+
<div class="flex justify-between">
|
|
535
|
+
<button
|
|
536
|
+
@click=${this.handleBack}
|
|
537
|
+
>
|
|
538
|
+
${renderBackButton(this.theme)}
|
|
539
|
+
</button>
|
|
540
|
+
|
|
541
|
+
<button
|
|
542
|
+
@click=${this.handleClose}
|
|
543
|
+
>
|
|
544
|
+
${renderCloseButton(this.theme)}
|
|
545
|
+
</button>
|
|
546
|
+
</div>
|
|
547
|
+
<div class="flex flex-col items-center text-center">
|
|
548
|
+
${renderLogo()}
|
|
549
|
+
${renderTitle(this.formatMessage("connect_modal_eoa_title"))}
|
|
550
|
+
<div class="mt-2 flex w-full flex-col gap-2">
|
|
551
|
+
${this.renderWalletsList()}
|
|
552
|
+
</div>
|
|
553
|
+
</div>
|
|
554
|
+
`;
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
__decorateClass([
|
|
558
|
+
property({ type: Array })
|
|
559
|
+
], EoaConnectionView.prototype, "connectors", 2);
|
|
560
|
+
__decorateClass([
|
|
561
|
+
state()
|
|
562
|
+
], EoaConnectionView.prototype, "isConnecting", 2);
|
|
563
|
+
__decorateClass([
|
|
564
|
+
state()
|
|
565
|
+
], EoaConnectionView.prototype, "connectingRdns", 2);
|
|
566
|
+
customElements.define("eoa-connection-view", EoaConnectionView);
|
|
567
|
+
|
|
568
|
+
// src/connect-modal/components/connection-view.ts
|
|
569
|
+
import {
|
|
570
|
+
withDeviceService as withDeviceService2,
|
|
571
|
+
withIntlService as withIntlService2,
|
|
572
|
+
withTheme as withTheme2
|
|
573
|
+
} from "@lukso/core/mixins";
|
|
574
|
+
import { html as html3 } from "lit";
|
|
575
|
+
import { property as property2 } from "lit/decorators.js";
|
|
576
|
+
import "@lukso/web-components/dist/components/lukso-button";
|
|
577
|
+
import "@lukso/web-components/dist/components/lukso-icon";
|
|
578
|
+
import { browserInfo } from "@lukso/core/utils";
|
|
579
|
+
import { cn as cn2 } from "@lukso/web-components/tools";
|
|
580
|
+
import debug3 from "debug";
|
|
581
|
+
|
|
582
|
+
// src/connect-modal/utils/walletConnectDeepLinkUrl.ts
|
|
583
|
+
var walletConnectDeepLinkUrl = (data, options) => {
|
|
584
|
+
try {
|
|
585
|
+
if (!data || typeof data !== "string") {
|
|
586
|
+
return "";
|
|
587
|
+
}
|
|
588
|
+
const dataUrl = new URL(data);
|
|
589
|
+
if (options?.withRedirectUrl) {
|
|
590
|
+
const redirectUrl = new URL(location.href);
|
|
591
|
+
redirectUrl.searchParams.delete("modalTemplate");
|
|
592
|
+
redirectUrl.searchParams.delete("modalSize");
|
|
593
|
+
dataUrl.searchParams.append(
|
|
594
|
+
"redirectUrl",
|
|
595
|
+
`${redirectUrl.origin}${redirectUrl.pathname}${redirectUrl.search}`
|
|
596
|
+
);
|
|
597
|
+
}
|
|
598
|
+
const deepLink = `${MOBILE_APP_DEEP_LINK_PREFIX}://wallet-connect/${dataUrl.pathname}${dataUrl.search}`;
|
|
599
|
+
return deepLink;
|
|
600
|
+
} catch (error) {
|
|
601
|
+
console.warn(error);
|
|
602
|
+
return "";
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
// src/connect-modal/components/connection-view.ts
|
|
607
|
+
var logInfo3 = debug3("connect-modal:info");
|
|
608
|
+
var ConnectionView = class extends withTheme2(
|
|
609
|
+
withIntlService2(withDeviceService2(ConnectModalBase))
|
|
610
|
+
) {
|
|
611
|
+
constructor() {
|
|
612
|
+
super(...arguments);
|
|
613
|
+
this.isConnecting = false;
|
|
614
|
+
this.connectingRdns = void 0;
|
|
615
|
+
this.connectors = [];
|
|
616
|
+
/**
|
|
617
|
+
* Handle connect via embedded wallet
|
|
618
|
+
*/
|
|
619
|
+
this.handleConnectEmbedded = async () => {
|
|
620
|
+
const connector = this.embeddedWalletConnector;
|
|
621
|
+
try {
|
|
622
|
+
logInfo3("Connecting via connector:", connector);
|
|
623
|
+
await connector?.connect();
|
|
624
|
+
this.dispatchEvent(
|
|
625
|
+
new CustomEvent("on-connect", {
|
|
626
|
+
detail: { connector },
|
|
627
|
+
bubbles: true,
|
|
628
|
+
composed: true
|
|
629
|
+
})
|
|
630
|
+
);
|
|
631
|
+
} catch (error) {
|
|
632
|
+
this.dispatchEvent(
|
|
633
|
+
new CustomEvent("on-error", {
|
|
634
|
+
detail: { error },
|
|
635
|
+
bubbles: true,
|
|
636
|
+
composed: true
|
|
637
|
+
})
|
|
638
|
+
);
|
|
639
|
+
}
|
|
640
|
+
};
|
|
641
|
+
/**
|
|
642
|
+
* Handle connect via UP Extension
|
|
643
|
+
*/
|
|
644
|
+
this.handleConnectExtension = async () => {
|
|
645
|
+
const connector = this.upExtensionConnector;
|
|
646
|
+
if (!window.lukso) {
|
|
647
|
+
window.open(this.extensionStore.storeLink, "_blank");
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
if (connector) {
|
|
651
|
+
try {
|
|
652
|
+
logInfo3("Connecting via connector:", connector);
|
|
653
|
+
this.isConnecting = true;
|
|
654
|
+
this.connectingRdns = connector.rdns;
|
|
655
|
+
const setup = getWagmiSetup();
|
|
656
|
+
await connector.switchChain?.({ chainId: setup?.chainId });
|
|
657
|
+
await connector.connect();
|
|
658
|
+
this.dispatchEvent(
|
|
659
|
+
new CustomEvent("on-connect", {
|
|
660
|
+
detail: { connector },
|
|
661
|
+
bubbles: true,
|
|
662
|
+
composed: true
|
|
663
|
+
})
|
|
664
|
+
);
|
|
665
|
+
} catch (error) {
|
|
666
|
+
this.dispatchEvent(
|
|
667
|
+
new CustomEvent("on-error", {
|
|
668
|
+
detail: { error },
|
|
669
|
+
bubbles: true,
|
|
670
|
+
composed: true
|
|
671
|
+
})
|
|
672
|
+
);
|
|
673
|
+
} finally {
|
|
674
|
+
this.isConnecting = false;
|
|
675
|
+
this.connectingRdns = void 0;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
};
|
|
679
|
+
/**
|
|
680
|
+
* Handle connect via UP Mobile (WalletConnect)
|
|
681
|
+
*/
|
|
682
|
+
this.handleConnectMobile = async () => {
|
|
683
|
+
const connector = this.walletConnectConnector;
|
|
684
|
+
if (connector) {
|
|
685
|
+
try {
|
|
686
|
+
logInfo3("Connecting via connector:", connector);
|
|
687
|
+
this.isConnecting = true;
|
|
688
|
+
this.connectingRdns = connector.rdns;
|
|
689
|
+
const connectPromise = connector.connect();
|
|
690
|
+
const provider = await connector.getProvider?.();
|
|
691
|
+
if (provider) {
|
|
692
|
+
const handleDisplayUri = (displayUri) => {
|
|
693
|
+
logInfo3("WalletConnect original URI:", displayUri);
|
|
694
|
+
const deepLink = walletConnectDeepLinkUrl(displayUri);
|
|
695
|
+
logInfo3("Mobile App Deep Link:", deepLink);
|
|
696
|
+
if (this.device?.isMobile) {
|
|
697
|
+
window.open(deepLink, "_blank");
|
|
698
|
+
} else {
|
|
699
|
+
this.handleShowQrCode(deepLink);
|
|
700
|
+
}
|
|
701
|
+
provider.off("display_uri", handleDisplayUri);
|
|
702
|
+
};
|
|
703
|
+
provider.on("display_uri", handleDisplayUri);
|
|
704
|
+
}
|
|
705
|
+
await connectPromise;
|
|
706
|
+
this.dispatchEvent(
|
|
707
|
+
new CustomEvent("on-connect", {
|
|
708
|
+
detail: { connector },
|
|
709
|
+
bubbles: true,
|
|
710
|
+
composed: true
|
|
711
|
+
})
|
|
712
|
+
);
|
|
713
|
+
} catch (error) {
|
|
714
|
+
this.dispatchEvent(
|
|
715
|
+
new CustomEvent("on-error", {
|
|
716
|
+
detail: { error },
|
|
717
|
+
bubbles: true,
|
|
718
|
+
composed: true
|
|
719
|
+
})
|
|
720
|
+
);
|
|
721
|
+
this.dispatchEvent(
|
|
722
|
+
new CustomEvent("on-back", { bubbles: true, composed: true })
|
|
723
|
+
);
|
|
724
|
+
} finally {
|
|
725
|
+
this.isConnecting = false;
|
|
726
|
+
this.connectingRdns = void 0;
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Get WalletConnect connector
|
|
733
|
+
*/
|
|
734
|
+
get walletConnectConnector() {
|
|
735
|
+
return this.connectors.find((connector) => connector.type === "mobile");
|
|
736
|
+
}
|
|
737
|
+
/**
|
|
738
|
+
* Universal Profile browser extension connector
|
|
739
|
+
*/
|
|
740
|
+
get upExtensionConnector() {
|
|
741
|
+
return this.connectors.find((connector) => connector.type === "extension");
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* Passkey / Embedded wallet connector
|
|
745
|
+
*/
|
|
746
|
+
get embeddedWalletConnector() {
|
|
747
|
+
return this.connectors.find((connector) => connector.type === "embedded");
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* Get browser extension store info
|
|
751
|
+
*/
|
|
752
|
+
get extensionStore() {
|
|
753
|
+
if (!this.device) {
|
|
754
|
+
throw new Error("DeviceService not initialized");
|
|
755
|
+
}
|
|
756
|
+
const info = browserInfo(this.device);
|
|
757
|
+
return info;
|
|
758
|
+
}
|
|
759
|
+
/**
|
|
760
|
+
* Check if browser supports extension installation
|
|
761
|
+
*/
|
|
762
|
+
get browserSupportExtension() {
|
|
763
|
+
return this.extensionStore.storeLink !== "";
|
|
764
|
+
}
|
|
765
|
+
/**
|
|
766
|
+
* Close modal
|
|
767
|
+
*/
|
|
768
|
+
handleClose() {
|
|
769
|
+
this.dispatchEvent(
|
|
770
|
+
new CustomEvent("on-close", { bubbles: true, composed: true })
|
|
771
|
+
);
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Handle showing EOA connections
|
|
775
|
+
*/
|
|
776
|
+
handleShowEoaConnections() {
|
|
777
|
+
this.dispatchEvent(
|
|
778
|
+
new CustomEvent("on-show-eoa-connections-view", {
|
|
779
|
+
bubbles: true,
|
|
780
|
+
composed: true
|
|
781
|
+
})
|
|
782
|
+
);
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Handle showing QR code
|
|
786
|
+
*/
|
|
787
|
+
handleShowQrCode(data) {
|
|
788
|
+
this.dispatchEvent(
|
|
789
|
+
new CustomEvent("on-show-qr-code", {
|
|
790
|
+
detail: { data },
|
|
791
|
+
bubbles: true,
|
|
792
|
+
composed: true
|
|
793
|
+
})
|
|
794
|
+
);
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* Render connector button
|
|
798
|
+
*
|
|
799
|
+
* @param iconName
|
|
800
|
+
* @param label
|
|
801
|
+
* @param onClick
|
|
802
|
+
* @param isLoading
|
|
803
|
+
* @param isDisabled
|
|
804
|
+
*/
|
|
805
|
+
renderConnectorButton(iconName, label, onClick, isLoading, isDisabled) {
|
|
806
|
+
return html3`
|
|
807
|
+
<lukso-button
|
|
808
|
+
variant="secondary"
|
|
809
|
+
.theme=${this.theme}
|
|
810
|
+
size=${this.device?.isMobile ? "medium" : "large"}
|
|
811
|
+
is-full-width
|
|
812
|
+
?disabled=${isDisabled}
|
|
813
|
+
?is-loading=${isLoading}
|
|
814
|
+
loading-text=${label}
|
|
815
|
+
@click=${onClick}
|
|
816
|
+
>
|
|
817
|
+
<lukso-icon
|
|
818
|
+
name=${iconName}
|
|
819
|
+
size=${this.device?.isMobile ? "small" : "medium"}
|
|
820
|
+
class="mr-2"
|
|
821
|
+
color="${this.theme === "dark" ? "neutral-100" : "neutral-20"}"
|
|
822
|
+
secondary-color="${this.theme === "dark" ? "neutral-20" : "neutral-100"}"
|
|
823
|
+
></lukso-icon>
|
|
824
|
+
${label}
|
|
825
|
+
</lukso-button>
|
|
826
|
+
`;
|
|
827
|
+
}
|
|
828
|
+
renderConnectors() {
|
|
829
|
+
const templates = [];
|
|
830
|
+
if (this.embeddedWalletConnector) {
|
|
831
|
+
templates.push(
|
|
832
|
+
this.renderConnectorButton(
|
|
833
|
+
"key-outline",
|
|
834
|
+
this.formatMessage("connect_modal_connectors_passkey_wallet"),
|
|
835
|
+
this.handleConnectEmbedded,
|
|
836
|
+
false,
|
|
837
|
+
this.isConnecting
|
|
838
|
+
)
|
|
839
|
+
);
|
|
840
|
+
}
|
|
841
|
+
templates.push(
|
|
842
|
+
this.renderConnectorButton(
|
|
843
|
+
this.extensionStore.icon,
|
|
844
|
+
this.formatMessage("connect_modal_connectors_up_browser_extension"),
|
|
845
|
+
this.handleConnectExtension,
|
|
846
|
+
this.isConnecting && this.connectingRdns === this.upExtensionConnector?.rdns,
|
|
847
|
+
this.isConnecting || this.device?.isMobile || !this.browserSupportExtension
|
|
848
|
+
)
|
|
849
|
+
);
|
|
850
|
+
if (this.walletConnectConnector) {
|
|
851
|
+
templates.push(
|
|
852
|
+
this.renderConnectorButton(
|
|
853
|
+
"phone-portrait-outline",
|
|
854
|
+
this.formatMessage("connect_modal_connectors_up_mobile"),
|
|
855
|
+
this.handleConnectMobile,
|
|
856
|
+
this.isConnecting && this.connectingRdns === this.walletConnectConnector.rdns,
|
|
857
|
+
this.isConnecting
|
|
858
|
+
)
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
return templates;
|
|
862
|
+
}
|
|
863
|
+
/**
|
|
864
|
+
* Render divider with text
|
|
865
|
+
*/
|
|
866
|
+
renderDivider() {
|
|
867
|
+
return html3`
|
|
868
|
+
<div class="relative w-full my-2">
|
|
869
|
+
<div class="paragraph-inter-12-regular relative z-[1] bg-neutral-98 dark:bg-neutral-10 px-4 text-neutral-40 dark:text-neutral-95 inline-block">
|
|
870
|
+
${this.formatMessage("connect_modal_or")}
|
|
871
|
+
</div>
|
|
872
|
+
<div class="absolute top-[13px] left-0 right-0 h-px bg-neutral-80 dark:bg-neutral-80" />
|
|
873
|
+
</div>
|
|
874
|
+
<div class="paragraph-inter-16-regular py-4 text-neutral-20 dark:text-neutral-100">
|
|
875
|
+
${this.formatMessage("connect_modal_or_info")}
|
|
876
|
+
</div>
|
|
877
|
+
`;
|
|
878
|
+
}
|
|
879
|
+
render() {
|
|
880
|
+
return html3`
|
|
881
|
+
<div class="flex justify-end">
|
|
882
|
+
<button
|
|
883
|
+
@click=${this.handleClose}
|
|
884
|
+
>
|
|
885
|
+
${renderCloseButton(this.theme)}
|
|
886
|
+
</button>
|
|
887
|
+
</div>
|
|
888
|
+
<div class="flex flex-col items-center text-center">
|
|
889
|
+
${renderLogo()}
|
|
890
|
+
${renderTitle(this.formatMessage("connect_modal_title"))}
|
|
891
|
+
<p class="mb-6 paragraph-inter-16-regular text-neutral-20 dark:text-neutral-100">
|
|
892
|
+
${this.formatMessage("connect_modal_description")}
|
|
893
|
+
</p>
|
|
894
|
+
<div class="${cn2("flex w-full gap-2 mb-4", this.device?.isMobile ? "flex-col-reverse" : "flex-col")}">
|
|
895
|
+
${this.renderConnectors()}
|
|
896
|
+
</div>
|
|
897
|
+
${this.renderDivider()}
|
|
898
|
+
<lukso-button
|
|
899
|
+
variant="secondary"
|
|
900
|
+
size=${this.device?.isMobile ? "medium" : "large"}
|
|
901
|
+
is-full-width
|
|
902
|
+
.theme=${this.theme}
|
|
903
|
+
?disabled=${this.isConnecting}
|
|
904
|
+
@click=${this.handleShowEoaConnections}
|
|
905
|
+
>
|
|
906
|
+
<lukso-icon
|
|
907
|
+
name="wallet-outline"
|
|
908
|
+
size=${this.device?.isMobile ? "small" : "medium"}
|
|
909
|
+
class="mr-2"
|
|
910
|
+
color="${this.theme === "dark" ? "neutral-100" : "neutral-20"}"
|
|
911
|
+
></lukso-icon>
|
|
912
|
+
${this.formatMessage("connect_modal_other_connectors")}
|
|
913
|
+
</lukso-button>
|
|
914
|
+
</div>
|
|
915
|
+
`;
|
|
916
|
+
}
|
|
917
|
+
};
|
|
918
|
+
__decorateClass([
|
|
919
|
+
property2({ type: Boolean })
|
|
920
|
+
], ConnectionView.prototype, "isConnecting", 2);
|
|
921
|
+
__decorateClass([
|
|
922
|
+
property2({ type: String })
|
|
923
|
+
], ConnectionView.prototype, "connectingRdns", 2);
|
|
924
|
+
__decorateClass([
|
|
925
|
+
property2({ type: Array })
|
|
926
|
+
], ConnectionView.prototype, "connectors", 2);
|
|
927
|
+
customElements.define("connection-view", ConnectionView);
|
|
928
|
+
|
|
929
|
+
// src/connect-modal/components/qr-code-view.ts
|
|
930
|
+
import { html as html4 } from "lit";
|
|
931
|
+
import "@lukso/web-components/dist/components/lukso-qr-code";
|
|
932
|
+
import { withIntlService as withIntlService3, withTheme as withTheme3 } from "@lukso/core/mixins";
|
|
933
|
+
import { property as property3 } from "lit/decorators.js";
|
|
934
|
+
var QrCodeView = class extends withTheme3(withIntlService3(ConnectModalBase)) {
|
|
935
|
+
constructor() {
|
|
936
|
+
super(...arguments);
|
|
937
|
+
this.data = void 0;
|
|
938
|
+
}
|
|
939
|
+
/**
|
|
940
|
+
* Back to initial screen
|
|
941
|
+
*/
|
|
942
|
+
handleBack() {
|
|
943
|
+
this.dispatchEvent(
|
|
944
|
+
new CustomEvent("on-back", { bubbles: true, composed: true })
|
|
945
|
+
);
|
|
946
|
+
}
|
|
947
|
+
/**
|
|
948
|
+
* Close modal
|
|
949
|
+
*/
|
|
950
|
+
handleClose() {
|
|
951
|
+
this.dispatchEvent(
|
|
952
|
+
new CustomEvent("on-close", { bubbles: true, composed: true })
|
|
953
|
+
);
|
|
954
|
+
}
|
|
955
|
+
get qrCodeOptions() {
|
|
956
|
+
return {
|
|
957
|
+
dotsOptions: {
|
|
958
|
+
color: this.isDark ? "#F5F8FA" : "#243542"
|
|
959
|
+
},
|
|
960
|
+
backgroundOptions: {
|
|
961
|
+
color: this.isDark ? "#243542" : "#FFFFFF"
|
|
962
|
+
}
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
render() {
|
|
966
|
+
return html4`<div class="flex justify-between">
|
|
967
|
+
<button
|
|
968
|
+
@click=${this.handleBack}
|
|
969
|
+
>
|
|
970
|
+
${renderBackButton(this.theme)}
|
|
971
|
+
</button>
|
|
972
|
+
|
|
973
|
+
<button
|
|
974
|
+
@click=${this.handleClose}
|
|
975
|
+
>
|
|
976
|
+
${renderCloseButton(this.theme)}
|
|
977
|
+
</button>
|
|
978
|
+
</div>
|
|
979
|
+
<div class="flex flex-col items-center text-center">
|
|
980
|
+
${renderTitle(this.formatMessage("connect_modal_qr_code_title"))}
|
|
981
|
+
|
|
982
|
+
<div class="paragraph-inter-16-regular text-neutral-20 dark:text-neutral-100 mb-4">
|
|
983
|
+
${this.formatMessage("connect_modal_qr_code_description")}
|
|
984
|
+
</div>
|
|
985
|
+
<lukso-qr-code size="320" .value="${this.data}" image="${up_cube_glass_default}" .options="${this.qrCodeOptions}" class="rounded-12 overflow-hidden"></lukso-qr-code></div>`;
|
|
986
|
+
}
|
|
987
|
+
};
|
|
988
|
+
__decorateClass([
|
|
989
|
+
property3({ type: String })
|
|
990
|
+
], QrCodeView.prototype, "data", 2);
|
|
991
|
+
customElements.define("qr-code-view", QrCodeView);
|
|
992
|
+
|
|
993
|
+
// src/connect-modal/connect-modal.ts
|
|
994
|
+
var logInfo4 = debug4("connect-modal:info");
|
|
995
|
+
var ConnectModal = class extends withTheme4(
|
|
996
|
+
withDeviceService3(ConnectModalBase)
|
|
997
|
+
) {
|
|
998
|
+
constructor() {
|
|
999
|
+
super(...arguments);
|
|
1000
|
+
this.open = false;
|
|
1001
|
+
this.connectors = [];
|
|
1002
|
+
this.modalView = "up_connection";
|
|
1003
|
+
this.qrCodeData = void 0;
|
|
1004
|
+
this.handleShowEoaConnectionsView = (event) => {
|
|
1005
|
+
event.stopPropagation();
|
|
1006
|
+
this.modalView = "eoa_connection";
|
|
1007
|
+
};
|
|
1008
|
+
this.handleShowQrCodeView = (event) => {
|
|
1009
|
+
event.stopPropagation();
|
|
1010
|
+
this.qrCodeData = event.detail.data;
|
|
1011
|
+
this.modalView = "qr_code";
|
|
1012
|
+
};
|
|
1013
|
+
}
|
|
1014
|
+
updated(changedProperties) {
|
|
1015
|
+
super.updated(changedProperties);
|
|
1016
|
+
if (changedProperties.has("open") && this.open) {
|
|
1017
|
+
this.modalView = "up_connection";
|
|
1018
|
+
this.loadConnectors();
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Close modal
|
|
1023
|
+
*/
|
|
1024
|
+
handleClose() {
|
|
1025
|
+
this.open = false;
|
|
1026
|
+
this.dispatchEvent(
|
|
1027
|
+
new CustomEvent("on-close", { bubbles: true, composed: true })
|
|
1028
|
+
);
|
|
1029
|
+
}
|
|
1030
|
+
async loadConnectors() {
|
|
1031
|
+
const globalWagmiSetup = getWagmiSetup();
|
|
1032
|
+
logInfo4("Global wagmi setup:", globalWagmiSetup);
|
|
1033
|
+
if (!globalWagmiSetup) {
|
|
1034
|
+
console.warn(
|
|
1035
|
+
"No global wagmi setup found! Call setupConnectModal() first."
|
|
1036
|
+
);
|
|
1037
|
+
this.connectors = [];
|
|
1038
|
+
return;
|
|
1039
|
+
}
|
|
1040
|
+
try {
|
|
1041
|
+
const { wagmiConfig, chainId, embeddedWalletId } = globalWagmiSetup;
|
|
1042
|
+
const wagmiConnectors = wagmiConfig?.connectors || [];
|
|
1043
|
+
logInfo4("Initial connectors:", wagmiConnectors);
|
|
1044
|
+
const wagmiCore = await import("@wagmi/core").catch((error) => {
|
|
1045
|
+
throw new Error("@wagmi/core is required when using wagmi connectors", {
|
|
1046
|
+
cause: error
|
|
1047
|
+
});
|
|
1048
|
+
});
|
|
1049
|
+
this.connectors = fromWagmiConnectors(
|
|
1050
|
+
wagmiConnectors,
|
|
1051
|
+
async (options) => {
|
|
1052
|
+
await wagmiCore.connect(wagmiConfig, {
|
|
1053
|
+
connector: options.connector,
|
|
1054
|
+
chainId: options.chainId || chainId
|
|
1055
|
+
});
|
|
1056
|
+
},
|
|
1057
|
+
chainId,
|
|
1058
|
+
embeddedWalletId
|
|
1059
|
+
);
|
|
1060
|
+
logInfo4("Converted connectors:", this.connectors);
|
|
1061
|
+
} catch (error) {
|
|
1062
|
+
console.warn("Failed to load connectors", error);
|
|
1063
|
+
this.connectors = [];
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* Successful connection handler
|
|
1068
|
+
*
|
|
1069
|
+
* @param connector
|
|
1070
|
+
*/
|
|
1071
|
+
handleOnConnectSuccess(event) {
|
|
1072
|
+
event.stopPropagation();
|
|
1073
|
+
const connector = event.detail.connector;
|
|
1074
|
+
logInfo4("Connection success:", connector);
|
|
1075
|
+
this.open = false;
|
|
1076
|
+
this.dispatchEvent(
|
|
1077
|
+
new CustomEvent("on-connect", {
|
|
1078
|
+
detail: { connector },
|
|
1079
|
+
bubbles: true,
|
|
1080
|
+
composed: true
|
|
1081
|
+
})
|
|
1082
|
+
);
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Error connection handler
|
|
1086
|
+
*
|
|
1087
|
+
* @param error
|
|
1088
|
+
*/
|
|
1089
|
+
handleOnConnectError(event) {
|
|
1090
|
+
event.stopPropagation();
|
|
1091
|
+
const error = event.detail.error;
|
|
1092
|
+
logInfo4("Connection error:", error);
|
|
1093
|
+
this.dispatchEvent(
|
|
1094
|
+
new CustomEvent("on-error", {
|
|
1095
|
+
detail: { error },
|
|
1096
|
+
bubbles: true,
|
|
1097
|
+
composed: true
|
|
1098
|
+
})
|
|
1099
|
+
);
|
|
1100
|
+
}
|
|
1101
|
+
handleBackToConnectionView(event) {
|
|
1102
|
+
event.stopPropagation();
|
|
1103
|
+
this.modalView = "up_connection";
|
|
1104
|
+
}
|
|
1105
|
+
// ===== Template Methods =====
|
|
1106
|
+
/**
|
|
1107
|
+
* Render modal content based on current view flag
|
|
1108
|
+
*/
|
|
1109
|
+
renderModalContent() {
|
|
1110
|
+
switch (this.modalView) {
|
|
1111
|
+
case "qr_code":
|
|
1112
|
+
return html5`<qr-code-view
|
|
1113
|
+
.data=${this.qrCodeData}
|
|
1114
|
+
.theme=${this.theme}
|
|
1115
|
+
@on-back=${this.handleBackToConnectionView}
|
|
1116
|
+
@on-close=${this.handleClose}
|
|
1117
|
+
></qr-code-view>`;
|
|
1118
|
+
case "eoa_connection":
|
|
1119
|
+
return html5`
|
|
1120
|
+
<eoa-connection-view
|
|
1121
|
+
.connectors=${this.connectors}
|
|
1122
|
+
.theme=${this.theme}
|
|
1123
|
+
@on-back=${this.handleBackToConnectionView}
|
|
1124
|
+
@on-close=${this.handleClose}
|
|
1125
|
+
@on-connect=${this.handleOnConnectSuccess}
|
|
1126
|
+
@on-error=${this.handleOnConnectError}
|
|
1127
|
+
></eoa-connection-view>
|
|
1128
|
+
`;
|
|
1129
|
+
default:
|
|
1130
|
+
return html5`
|
|
1131
|
+
<connection-view
|
|
1132
|
+
.connectors=${this.connectors}
|
|
1133
|
+
.theme=${this.theme}
|
|
1134
|
+
@on-back=${this.handleBackToConnectionView}
|
|
1135
|
+
@on-close=${this.handleClose}
|
|
1136
|
+
@on-connect=${this.handleOnConnectSuccess}
|
|
1137
|
+
@on-error=${this.handleOnConnectError}
|
|
1138
|
+
@on-show-eoa-connections-view=${this.handleShowEoaConnectionsView}
|
|
1139
|
+
@on-show-qr-code=${this.handleShowQrCodeView}
|
|
1140
|
+
></connection-view>
|
|
1141
|
+
`;
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
render() {
|
|
1145
|
+
return html5`
|
|
1146
|
+
<lukso-modal
|
|
1147
|
+
?is-open=${this.open}
|
|
1148
|
+
?has-bottom-padding=${!!(this.device?.isIOS && this.device?.isSafari)}
|
|
1149
|
+
size="auto"
|
|
1150
|
+
.theme=${this.theme}
|
|
1151
|
+
@on-backdrop-click=${this.handleClose}
|
|
1152
|
+
>
|
|
1153
|
+
<div class="p-6 w-full sm:w-[372px]">
|
|
1154
|
+
${this.renderModalContent()}
|
|
1155
|
+
</div>
|
|
1156
|
+
</lukso-modal>
|
|
1157
|
+
`;
|
|
1158
|
+
}
|
|
1159
|
+
};
|
|
1160
|
+
__decorateClass([
|
|
1161
|
+
property4({ type: Boolean, reflect: true })
|
|
1162
|
+
], ConnectModal.prototype, "open", 2);
|
|
1163
|
+
__decorateClass([
|
|
1164
|
+
state2()
|
|
1165
|
+
], ConnectModal.prototype, "connectors", 2);
|
|
1166
|
+
__decorateClass([
|
|
1167
|
+
state2()
|
|
1168
|
+
], ConnectModal.prototype, "modalView", 2);
|
|
1169
|
+
__decorateClass([
|
|
1170
|
+
state2()
|
|
1171
|
+
], ConnectModal.prototype, "qrCodeData", 2);
|
|
1172
|
+
customElements.define("connect-modal", ConnectModal);
|
|
1173
|
+
|
|
1174
|
+
export {
|
|
1175
|
+
ConnectModalBase,
|
|
1176
|
+
wagmiService,
|
|
1177
|
+
fromWagmiConnector,
|
|
1178
|
+
fromWagmiConnectors,
|
|
1179
|
+
setupWagmi,
|
|
1180
|
+
getWagmiSetup,
|
|
1181
|
+
getConnection,
|
|
1182
|
+
watchConnection,
|
|
1183
|
+
disconnect,
|
|
1184
|
+
ConnectModal
|
|
1185
|
+
};
|
|
1186
|
+
//# sourceMappingURL=chunk-2BZE2DLW.js.map
|