diff --git a/.github/workflows/push-packagecloud.yml b/.github/workflows/push-packagecloud.yml
index b85014363..dd6a75475 100644
--- a/.github/workflows/push-packagecloud.yml
+++ b/.github/workflows/push-packagecloud.yml
@@ -60,16 +60,23 @@ jobs:
path: /tmp/${{ inputs.LINUX }}
# Remove existing packages
- name: Remove existing package
+ if: inputs.LINUX != 'el9' && inputs.LINUX != 'ubuntu-noble'
run: package_cloud yank bunkerity/${{ inputs.REPO }}/${{ inputs.LINUX }}/${{ inputs.VERSION }} bunkerweb${{ inputs.SEPARATOR }}${{ inputs.BW_VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}${{ inputs.PACKAGE_ARCH }}.${{ inputs.PACKAGE }}
continue-on-error: true
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
- - name: Remove existing package
+ - name: Remove existing package el9
if: inputs.LINUX == 'el9'
run: package_cloud yank bunkerity/${{ inputs.REPO }}/el/9 bunkerweb${{ inputs.SEPARATOR }}${{ inputs.BW_VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}${{ inputs.PACKAGE_ARCH }}.${{ inputs.PACKAGE }}
continue-on-error: true
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
+ - name: Remove existing package ubuntu-noble
+ if: inputs.LINUX == 'ubuntu-noble'
+ run: package_cloud yank bunkerity/${{ inputs.REPO }}/ubuntu/noble bunkerweb${{ inputs.SEPARATOR }}${{ inputs.BW_VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}${{ inputs.PACKAGE_ARCH }}.${{ inputs.PACKAGE }}
+ continue-on-error: true
+ env:
+ PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
# Update name
# - name: Rename package
# if: inputs.BW_VERSION == 'testing'
diff --git a/.github/workflows/ui.yml b/.github/workflows/ui.yml
index dd2a33a6f..fd4be55ff 100644
--- a/.github/workflows/ui.yml
+++ b/.github/workflows/ui.yml
@@ -63,13 +63,34 @@ jobs:
security-events: write
# UI tests
+ prepare-tests-ui:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
+ - id: set-matrix
+ run: |
+ tests=$(find ./tests/ui/ -name "*_page.py" -type f -printf "%f\n" | jq -c --raw-input --slurp 'split("\n")| .[0:-1]')
+ echo "tests=$tests" >> $GITHUB_OUTPUT
+ outputs:
+ tests: ${{ steps.set-matrix.outputs.tests }}
tests-ui:
- needs: [codeql, build-containers]
+ needs: [prepare-tests-ui, build-containers]
+ strategy:
+ fail-fast: false
+ matrix:
+ test: ${{ fromJson(needs.prepare-tests-ui.outputs.tests) }}
uses: ./.github/workflows/tests-ui.yml
with:
+ TEST: ${{ matrix.test }}
RELEASE: ui
tests-ui-linux:
- needs: [codeql, build-packages]
+ needs: [prepare-tests-ui, build-packages]
+ strategy:
+ fail-fast: false
+ matrix:
+ test: ${{ fromJson(needs.prepare-tests-ui.outputs.tests) }}
uses: ./.github/workflows/tests-ui-linux.yml
with:
+ TEST: ${{ matrix.test }}
RELEASE: ui
diff --git a/src/common/core/antibot/plugin.json b/src/common/core/antibot/plugin.json
index 1d7911ef3..600c8c063 100644
--- a/src/common/core/antibot/plugin.json
+++ b/src/common/core/antibot/plugin.json
@@ -32,6 +32,24 @@
"regex": "^\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*$",
"type": "text"
},
+ "ANTIBOT_TIME_RESOLVE": {
+ "context": "multisite",
+ "default": "60",
+ "help": "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated.",
+ "id": "antibot-time-resolve",
+ "label": "Time to resolve",
+ "regex": "^[0-9]+$",
+ "type": "text"
+ },
+ "ANTIBOT_TIME_VALID": {
+ "context": "multisite",
+ "default": "86400",
+ "help": "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one.",
+ "id": "antibot-time-valid",
+ "label": "Time valid",
+ "regex": "^[0-9]+$",
+ "type": "text"
+ },
"ANTIBOT_RECAPTCHA_SCORE": {
"context": "multisite",
"default": "0.7",
@@ -94,24 +112,6 @@
"label": "Turnstile secret",
"regex": "^(0x[\\w\\-]+)?$",
"type": "password"
- },
- "ANTIBOT_TIME_RESOLVE": {
- "context": "multisite",
- "default": "60",
- "help": "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated.",
- "id": "antibot-time-resolve",
- "label": "Time to resolve",
- "regex": "^[0-9]+$",
- "type": "text"
- },
- "ANTIBOT_TIME_VALID": {
- "context": "multisite",
- "default": "86400",
- "help": "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one.",
- "id": "antibot-time-valid",
- "label": "Time valid",
- "regex": "^[0-9]+$",
- "type": "text"
}
}
}
diff --git a/src/common/core/backup/plugin.json b/src/common/core/backup/plugin.json
index 62ff5f0e9..a6a3942fb 100644
--- a/src/common/core/backup/plugin.json
+++ b/src/common/core/backup/plugin.json
@@ -14,19 +14,10 @@
"regex": "^(yes|no)$",
"type": "check"
},
- "BACKUP_DIRECTORY": {
- "context": "global",
- "default": "/var/lib/bunkerweb/backups",
- "help": "The directory where the backup will be stored",
- "id": "backup-directory",
- "label": "Backup directory",
- "regex": "^.*$",
- "type": "text"
- },
"BACKUP_SCHEDULE": {
"context": "global",
"default": "daily",
- "help": "The frequency of the backup",
+ "help": "The frequency of the backup (daily, weekly or monthly)",
"id": "backup-schedule",
"label": "Backup schedule",
"regex": "^(daily|weekly|monthly)$",
@@ -41,6 +32,15 @@
"label": "Backup rotation",
"regex": "^[1-9][0-9]*$",
"type": "text"
+ },
+ "BACKUP_DIRECTORY": {
+ "context": "global",
+ "default": "/var/lib/bunkerweb/backups",
+ "help": "The directory where the backup will be stored",
+ "id": "backup-directory",
+ "label": "Backup directory",
+ "regex": "^.*$",
+ "type": "text"
}
},
"jobs": [
diff --git a/src/common/core/badbehavior/plugin.json b/src/common/core/badbehavior/plugin.json
index a7253374a..4d89103f5 100644
--- a/src/common/core/badbehavior/plugin.json
+++ b/src/common/core/badbehavior/plugin.json
@@ -23,15 +23,6 @@
"regex": "^( *([1-5]\\d{2})(?!.*\\2) *)+$",
"type": "text"
},
- "BAD_BEHAVIOR_BAN_TIME": {
- "context": "multisite",
- "default": "86400",
- "help": "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold.",
- "id": "bad-behavior-ban-time",
- "label": "Ban duration (in seconds)",
- "regex": "^\\d+",
- "type": "text"
- },
"BAD_BEHAVIOR_THRESHOLD": {
"context": "multisite",
"default": "10",
@@ -49,6 +40,15 @@
"label": "Period (in seconds)",
"regex": "^\\d+",
"type": "text"
+ },
+ "BAD_BEHAVIOR_BAN_TIME": {
+ "context": "multisite",
+ "default": "86400",
+ "help": "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold.",
+ "id": "bad-behavior-ban-time",
+ "label": "Ban duration (in seconds)",
+ "regex": "^\\d+",
+ "type": "text"
}
}
}
diff --git a/src/common/core/blacklist/plugin.json b/src/common/core/blacklist/plugin.json
index 5f7a68b32..f415e3e01 100644
--- a/src/common/core/blacklist/plugin.json
+++ b/src/common/core/blacklist/plugin.json
@@ -23,13 +23,13 @@
"regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$",
"type": "text"
},
- "BLACKLIST_IP_URLS": {
- "context": "global",
- "default": "https://www.dan.me.uk/torlist/?exit",
- "help": "List of URLs, separated with spaces, containing bad IP/network to block.",
- "id": "blacklist-ip-urls",
- "label": "Blacklist IP/network URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "BLACKLIST_RDNS": {
+ "context": "multisite",
+ "default": ".shodan.io .censys.io",
+ "help": "List of reverse DNS suffixes, separated with spaces, to block.",
+ "id": "blacklist-rdns",
+ "label": "Blacklist reverse DNS",
+ "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
"type": "text"
},
"BLACKLIST_RDNS_GLOBAL": {
@@ -41,24 +41,6 @@
"regex": "^(yes|no)$",
"type": "check"
},
- "BLACKLIST_RDNS": {
- "context": "multisite",
- "default": ".shodan.io .censys.io",
- "help": "List of reverse DNS suffixes, separated with spaces, to block.",
- "id": "blacklist-rdns",
- "label": "Blacklist reverse DNS",
- "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
- "type": "text"
- },
- "BLACKLIST_RDNS_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to block.",
- "id": "blacklist-rdns-urls",
- "label": "Blacklist reverse DNS URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_ASN": {
"context": "multisite",
"default": "",
@@ -68,15 +50,6 @@
"regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$",
"type": "text"
},
- "BLACKLIST_ASN_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing ASN to block.",
- "id": "blacklist-asn-urls",
- "label": "Blacklist ASN URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_USER_AGENT": {
"context": "multisite",
"default": "",
@@ -86,15 +59,6 @@
"regex": "^.*$",
"type": "text"
},
- "BLACKLIST_USER_AGENT_URLS": {
- "context": "global",
- "default": "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list",
- "help": "List of URLs, separated with spaces, containing bad User-Agent to block.",
- "id": "blacklist-user-agent-urls",
- "label": "Blacklist User-Agent URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_URI": {
"context": "multisite",
"default": "",
@@ -104,15 +68,6 @@
"regex": "^( *(.*)(?!.*\\2(?!.)) *)*$",
"type": "text"
},
- "BLACKLIST_URI_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing bad URI to block.",
- "id": "blacklist-uri-urls",
- "label": "Blacklist URI URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_IGNORE_IP": {
"context": "multisite",
"default": "",
@@ -122,15 +77,6 @@
"regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$",
"type": "text"
},
- "BLACKLIST_IGNORE_IP_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist.",
- "id": "blacklist-ignore-ip-urls",
- "label": "Blacklist ignore IP/network URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_IGNORE_RDNS": {
"context": "multisite",
"default": "",
@@ -140,15 +86,6 @@
"regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
"type": "text"
},
- "BLACKLIST_IGNORE_RDNS_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist.",
- "id": "blacklist-ignore-rdns-urls",
- "label": "Blacklist ignore reverse DNS URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_IGNORE_ASN": {
"context": "multisite",
"default": "",
@@ -158,15 +95,6 @@
"regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$",
"type": "text"
},
- "BLACKLIST_IGNORE_ASN_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing ASN to ignore in the blacklist.",
- "id": "blacklist-ignore-asn-urls",
- "label": "Blacklist ignore ASN URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_IGNORE_USER_AGENT": {
"context": "multisite",
"default": "",
@@ -176,15 +104,6 @@
"regex": "^.*$",
"type": "text"
},
- "BLACKLIST_IGNORE_USER_AGENT_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist.",
- "id": "blacklist-ignore-user-agent-urls",
- "label": "Blacklist ignore User-Agent URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"BLACKLIST_IGNORE_URI": {
"context": "multisite",
"default": "",
@@ -194,6 +113,87 @@
"regex": "^( *(.*)(?!.*\\2(?!.)) *)*$",
"type": "text"
},
+ "BLACKLIST_IP_URLS": {
+ "context": "global",
+ "default": "https://www.dan.me.uk/torlist/?exit",
+ "help": "List of URLs, separated with spaces, containing bad IP/network to block.",
+ "id": "blacklist-ip-urls",
+ "label": "Blacklist IP/network URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_RDNS_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to block.",
+ "id": "blacklist-rdns-urls",
+ "label": "Blacklist reverse DNS URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_ASN_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing ASN to block.",
+ "id": "blacklist-asn-urls",
+ "label": "Blacklist ASN URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_USER_AGENT_URLS": {
+ "context": "global",
+ "default": "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list",
+ "help": "List of URLs, separated with spaces, containing bad User-Agent to block.",
+ "id": "blacklist-user-agent-urls",
+ "label": "Blacklist User-Agent URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_URI_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing bad URI to block.",
+ "id": "blacklist-uri-urls",
+ "label": "Blacklist URI URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_IGNORE_IP_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist.",
+ "id": "blacklist-ignore-ip-urls",
+ "label": "Blacklist ignore IP/network URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_IGNORE_RDNS_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist.",
+ "id": "blacklist-ignore-rdns-urls",
+ "label": "Blacklist ignore reverse DNS URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_IGNORE_ASN_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing ASN to ignore in the blacklist.",
+ "id": "blacklist-ignore-asn-urls",
+ "label": "Blacklist ignore ASN URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "BLACKLIST_IGNORE_USER_AGENT_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist.",
+ "id": "blacklist-ignore-user-agent-urls",
+ "label": "Blacklist ignore User-Agent URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
"BLACKLIST_IGNORE_URI_URLS": {
"context": "global",
"default": "",
diff --git a/src/common/core/cors/plugin.json b/src/common/core/cors/plugin.json
index c00fe3661..c1cfb61bf 100644
--- a/src/common/core/cors/plugin.json
+++ b/src/common/core/cors/plugin.json
@@ -23,6 +23,33 @@
"regex": "^.*$",
"type": "text"
},
+ "CORS_ALLOW_METHODS": {
+ "context": "multisite",
+ "default": "GET, POST, OPTIONS",
+ "help": "Value of the Access-Control-Allow-Methods header.",
+ "id": "cors-allow-methods",
+ "label": "Access-Control-Allow-Methods value",
+ "regex": "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$",
+ "type": "text"
+ },
+ "CORS_ALLOW_HEADERS": {
+ "context": "multisite",
+ "default": "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range",
+ "help": "Value of the Access-Control-Allow-Headers header.",
+ "id": "cors-allow-headers",
+ "label": "Access-Control-Allow-Headers value",
+ "regex": "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$",
+ "type": "text"
+ },
+ "CORS_ALLOW_CREDENTIALS": {
+ "context": "multisite",
+ "default": "no",
+ "help": "Send the Access-Control-Allow-Credentials header.",
+ "id": "cors-allow-credentials",
+ "label": "Send Access-Control-Allow-Credentials",
+ "regex": "^(yes|no)$",
+ "type": "check"
+ },
"CORS_EXPOSE_HEADERS": {
"context": "multisite",
"default": "Content-Length,Content-Range",
@@ -71,33 +98,6 @@
"regex": "^\\d+$",
"type": "text"
},
- "CORS_ALLOW_CREDENTIALS": {
- "context": "multisite",
- "default": "no",
- "help": "Send the Access-Control-Allow-Credentials header.",
- "id": "cors-allow-credentials",
- "label": "Send Access-Control-Allow-Credentials",
- "regex": "^(yes|no)$",
- "type": "check"
- },
- "CORS_ALLOW_METHODS": {
- "context": "multisite",
- "default": "GET, POST, OPTIONS",
- "help": "Value of the Access-Control-Allow-Methods header.",
- "id": "cors-allow-methods",
- "label": "Access-Control-Allow-Methods value",
- "regex": "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$",
- "type": "text"
- },
- "CORS_ALLOW_HEADERS": {
- "context": "multisite",
- "default": "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range",
- "help": "Value of the Access-Control-Allow-Headers header.",
- "id": "cors-allow-headers",
- "label": "Access-Control-Allow-Headers value",
- "regex": "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$",
- "type": "text"
- },
"CORS_DENY_REQUEST": {
"context": "multisite",
"default": "yes",
diff --git a/src/common/core/greylist/plugin.json b/src/common/core/greylist/plugin.json
index bda64f741..38e5dd5ea 100644
--- a/src/common/core/greylist/plugin.json
+++ b/src/common/core/greylist/plugin.json
@@ -23,13 +23,13 @@
"regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$",
"type": "text"
},
- "GREYLIST_IP_URLS": {
- "context": "global",
+ "GREYLIST_RDNS": {
+ "context": "multisite",
"default": "",
- "help": "List of URLs, separated with spaces, containing good IP/network to put into the greylist.",
- "id": "greylist-ip-urls",
- "label": "Greylist IP/network URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "help": "List of reverse DNS suffixes, separated with spaces, to put into the greylist.",
+ "id": "greylist-rdns",
+ "label": "Greylist reverse DNS",
+ "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
"type": "text"
},
"GREYLIST_RDNS_GLOBAL": {
@@ -41,24 +41,6 @@
"regex": "^(yes|no)$",
"type": "check"
},
- "GREYLIST_RDNS": {
- "context": "multisite",
- "default": "",
- "help": "List of reverse DNS suffixes, separated with spaces, to put into the greylist.",
- "id": "greylist-rdns",
- "label": "Greylist reverse DNS",
- "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
- "type": "text"
- },
- "GREYLIST_RDNS_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.",
- "id": "greylist-rdns-urls",
- "label": "Greylist reverse DNS URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"GREYLIST_ASN": {
"context": "multisite",
"default": "",
@@ -68,15 +50,6 @@
"regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$",
"type": "text"
},
- "GREYLIST_ASN_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing ASN to put into the greylist.",
- "id": "greylist-asn-urls",
- "label": "Greylist ASN URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"GREYLIST_USER_AGENT": {
"context": "multisite",
"default": "",
@@ -86,15 +59,6 @@
"regex": "^.*$",
"type": "text"
},
- "GREYLIST_USER_AGENT_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.",
- "id": "greylist-user-agent-urls",
- "label": "Greylist User-Agent URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"GREYLIST_URI": {
"context": "multisite",
"default": "",
@@ -104,6 +68,42 @@
"regex": "^.*$",
"type": "text"
},
+ "GREYLIST_IP_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing good IP/network to put into the greylist.",
+ "id": "greylist-ip-urls",
+ "label": "Greylist IP/network URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "GREYLIST_RDNS_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.",
+ "id": "greylist-rdns-urls",
+ "label": "Greylist reverse DNS URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "GREYLIST_ASN_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing ASN to put into the greylist.",
+ "id": "greylist-asn-urls",
+ "label": "Greylist ASN URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "GREYLIST_USER_AGENT_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.",
+ "id": "greylist-user-agent-urls",
+ "label": "Greylist User-Agent URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
"GREYLIST_URI_URLS": {
"context": "global",
"default": "",
diff --git a/src/common/core/realip/plugin.json b/src/common/core/realip/plugin.json
index 86f842078..667a9ab43 100644
--- a/src/common/core/realip/plugin.json
+++ b/src/common/core/realip/plugin.json
@@ -32,15 +32,6 @@
"regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$",
"type": "text"
},
- "REAL_IP_FROM_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.",
- "id": "real-ip-from-urls",
- "label": "Real IP from URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"REAL_IP_HEADER": {
"context": "multisite",
"default": "X-Forwarded-For",
@@ -58,6 +49,15 @@
"label": "Real IP recursive",
"regex": "^(yes|no)$",
"type": "check"
+ },
+ "REAL_IP_FROM_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.",
+ "id": "real-ip-from-urls",
+ "label": "Real IP from URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
}
},
"jobs": [
diff --git a/src/common/core/redis/plugin.json b/src/common/core/redis/plugin.json
index 28d0acc86..ee39a4370 100644
--- a/src/common/core/redis/plugin.json
+++ b/src/common/core/redis/plugin.json
@@ -68,24 +68,6 @@
"regex": "^[0-9]+$",
"type": "text"
},
- "REDIS_KEEPALIVE_IDLE": {
- "context": "global",
- "default": "30000",
- "help": "Max idle time (in ms) before closing redis connection in the pool.",
- "id": "redis-keepalive-idle",
- "label": "Redis keepalive idle (ms)",
- "regex": "^[0-9]+$",
- "type": "text"
- },
- "REDIS_KEEPALIVE_POOL": {
- "context": "global",
- "default": "10",
- "help": "Max number of redis connection(s) kept in the pool.",
- "id": "redis-keepalive-pool",
- "label": "Redis keepalive pool",
- "regex": "^[0-9]+$",
- "type": "text"
- },
"REDIS_USERNAME": {
"context": "global",
"default": "",
@@ -139,6 +121,24 @@
"label": "Redis sentinel master",
"regex": "^.*$",
"type": "text"
+ },
+ "REDIS_KEEPALIVE_IDLE": {
+ "context": "global",
+ "default": "30000",
+ "help": "Max idle time (in ms) before closing redis connection in the pool.",
+ "id": "redis-keepalive-idle",
+ "label": "Redis keepalive idle (ms)",
+ "regex": "^[0-9]+$",
+ "type": "text"
+ },
+ "REDIS_KEEPALIVE_POOL": {
+ "context": "global",
+ "default": "10",
+ "help": "Max number of redis connection(s) kept in the pool.",
+ "id": "redis-keepalive-pool",
+ "label": "Redis keepalive pool",
+ "regex": "^[0-9]+$",
+ "type": "text"
}
}
}
diff --git a/src/common/core/reverseproxy/plugin.json b/src/common/core/reverseproxy/plugin.json
index eac974aed..a93ec5c65 100644
--- a/src/common/core/reverseproxy/plugin.json
+++ b/src/common/core/reverseproxy/plugin.json
@@ -23,6 +23,15 @@
"regex": "^(yes|no)$",
"type": "check"
},
+ "REVERSE_PROXY_CUSTOM_HOST": {
+ "context": "multisite",
+ "default": "",
+ "help": "Override Host header sent to upstream server.",
+ "id": "reverse-proxy-custom-host",
+ "label": "Reverse proxy custom host",
+ "regex": "^.*$",
+ "type": "text"
+ },
"REVERSE_PROXY_HOST": {
"context": "multisite",
"default": "",
@@ -123,6 +132,46 @@
"type": "text",
"multiple": "reverse-proxy"
},
+ "REVERSE_PROXY_CONNECT_TIMEOUT": {
+ "context": "multisite",
+ "default": "60s",
+ "help": "Timeout when connecting to the proxied resource.",
+ "id": "reverse-proxy-connect-timeout",
+ "label": "Reverse proxy connect timeout",
+ "regex": "^\\d+(ms?|[shdwMy])$",
+ "type": "text",
+ "multiple": "reverse-proxy"
+ },
+ "REVERSE_PROXY_READ_TIMEOUT": {
+ "context": "multisite",
+ "default": "60s",
+ "help": "Timeout when reading from the proxied resource.",
+ "id": "reverse-proxy-read-timeout",
+ "label": "Reverse proxy read timeout",
+ "regex": "^\\d+(ms?|[shdwMy])$",
+ "type": "text",
+ "multiple": "reverse-proxy"
+ },
+ "REVERSE_PROXY_SEND_TIMEOUT": {
+ "context": "multisite",
+ "default": "60s",
+ "help": "Timeout when sending to the proxied resource.",
+ "id": "reverse-proxy-send-timeout",
+ "label": "Reverse proxy send timeout",
+ "regex": "^\\d+(ms?|[shdwMy])$",
+ "type": "text",
+ "multiple": "reverse-proxy"
+ },
+ "REVERSE_PROXY_INCLUDES": {
+ "context": "multisite",
+ "default": "",
+ "help": "Additional configuration to include in the location block, separated with spaces.",
+ "id": "reverse-proxy-includes",
+ "label": "Reverse proxy includes",
+ "regex": "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$",
+ "type": "text",
+ "multiple": "reverse-proxy"
+ },
"USE_PROXY_CACHE": {
"context": "multisite",
"default": "no",
@@ -212,55 +261,6 @@
"label": "Reverse proxy bypass",
"regex": "^.*$",
"type": "text"
- },
- "REVERSE_PROXY_CONNECT_TIMEOUT": {
- "context": "multisite",
- "default": "60s",
- "help": "Timeout when connecting to the proxied resource.",
- "id": "reverse-proxy-connect-timeout",
- "label": "Reverse proxy connect timeout",
- "regex": "^\\d+(ms?|[shdwMy])$",
- "type": "text",
- "multiple": "reverse-proxy"
- },
- "REVERSE_PROXY_READ_TIMEOUT": {
- "context": "multisite",
- "default": "60s",
- "help": "Timeout when reading from the proxied resource.",
- "id": "reverse-proxy-read-timeout",
- "label": "Reverse proxy read timeout",
- "regex": "^\\d+(ms?|[shdwMy])$",
- "type": "text",
- "multiple": "reverse-proxy"
- },
- "REVERSE_PROXY_SEND_TIMEOUT": {
- "context": "multisite",
- "default": "60s",
- "help": "Timeout when sending to the proxied resource.",
- "id": "reverse-proxy-send-timeout",
- "label": "Reverse proxy send timeout",
- "regex": "^\\d+(ms?|[shdwMy])$",
- "type": "text",
- "multiple": "reverse-proxy"
- },
- "REVERSE_PROXY_INCLUDES": {
- "context": "multisite",
- "default": "",
- "help": "Additional configuration to include in the location block, separated with spaces.",
- "id": "reverse-proxy-includes",
- "label": "Reverse proxy includes",
- "regex": "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$",
- "type": "text",
- "multiple": "reverse-proxy"
- },
- "REVERSE_PROXY_CUSTOM_HOST": {
- "context": "multisite",
- "default": "",
- "help": "Override Host header sent to upstream server.",
- "id": "reverse-proxy-custom-host",
- "label": "Reverse proxy custom host",
- "regex": "^.*$",
- "type": "text"
}
}
}
diff --git a/src/common/core/whitelist/plugin.json b/src/common/core/whitelist/plugin.json
index 4c2433676..c3020783b 100644
--- a/src/common/core/whitelist/plugin.json
+++ b/src/common/core/whitelist/plugin.json
@@ -23,13 +23,13 @@
"regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$",
"type": "text"
},
- "WHITELIST_IP_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing good IP/network to whitelist.",
- "id": "whitelist-ip-urls",
- "label": "Whitelist IP/network URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "WHITELIST_RDNS": {
+ "context": "multisite",
+ "default": ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com",
+ "help": "List of reverse DNS suffixes, separated with spaces, to whitelist.",
+ "id": "whitelist-rdns",
+ "label": "Whitelist reverse DNS",
+ "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
"type": "text"
},
"WHITELIST_RDNS_GLOBAL": {
@@ -41,24 +41,6 @@
"regex": "^(yes|no)$",
"type": "check"
},
- "WHITELIST_RDNS": {
- "context": "multisite",
- "default": ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com",
- "help": "List of reverse DNS suffixes, separated with spaces, to whitelist.",
- "id": "whitelist-rdns",
- "label": "Whitelist reverse DNS",
- "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$",
- "type": "text"
- },
- "WHITELIST_RDNS_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.",
- "id": "whitelist-rdns-urls",
- "label": "Whitelist reverse DNS URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"WHITELIST_ASN": {
"context": "multisite",
"default": "32934",
@@ -68,15 +50,6 @@
"regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$",
"type": "text"
},
- "WHITELIST_ASN_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing ASN to whitelist.",
- "id": "whitelist-asn-urls",
- "label": "Whitelist ASN URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"WHITELIST_USER_AGENT": {
"context": "multisite",
"default": "",
@@ -86,15 +59,6 @@
"regex": "^.*$",
"type": "text"
},
- "WHITELIST_USER_AGENT_URLS": {
- "context": "global",
- "default": "",
- "help": "List of URLs, separated with spaces, containing good User-Agent to whitelist.",
- "id": "whitelist-user-agent-urls",
- "label": "Whitelist User-Agent URLs",
- "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
- "type": "text"
- },
"WHITELIST_URI": {
"context": "multisite",
"default": "",
@@ -104,6 +68,42 @@
"regex": "^( *(.*)(?!.*\\2(?!.)) *)*$",
"type": "text"
},
+ "WHITELIST_IP_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing good IP/network to whitelist.",
+ "id": "whitelist-ip-urls",
+ "label": "Whitelist IP/network URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "WHITELIST_RDNS_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.",
+ "id": "whitelist-rdns-urls",
+ "label": "Whitelist reverse DNS URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "WHITELIST_ASN_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing ASN to whitelist.",
+ "id": "whitelist-asn-urls",
+ "label": "Whitelist ASN URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
+ "WHITELIST_USER_AGENT_URLS": {
+ "context": "global",
+ "default": "",
+ "help": "List of URLs, separated with spaces, containing good User-Agent to whitelist.",
+ "id": "whitelist-user-agent-urls",
+ "label": "Whitelist User-Agent URLs",
+ "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$",
+ "type": "text"
+ },
"WHITELIST_URI_URLS": {
"context": "global",
"default": "",
diff --git a/src/common/templates/high.json b/src/common/templates/high.json
index c91cf1652..5b299cbb4 100644
--- a/src/common/templates/high.json
+++ b/src/common/templates/high.json
@@ -1,129 +1,129 @@
{
- "name": "medium",
- "description": "Generic settings template with high security level required for your web service. False positives will certainly appear without any custom edit.",
- "steps": [
+ "name": "medium",
+ "description": "Generic settings template with high security level required for your web service. False positives will certainly appear without any custom edit.",
+ "steps": [
+ {
+ "name": "Server configuration",
+ "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
+ "settings": {
+ "SERVER_NAME": "www.example.com",
+ "USE_REVERSE_PROXY": "yes",
+ "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
+ "REVERSE_PROXY_URL": "/",
+ "REVERSE_PROXY_INTERCEPT_ERRORS": "yes",
+ "REVERSE_PROXY_WS": "no",
+ "REVERSE_PROXY_CUSTOM_HOST": "",
+ "REVERSE_PROXY_HEADERS": "Accept-Encoding ''",
+ "SERVE_FILES": "no"
+ }
+ },
+ {
+ "name": "HTTPS",
+ "description": "Enable/disable and configure HTTPS for your service.",
+ "settings": {
+ "AUTO_LETS_ENCRYPT": "yes",
+ "SSL_PROTOCOLS": "TLSv1.3"
+ }
+ },
+ {
+ "name": "HTTP configuration",
+ "description": "Miscellaneous settings related to HTTP protocol.",
+ "settings": {
+ "DENY_HTTP_STATUS": "444",
+ "USE_GZIP": "yes",
+ "USE_BROTLI": "yes",
+ "ALLOWED_METHODS": "GET|POST|HEAD",
+ "MAX_SIZES": "10m",
+ "COOKIE_FLAGS": "* HttpOnly SameSite=Lax",
+ "CONTENT_SECURITY_POLICY": "object-src 'none'; form-action 'self'; frame-ancestors 'self';",
+ "X_FRAME_OPTIONS": "SAMEORIGIN",
+ "PERMISSIONS_POLICY": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()",
+ "FEATURE_POLICY": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';"
+ }
+ },
+ {
+ "name": "Bad behavior",
+ "description": "Configure automatic bans when detecting bad behaviors on your web service.",
+ "settings": {
+ "USE_BAD_BEHAVIOR": "yes",
+ "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 404 405 429 444",
+ "BAD_BEHAVIOR_BAN_TIME": "86400",
+ "BAD_BEHAVIOR_THRESHOLD": "5",
+ "BAD_BEHAVIOR_COUNT_TIME": "60"
+ }
+ },
+ {
+ "name": "Limit",
+ "description": "Configure requests and connections limits on your web service.",
+ "settings": {
+ "USE_LIMIT_CONN": "yes",
+ "LIMIT_CONN_MAX_HTTP1": "10",
+ "LIMIT_CONN_MAX_HTTP2": "100",
+ "USE_LIMIT_REQ": "yes",
+ "LIMIT_REQ_URL": "/",
+ "LIMIT_REQ_RATE": "2r/s"
+ }
+ },
+ {
+ "name": "DNSBL",
+ "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
+ "settings": {
+ "USE_DNSBL": "yes"
+ }
+ },
+ {
+ "name": "Country",
+ "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
+ "settings": {
+ "WHITELIST_COUNTRY": ""
+ }
+ },
+ {
+ "name": "Antibot",
+ "description": "Enable/disable and configure antibot protection globally on your web service.",
+ "settings": {
+ "USE_ANTIBOT": "captcha",
+ "ANTIBOT_TIME_RESOLVE": "120",
+ "ANTIBOT_TIME_VALID": "86400",
+ "ANTIBOT_RECAPTCHA_SCORE": "0.7",
+ "ANTIBOT_RECAPTCHA_SITEKEY": "",
+ "ANTIBOT_RECAPTCHA_SECRET": "",
+ "ANTIBOT_HCAPTCHA_SITEKEY": "",
+ "ANTIBOT_HCAPTCHA_SECRET": "",
+ "ANTIBOT_TURNSTILE_SITEKEY": "",
+ "ANTIBOT_TURNSTILE_SECRET": ""
+ }
+ },
+ {
+ "name": "CORS",
+ "description": "Configure Cross-Origin Resource Sharing (CORS) to allow/deny external requests to your web service.",
+ "settings": {
+ "USE_CORS": "yes",
+ "CORS_ALLOW_ORIGIN": ""
+ }
+ },
+ {
+ "name": "Reverse scan",
+ "description": "Configure reverse scan of client to detect open proxy or datacenter connections.",
+ "settings": {
+ "USE_REVERSE_SCAN": "yes",
+ "REVERSE_SCAN_PORTS": "22 80 443 3128 8000 8080"
+ }
+ },
+ {
+ "name": "ModSecurity",
+ "description": "Enable/disable and configure ModSecurity on your web service.",
+ "settings": {
+ "USE_MODSECURITY": "yes",
+ "MODSECURITY_CRS_VERSION": "4"
+ },
+ "configs": [
{
- "name": "Server configuration",
- "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
- "settings": {
- "SERVER_NAME": "www.example.com",
- "USE_REVERSE_PROXY": "yes",
- "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
- "REVERSE_PROXY_URL": "/",
- "REVERSE_PROXY_INTERCEPT_ERRORS": "yes",
- "REVERSE_PROXY_WS": "no",
- "REVERSE_PROXY_CUSTOM_HOST": "",
- "REVERSE_PROXY_HEADERS": "Accept-Encoding ''",
- "SERVE_FILES": "no"
- }
- },
- {
- "name": "HTTPS",
- "description": "Enable/disable and configure HTTPS for your service.",
- "settings": {
- "AUTO_LETS_ENCRYPT": "yes",
- "SSL_PROTOCOLS": "TLSv1.3"
- }
- },
- {
- "name": "HTTP configuration",
- "description": "Miscellaneous settings related to HTTP protocol.",
- "settings": {
- "DENY_HTTP_STATUS": "444",
- "USE_GZIP": "yes",
- "USE_BROTLI": "yes",
- "ALLOWED_METHODS": "GET|POST|HEAD",
- "MAX_SIZES": "10m",
- "COOKIE_FLAGS": "* HttpOnly SameSite=Lax",
- "CONTENT_SECURITY_POLICY": "object-src 'none'; form-action 'self'; frame-ancestors 'self';",
- "X_FRAME_OPTIONS": "SAMEORIGIN",
- "PERMISSIONS_POLICY": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()",
- "FEATURE_POLICY": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';"
- }
- },
- {
- "name": "Bad behavior",
- "description": "Configure automatic bans when detecting bad behaviors on your web service.",
- "settings": {
- "USE_BAD_BEHAVIOR": "yes",
- "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 404 405 429 444",
- "BAD_BEHAVIOR_BAN_TIME": "86400",
- "BAD_BEHAVIOR_THRESHOLD": "5",
- "BAD_BEHAVIOR_COUNT_TIME": "60"
- }
- },
- {
- "name": "Limit",
- "description": "Configure requests and connections limits on your web service.",
- "settings": {
- "USE_LIMIT_CONN": "yes",
- "LIMIT_CONN_MAX_HTTP1": "10",
- "LIMIT_CONN_MAX_HTTP2": "100",
- "USE_LIMIT_REQ": "yes",
- "LIMIT_REQ_URL": "/",
- "LIMIT_REQ_RATE": "2r/s"
- }
- },
- {
- "name": "DNSBL",
- "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
- "settings": {
- "USE_DNSBL": "yes"
- }
- },
- {
- "name": "Country",
- "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
- "settings": {
- "WHITELIST_COUNTRY": ""
- }
- },
- {
- "name": "Antibot",
- "description": "Enable/disable and configure antibot protection globally on your web service.",
- "settings": {
- "USE_ANTIBOT": "captcha",
- "ANTIBOT_TIME_RESOLVE": "120",
- "ANTIBOT_TIME_VALID": "86400",
- "ANTIBOT_RECAPTCHA_SCORE": "0.7",
- "ANTIBOT_RECAPTCHA_SITEKEY": "",
- "ANTIBOT_RECAPTCHA_SECRET": "",
- "ANTIBOT_HCAPTCHA_SITEKEY": "",
- "ANTIBOT_HCAPTCHA_SECRET": "",
- "ANTIBOT_TURNSTILE_SITEKEY": "",
- "ANTIBOT_TURNSTILE_SECRET": ""
- }
- },
- {
- "name": "CORS",
- "description": "Configure Cross-Origin Resource Sharing (CORS) to allow/deny external requests to your web service.",
- "settings": {
- "USE_CORS": "yes",
- "CORS_ALLOW_ORIGIN": ""
- }
- },
- {
- "name": "Reverse scan",
- "description": "Configure reverse scan of client to detect open proxy or datacenter connections.",
- "settings": {
- "USE_REVERSE_SCAN": "yes",
- "REVERSE_SCAN_PORTS": "22 80 443 3128 8000 8080"
- }
- },
- {
- "name": "ModSecurity",
- "description": "Enable/disable and configure ModSecurity on your web service.",
- "settings": {
- "USE_MODSECURITY": "yes",
- "MODSECURITY_CRS_VERSION": "4"
- },
- "configs": [
- {
- "name": "template-high",
- "type": "modsec-crs",
- "data": "SecAction \"id:900000,phase:1,pass,t:none,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.2.0',setvar:tx.blocking_paranoia_level=4\""
- }
- ]
+ "name": "template-high",
+ "type": "modsec-crs",
+ "data": "SecAction \"id:900000,phase:1,pass,t:none,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.2.0',setvar:tx.blocking_paranoia_level=4\""
}
- ]
-}
\ No newline at end of file
+ ]
+ }
+ ]
+}
diff --git a/src/common/templates/low.json b/src/common/templates/low.json
index 313919490..e077f89ac 100644
--- a/src/common/templates/low.json
+++ b/src/common/templates/low.json
@@ -1,111 +1,111 @@
{
- "name": "low",
- "description": "Generic settings template with low security level to avoid false positives and get started with BunkerWeb.",
- "steps": [
+ "name": "low",
+ "description": "Generic settings template with low security level to avoid false positives and get started with BunkerWeb.",
+ "steps": [
+ {
+ "name": "Server configuration",
+ "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
+ "settings": {
+ "SERVER_NAME": "www.example.com",
+ "USE_REVERSE_PROXY": "yes",
+ "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
+ "REVERSE_PROXY_URL": "/",
+ "REVERSE_PROXY_INTERCEPT_ERRORS": "no",
+ "REVERSE_PROXY_WS": "yes",
+ "REVERSE_PROXY_CUSTOM_HOST": "",
+ "REVERSE_PROXY_HEADERS": "Accept-Encoding ''"
+ }
+ },
+ {
+ "name": "HTTPS",
+ "description": "Enable/disable HTTPS for your service.",
+ "settings": {
+ "AUTO_LETS_ENCRYPT": "yes"
+ }
+ },
+ {
+ "name": "HTTP configuration",
+ "description": "Miscellaneous settings related to HTTP protocol.",
+ "settings": {
+ "USE_GZIP": "yes",
+ "USE_BROTLI": "yes",
+ "ALLOWED_METHODS": "GET|POST|HEAD|PUT|PATCH|OPTIONS|DELETE",
+ "MAX_SIZES": "50m",
+ "COOKIE_FLAGS": "* SameSite=Lax",
+ "CONTENT_SECURITY_POLICY": "",
+ "X_FRAME_OPTIONS": "",
+ "PERMISSIONS_POLICY": "",
+ "FEATURE_POLICY": "",
+ "KEEP_UPSTREAM_HEADERS": "*"
+ }
+ },
+ {
+ "name": "Bad behavior",
+ "description": "Configure automatic bans when detecting bad behaviors on your web service.",
+ "settings": {
+ "USE_BAD_BEHAVIOR": "yes",
+ "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 405 429 444",
+ "BAD_BEHAVIOR_BAN_TIME": "3600",
+ "BAD_BEHAVIOR_THRESHOLD": "20",
+ "BAD_BEHAVIOR_COUNT_TIME": "60"
+ }
+ },
+ {
+ "name": "Limit",
+ "description": "Configure requests and connections limits on your web service.",
+ "settings": {
+ "USE_LIMIT_CONN": "yes",
+ "LIMIT_CONN_MAX_HTTP1": 20,
+ "LIMIT_CONN_MAX_HTTP2": 200,
+ "USE_LIMIT_REQ": "yes",
+ "LIMIT_REQ_URL": "/",
+ "LIMIT_REQ_RATE": "5r/s"
+ }
+ },
+ {
+ "name": "DNSBL",
+ "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
+ "settings": {
+ "USE_DNSBL": "no"
+ }
+ },
+ {
+ "name": "Country",
+ "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
+ "settings": {
+ "WHITELIST_COUNTRY": ""
+ }
+ },
+ {
+ "name": "Antibot",
+ "description": "Enable/disable and configure antibot protection globally on your web service.",
+ "settings": {
+ "USE_ANTIBOT": "no",
+ "ANTIBOT_TIME_RESOLVE": "120",
+ "ANTIBOT_TIME_VALID": "86400",
+ "ANTIBOT_RECAPTCHA_SCORE": "0.7",
+ "ANTIBOT_RECAPTCHA_SITEKEY": "",
+ "ANTIBOT_RECAPTCHA_SECRET": "",
+ "ANTIBOT_HCAPTCHA_SITEKEY": "",
+ "ANTIBOT_HCAPTCHA_SECRET": "",
+ "ANTIBOT_TURNSTILE_SITEKEY": "",
+ "ANTIBOT_TURNSTILE_SECRET": ""
+ }
+ },
+ {
+ "name": "ModSecurity",
+ "description": "Enable/disable and configure ModSecurity on your web service.",
+ "settings": {
+ "USE_MODSECURITY": "yes"
+ },
+ "configs": [
{
- "name": "Server configuration",
- "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
- "settings": {
- "SERVER_NAME": "www.example.com",
- "USE_REVERSE_PROXY": "yes",
- "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
- "REVERSE_PROXY_URL": "/",
- "REVERSE_PROXY_INTERCEPT_ERRORS": "no",
- "REVERSE_PROXY_WS": "yes",
- "REVERSE_PROXY_CUSTOM_HOST": "",
- "REVERSE_PROXY_HEADERS": "Accept-Encoding ''"
- }
- },
- {
- "name": "HTTPS",
- "description": "Enable/disable HTTPS for your service.",
- "settings": {
- "AUTO_LETS_ENCRYPT": "yes"
- }
- },
- {
- "name": "HTTP configuration",
- "description": "Miscellaneous settings related to HTTP protocol.",
- "settings": {
- "USE_GZIP": "yes",
- "USE_BROTLI": "yes",
- "ALLOWED_METHODS": "GET|POST|HEAD|PUT|PATCH|OPTIONS|DELETE",
- "MAX_SIZES": "50m",
- "COOKIE_FLAGS": "* SameSite=Lax",
- "CONTENT_SECURITY_POLICY": "",
- "X_FRAME_OPTIONS": "",
- "PERMISSIONS_POLICY": "",
- "FEATURE_POLICY": "",
- "KEEP_UPSTREAM_HEADERS": "*"
- }
- },
- {
- "name": "Bad behavior",
- "description": "Configure automatic bans when detecting bad behaviors on your web service.",
- "settings": {
- "USE_BAD_BEHAVIOR": "yes",
- "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 405 429 444",
- "BAD_BEHAVIOR_BAN_TIME": "3600",
- "BAD_BEHAVIOR_THRESHOLD": "20",
- "BAD_BEHAVIOR_COUNT_TIME": "60"
- }
- },
- {
- "name": "Limit",
- "description": "Configure requests and connections limits on your web service.",
- "settings": {
- "USE_LIMIT_CONN": "yes",
- "LIMIT_CONN_MAX_HTTP1": 20,
- "LIMIT_CONN_MAX_HTTP2": 200,
- "USE_LIMIT_REQ": "yes",
- "LIMIT_REQ_URL": "/",
- "LIMIT_REQ_RATE": "5r/s"
- }
- },
- {
- "name": "DNSBL",
- "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
- "settings": {
- "USE_DNSBL": "no"
- }
- },
- {
- "name": "Country",
- "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
- "settings": {
- "WHITELIST_COUNTRY": ""
- }
- },
- {
- "name": "Antibot",
- "description": "Enable/disable and configure antibot protection globally on your web service.",
- "settings": {
- "USE_ANTIBOT": "no",
- "ANTIBOT_TIME_RESOLVE": "120",
- "ANTIBOT_TIME_VALID": "86400",
- "ANTIBOT_RECAPTCHA_SCORE": "0.7",
- "ANTIBOT_RECAPTCHA_SITEKEY": "",
- "ANTIBOT_RECAPTCHA_SECRET": "",
- "ANTIBOT_HCAPTCHA_SITEKEY": "",
- "ANTIBOT_HCAPTCHA_SECRET": "",
- "ANTIBOT_TURNSTILE_SITEKEY": "",
- "ANTIBOT_TURNSTILE_SECRET": ""
- }
- },
- {
- "name": "ModSecurity",
- "description": "Enable/disable and configure ModSecurity on your web service.",
- "settings": {
- "USE_MODSECURITY": "yes"
- },
- "configs": [
- {
- "name": "template-low",
- "type": "modsec-crs",
- "description": "Override ModSecurity CRS settings.",
- "data": "SecAction \"id:900110,phase:1,nolog,pass,t:none,setvar:tx.inbound_anomaly_score_threshold=7,setvar:tx.outbound_anomaly_score_threshold=4\""
- }
- ]
+ "name": "template-low",
+ "type": "modsec-crs",
+ "description": "Override ModSecurity CRS settings.",
+ "data": "SecAction \"id:900110,phase:1,nolog,pass,t:none,setvar:tx.inbound_anomaly_score_threshold=7,setvar:tx.outbound_anomaly_score_threshold=4\""
}
- ]
-}
\ No newline at end of file
+ ]
+ }
+ ]
+}
diff --git a/src/common/templates/medium.json b/src/common/templates/medium.json
index 40d7cf552..b9bb90f97 100644
--- a/src/common/templates/medium.json
+++ b/src/common/templates/medium.json
@@ -1,110 +1,110 @@
{
- "name": "medium",
- "description": "Generic settings template with medium security level aimed for average web service in production. False positives may appear depending on your environment.",
- "steps": [
- {
- "name": "Server configuration",
- "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
- "settings": {
- "SERVER_NAME": "www.example.com",
- "USE_REVERSE_PROXY": "yes",
- "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
- "REVERSE_PROXY_URL": "/",
- "REVERSE_PROXY_INTERCEPT_ERRORS": "yes",
- "REVERSE_PROXY_WS": "no",
- "REVERSE_PROXY_CUSTOM_HOST": "",
- "REVERSE_PROXY_HEADERS": "Accept-Encoding ''"
- }
- },
- {
- "name": "HTTPS",
- "description": "Enable/disable HTTPS for your service.",
- "settings": {
- "AUTO_LETS_ENCRYPT": "yes"
- }
- },
- {
- "name": "HTTP configuration",
- "description": "Miscellaneous settings related to HTTP protocol.",
- "settings": {
- "USE_GZIP": "yes",
- "USE_BROTLI": "yes",
- "ALLOWED_METHODS": "GET|POST|HEAD",
- "MAX_SIZES": "10m",
- "COOKIE_FLAGS": "* HttpOnly SameSite=Lax",
- "CONTENT_SECURITY_POLICY": "object-src 'none'; form-action 'self'; frame-ancestors 'self';",
- "X_FRAME_OPTIONS": "SAMEORIGIN",
- "PERMISSIONS_POLICY": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()",
- "FEATURE_POLICY": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';"
- }
- },
- {
- "name": "Bad behavior",
- "description": "Configure automatic bans when detecting bad behaviors on your web service.",
- "settings": {
- "USE_BAD_BEHAVIOR": "yes",
- "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 404 405 429 444",
- "BAD_BEHAVIOR_BAN_TIME": "86400",
- "BAD_BEHAVIOR_THRESHOLD": "10",
- "BAD_BEHAVIOR_COUNT_TIME": "60"
- }
- },
- {
- "name": "Limit",
- "description": "Configure requests and connections limits on your web service.",
- "settings": {
- "USE_LIMIT_CONN": "yes",
- "LIMIT_CONN_MAX_HTTP1": "10",
- "LIMIT_CONN_MAX_HTTP2": "100",
- "USE_LIMIT_REQ": "yes",
- "LIMIT_REQ_URL": "/",
- "LIMIT_REQ_RATE": "2r/s"
- }
- },
- {
- "name": "DNSBL",
- "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
- "settings": {
- "USE_DNSBL": "yes"
- }
- },
- {
- "name": "Country",
- "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
- "settings": {
- "WHITELIST_COUNTRY": ""
- }
- },
- {
- "name": "Antibot",
- "description": "Enable/disable and configure antibot protection globally on your web service.",
- "settings": {
- "USE_ANTIBOT": "javascript",
- "ANTIBOT_TIME_RESOLVE": "120",
- "ANTIBOT_TIME_VALID": "86400",
- "ANTIBOT_RECAPTCHA_SCORE": "0.7",
- "ANTIBOT_RECAPTCHA_SITEKEY": "",
- "ANTIBOT_RECAPTCHA_SECRET": "",
- "ANTIBOT_HCAPTCHA_SITEKEY": "",
- "ANTIBOT_HCAPTCHA_SECRET": "",
- "ANTIBOT_TURNSTILE_SITEKEY": "",
- "ANTIBOT_TURNSTILE_SECRET": ""
- }
- },
- {
- "name": "CORS",
- "description": "Configure Cross-Origin Resource Sharing (CORS) to allow/deny external requests to your web service.",
- "settings": {
- "USE_CORS": "no",
- "CORS_ALLOW_ORIGIN": "*"
- }
- },
- {
- "name": "ModSecurity",
- "description": "Enable/disable and configure ModSecurity on your web service.",
- "settings": {
- "USE_MODSECURITY": "yes"
- }
- }
- ]
-}
\ No newline at end of file
+ "name": "medium",
+ "description": "Generic settings template with medium security level aimed for average web service in production. False positives may appear depending on your environment.",
+ "steps": [
+ {
+ "name": "Server configuration",
+ "description": "Configure your server name and reverse proxy settings. Don't forget to add the corresponding DNS A entry pointing to your BunkerWeb IP.",
+ "settings": {
+ "SERVER_NAME": "www.example.com",
+ "USE_REVERSE_PROXY": "yes",
+ "REVERSE_PROXY_HOST": "http://my-upstream-server:8080",
+ "REVERSE_PROXY_URL": "/",
+ "REVERSE_PROXY_INTERCEPT_ERRORS": "yes",
+ "REVERSE_PROXY_WS": "no",
+ "REVERSE_PROXY_CUSTOM_HOST": "",
+ "REVERSE_PROXY_HEADERS": "Accept-Encoding ''"
+ }
+ },
+ {
+ "name": "HTTPS",
+ "description": "Enable/disable HTTPS for your service.",
+ "settings": {
+ "AUTO_LETS_ENCRYPT": "yes"
+ }
+ },
+ {
+ "name": "HTTP configuration",
+ "description": "Miscellaneous settings related to HTTP protocol.",
+ "settings": {
+ "USE_GZIP": "yes",
+ "USE_BROTLI": "yes",
+ "ALLOWED_METHODS": "GET|POST|HEAD",
+ "MAX_SIZES": "10m",
+ "COOKIE_FLAGS": "* HttpOnly SameSite=Lax",
+ "CONTENT_SECURITY_POLICY": "object-src 'none'; form-action 'self'; frame-ancestors 'self';",
+ "X_FRAME_OPTIONS": "SAMEORIGIN",
+ "PERMISSIONS_POLICY": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()",
+ "FEATURE_POLICY": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';"
+ }
+ },
+ {
+ "name": "Bad behavior",
+ "description": "Configure automatic bans when detecting bad behaviors on your web service.",
+ "settings": {
+ "USE_BAD_BEHAVIOR": "yes",
+ "BAD_BEHAVIOR_STATUS_CODES": "400 401 403 404 405 429 444",
+ "BAD_BEHAVIOR_BAN_TIME": "86400",
+ "BAD_BEHAVIOR_THRESHOLD": "10",
+ "BAD_BEHAVIOR_COUNT_TIME": "60"
+ }
+ },
+ {
+ "name": "Limit",
+ "description": "Configure requests and connections limits on your web service.",
+ "settings": {
+ "USE_LIMIT_CONN": "yes",
+ "LIMIT_CONN_MAX_HTTP1": "10",
+ "LIMIT_CONN_MAX_HTTP2": "100",
+ "USE_LIMIT_REQ": "yes",
+ "LIMIT_REQ_URL": "/",
+ "LIMIT_REQ_RATE": "2r/s"
+ }
+ },
+ {
+ "name": "DNSBL",
+ "description": "Enable/disable DNSBL protection. Might generate false positives especially if you have a worldwide audience.",
+ "settings": {
+ "USE_DNSBL": "yes"
+ }
+ },
+ {
+ "name": "Country",
+ "description": "Configure allowed countries to reach out your web service. Recommended if you protect a restricted area such as extranet or administration panel.",
+ "settings": {
+ "WHITELIST_COUNTRY": ""
+ }
+ },
+ {
+ "name": "Antibot",
+ "description": "Enable/disable and configure antibot protection globally on your web service.",
+ "settings": {
+ "USE_ANTIBOT": "javascript",
+ "ANTIBOT_TIME_RESOLVE": "120",
+ "ANTIBOT_TIME_VALID": "86400",
+ "ANTIBOT_RECAPTCHA_SCORE": "0.7",
+ "ANTIBOT_RECAPTCHA_SITEKEY": "",
+ "ANTIBOT_RECAPTCHA_SECRET": "",
+ "ANTIBOT_HCAPTCHA_SITEKEY": "",
+ "ANTIBOT_HCAPTCHA_SECRET": "",
+ "ANTIBOT_TURNSTILE_SITEKEY": "",
+ "ANTIBOT_TURNSTILE_SECRET": ""
+ }
+ },
+ {
+ "name": "CORS",
+ "description": "Configure Cross-Origin Resource Sharing (CORS) to allow/deny external requests to your web service.",
+ "settings": {
+ "USE_CORS": "no",
+ "CORS_ALLOW_ORIGIN": "*"
+ }
+ },
+ {
+ "name": "ModSecurity",
+ "description": "Enable/disable and configure ModSecurity on your web service.",
+ "settings": {
+ "USE_MODSECURITY": "yes"
+ }
+ }
+ ]
+}
diff --git a/src/linux/Dockerfile-centos b/src/linux/Dockerfile-centos
index 78ffc1626..0dfdb1d15 100644
--- a/src/linux/Dockerfile-centos
+++ b/src/linux/Dockerfile-centos
@@ -67,6 +67,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-debian b/src/linux/Dockerfile-debian
index bfcaed389..a24f68b84 100644
--- a/src/linux/Dockerfile-debian
+++ b/src/linux/Dockerfile-debian
@@ -53,6 +53,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-fedora b/src/linux/Dockerfile-fedora
index d659adf27..47a3712f3 100644
--- a/src/linux/Dockerfile-fedora
+++ b/src/linux/Dockerfile-fedora
@@ -49,6 +49,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-rhel b/src/linux/Dockerfile-rhel
index 566cc6576..74e4888dd 100644
--- a/src/linux/Dockerfile-rhel
+++ b/src/linux/Dockerfile-rhel
@@ -63,6 +63,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-rhel9 b/src/linux/Dockerfile-rhel9
index 5a0f18de1..f060db97b 100644
--- a/src/linux/Dockerfile-rhel9
+++ b/src/linux/Dockerfile-rhel9
@@ -64,6 +64,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-ubuntu b/src/linux/Dockerfile-ubuntu
index 9f1b21a4c..90b756970 100644
--- a/src/linux/Dockerfile-ubuntu
+++ b/src/linux/Dockerfile-ubuntu
@@ -53,6 +53,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/linux/Dockerfile-ubuntu-noble b/src/linux/Dockerfile-ubuntu-noble
index 745b536d2..ef06f573e 100644
--- a/src/linux/Dockerfile-ubuntu-noble
+++ b/src/linux/Dockerfile-ubuntu-noble
@@ -53,6 +53,7 @@ COPY src/common/gen gen
COPY src/common/helpers helpers
COPY src/common/settings.json settings.json
COPY src/common/utils utils
+COPY src/common/templates templates
COPY src/scheduler scheduler
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/scheduler/main.py b/src/scheduler/main.py
index ed4167e30..e5c30e189 100644
--- a/src/scheduler/main.py
+++ b/src/scheduler/main.py
@@ -138,6 +138,7 @@ def generate_custom_configs(configs: List[Dict[str, Any]], *, original_path: Uni
tmp_path.parent.mkdir(parents=True, exist_ok=True)
tmp_path.write_bytes(custom_config["data"])
except OSError as e:
+ logger.debug(format_exc())
if custom_config["method"] != "manual":
logger.error(
f"Error while generating custom configs \"{custom_config['name']}\"{' for service ' + custom_config['service_id'] if custom_config['service_id'] else ''}: {e}"
@@ -189,6 +190,7 @@ def generate_external_plugins(plugins: List[Dict[str, Any]], *, original_path: U
for job_file in chain(original_path.joinpath(plugin["id"], "jobs").glob("*"), original_path.joinpath(plugin["id"], "bwcli").glob("*")):
job_file.chmod(job_file.stat().st_mode | S_IEXEC)
except OSError as e:
+ logger.debug(format_exc())
if plugin["method"] != "manual":
logger.error(f"Error while generating {'pro ' if pro else ''}external plugins \"{plugin['name']}\": {e}")
except BaseException as e:
diff --git a/src/ui/Dockerfile b/src/ui/Dockerfile
index 8b4c46966..c5f2ef050 100644
--- a/src/ui/Dockerfile
+++ b/src/ui/Dockerfile
@@ -30,6 +30,7 @@ COPY src/common/gen gen
COPY src/common/settings.json settings.json
COPY src/common/utils utils
COPY src/common/helpers helpers
+COPY src/common/templates templates
COPY src/ui ui
COPY src/VERSION VERSION
diff --git a/src/ui/main.py b/src/ui/main.py
index b04178933..ca59209e7 100755
--- a/src/ui/main.py
+++ b/src/ui/main.py
@@ -51,6 +51,7 @@ from src.ConfigFiles import ConfigFiles
from src.Config import Config
from src.ReverseProxied import ReverseProxied
from src.User import AnonymousUser, User
+from src.Templates import get_ui_templates
from utils import check_settings, get_b64encoded_qr_image, path_to_dict, get_remain
from common_utils import get_integration, get_version # type: ignore
@@ -154,6 +155,7 @@ try:
SEND_FILE_MAX_AGE_DEFAULT=86400,
SCRIPT_NONCE=sha256(urandom(32)).hexdigest(),
DB=db,
+ UI_TEMPLATES=get_ui_templates(),
)
except FileNotFoundError as e:
app.logger.error(repr(e), e.filename)
diff --git a/src/ui/src/Templates.py b/src/ui/src/Templates.py
new file mode 100644
index 000000000..85a95c099
--- /dev/null
+++ b/src/ui/src/Templates.py
@@ -0,0 +1,31 @@
+from json import loads
+from glob import glob
+from os import sep
+from os.path import join
+
+
+def get_ui_templates():
+ ui_templates = []
+ for template_file in glob(join(sep, "usr", "share", "bunkerweb", "templates", "*.json")):
+ try:
+ ui_template = {}
+ with open(template_file, "r") as f:
+ bw_template = loads(f.read())
+ ui_template = {"name": bw_template["name"], "description": bw_template["description"]}
+ ui_template["steps"] = []
+ for bw_step in bw_template["steps"]:
+ ui_step = {}
+ ui_step["name"] = bw_step["name"]
+ ui_step["description"] = bw_step["description"]
+ ui_step["settings"] = []
+ for setting, value in bw_step["settings"].items():
+ ui_setting = {"setting_id": setting, "value": value}
+ ui_step["settings"].append(ui_setting)
+ ui_template["steps"].append(ui_step)
+ ui_templates.append(ui_template)
+ except Exception as e:
+ # print(e)
+ # TODO: log
+ pass
+ # print(ui_templates, flush=True)
+ return ui_templates
diff --git a/src/ui/static/css/dashboard.css b/src/ui/static/css/dashboard.css
index c930bf523..527ffd4d6 100644
--- a/src/ui/static/css/dashboard.css
+++ b/src/ui/static/css/dashboard.css
@@ -1 +1 @@
-/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e9ecef}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#ced4da}input::placeholder,textarea::placeholder{opacity:1;color:#ced4da}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#5e72e480;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.\!container{width:100%!important;margin-right:auto!important;margin-left:auto!important;padding-right:1.5rem!important;padding-left:1.5rem!important}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1.5rem;padding-left:1.5rem}@media (min-width:340px){.\!container{max-width:340px!important}.container{max-width:340px}}@media (min-width:576px){.\!container{max-width:576px!important}.container{max-width:576px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:992px){.\!container{max-width:992px!important}.container{max-width:992px}}@media (min-width:1200px){.\!container{max-width:1200px!important}.container{max-width:1200px}}@media (min-width:1320px){.\!container{max-width:1320px!important}.container{max-width:1320px}}@media (min-width:1920px){.\!container{max-width:1920px!important}.container{max-width:1920px}}a{letter-spacing:-.025rem}hr{margin:1rem 0;border:0;opacity:.25}img{max-width:none}label{display:inline-block}p{line-height:1.625;font-weight:400;margin-bottom:1rem}small{font-size:.875em}svg{display:inline}table{border-collapse:inherit}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;color:#344767}h1,h2,h3,h4{letter-spacing:-.05rem}h1,h2,h3{font-weight:700}h4,h5,h6{font-weight:600}h1{font-size:3rem;line-height:1.25}h2{font-size:2.25rem;line-height:1.3}h3{font-size:1.875rem}h3,h4{line-height:1.375}h4{font-size:1.5rem}h5{font-size:1.25rem;line-height:1.375}h6{font-size:1rem;line-height:1.625}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.collapse{visibility:collapse!important}.static{position:static!important}.fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.inset-y-0{top:0!important;bottom:0!important}.-left-full{left:-100%!important}.-right-0{right:0!important}.-right-1{right:-.25rem!important}.bottom-0{bottom:0!important}.bottom-1{bottom:.25rem!important}.bottom-1\.5{bottom:.375rem!important}.bottom-2{bottom:.5rem!important}.bottom-24{bottom:6rem!important}.bottom-3{bottom:.75rem!important}.bottom-4{bottom:1rem!important}.bottom-6{bottom:1.5rem!important}.bottom-7{bottom:1.75rem!important}.bottom-8{bottom:2rem!important}.left-0{left:0!important}.left-1{left:.25rem!important}.left-16{left:4rem!important}.left-20{left:5rem!important}.left-24{left:6rem!important}.left-32{left:8rem!important}.left-4{left:1rem!important}.left-40{left:10rem!important}.left-48{left:12rem!important}.left-8{left:2rem!important}.left-auto{left:auto!important}.left-full{left:100%!important}.right-0{right:0!important}.right-12{right:3rem!important}.right-2{right:.5rem!important}.right-20{right:5rem!important}.right-4{right:1rem!important}.right-5{right:1.25rem!important}.right-6{right:1.5rem!important}.right-7{right:1.75rem!important}.right-8{right:2rem!important}.right-\[3\.25rem\]{right:3.25rem!important}.top-0{top:0!important}.top-1{top:.25rem!important}.top-1\.5{top:.375rem!important}.top-1\/2{top:50%!important}.top-10{top:2.5rem!important}.top-12{top:3rem!important}.top-14{top:3.5rem!important}.top-16{top:4rem!important}.top-2{top:.5rem!important}.top-24{top:6rem!important}.top-3{top:.75rem!important}.top-36{top:9rem!important}.top-4{top:1rem!important}.top-6{top:1.5rem!important}.top-7{top:1.75rem!important}.top-8{top:2rem!important}.top-\[38\%\]{top:38%!important}.top-\[4\.5rem\]{top:4.5rem!important}.top-\[52\%\]{top:52%!important}.top-\[55\%\]{top:55%!important}.top-\[8\.2rem\]{top:8.2rem!important}.-z-10{z-index:-10!important}.z-0{z-index:0!important}.z-10{z-index:10!important}.z-100{z-index:100!important}.z-110{z-index:110!important}.z-20{z-index:20!important}.z-990{z-index:990!important}.z-\[10000\]{z-index:10000!important}.z-\[1000\]{z-index:1000!important}.z-\[1001\]{z-index:1001!important}.z-\[20\]{z-index:20!important}.z-sticky{z-index:1020!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.col-span-1{grid-column:span 1/span 1!important}.col-span-10{grid-column:span 10/span 10!important}.col-span-11{grid-column:span 11/span 11!important}.col-span-12{grid-column:span 12/span 12!important}.col-span-2{grid-column:span 2/span 2!important}.col-span-3{grid-column:span 3/span 3!important}.col-span-4{grid-column:span 4/span 4!important}.col-span-5{grid-column:span 5/span 5!important}.col-span-6{grid-column:span 6/span 6!important}.col-span-9{grid-column:span 9/span 9!important}.float-right{float:right!important}.float-left{float:left!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-1\.5{margin-left:.375rem!important;margin-right:.375rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2\.5{margin-left:.625rem!important;margin-right:.625rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.mb-0{margin-bottom:0!important}.mb-0\.5{margin-bottom:.125rem!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2\.5{margin-bottom:.625rem!important}.mb-3{margin-bottom:.75rem!important}.mb-4{margin-bottom:1rem!important}.mb-6{margin-bottom:1.5rem!important}.mb-7{margin-bottom:1.75rem!important}.mb-8{margin-bottom:2rem!important}.ml-0{margin-left:0!important}.ml-1{margin-left:.25rem!important}.ml-12{margin-left:3rem!important}.ml-2{margin-left:.5rem!important}.ml-3{margin-left:.75rem!important}.ml-4{margin-left:1rem!important}.mr-1{margin-right:.25rem!important}.mr-12{margin-right:3rem!important}.mr-2{margin-right:.5rem!important}.mr-3{margin-right:.75rem!important}.mr-4{margin-right:1rem!important}.mt-0{margin-top:0!important}.mt-0\.5{margin-top:.125rem!important}.mt-1{margin-top:.25rem!important}.mt-1\.5{margin-top:.375rem!important}.mt-10{margin-top:2.5rem!important}.mt-12{margin-top:3rem!important}.mt-16{margin-top:4rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:.75rem!important}.mt-4{margin-top:1rem!important}.mt-5{margin-top:1.25rem!important}.mt-6{margin-top:1.5rem!important}.mt-8{margin-top:2rem!important}.mt-\[15vh\]{margin-top:15vh!important}.mt-\[4\.5rem\]{margin-top:4.5rem!important}.block{display:block!important}.inline-block{display:inline-block!important}.inline{display:inline!important}.flex{display:flex!important}.table{display:table!important}.grid{display:grid!important}.list-item{display:list-item!important}.\!hidden,.hidden{display:none!important}.h-1{height:.25rem!important}.h-1\/3{height:33.333333%!important}.h-12{height:3rem!important}.h-14{height:3.5rem!important}.h-3{height:.75rem!important}.h-32{height:8rem!important}.h-4{height:1rem!important}.h-4\.5{height:1.125rem!important}.h-40{height:10rem!important}.h-5{height:1.25rem!important}.h-5\.5{height:1.375rem!important}.h-50{height:12.5rem!important}.h-6{height:1.5rem!important}.h-7{height:1.75rem!important}.h-8{height:2rem!important}.h-96{height:24rem!important}.h-\[2\.5rem\]{height:2.5rem!important}.h-\[250px\]{height:250px!important}.h-\[3\.5rem\]{height:3.5rem!important}.h-\[4rem\]{height:4rem!important}.h-\[90vh\]{height:90vh!important}.h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-full{height:100%!important}.h-px{height:1px!important}.h-screen{height:100vh!important}.max-h-100{max-height:25rem!important}.max-h-30{max-height:7.5rem!important}.max-h-80{max-height:20rem!important}.max-h-\[200px\]{max-height:200px!important}.max-h-\[250px\]{max-height:250px!important}.max-h-\[350px\]{max-height:350px!important}.max-h-\[400px\]{max-height:400px!important}.max-h-\[70vh\]{max-height:70vh!important}.max-h-\[90vh\]{max-height:90vh!important}.max-h-\[95vh\]{max-height:95vh!important}.max-h-screen{max-height:100vh!important}.min-h-12{min-height:3rem!important}.min-h-20{min-height:5rem!important}.min-h-52{min-height:13rem!important}.min-h-6{min-height:1.5rem!important}.min-h-\[100px\]{min-height:100px!important}.min-h-\[200px\]{min-height:200px!important}.min-h-\[350px\]{min-height:350px!important}.min-h-\[400px\]{min-height:400px!important}.min-h-\[55vh\]{min-height:55vh!important}.min-h-\[75px\]{min-height:75px!important}.min-h-\[85vh\]{min-height:85vh!important}.min-h-screen{min-height:100vh!important}.w-1{width:.25rem!important}.w-10{width:2.5rem!important}.w-11\/12{width:91.666667%!important}.w-28{width:7rem!important}.w-3{width:.75rem!important}.w-32{width:8rem!important}.w-4{width:1rem!important}.w-4\.5{width:1.125rem!important}.w-40{width:10rem!important}.w-48{width:12rem!important}.w-5{width:1.25rem!important}.w-5\.5{width:1.375rem!important}.w-50{width:12.5rem!important}.w-6{width:1.5rem!important}.w-7{width:1.75rem!important}.w-8{width:2rem!important}.w-80{width:20rem!important}.w-90{width:22.5rem!important}.w-\[2\.5rem\]{width:2.5rem!important}.w-\[50vw\]{width:50vw!important}.w-auto{width:auto!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.w-screen{width:100vw!important}.min-w-0{min-width:0!important}.min-w-\[1150px\]{min-width:1150px!important}.min-w-\[1300px\]{min-width:1300px!important}.min-w-\[200px\]{min-width:200px!important}.min-w-\[300px\]{min-width:300px!important}.min-w-\[600px\]{min-width:600px!important}.min-w-\[800px\]{min-width:800px!important}.min-w-\[900px\]{min-width:900px!important}.max-w-40{max-width:10rem!important}.max-w-60{max-width:15rem!important}.max-w-64{max-width:16rem!important}.max-w-\[1000px\]{max-width:1000px!important}.max-w-\[150px\]{max-width:150px!important}.max-w-\[1920px\]{max-width:1920px!important}.max-w-\[300px\]{max-width:300px!important}.max-w-\[400px\]{max-width:400px!important}.max-w-\[450px\]{max-width:450px!important}.max-w-\[550px\]{max-width:550px!important}.max-w-\[650px\]{max-width:650px!important}.max-w-\[700px\]{max-width:700px!important}.max-w-full{max-width:100%!important}.max-w-none{max-width:none!important}.max-w-screen-lg{max-width:992px!important}.flex-auto{flex:1 1 auto!important}.grow{flex-grow:1!important}.basis-full{flex-basis:100%!important}.border-collapse{border-collapse:collapse!important}.-translate-x-1{--tw-translate-x:-0.25rem!important}.-translate-x-1,.-translate-x-1\.5{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))!important}.-translate-x-1\.5{--tw-translate-x:-0.375rem!important}.-translate-x-36{--tw-translate-x:-9rem!important}.-translate-x-36,.-translate-x-40{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))!important}.-translate-x-40{--tw-translate-x:-10rem!important}.-translate-x-48{--tw-translate-x:-12rem!important}.-translate-x-48,.-translate-x-52{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))!important}.-translate-x-52{--tw-translate-x:-13rem!important}.-translate-x-56{--tw-translate-x:-14rem!important}.-translate-x-56,.-translate-x-60{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))!important}.-translate-x-60{--tw-translate-x:-15rem!important}.-translate-x-64{--tw-translate-x:-16rem!important}.-translate-x-64,.-translate-x-72{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))!important}.-translate-x-72{--tw-translate-x:-18rem!important}.-translate-x-full{--tw-translate-x:-100%!important}.-translate-x-full,.-translate-y-0{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))!important}.-translate-y-0{--tw-translate-y:-0px!important}.-translate-y-0\.4{--tw-translate-y:-0.1rem!important}.-translate-y-0\.4,.-translate-y-0\.5{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))!important}.-translate-y-0\.5{--tw-translate-y:-0.125rem!important}.-translate-y-1{--tw-translate-y:-0.25rem!important}.-translate-y-1,.-translate-y-12{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))!important}.-translate-y-12{--tw-translate-y:-3rem!important}.-translate-y-16{--tw-translate-y:-4rem!important}.-translate-y-16,.-translate-y-2{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))!important}.-translate-y-2{--tw-translate-y:-0.5rem!important}.-translate-y-20{--tw-translate-y:-5rem!important}.-translate-y-20,.-translate-y-24{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))!important}.-translate-y-24{--tw-translate-y:-6rem!important}.-translate-y-28{--tw-translate-y:-7rem!important}.-translate-y-28,.-translate-y-36{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))!important}.-translate-y-36{--tw-translate-y:-9rem!important}.-translate-y-4{--tw-translate-y:-1rem!important}.-translate-y-4,.-translate-y-6{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))!important}.-translate-y-6{--tw-translate-y:-1.5rem!important}.-translate-y-8{--tw-translate-y:-2rem!important}.-translate-y-8,.translate-x-0{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))!important}.translate-x-0{--tw-translate-x:0px!important}.translate-x-0\.5{--tw-translate-x:0.125rem!important}.translate-x-0\.5,.translate-x-1{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))!important}.translate-x-1{--tw-translate-x:0.25rem!important}.translate-x-16{--tw-translate-x:4rem!important}.translate-x-16,.translate-x-2{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))!important}.translate-x-2{--tw-translate-x:0.5rem!important}.translate-x-24{--tw-translate-x:6rem!important}.translate-x-24,.translate-x-3{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))!important}.translate-x-3{--tw-translate-x:0.75rem!important}.translate-x-32{--tw-translate-x:8rem!important}.translate-x-32,.translate-x-4{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))!important}.translate-x-4{--tw-translate-x:1rem!important}.translate-x-40{--tw-translate-x:10rem!important}.translate-x-40,.translate-x-48{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))!important}.translate-x-48{--tw-translate-x:12rem!important}.translate-x-52{--tw-translate-x:13rem!important}.translate-x-52,.translate-x-56{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))!important}.translate-x-56{--tw-translate-x:14rem!important}.translate-x-60{--tw-translate-x:15rem!important}.translate-x-60,.translate-x-90{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))!important}.translate-x-90{--tw-translate-x:22.5rem!important}.translate-x-\[3rem\]{--tw-translate-x:3rem!important}.translate-x-\[3rem\],.translate-y-0{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))!important}.translate-y-0{--tw-translate-y:0px!important}.translate-y-0\.5{--tw-translate-y:0.125rem!important}.translate-y-0\.5,.translate-y-1{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))!important}.translate-y-1{--tw-translate-y:0.25rem!important}.translate-y-16{--tw-translate-y:4rem!important}.translate-y-16,.translate-y-2{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))!important}.translate-y-2{--tw-translate-y:0.5rem!important}.-rotate-12{--tw-rotate:-12deg!important}.-rotate-12,.rotate-12{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))!important}.rotate-12{--tw-rotate:12deg!important}.rotate-180{--tw-rotate:180deg!important}.rotate-180,.rotate-90{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))!important}.rotate-90{--tw-rotate:90deg!important}.scale-105{--tw-scale-x:1.05!important;--tw-scale-y:1.05!important}.scale-105,.scale-110{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))!important}.scale-110{--tw-scale-x:1.1!important;--tw-scale-y:1.1!important}.scale-50{--tw-scale-x:.5!important;--tw-scale-y:.5!important}.scale-50,.scale-75{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))!important}.scale-75{--tw-scale-x:.75!important;--tw-scale-y:.75!important}.scale-90{--tw-scale-x:.9!important;--tw-scale-y:.9!important}.scale-90,.scale-\[0\.6\]{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))!important}.scale-\[0\.6\]{--tw-scale-x:0.6!important;--tw-scale-y:0.6!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-pointer{cursor:pointer!important}.cursor-text{cursor:text!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.resize{resize:both!important}.list-none{list-style-type:none!important}.appearance-none{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.flex-row{flex-direction:row!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.items-start{align-items:flex-start!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.justify-items-center{justify-items:center!important}.gap-2{gap:.5rem!important}.gap-3{gap:.75rem!important}.gap-4{gap:1rem!important}.gap-8{gap:2rem!important}.gap-x-4{-moz-column-gap:1rem!important;column-gap:1rem!important}.gap-y-2{row-gap:.5rem!important}.gap-y-3{row-gap:.75rem!important}.gap-y-4{row-gap:1rem!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.whitespace-normal{white-space:normal!important}.whitespace-nowrap{white-space:nowrap!important}.break-words{overflow-wrap:break-word!important}.rounded,.rounded-1{border-radius:.25rem!important}.rounded-1\.4{border-radius:.35rem!important}.rounded-10{border-radius:2.5rem!important}.rounded-2xl{border-radius:1rem!important}.rounded-circle{border-radius:50%!important}.rounded-full{border-radius:9999px!important}.rounded-lg{border-radius:.5rem!important}.rounded-none{border-radius:0!important}.rounded-xl{border-radius:.75rem!important}.rounded-b{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-b-lg{border-bottom-left-radius:.5rem!important}.rounded-b-lg,.rounded-r-lg{border-bottom-right-radius:.5rem!important}.rounded-r-lg{border-top-right-radius:.5rem!important}.rounded-t{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-t-2xl{border-top-left-radius:1rem!important;border-top-right-radius:1rem!important}.rounded-t-lg{border-top-left-radius:.5rem!important;border-top-right-radius:.5rem!important}.border{border-width:1px!important}.border-0{border-width:0!important}.border-2{border-width:2px!important}.border-b{border-bottom-width:1px!important}.border-b-0{border-bottom-width:0!important}.border-l{border-left-width:1px!important}.border-r{border-right-width:1px!important}.border-t{border-top-width:1px!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-gray-100{--tw-border-opacity:1!important;border-color:rgb(235 239 244/var(--tw-border-opacity))!important}.border-gray-100\/50{border-color:#ebeff480!important}.border-gray-200{--tw-border-opacity:1!important;border-color:rgb(233 236 239/var(--tw-border-opacity))!important}.border-gray-300{--tw-border-opacity:1!important;border-color:rgb(210 214 218/var(--tw-border-opacity))!important}.border-gray-400{--tw-border-opacity:1!important;border-color:rgb(206 212 218/var(--tw-border-opacity))!important}.border-gray-700{--tw-border-opacity:1!important;border-color:rgb(73 80 87/var(--tw-border-opacity))!important}.border-primary{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.bg-blue-500{--tw-bg-opacity:1!important;background-color:rgb(94 114 228/var(--tw-bg-opacity))!important}.bg-emerald-500{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.bg-emerald-500\/80{background-color:#2dce89cc!important}.bg-gray-100{background-color:rgb(235 239 244/var(--tw-bg-opacity))!important}.bg-gray-100,.bg-gray-200{--tw-bg-opacity:1!important}.bg-gray-200{background-color:rgb(233 236 239/var(--tw-bg-opacity))!important}.bg-gray-300{background-color:rgb(210 214 218/var(--tw-bg-opacity))!important}.bg-gray-300,.bg-gray-50{--tw-bg-opacity:1!important}.bg-gray-50{background-color:rgb(248 249 250/var(--tw-bg-opacity))!important}.bg-gray-50\/10{background-color:#f8f9fa1a!important}.bg-gray-500{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.bg-gray-500\/80{background-color:#adb5bdcc!important}.bg-gray-600{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.bg-gray-600\/50{background-color:#6c757d80!important}.bg-gray-600\/80{background-color:#6c757dcc!important}.bg-green-500{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.bg-green-500\/80{background-color:#22c55ecc!important}.bg-orange-500{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.bg-orange-500\/80{background-color:#fb6340cc!important}.bg-primary{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}.bg-primary\/10{background-color:#0b55771a!important}.bg-red-500{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.bg-red-500\/80{background-color:#f53939cc!important}.bg-secondary{background-color:rgb(46 172 104/var(--tw-bg-opacity))!important}.bg-secondary,.bg-sky-500{--tw-bg-opacity:1!important}.bg-sky-500{background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.bg-sky-500\/80{background-color:#0ea5e9cc!important}.bg-slate-800\/10{background-color:#3a416f1a!important}.bg-transparent{background-color:initial!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.bg-white,.bg-yellow-400{--tw-bg-opacity:1!important}.bg-yellow-400{background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.bg-yellow-400\/80{background-color:#fbcf33cc!important}.bg-yellow-500{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.bg-yellow-500\/80{background-color:#fbb140cc!important}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))!important}.bg-gradient-to-tl{background-image:linear-gradient(to top left,var(--tw-gradient-stops))!important}.bg-none{background-image:none!important}.from-\[\#075577\]{--tw-gradient-from:#075577 var(--tw-gradient-from-position)!important;--tw-gradient-to:#07557700 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.from-\[\#0b5577\]{--tw-gradient-from:#0b5577 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0b557700 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.via-black\/40{--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to)!important}.to-\[\#116D70\]{--tw-gradient-to:#116d70 var(--tw-gradient-to-position)!important}.to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important}.bg-150{background-size:150%!important}.bg-contain{background-size:contain!important}.bg-clip-border{background-clip:initial!important}.bg-clip-padding{background-clip:padding-box!important}.bg-center{background-position:50%!important}.bg-left{background-position:0!important}.bg-x-25{background-position:25% 0!important}.bg-no-repeat{background-repeat:no-repeat!important}.fill-blue-500{fill:#5e72e4!important}.fill-gray-500{fill:#adb5bd!important}.fill-gray-600{fill:#6c757d!important}.fill-gray-700{fill:#495057!important}.fill-green-500{fill:#22c55e!important}.fill-primary{fill:#0b5577!important}.fill-red-500{fill:#f53939!important}.fill-sky-500{fill:#0ea5e9!important}.fill-slate-800{fill:#3a416f!important}.fill-white{fill:#fff!important}.fill-yellow-500{fill:#fbb140!important}.stroke-amber-500{stroke:#f59e0b!important}.stroke-blue-400{stroke:#60a5fa!important}.stroke-blue-500{stroke:#5e72e4!important}.stroke-emerald-600{stroke:#059669!important}.stroke-gray-100{stroke:#ebeff4!important}.stroke-gray-100\/50{stroke:#ebeff480!important}.stroke-gray-600{stroke:#6c757d!important}.stroke-gray-700{stroke:#495057!important}.stroke-gray-800{stroke:#252f40!important}.stroke-green-700{stroke:#15803d!important}.stroke-orange-500{stroke:#fb6340!important}.stroke-pink-600{stroke:#db2777!important}.stroke-red-500{stroke:#f53939!important}.stroke-sky-500{stroke:#0ea5e9!important}.stroke-stone-500{stroke:#78716c!important}.stroke-white{stroke:#fff!important}.stroke-white\/0{stroke:#fff0!important}.stroke-yellow-400{stroke:#fbcf33!important}.stroke-yellow-500{stroke:#fbb140!important}.stroke-0{stroke-width:0!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:.75rem!important}.p-4{padding:1rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-0\.5{padding-left:.125rem!important;padding-right:.125rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-1\.5{padding-left:.375rem!important;padding-right:.375rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-28{padding-left:7rem!important;padding-right:7rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-8{padding-left:2rem!important;padding-right:2rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-0\.5{padding-top:.125rem!important;padding-bottom:.125rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.py-10{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.py-12{padding-top:3rem!important;padding-bottom:3rem!important}.py-16{padding-top:4rem!important;padding-bottom:4rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-2\.5{padding-top:.625rem!important;padding-bottom:.625rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.py-8{padding-top:2rem!important;padding-bottom:2rem!important}.pb-0{padding-bottom:0!important}.pb-10{padding-bottom:2.5rem!important}.pb-16{padding-bottom:4rem!important}.pb-2{padding-bottom:.5rem!important}.pb-24{padding-bottom:6rem!important}.pb-28{padding-bottom:7rem!important}.pb-4{padding-bottom:1rem!important}.pb-6{padding-bottom:1.5rem!important}.pb-8{padding-bottom:2rem!important}.pl-0{padding-left:0!important}.pl-2{padding-left:.5rem!important}.pl-3{padding-left:.75rem!important}.pl-6{padding-left:1.5rem!important}.pt-1{padding-top:.25rem!important}.pt-10{padding-top:2.5rem!important}.pt-2{padding-top:.5rem!important}.pt-20{padding-top:5rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.pt-6{padding-top:1.5rem!important}.pt-8{padding-top:2rem!important}.pt-9{padding-top:2.25rem!important}.text-left{text-align:left!important}.text-center{text-align:center!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.font-sans{font-family:Open Sans!important}.text-2xl{font-size:1.5rem!important;line-height:2rem!important}.text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.text-5xl{font-size:3rem!important}.text-5xl,.text-6xl{line-height:1!important}.text-6xl{font-size:3.75rem!important}.text-7xl{font-size:4.5rem!important}.text-7xl,.text-9xl{line-height:1!important}.text-9xl{font-size:6rem!important}.text-\[0\.7rem\]{font-size:.7rem!important}.text-\[1\.1rem\]{font-size:1.1rem!important}.text-base{font-size:1rem!important;line-height:1.5rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.5rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-medium{font-weight:500!important}.font-normal{font-weight:400!important}.font-semibold{font-weight:600!important}.uppercase{text-transform:uppercase!important}.capitalize{text-transform:capitalize!important}.italic{font-style:italic!important}.ordinal{--tw-ordinal:ordinal!important;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)!important}.leading-5{line-height:1.25rem!important}.leading-5\.6{line-height:1.4rem!important}.leading-6{line-height:1.5rem!important}.leading-default{line-height:1.6!important}.leading-none{line-height:1!important}.leading-normal{line-height:1.5!important}.leading-tight{line-height:1.25!important}.tracking-\[0\.20rem\]{letter-spacing:.2rem!important}.tracking-normal{letter-spacing:0!important}.tracking-tight-rem{letter-spacing:-.025rem!important}.tracking-wide{letter-spacing:.025em!important}.tracking-wider{letter-spacing:.05em!important}.tracking-widest{letter-spacing:.1em!important}.text-blue-500{--tw-text-opacity:1!important;color:rgb(94 114 228/var(--tw-text-opacity))!important}.text-gray-100{--tw-text-opacity:1!important;color:rgb(235 239 244/var(--tw-text-opacity))!important}.text-gray-100\/50{color:#ebeff480!important}.text-gray-300{--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}.text-gray-50{--tw-text-opacity:1!important;color:rgb(248 249 250/var(--tw-text-opacity))!important}.text-gray-500{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}.text-gray-700{--tw-text-opacity:1!important;color:rgb(73 80 87/var(--tw-text-opacity))!important}.text-gray-700\/80{color:#495057cc!important}.text-gray-800{--tw-text-opacity:1!important;color:rgb(37 47 64/var(--tw-text-opacity))!important}.text-green-500{--tw-text-opacity:1!important;color:rgb(34 197 94/var(--tw-text-opacity))!important}.text-primary{color:rgb(11 85 119/var(--tw-text-opacity))!important}.text-primary,.text-red-500{--tw-text-opacity:1!important}.text-red-500{color:rgb(245 57 57/var(--tw-text-opacity))!important}.text-secondary{--tw-text-opacity:1!important;color:rgb(46 172 104/var(--tw-text-opacity))!important}.text-sky-500{--tw-text-opacity:1!important;color:rgb(14 165 233/var(--tw-text-opacity))!important}.text-slate-500{--tw-text-opacity:1!important;color:rgb(103 116 142/var(--tw-text-opacity))!important}.text-slate-700{color:rgb(52 71 103/var(--tw-text-opacity))!important}.text-slate-700,.text-white{--tw-text-opacity:1!important}.text-white{color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-yellow-400{--tw-text-opacity:1!important;color:rgb(251 207 51/var(--tw-text-opacity))!important}.text-yellow-500{--tw-text-opacity:1!important;color:rgb(251 177 64/var(--tw-text-opacity))!important}.underline{text-decoration-line:underline!important}.antialiased{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.opacity-0{opacity:0!important}.opacity-100{opacity:1!important}.opacity-50{opacity:.5!important}.opacity-60{opacity:.6!important}.opacity-80{opacity:.8!important}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important}.shadow,.shadow-3xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-3xl{--tw-shadow:0 8px 26px -4px #14141426,0 8px 9px -5px #1414140f!important;--tw-shadow-colored:0 8px 26px -4px var(--tw-shadow-color),0 8px 9px -5px var(--tw-shadow-color)!important}.shadow-\[8px_8px_12px_rgb\(0\2c 0\2c 0\2c 0\.2\)\]{--tw-shadow:8px 8px 12px #0003!important;--tw-shadow-colored:8px 8px 12px var(--tw-shadow-color)!important}.shadow-\[8px_8px_12px_rgb\(0\2c 0\2c 0\2c 0\.2\)\],.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014!important;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)!important}.shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.shadow-none,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 .25rem .375rem -.0625rem #1414141f,0 .125rem .25rem -.0625rem #14141412!important;--tw-shadow-colored:0 .25rem .375rem -.0625rem var(--tw-shadow-color),0 .125rem .25rem -.0625rem var(--tw-shadow-color)!important}.shadow-xl{--tw-shadow:0 0 2rem 0 #8898aa26!important;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color)!important}.shadow-xl,.shadow-xs{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-xs{--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014!important;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color)!important}.outline-none{outline:2px solid #0000!important;outline-offset:2px!important}.outline{outline-style:solid!important}.outline-secondary{outline-color:#2eac68!important}.blur{--tw-blur:blur(8px)!important}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-timing-function:ease!important;transition-duration:.15s!important}.transition-all{transition-property:all!important;transition-timing-function:ease!important;transition-duration:.15s!important}.transition-transform{transition-property:transform!important;transition-timing-function:ease!important;transition-duration:.15s!important}.delay-200{transition-delay:.2s!important}.duration-200{transition-duration:.2s!important}.duration-250{transition-duration:.25s!important}.duration-300{transition-duration:.3s!important}.duration-700{transition-duration:.7s!important}.ease-in{transition-timing-function:ease-in!important}.ease-in-out{transition-timing-function:ease-in-out!important}.flex-wrap-inherit{flex-wrap:inherit!important}@font-face{font-family:Open Sans;src:url(../webfonts/OpenSans.ttf)}*{font-family:Open Sans,sans-serif}.ace_editor,.ace_editor *{font-family:Monaco,Menlo,Ubuntu Mono,Droid Sans Mono,Consolas,monospace!important;font-weight:400!important;letter-spacing:0!important}.sr-only{display:none}.separator{margin:.75rem 0 .5rem;height:1px;background-color:initial;--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.separator,:is(.dark .separator){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:is(.dark .separator){--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.close-btn{display:inline-block;cursor:pointer;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(245 57 57/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.close-btn,.close-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.close-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.close-btn:focus,.close-btn:hover{background-color:#fffc}.close-btn:active{opacity:.85}.close-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.close-btn:disabled,.close-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.close-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .close-btn){--tw-bg-opacity:1;background-color:rgb(233 236 239/var(--tw-bg-opacity));--tw-brightness:brightness(.9)}:is(.dark .close-btn),:is(.dark .close-btn:hover){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)}:is(.dark .close-btn:hover){--tw-brightness:brightness(.75)}:is(.dark .close-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .close-btn:disabled),:is(.dark .close-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .close-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.close-btn{padding:.625rem 1.25rem}}.valid-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.valid-btn,.valid-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.valid-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.valid-btn:focus,.valid-btn:hover{background-color:#22c55ecc}.valid-btn:active{opacity:.85}.valid-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.valid-btn:disabled,.valid-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.valid-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .valid-btn){--tw-brightness:brightness(.9);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)}:is(.dark .valid-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .valid-btn:disabled),:is(.dark .valid-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .valid-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.valid-btn{padding:.625rem 1.25rem}}.delete-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(245 57 57/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.delete-btn,.delete-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.delete-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.delete-btn:focus,.delete-btn:hover{background-color:#f53939cc}.delete-btn:active{opacity:.85}.delete-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.delete-btn:disabled,.delete-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.delete-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .delete-btn){--tw-brightness:brightness(.9);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)}:is(.dark .delete-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .delete-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}@media (min-width:768px){.delete-btn{padding:.625rem 1.25rem}}.edit-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.edit-btn,.edit-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.edit-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.edit-btn:focus,.edit-btn:hover{background-color:#fbb140cc}.edit-btn:active{opacity:.85}.edit-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.edit-btn:disabled,.edit-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.edit-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .edit-btn){--tw-brightness:brightness(.9);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)}:is(.dark .edit-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .edit-btn:disabled),:is(.dark .edit-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .edit-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.edit-btn{padding:.625rem 1.25rem}}.info-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.info-btn,.info-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.info-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.info-btn:focus,.info-btn:hover{background-color:#0ea5e9cc}.info-btn:active{opacity:.85}.info-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.info-btn:disabled,.info-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.info-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .info-btn){--tw-brightness:brightness(.9);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)}:is(.dark .info-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .info-btn:disabled),:is(.dark .info-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .info-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.info-btn{padding:.625rem 1.25rem}}.checkbox{position:relative;z-index:10;float:left;margin-top:.25rem;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.35rem;border-width:1px;border-color:rgb(210 214 218/var(--tw-border-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:top;font-size:1rem;line-height:1.5rem;transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.25s}.checkbox,.checkbox:disabled{--tw-border-opacity:1;--tw-bg-opacity:1}.checkbox:disabled{cursor:default;border-color:rgb(206 212 218/var(--tw-border-opacity));background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.checkbox[data-checked=true]{z-index:0;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}.checkbox:disabled[data-checked=true]{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .checkbox:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .checkbox[data-checked=true]){--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}:is(.dark .checkbox:disabled[data-checked=true]){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.custom-select-btn{display:flex;width:100%;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:padding-box;padding:.25rem .375rem;text-align:left;vertical-align:middle;font-size:.875rem;font-weight:400;line-height:1.4rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}.custom-select-btn::-moz-placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.custom-select-btn::placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.custom-select-btn:focus{--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}.custom-select-btn:disabled{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}:is(.dark .custom-select-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .custom-select-btn:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}@media (min-width:768px){.custom-select-btn{padding:.5rem .75rem}}.custom-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;min-height:38px;cursor:pointer;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.custom-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .custom-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.active.custom-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;min-height:38px;cursor:pointer;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.active.custom-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .active.custom-dropdown-btn){border-color:rgb(98 117 148/var(--tw-border-opacity));background-color:rgb(11 85 119/var(--tw-bg-opacity));color:rgb(233 236 239/var(--tw-text-opacity))}.regular-input,:is(.dark .active.custom-dropdown-btn){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1}.regular-input{display:block;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.5rem;border-width:1px;border-style:solid;border-color:rgb(210 214 218/var(--tw-border-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:padding-box;padding:.25rem .375rem;font-size:.875rem;font-weight:400;line-height:1.4rem;color:rgb(73 80 87/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.regular-input::-moz-placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.regular-input::placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.regular-input:focus{border-color:#d2d6da00;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.regular-input:valid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.regular-input:invalid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))}.regular-input:disabled{--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}:is(.dark .regular-input){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .regular-input:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}@media (min-width:768px){.regular-input{padding:.5rem .75rem}}.invalid.regular-input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.input-title{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .input-title){--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.popover-settings-container{position:fixed;z-index:1000;height:-moz-fit-content;height:fit-content;max-width:250px;--tw-translate-y:-1.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity));padding:.75rem;transition-property:all;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.5s}:is(.dark .popover-settings-container){--tw-brightness:brightness(.9);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)}.popover-tab{position:absolute;left:0;bottom:0;z-index:50;--tw-translate-y:-1.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity));padding:.75rem;transition-property:all;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.5s}:is(.dark .popover-tab){--tw-brightness:brightness(.9);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)}.popover-settings-text{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}.popover-settings-text,:is(.dark .popover-settings-text){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.popover-settings-svg{margin-left:.5rem;height:1.25rem;width:1.25rem;cursor:pointer;fill:#5e72e4}.popover-settings-svg:hover{--tw-brightness:brightness(.75);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)}.popover-settings-svg-multiple{margin-left:.5rem;height:1.375rem;width:1.375rem;cursor:pointer;fill:#fb6340;stroke:#495057}.popover-settings-svg-multiple:hover{--tw-brightness:brightness(.75);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)}:is(.dark .popover-settings-svg-multiple){stroke:#adb5bd}.hidden-multiple{display:none!important}.active.tabs-tab-btn,.active.tabs-tab-btn:hover{--tw-bg-opacity:1;background-color:rgb(233 236 239/var(--tw-bg-opacity))}:is(.dark .active.tabs-tab-btn),:is(.dark .active.tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}.tabs-tab-btn{position:relative;margin-top:.25rem;margin-bottom:.25rem;cursor:pointer;border-radius:0;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.75rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.tabs-tab-btn,.tabs-tab-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tabs-tab-btn:hover{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}:is(.dark .tabs-tab-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}.tabs-name{padding-left:.75rem;padding-right:.5rem;--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .tabs-name){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}.tabs-popover-container{position:absolute;top:60px;left:0;z-index:50;min-width:150px;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}:is(.dark .tabs-popover-container){--tw-brightness:brightness(.9);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)}.tabs-popover-text{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.settings-tabs-select-btn{margin-top:.25rem;margin-bottom:.25rem;display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.settings-tabs-select-btn:hover{--tw-translate-y:-1px;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));--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .settings-tabs-select-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .settings-tabs-select-btn:hover){--tw-brightness:brightness(.95);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)}@media (min-width:768px){.settings-tabs-select-btn{padding:.75rem 1.5rem}}.settings-tabs-select-btn-text{--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .settings-tabs-select-btn-text){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.active.settings-tabs-select-dropdown-btn{position:relative;z-index:1000;margin-top:0;margin-bottom:0;cursor:pointer;border-radius:0;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.active.settings-tabs-select-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .active.settings-tabs-select-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .active.settings-tabs-select-dropdown-btn:hover){--tw-brightness:brightness(.9);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)}.first.settings-tabs-select-dropdown-btn{border-top-left-radius:.25rem;border-top-right-radius:.25rem;border-width:1px}.last.settings-tabs-select-dropdown-btn{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.settings-tabs-select-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;display:flex;cursor:pointer;justify-content:space-between;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.settings-tabs-select-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .settings-tabs-select-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .settings-tabs-select-dropdown-btn:hover){--tw-brightness:brightness(.9);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)}.home-card{grid-column:span 12/span 12;display:flex;width:100%;justify-content:space-between;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.home-card:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .home-card){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.home-card{max-height:7rem}}@media (min-width:768px){.home-card{grid-column:span 6/span 6}}@media (min-width:1320px){.home-card{grid-column:span 4/span 4}}.home-card-name{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5}:is(.dark .home-card-name){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.home-card-title{margin-bottom:.25rem;font-weight:700}:is(.dark .home-card-title){color:#ffffffe6}.home-card-subtitle{margin-left:.125rem;margin-right:.125rem;margin-bottom:0;font-size:.875rem;line-height:1.5rem;font-weight:700;line-height:1.5}.info.home-card-subtitle{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.error.home-card-subtitle{--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}.success.home-card-subtitle{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.warning.home-card-subtitle{--tw-text-opacity:1;color:rgb(251 177 64/var(--tw-text-opacity))}.home-card-svg-container{display:inline-block;height:3rem;width:3rem;border-radius:50%;text-align:center}:is(.dark .home-card-svg-container){--tw-brightness:brightness(.9);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)}.version.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity))}.version-number.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(45 206 137/var(--tw-bg-opacity))}.instances.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(108 117 125/var(--tw-bg-opacity))}.services.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 99 64/var(--tw-bg-opacity))}.plugins.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 207 51/var(--tw-bg-opacity))}.card-detail-container{margin-top:1rem;margin-bottom:1.5rem;margin-left:.25rem;display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.5rem}.card-detail-item{grid-column:span 1/span 1;display:flex;align-items:center;padding-top:.25rem;padding-bottom:.25rem}@media (min-width:576px){.card-detail-item{padding-top:0;padding-bottom:0}}.card-detail-item-title{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .card-detail-item-title){--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.card-detail-item-subtitle{grid-column:span 1/span 1;margin-bottom:0;word-break:break-all;padding-left:.5rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .card-detail-item-subtitle){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}.core-layout{grid-column:span 12/span 12;display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}.core-card{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card{grid-column:span 4/span 4}}@media (min-width:1920px){.core-card{grid-column:span 3/span 3}}.core-card-lg{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-lg:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-lg){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card-lg{grid-column:span 6/span 6}}.core-card-wrap{display:flex;justify-content:space-between}.core-card-wrap-logo{display:flex;align-items:center;justify-content:flex-start}.core-card-text{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .core-card-text){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-text-doc{margin-top:1rem;margin-bottom:.5rem;padding-left:.25rem;padding-right:.25rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .core-card-text-doc){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-text-doc-link{margin-top:.5rem;cursor:pointer;--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity));text-decoration-line:underline}.core-card-text-doc-link:hover{--tw-brightness:brightness(.9);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)}.center.core-card-text{text-align:center}.core-card-title{margin-bottom:.5rem;font-weight:700}:is(.dark .core-card-title){color:#ffffffe6}.core-card-svg-container{display:inline-block;height:3rem;width:3rem;border-radius:50%;text-align:center}:is(.dark .core-card-svg-container){--tw-brightness:brightness(.9);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)}.core-card-deactivated-title{font-weight:700}:is(.dark .core-card-deactivated-title){color:#ffffffe6}.core-card-deactivated-svg{position:relative;--tw-translate-y:-8px;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));fill:#fbb140;stroke:#fff;font-size:1.125rem;line-height:1.75rem;line-height:1}.core-card-text-container{margin:.75rem .25rem;display:flex;align-items:center;justify-content:flex-start}.core-card-status{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-status:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-status){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card-status{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card-status{grid-column:span 3/span 3}}@media (min-width:1920px){.core-card-status{grid-column:span 2/span 2}}.core-card-status-container{margin-left:.25rem;margin-right:.25rem;display:flex;align-items:center;justify-content:flex-start}.core-card-status-title{margin-bottom:0;margin-right:1rem;font-weight:700}:is(.dark .core-card-status-title){color:#ffffffe6}.core-card-status-svg{height:1.5rem;width:1.5rem}.info.core-card-status-svg{fill:#0ea5e9}.error.core-card-status-svg{fill:#f53939}.success.core-card-status-svg{fill:#22c55e}.core-layout-separator{grid-column:span 12/span 12}.core-card-list{position:relative;grid-column:span 12/span 12;margin:.5rem;display:grid;max-height:25rem;grid-template-columns:repeat(12,minmax(0,1fr));align-content:flex-start;overflow-y:auto;overflow-x:hidden;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color)}.core-card-list,:is(.dark .core-card-list){box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .core-card-list){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.core-card-list{max-height:31.25rem}}@media (min-width:768px){.core-card-list{grid-column:span 6/span 6}}.core-card-list.no-data{place-content:stretch}.core-card-list-no-data{margin-bottom:0;padding-bottom:2rem;text-align:center;font-size:1.5rem;line-height:2rem}@media (min-width:768px){.w-small.core-card-list{max-width:300px}.w-medium.core-card-list{max-width:400px}.w-large.core-card-list{max-width:550px}}.core-card-list-title-container{grid-column:span 12/span 12;display:flex}.core-card-list-title{margin:.5rem .5rem 1rem;font-weight:700}:is(.dark .core-card-list-title){color:#ffffffe6}.core-card-list-container{grid-column:span 12/span 12;overflow-x:auto;overflow-y:auto}.core-card-list-header{margin:0;height:2rem;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));padding-bottom:.5rem;font-size:.875rem;line-height:1.5rem;font-weight:700}:is(.dark .core-card-list-header){--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.core-card-list-item{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));padding-top:.625rem;padding-bottom:.625rem}.core-card-list-item-content{margin:.25rem 0;font-size:.875rem;line-height:1.5rem}:is(.dark .core-card-list-item-content){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.core-card-list-wrap{display:grid;width:100%;grid-template-columns:repeat(12,minmax(0,1fr));border-radius:.25rem;padding:.5rem}.w-small.core-card-list-wrap{min-width:200px}.w-medium.core-card-list-wrap{min-width:300px}.w-large.core-card-list-wrap{min-width:450px}.core-card-metrics{grid-column:span 12/span 12;margin:.5rem;display:flex;height:-moz-fit-content;height:fit-content;justify-content:space-between;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-metrics:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-metrics){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.core-card-metrics{max-height:7rem}}@media (min-width:768px){.core-card-metrics{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card-metrics{grid-column:span 4/span 4}}.core-card-metrics-name{margin-bottom:.5rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5}:is(.dark .core-card-metrics-name){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.core-card-metrics-subtitle{margin-bottom:0}:is(.dark .core-card-metrics-subtitle){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-metrics-subtitle-content{margin-left:.125rem;margin-right:.125rem;font-size:.875rem;line-height:1.5rem;font-weight:700;line-height:1.5}.error.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}.success.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.warning.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(251 177 64/var(--tw-text-opacity))}.info.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.core-card-metrics-svg{position:relative;fill:#fff;font-size:1.125rem;line-height:1.75rem;line-height:1}.size-small.core-card-metrics-svg{--tw-scale-x:0.5;--tw-scale-y:0.5}.size-medium.core-card-metrics-svg,.size-small.core-card-metrics-svg{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))}.size-medium.core-card-metrics-svg{--tw-scale-x:0.6;--tw-scale-y:0.6}.size-base.core-card-metrics-svg{--tw-scale-x:0.75;--tw-scale-y:0.75;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))}.purple.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.green.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.red.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.orange.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(245 96 54/var(--tw-bg-opacity))}.blue.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(33 82 255/var(--tw-bg-opacity))}.yellow.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.gray.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(108 117 125/var(--tw-bg-opacity))}.dark.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(98 117 148/var(--tw-bg-opacity))}.amber.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.emerald.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.teal.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.indigo.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.cyan.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.sky.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.pink.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.lime.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.core-separator{margin:.75rem 0 .5rem;height:1px;background-color:initial;--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.core-separator,:is(.dark .core-separator){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:is(.dark .core-separator){--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.core-card-test-container{margin-top:1rem;display:flex;justify-content:center}.core-card-test-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity));padding:.75rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.core-card-test-btn,.core-card-test-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.core-card-test-btn:hover{--tw-translate-y:-1px;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));background-color:#fbb140cc;--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.core-card-test-btn:focus{background-color:#fbb140cc}.core-card-test-btn:active{opacity:.85}.core-card-test-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.core-card-test-btn:disabled,.core-card-test-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.core-card-test-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .core-card-test-btn){--tw-brightness:brightness(.9);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)}:is(.dark .core-card-test-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .core-card-test-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}.core-card-upload-btn{display:inline-block;width:-moz-fit-content;width:fit-content;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));background-image:linear-gradient(to top left,var(--tw-gradient-stops));background-size:150%;background-position:25% 0;padding:.75rem 1.5rem;text-align:center;vertical-align:middle;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.core-card-upload-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(.75);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)}.core-card-upload-btn:active{opacity:.85}.core-card-upload-btn:disabled{cursor:not-allowed;--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}.core-card-upload-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(.dark .core-card-upload-btn){--tw-brightness:brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:is(.dark .core-card-upload-btn:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-test-status-container{margin-left:.25rem;margin-right:.25rem;display:flex;align-items:center;justify-content:center}.core-card-test-status-svg{margin-right:.5rem;height:1.5rem;width:1.5rem}.success.core-card-test-status-svg{fill:#22c55e}.error.core-card-test-status-svg{fill:#f53939}.info.core-card-test-status-svg{fill:#0ea5e9}.core-img-default{margin-right:1rem;height:3rem;width:3rem}.core-img-hor{margin-right:1rem;height:4rem;width:6rem}.file-manager-actions-item-btn{position:relative;margin:.25rem;cursor:pointer;white-space:nowrap;border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.75rem 1.25rem .625rem 1rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.file-manager-actions-item-btn:hover{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.file-manager-actions-item-btn:disabled{cursor:not-allowed;border-color:#ced4da00;--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.file-manager-actions-item-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#ced4da00;--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity))}:is(.dark .file-manager-actions-item-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .file-manager-actions-item-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}:is(.dark .file-manager-actions-item-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .file-manager-actions-item-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}@media (min-width:768px){.file-manager-actions-item-btn{display:block}}.first-letter\:absolute:first-letter{position:absolute!important}.first-letter\:w-full:first-letter{width:100%!important}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.before\:float-left:before{content:var(--tw-content)!important;float:left!important}.before\:pr-2:before{content:var(--tw-content)!important;padding-right:.5rem!important}.before\:text-white:before{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.before\:content-\[\'\/\'\]:before{--tw-content:"/"!important;content:var(--tw-content)!important}.after\:absolute:after{content:var(--tw-content)!important;position:absolute!important}.after\:top-px:after{content:var(--tw-content)!important;top:1px!important}.after\:float-right:after{content:var(--tw-content)!important;float:right!important}.after\:h-4:after{content:var(--tw-content)!important;height:1rem!important}.after\:w-4:after{content:var(--tw-content)!important;width:1rem!important}.after\:translate-x-px:after{content:var(--tw-content)!important;--tw-translate-x:1px!important;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))!important}.after\:rounded-circle:after{content:var(--tw-content)!important;border-radius:50%!important}.after\:bg-white:after{content:var(--tw-content)!important;--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.after\:pl-2:after{content:var(--tw-content)!important;padding-left:.5rem!important}.after\:text-gray-600:after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}.after\:shadow-2xl:after{content:var(--tw-content)!important;--tw-shadow:0 .3125rem .625rem 0 #0000001f!important;--tw-shadow-colored:0 .3125rem .625rem 0 var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.after\:duration-300:after{content:var(--tw-content)!important;transition-duration:.3s!important}.after\:content-\[\'\'\]:after{--tw-content:""!important;content:var(--tw-content)!important}.after\:content-\[\'\/\'\]:after{--tw-content:"/"!important;content:var(--tw-content)!important}.checked\:z-0:checked{z-index:0!important}.checked\:border-primary:checked{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.checked\:bg-primary:checked{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}.checked\:bg-none:checked{background-image:none!important}.checked\:bg-right:checked{background-position:100%!important}.checked\:after\:translate-x-5:checked:after{--tw-translate-x:1.25rem!important}.checked\:after\:translate-x-5:checked:after,.checked\:after\:translate-x-5\.3:checked:after{content:var(--tw-content)!important;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))!important}.checked\:after\:translate-x-5\.3:checked:after{--tw-translate-x:1.3rem!important}.valid\:\!border-red-500:valid{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.hover\:-translate-y-0:hover{--tw-translate-y:-0px!important}.hover\:-translate-y-0:hover,.hover\:-translate-y-0\.4:hover{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))!important}.hover\:-translate-y-0\.4:hover{--tw-translate-y:-0.1rem!important}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem!important}.hover\:-translate-y-0\.5:hover,.hover\:-translate-y-px:hover{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))!important}.hover\:-translate-y-px:hover{--tw-translate-y:-1px!important}.hover\:scale-102:hover{--tw-scale-x:1.02!important;--tw-scale-y:1.02!important;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))!important}.hover\:rounded-lg:hover{border-radius:.5rem!important}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.hover\:bg-emerald-500\/80:hover{background-color:#2dce89cc!important}.hover\:bg-gray-100:hover{--tw-bg-opacity:1!important;background-color:rgb(235 239 244/var(--tw-bg-opacity))!important}.hover\:bg-gray-100\/10:hover{background-color:#ebeff41a!important}.hover\:bg-gray-300:hover{--tw-bg-opacity:1!important;background-color:rgb(210 214 218/var(--tw-bg-opacity))!important}.hover\:bg-gray-500:hover{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.hover\:bg-gray-500\/80:hover{background-color:#adb5bdcc!important}.hover\:bg-gray-600:hover{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.hover\:bg-gray-600\/80:hover{background-color:#6c757dcc!important}.hover\:bg-green-500:hover{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.hover\:bg-green-500\/80:hover{background-color:#22c55ecc!important}.hover\:bg-orange-500:hover{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.hover\:bg-orange-500\/80:hover{background-color:#fb6340cc!important}.hover\:bg-primary\/30:hover{background-color:#0b55774d!important}.hover\:bg-primary\/5:hover{background-color:#0b55770d!important}.hover\:bg-primary\/80:hover{background-color:#0b5577cc!important}.hover\:bg-red-500:hover{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.hover\:bg-red-500\/80:hover{background-color:#f53939cc!important}.hover\:bg-sky-500:hover{--tw-bg-opacity:1!important;background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.hover\:bg-sky-500\/80:hover{background-color:#0ea5e9cc!important}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1!important;background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.hover\:bg-yellow-400\/80:hover{background-color:#fbcf33cc!important}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.hover\:bg-yellow-500\/80:hover{background-color:#fbb140cc!important}.hover\:italic:hover{font-style:italic!important}.hover\:no-underline:hover{text-decoration-line:none!important}.hover\:opacity-80:hover{opacity:.8!important}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014!important;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)!important}.hover\:brightness-75:hover,.hover\:brightness-90:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.hover\:brightness-90:hover{--tw-brightness:brightness(.9)!important}.hover\:brightness-95:hover{--tw-brightness:brightness(.95)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.focus\:\!border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:border-green-500:focus{--tw-border-opacity:1!important;border-color:rgb(34 197 94/var(--tw-border-opacity))!important}.focus\:border-primary:focus{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.focus\:bg-emerald-500:focus{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.focus\:bg-emerald-500\/80:focus{background-color:#2dce89cc!important}.focus\:bg-gray-500:focus{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.focus\:bg-gray-500\/80:focus{background-color:#adb5bdcc!important}.focus\:bg-gray-600:focus{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.focus\:bg-gray-600\/80:focus{background-color:#6c757dcc!important}.focus\:bg-green-500:focus{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.focus\:bg-green-500\/80:focus{background-color:#22c55ecc!important}.focus\:bg-orange-500:focus{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.focus\:bg-orange-500\/80:focus{background-color:#fb6340cc!important}.focus\:bg-primary\/80:focus{background-color:#0b5577cc!important}.focus\:bg-red-500:focus{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.focus\:bg-red-500\/80:focus{background-color:#f53939cc!important}.focus\:bg-sky-500:focus{--tw-bg-opacity:1!important;background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.focus\:bg-sky-500\/80:focus{background-color:#0ea5e9cc!important}.focus\:bg-yellow-400:focus{--tw-bg-opacity:1!important;background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.focus\:bg-yellow-400\/80:focus{background-color:#fbcf33cc!important}.focus\:bg-yellow-500:focus{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.focus\:bg-yellow-500\/80:focus{background-color:#fbb140cc!important}.focus\:outline:focus{outline-style:solid!important}.focus\:\!ring-red-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.focus\:valid\:\!border-red-500:valid:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:valid\:border-green-500:valid:focus{--tw-border-opacity:1!important;border-color:rgb(34 197 94/var(--tw-border-opacity))!important}.focus\:valid\:\!ring-red-500:valid:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.focus\:invalid\:border-red-500:invalid:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:file\:invalid\:border-red-500:invalid::file-selector-button:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.active\:\!border-red-500:active{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.active\:opacity-85:active{opacity:.85!important}.active\:valid\:\!border-red-500:valid:active{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed!important}.disabled\:border-gray-400:disabled{--tw-border-opacity:1!important;border-color:rgb(206 212 218/var(--tw-border-opacity))!important}.disabled\:border-gray-400\/0:disabled{border-color:#ced4da00!important}.disabled\:bg-gray-400:disabled{--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}.disabled\:text-gray-700:disabled{--tw-text-opacity:1!important;color:rgb(73 80 87/var(--tw-text-opacity))!important}.disabled\:opacity-75:disabled{opacity:.75!important}.disabled\:hover\:translate-y-0:hover:disabled{--tw-translate-y:0px!important;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))!important}.disabled\:hover\:border-gray-400\/0:hover:disabled{border-color:#ced4da00!important}.disabled\:hover\:bg-gray-400:hover:disabled{--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}.group:hover .group-hover\:z-10{z-index:10!important}.group:hover .group-hover\:opacity-100{opacity:1!important}:is(.dark .dark\:inline){display:inline!important}:is(.dark .dark\:hidden){display:none!important}:is(.dark .dark\:border-gray-200){--tw-border-opacity:1!important;border-color:rgb(233 236 239/var(--tw-border-opacity))!important}:is(.dark .dark\:border-gray-300){--tw-border-opacity:1!important;border-color:rgb(210 214 218/var(--tw-border-opacity))!important}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1!important;border-color:rgb(73 80 87/var(--tw-border-opacity))!important}:is(.dark .dark\:border-slate-600){--tw-border-opacity:1!important;border-color:rgb(98 117 148/var(--tw-border-opacity))!important}:is(.dark .dark\:border-slate-800){--tw-border-opacity:1!important;border-color:rgb(58 65 111/var(--tw-border-opacity))!important}:is(.dark .dark\:bg-gray-400){--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1!important;background-color:rgb(37 47 64/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-green-500\/90){background-color:#22c55ee6!important}:is(.dark .dark\:bg-primary){--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-primary\/50){background-color:#0b557780!important}:is(.dark .dark\:bg-red-500\/90){background-color:#f53939e6!important}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1!important;background-color:rgb(52 71 103/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-700\/50){background-color:#34476780!important}:is(.dark .dark\:bg-slate-800){--tw-bg-opacity:1!important;background-color:rgb(58 65 111/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-850){--tw-bg-opacity:1!important;background-color:rgb(17 28 68/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity:1!important;background-color:rgb(5 17 57/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-900\/30){background-color:#0511394d!important}:is(.dark .dark\:bg-gradient-to-r){background-image:linear-gradient(to right,var(--tw-gradient-stops))!important}:is(.dark .dark\:from-transparent){--tw-gradient-from:#0000 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}:is(.dark .dark\:via-white){--tw-gradient-to:#fff0 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to)!important}:is(.dark .dark\:to-transparent){--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important}:is(.dark .dark\:fill-blue-500){fill:#5e72e4!important}:is(.dark .dark\:fill-gray-300){fill:#d2d6da!important}:is(.dark .dark\:fill-gray-500){fill:#adb5bd!important}:is(.dark .dark\:fill-gray-600){fill:#6c757d!important}:is(.dark .dark\:stroke-amber-500){stroke:#f59e0b!important}:is(.dark .dark\:stroke-gray-300){stroke:#d2d6da!important}:is(.dark .dark\:stroke-gray-400){stroke:#ced4da!important}:is(.dark .dark\:stroke-gray-600){stroke:#6c757d!important}:is(.dark .dark\:stroke-red-500){stroke:#f53939!important}:is(.dark .dark\:stroke-white\/90){stroke:#ffffffe6!important}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1!important;color:rgb(235 239 244/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1!important;color:rgb(233 236 239/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1!important;color:rgb(206 212 218/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-50){--tw-text-opacity:1!important;color:rgb(248 249 250/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}:is(.dark .dark\:text-white){--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}:is(.dark .dark\:text-white\/80){color:#fffc!important}:is(.dark .dark\:text-white\/90){color:#ffffffe6!important}:is(.dark .dark\:opacity-100){opacity:1!important}:is(.dark .dark\:opacity-60){opacity:.6!important}:is(.dark .dark\:opacity-80){opacity:.8!important}:is(.dark .dark\:opacity-90){opacity:.9!important}:is(.dark .dark\:shadow-dark-xl){--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f!important;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color)!important}:is(.dark .dark\:shadow-dark-xl),:is(.dark .dark\:shadow-none){box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}:is(.dark .dark\:shadow-none){--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}:is(.dark .dark\:brightness-110){--tw-brightness:brightness(1.1)!important}:is(.dark .dark\:brightness-110),:is(.dark .dark\:brightness-125){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:brightness-125){--tw-brightness:brightness(1.25)!important}:is(.dark .dark\:brightness-90){--tw-brightness:brightness(.9)!important}:is(.dark .dark\:brightness-90),:is(.dark .dark\:brightness-95){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:brightness-95){--tw-brightness:brightness(.95)!important}:is(.dark .dark\:brightness-\[0\.885\]){--tw-brightness:brightness(0.885)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:placeholder\:text-gray-600)::-moz-placeholder{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}:is(.dark .dark\:placeholder\:text-gray-600)::placeholder{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}:is(.dark .dark\:after\:text-gray-300):after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:after\:text-gray-500):after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}:is(.dark .dark\:checked\:border-primary:checked){--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}:is(.dark .dark\:checked\:bg-primary:checked){--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:bg-primary\/20:hover){background-color:#0b557733!important}:is(.dark .dark\:hover\:bg-primary\/60:hover){background-color:#0b557799!important}:is(.dark .dark\:hover\:bg-slate-700\/50:hover){background-color:#34476780!important}:is(.dark .dark\:hover\:bg-slate-800:hover){--tw-bg-opacity:1!important;background-color:rgb(58 65 111/var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:brightness-100:hover){--tw-brightness:brightness(1)!important}:is(.dark .dark\:hover\:brightness-100:hover),:is(.dark .dark\:hover\:brightness-105:hover){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:hover\:brightness-105:hover){--tw-brightness:brightness(1.05)!important}:is(.dark .dark\:hover\:brightness-110:hover){--tw-brightness:brightness(1.1)!important}:is(.dark .dark\:hover\:brightness-110:hover),:is(.dark .dark\:hover\:brightness-90:hover){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:hover\:brightness-90:hover){--tw-brightness:brightness(.9)!important}:is(.dark .dark\:disabled\:border-gray-700\/0:disabled){border-color:#49505700!important}:is(.dark .dark\:disabled\:border-gray-800:disabled){--tw-border-opacity:1!important;border-color:rgb(37 47 64/var(--tw-border-opacity))!important}:is(.dark .dark\:disabled\:bg-gray-700:disabled){--tw-bg-opacity:1!important;background-color:rgb(73 80 87/var(--tw-bg-opacity))!important}:is(.dark .dark\:disabled\:bg-gray-800:disabled){--tw-bg-opacity:1!important;background-color:rgb(37 47 64/var(--tw-bg-opacity))!important}:is(.dark .dark\:disabled\:text-gray-300:disabled){--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1!important;color:rgb(206 212 218/var(--tw-text-opacity))!important}:is(.dark .dark\:disabled\:hover\:translate-y-0:hover:disabled){--tw-translate-y:0px!important;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))!important}:is(.dark .dark\:disabled\:hover\:border-gray-700\/0:hover:disabled){border-color:#49505700!important}:is(.dark .dark\:disabled\:hover\:bg-gray-700:hover:disabled){--tw-bg-opacity:1!important;background-color:rgb(73 80 87/var(--tw-bg-opacity))!important}@media (min-width:576px){.sm\:right-24{right:6rem!important}.sm\:right-40{right:10rem!important}.sm\:right-6{right:1.5rem!important}.sm\:top-2{top:.5rem!important}.sm\:top-8{top:2rem!important}.sm\:top-\[4\.5rem\]{top:4.5rem!important}.sm\:col-span-4{grid-column:span 4/span 4!important}.sm\:col-span-6{grid-column:span 6/span 6!important}.sm\:col-start-5{grid-column-start:5!important}.sm\:mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.sm\:mx-6{margin-left:1.5rem!important;margin-right:1.5rem!important}.sm\:my-0{margin-top:0!important;margin-bottom:0!important}.sm\:mb-2{margin-bottom:.5rem!important}.sm\:ml-1{margin-left:.25rem!important}.sm\:ml-4{margin-left:1rem!important}.sm\:mr-16{margin-right:4rem!important}.sm\:mt-0{margin-top:0!important}.sm\:block{display:block!important}.sm\:inline{display:inline!important}.sm\:flex{display:flex!important}.sm\:h-10{height:2.5rem!important}.sm\:h-14{height:3.5rem!important}.sm\:h-7{height:1.75rem!important}.sm\:max-h-125{max-height:31.25rem!important}.sm\:w-36{width:9rem!important}.sm\:w-50{width:12.5rem!important}.sm\:w-7{width:1.75rem!important}.sm\:min-w-\[250px\]{min-width:250px!important}.sm\:min-w-\[500px\]{min-width:500px!important}.sm\:max-w-\[350px\]{max-width:350px!important}.sm\:translate-x-0{--tw-translate-x:0px!important}.sm\:scale-100,.sm\:translate-x-0{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))!important}.sm\:scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important}.sm\:flex-row{flex-direction:row!important}.sm\:items-center{align-items:center!important}.sm\:justify-end{justify-content:flex-end!important}.sm\:justify-items-start{justify-items:start!important}.sm\:gap-4{gap:1rem!important}.sm\:p-3{padding:.75rem!important}.sm\:px-12{padding-left:3rem!important;padding-right:3rem!important}.sm\:px-4{padding-left:1rem!important;padding-right:1rem!important}.sm\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.sm\:pl-3{padding-left:.75rem!important}.sm\:pr-2{padding-right:.5rem!important}.sm\:pt-6{padding-top:1.5rem!important}.sm\:text-left{text-align:left!important}.sm\:text-2xl{font-size:1.5rem!important;line-height:2rem!important}.sm\:text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.sm\:text-7xl{font-size:4.5rem!important;line-height:1!important}.sm\:text-base{font-size:1rem!important}.sm\:text-base,.sm\:text-sm{line-height:1.5rem!important}.sm\:text-sm{font-size:.875rem!important}}@media (min-width:768px){.md\:absolute{position:absolute!important}.md\:right-8{right:2rem!important}.md\:right-\[3\.75rem\]{right:3.75rem!important}.md\:top-\[40\%\]{top:40%!important}.md\:top-\[53\%\]{top:53%!important}.md\:col-span-4{grid-column:span 4/span 4!important}.md\:col-span-6{grid-column:span 6/span 6!important}.md\:col-span-7{grid-column:span 7/span 7!important}.md\:col-span-8{grid-column:span 8/span 8!important}.md\:mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.md\:mx-4{margin-left:1rem!important;margin-right:1rem!important}.md\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.md\:mb-0{margin-bottom:0!important}.md\:mb-3{margin-bottom:.75rem!important}.md\:mr-3{margin-right:.75rem!important}.md\:mt-0{margin-top:0!important}.md\:mt-6{margin-top:1.5rem!important}.md\:hidden{display:none!important}.md\:h-16{height:4rem!important}.md\:max-h-\[90vh\]{max-height:90vh!important}.md\:min-h-50-screen{min-height:50vh!important}.md\:w-1\/2{width:50%!important}.md\:w-60{width:15rem!important}.md\:max-w-\[700px\]{max-width:700px!important}.md\:-translate-y-20{--tw-translate-y:-5rem!important;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))!important}.md\:flex-row{flex-direction:row!important}.md\:items-end{align-items:flex-end!important}.md\:gap-x-4{-moz-column-gap:1rem!important;column-gap:1rem!important}.md\:gap-x-6{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.md\:px-1{padding-left:.25rem!important;padding-right:.25rem!important}.md\:px-3{padding-left:.75rem!important;padding-right:.75rem!important}.md\:px-4{padding-left:1rem!important;padding-right:1rem!important}.md\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.md\:py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.md\:text-base{font-size:1rem!important;line-height:1.5rem!important}}@media (min-width:992px){.lg\:relative{position:relative!important}.lg\:bottom-2{bottom:.5rem!important}.lg\:left-48{left:12rem!important}.lg\:top-24{top:6rem!important}.lg\:order-1{order:1!important}.lg\:order-2{order:2!important}.lg\:col-span-1{grid-column:span 1/span 1!important}.lg\:col-span-4{grid-column:span 4/span 4!important}.lg\:col-span-5{grid-column:span 5/span 5!important}.lg\:col-span-6{grid-column:span 6/span 6!important}.lg\:col-span-8{grid-column:span 8/span 8!important}.lg\:mx-0{margin-left:0!important;margin-right:0!important}.lg\:mx-4{margin-left:1rem!important;margin-right:1rem!important}.lg\:mx-8{margin-left:2rem!important;margin-right:2rem!important}.lg\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.lg\:mt-0{margin-top:0!important}.lg\:mt-4{margin-top:1rem!important}.lg\:mt-8{margin-top:2rem!important}.lg\:block{display:block!important}.lg\:inline{display:inline!important}.lg\:flex{display:flex!important}.lg\:hidden{display:none!important}.lg\:h-24{height:6rem!important}.lg\:h-36{height:9rem!important}.lg\:h-9{height:2.25rem!important}.lg\:max-h-\[550px\]{max-height:550px!important}.lg\:w-36{width:9rem!important}.lg\:w-80{width:20rem!important}.lg\:w-9{width:2.25rem!important}.lg\:w-\[400px\]{width:400px!important}.lg\:max-w-\[700px\]{max-width:700px!important}.lg\:translate-x-0{--tw-translate-x:0px!important}.lg\:translate-x-0,.lg\:translate-y-0{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))!important}.lg\:translate-y-0{--tw-translate-y:0px!important}.lg\:flex-row{flex-direction:row!important}.lg\:flex-nowrap{flex-wrap:nowrap!important}.lg\:justify-start{justify-content:flex-start!important}.lg\:justify-end{justify-content:flex-end!important}.lg\:justify-between{justify-content:space-between!important}.lg\:gap-6{gap:1.5rem!important}.lg\:bg-gray-50{--tw-bg-opacity:1!important;background-color:rgb(248 249 250/var(--tw-bg-opacity))!important}.lg\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.lg\:pb-1{padding-bottom:.25rem!important}.lg\:pb-28{padding-bottom:7rem!important}.lg\:pt-6{padding-top:1.5rem!important}.lg\:text-left{text-align:left!important}.lg\:text-base{font-size:1rem!important}.lg\:text-base,.lg\:text-sm{line-height:1.5rem!important}.lg\:text-sm{font-size:.875rem!important}}@media (min-width:1200px){.xl\:left-0{left:0!important}.xl\:right-24{right:6rem!important}.xl\:right-6{right:1.5rem!important}.xl\:ml-6{margin-left:1.5rem!important}.xl\:ml-68{margin-left:17rem!important}.xl\:hidden{display:none!important}.xl\:h-44{height:11rem!important}.xl\:max-h-\[550px\]{max-height:550px!important}.xl\:w-1\/3{width:33.333333%!important}.xl\:w-44{width:11rem!important}.xl\:w-\[500px\]{width:500px!important}.xl\:max-w-\[1200px\]{max-width:1200px!important}.xl\:translate-x-0{--tw-translate-x:0px!important;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))!important}.xl\:p-1{padding:.25rem!important}.xl\:p-1\.5{padding:.375rem!important}.xl\:pl-75{padding-left:18.75rem!important}.xl\:text-base{font-size:1rem!important;line-height:1.5rem!important}}@media (min-width:1320px){.\32xl\:col-span-4{grid-column:span 4/span 4!important}.\32xl\:col-span-6{grid-column:span 6/span 6!important}.\32xl\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.\32xl\:max-w-\[1500px\]{max-width:1500px!important}.\32xl\:text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.\32xl\:text-5xl{font-size:3rem!important;line-height:1!important}.\32xl\:text-8xl{font-size:5rem!important;line-height:1!important}.\32xl\:text-lg{font-size:1.125rem!important;line-height:1.75rem!important}}@media (min-width:1920px){.\33xl\:col-span-3{grid-column:span 3/span 3!important}.\33xl\:col-span-4{grid-column:span 4/span 4!important}.\33xl\:col-span-5{grid-column:span 5/span 5!important}.\33xl\:inline{display:inline!important}.\33xl\:max-w-none{max-width:none!important}.\33xl\:translate-x-60{--tw-translate-x:15rem!important;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))!important}.\33xl\:text-6xl{font-size:3.75rem!important;line-height:1!important}.\33xl\:text-9xl{font-size:6rem!important;line-height:1!important}.\33xl\:text-xl{font-size:1.25rem!important;line-height:1.75rem!important}}@media (min-width:340px){.xs\:flex-row{flex-direction:row!important}.xs\:items-center{align-items:center!important}.xs\:justify-start{justify-content:flex-start!important}.xs\:pl-2{padding-left:.5rem!important}.xs\:text-base{font-size:1rem!important}.xs\:text-base,.xs\:text-sm{line-height:1.5rem!important}.xs\:text-sm{font-size:.875rem!important}}.\[\&\>\*\]\:bg-primary>*{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}
\ No newline at end of file
+/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e9ecef}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#ced4da}input::placeholder,textarea::placeholder{opacity:1;color:#ced4da}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#5e72e480;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.\!container{width:100%!important;margin-right:auto!important;margin-left:auto!important;padding-right:1.5rem!important;padding-left:1.5rem!important}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1.5rem;padding-left:1.5rem}@media (min-width:340px){.\!container{max-width:340px!important}.container{max-width:340px}}@media (min-width:576px){.\!container{max-width:576px!important}.container{max-width:576px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:992px){.\!container{max-width:992px!important}.container{max-width:992px}}@media (min-width:1200px){.\!container{max-width:1200px!important}.container{max-width:1200px}}@media (min-width:1320px){.\!container{max-width:1320px!important}.container{max-width:1320px}}@media (min-width:1920px){.\!container{max-width:1920px!important}.container{max-width:1920px}}a{letter-spacing:-.025rem}hr{margin:1rem 0;border:0;opacity:.25}img{max-width:none}label{display:inline-block}p{line-height:1.625;font-weight:400;margin-bottom:1rem}small{font-size:.875em}svg{display:inline}table{border-collapse:inherit}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;color:#344767}h1,h2,h3,h4{letter-spacing:-.05rem}h1,h2,h3{font-weight:700}h4,h5,h6{font-weight:600}h1{font-size:3rem;line-height:1.25}h2{font-size:2.25rem;line-height:1.3}h3{font-size:1.875rem}h3,h4{line-height:1.375}h4{font-size:1.5rem}h5{font-size:1.25rem;line-height:1.375}h6{font-size:1rem;line-height:1.625}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.collapse{visibility:collapse!important}.static{position:static!important}.fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.inset-y-0{top:0!important;bottom:0!important}.-left-full{left:-100%!important}.-right-0{right:0!important}.-right-1{right:-.25rem!important}.bottom-0{bottom:0!important}.bottom-1{bottom:.25rem!important}.bottom-1\.5{bottom:.375rem!important}.bottom-2{bottom:.5rem!important}.bottom-24{bottom:6rem!important}.bottom-3{bottom:.75rem!important}.bottom-4{bottom:1rem!important}.bottom-6{bottom:1.5rem!important}.bottom-7{bottom:1.75rem!important}.bottom-8{bottom:2rem!important}.left-0{left:0!important}.left-1{left:.25rem!important}.left-16{left:4rem!important}.left-20{left:5rem!important}.left-24{left:6rem!important}.left-32{left:8rem!important}.left-4{left:1rem!important}.left-40{left:10rem!important}.left-48{left:12rem!important}.left-8{left:2rem!important}.left-auto{left:auto!important}.left-full{left:100%!important}.right-0{right:0!important}.right-12{right:3rem!important}.right-2{right:.5rem!important}.right-20{right:5rem!important}.right-4{right:1rem!important}.right-5{right:1.25rem!important}.right-6{right:1.5rem!important}.right-7{right:1.75rem!important}.right-8{right:2rem!important}.right-\[3\.25rem\]{right:3.25rem!important}.top-0{top:0!important}.top-1{top:.25rem!important}.top-1\.5{top:.375rem!important}.top-1\/2{top:50%!important}.top-10{top:2.5rem!important}.top-12{top:3rem!important}.top-14{top:3.5rem!important}.top-16{top:4rem!important}.top-2{top:.5rem!important}.top-24{top:6rem!important}.top-3{top:.75rem!important}.top-36{top:9rem!important}.top-4{top:1rem!important}.top-6{top:1.5rem!important}.top-7{top:1.75rem!important}.top-8{top:2rem!important}.top-\[38\%\]{top:38%!important}.top-\[4\.5rem\]{top:4.5rem!important}.top-\[52\%\]{top:52%!important}.top-\[55\%\]{top:55%!important}.top-\[8\.2rem\]{top:8.2rem!important}.-z-10{z-index:-10!important}.z-0{z-index:0!important}.z-10{z-index:10!important}.z-100{z-index:100!important}.z-110{z-index:110!important}.z-20{z-index:20!important}.z-990{z-index:990!important}.z-\[10000\]{z-index:10000!important}.z-\[1000\]{z-index:1000!important}.z-\[1001\]{z-index:1001!important}.z-\[20\]{z-index:20!important}.z-sticky{z-index:1020!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.col-span-1{grid-column:span 1/span 1!important}.col-span-10{grid-column:span 10/span 10!important}.col-span-11{grid-column:span 11/span 11!important}.col-span-12{grid-column:span 12/span 12!important}.col-span-2{grid-column:span 2/span 2!important}.col-span-3{grid-column:span 3/span 3!important}.col-span-4{grid-column:span 4/span 4!important}.col-span-5{grid-column:span 5/span 5!important}.col-span-6{grid-column:span 6/span 6!important}.col-span-9{grid-column:span 9/span 9!important}.float-right{float:right!important}.float-left{float:left!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-1\.5{margin-left:.375rem!important;margin-right:.375rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2\.5{margin-left:.625rem!important;margin-right:.625rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.mb-0{margin-bottom:0!important}.mb-0\.5{margin-bottom:.125rem!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2\.5{margin-bottom:.625rem!important}.mb-3{margin-bottom:.75rem!important}.mb-4{margin-bottom:1rem!important}.mb-6{margin-bottom:1.5rem!important}.mb-7{margin-bottom:1.75rem!important}.mb-8{margin-bottom:2rem!important}.ml-0{margin-left:0!important}.ml-1{margin-left:.25rem!important}.ml-12{margin-left:3rem!important}.ml-2{margin-left:.5rem!important}.ml-3{margin-left:.75rem!important}.ml-4{margin-left:1rem!important}.mr-1{margin-right:.25rem!important}.mr-12{margin-right:3rem!important}.mr-2{margin-right:.5rem!important}.mr-3{margin-right:.75rem!important}.mr-4{margin-right:1rem!important}.mt-0{margin-top:0!important}.mt-0\.5{margin-top:.125rem!important}.mt-1{margin-top:.25rem!important}.mt-10{margin-top:2.5rem!important}.mt-12{margin-top:3rem!important}.mt-16{margin-top:4rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:.75rem!important}.mt-4{margin-top:1rem!important}.mt-5{margin-top:1.25rem!important}.mt-6{margin-top:1.5rem!important}.mt-8{margin-top:2rem!important}.mt-\[15vh\]{margin-top:15vh!important}.mt-\[4\.5rem\]{margin-top:4.5rem!important}.block{display:block!important}.inline-block{display:inline-block!important}.inline{display:inline!important}.flex{display:flex!important}.table{display:table!important}.grid{display:grid!important}.list-item{display:list-item!important}.\!hidden,.hidden{display:none!important}.h-1{height:.25rem!important}.h-1\/3{height:33.333333%!important}.h-12{height:3rem!important}.h-14{height:3.5rem!important}.h-3{height:.75rem!important}.h-32{height:8rem!important}.h-4{height:1rem!important}.h-4\.5{height:1.125rem!important}.h-40{height:10rem!important}.h-5{height:1.25rem!important}.h-5\.5{height:1.375rem!important}.h-6{height:1.5rem!important}.h-7{height:1.75rem!important}.h-8{height:2rem!important}.h-96{height:24rem!important}.h-\[2\.5rem\]{height:2.5rem!important}.h-\[250px\]{height:250px!important}.h-\[3\.5rem\]{height:3.5rem!important}.h-\[4rem\]{height:4rem!important}.h-\[90vh\]{height:90vh!important}.h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-full{height:100%!important}.h-px{height:1px!important}.h-screen{height:100vh!important}.max-h-100{max-height:25rem!important}.max-h-30{max-height:7.5rem!important}.max-h-80{max-height:20rem!important}.max-h-\[200px\]{max-height:200px!important}.max-h-\[250px\]{max-height:250px!important}.max-h-\[350px\]{max-height:350px!important}.max-h-\[400px\]{max-height:400px!important}.max-h-\[70vh\]{max-height:70vh!important}.max-h-\[90vh\]{max-height:90vh!important}.max-h-\[95vh\]{max-height:95vh!important}.max-h-screen{max-height:100vh!important}.min-h-12{min-height:3rem!important}.min-h-20{min-height:5rem!important}.min-h-52{min-height:13rem!important}.min-h-6{min-height:1.5rem!important}.min-h-\[100px\]{min-height:100px!important}.min-h-\[200px\]{min-height:200px!important}.min-h-\[350px\]{min-height:350px!important}.min-h-\[400px\]{min-height:400px!important}.min-h-\[55vh\]{min-height:55vh!important}.min-h-\[75px\]{min-height:75px!important}.min-h-\[85vh\]{min-height:85vh!important}.min-h-screen{min-height:100vh!important}.w-1{width:.25rem!important}.w-10{width:2.5rem!important}.w-11\/12{width:91.666667%!important}.w-28{width:7rem!important}.w-3{width:.75rem!important}.w-32{width:8rem!important}.w-4{width:1rem!important}.w-4\.5{width:1.125rem!important}.w-40{width:10rem!important}.w-48{width:12rem!important}.w-5{width:1.25rem!important}.w-5\.5{width:1.375rem!important}.w-50{width:12.5rem!important}.w-6{width:1.5rem!important}.w-7{width:1.75rem!important}.w-8{width:2rem!important}.w-80{width:20rem!important}.w-90{width:22.5rem!important}.w-\[2\.5rem\]{width:2.5rem!important}.w-\[50vw\]{width:50vw!important}.w-auto{width:auto!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.w-screen{width:100vw!important}.min-w-0{min-width:0!important}.min-w-\[1150px\]{min-width:1150px!important}.min-w-\[1300px\]{min-width:1300px!important}.min-w-\[200px\]{min-width:200px!important}.min-w-\[300px\]{min-width:300px!important}.min-w-\[600px\]{min-width:600px!important}.min-w-\[800px\]{min-width:800px!important}.min-w-\[900px\]{min-width:900px!important}.max-w-40{max-width:10rem!important}.max-w-60{max-width:15rem!important}.max-w-64{max-width:16rem!important}.max-w-\[1000px\]{max-width:1000px!important}.max-w-\[150px\]{max-width:150px!important}.max-w-\[1920px\]{max-width:1920px!important}.max-w-\[300px\]{max-width:300px!important}.max-w-\[400px\]{max-width:400px!important}.max-w-\[450px\]{max-width:450px!important}.max-w-\[550px\]{max-width:550px!important}.max-w-\[650px\]{max-width:650px!important}.max-w-\[700px\]{max-width:700px!important}.max-w-full{max-width:100%!important}.max-w-none{max-width:none!important}.max-w-screen-lg{max-width:992px!important}.flex-auto{flex:1 1 auto!important}.grow{flex-grow:1!important}.basis-full{flex-basis:100%!important}.border-collapse{border-collapse:collapse!important}.-translate-x-1{--tw-translate-x:-0.25rem!important}.-translate-x-1,.-translate-x-1\.5{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))!important}.-translate-x-1\.5{--tw-translate-x:-0.375rem!important}.-translate-x-36{--tw-translate-x:-9rem!important}.-translate-x-36,.-translate-x-40{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))!important}.-translate-x-40{--tw-translate-x:-10rem!important}.-translate-x-48{--tw-translate-x:-12rem!important}.-translate-x-48,.-translate-x-52{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))!important}.-translate-x-52{--tw-translate-x:-13rem!important}.-translate-x-56{--tw-translate-x:-14rem!important}.-translate-x-56,.-translate-x-60{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))!important}.-translate-x-60{--tw-translate-x:-15rem!important}.-translate-x-64{--tw-translate-x:-16rem!important}.-translate-x-64,.-translate-x-72{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))!important}.-translate-x-72{--tw-translate-x:-18rem!important}.-translate-x-full{--tw-translate-x:-100%!important}.-translate-x-full,.-translate-y-0{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))!important}.-translate-y-0{--tw-translate-y:-0px!important}.-translate-y-0\.4{--tw-translate-y:-0.1rem!important}.-translate-y-0\.4,.-translate-y-0\.5{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))!important}.-translate-y-0\.5{--tw-translate-y:-0.125rem!important}.-translate-y-1{--tw-translate-y:-0.25rem!important}.-translate-y-1,.-translate-y-12{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))!important}.-translate-y-12{--tw-translate-y:-3rem!important}.-translate-y-16{--tw-translate-y:-4rem!important}.-translate-y-16,.-translate-y-2{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))!important}.-translate-y-2{--tw-translate-y:-0.5rem!important}.-translate-y-20{--tw-translate-y:-5rem!important}.-translate-y-20,.-translate-y-24{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))!important}.-translate-y-24{--tw-translate-y:-6rem!important}.-translate-y-28{--tw-translate-y:-7rem!important}.-translate-y-28,.-translate-y-36{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))!important}.-translate-y-36{--tw-translate-y:-9rem!important}.-translate-y-4{--tw-translate-y:-1rem!important}.-translate-y-4,.-translate-y-6{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))!important}.-translate-y-6{--tw-translate-y:-1.5rem!important}.-translate-y-8{--tw-translate-y:-2rem!important}.-translate-y-8,.translate-x-0{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))!important}.translate-x-0{--tw-translate-x:0px!important}.translate-x-0\.5{--tw-translate-x:0.125rem!important}.translate-x-0\.5,.translate-x-1{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))!important}.translate-x-1{--tw-translate-x:0.25rem!important}.translate-x-16{--tw-translate-x:4rem!important}.translate-x-16,.translate-x-2{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))!important}.translate-x-2{--tw-translate-x:0.5rem!important}.translate-x-24{--tw-translate-x:6rem!important}.translate-x-24,.translate-x-3{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))!important}.translate-x-3{--tw-translate-x:0.75rem!important}.translate-x-32{--tw-translate-x:8rem!important}.translate-x-32,.translate-x-4{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))!important}.translate-x-4{--tw-translate-x:1rem!important}.translate-x-40{--tw-translate-x:10rem!important}.translate-x-40,.translate-x-48{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))!important}.translate-x-48{--tw-translate-x:12rem!important}.translate-x-52{--tw-translate-x:13rem!important}.translate-x-52,.translate-x-56{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))!important}.translate-x-56{--tw-translate-x:14rem!important}.translate-x-60{--tw-translate-x:15rem!important}.translate-x-60,.translate-x-90{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))!important}.translate-x-90{--tw-translate-x:22.5rem!important}.translate-x-\[3rem\]{--tw-translate-x:3rem!important}.translate-x-\[3rem\],.translate-y-0{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))!important}.translate-y-0{--tw-translate-y:0px!important}.translate-y-0\.5{--tw-translate-y:0.125rem!important}.translate-y-0\.5,.translate-y-1{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))!important}.translate-y-1{--tw-translate-y:0.25rem!important}.translate-y-16{--tw-translate-y:4rem!important}.translate-y-16,.translate-y-2{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))!important}.translate-y-2{--tw-translate-y:0.5rem!important}.-rotate-12{--tw-rotate:-12deg!important}.-rotate-12,.rotate-12{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))!important}.rotate-12{--tw-rotate:12deg!important}.rotate-180{--tw-rotate:180deg!important}.rotate-180,.rotate-90{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))!important}.rotate-90{--tw-rotate:90deg!important}.scale-105{--tw-scale-x:1.05!important;--tw-scale-y:1.05!important}.scale-105,.scale-110{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))!important}.scale-110{--tw-scale-x:1.1!important;--tw-scale-y:1.1!important}.scale-50{--tw-scale-x:.5!important;--tw-scale-y:.5!important}.scale-50,.scale-75{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))!important}.scale-75{--tw-scale-x:.75!important;--tw-scale-y:.75!important}.scale-90{--tw-scale-x:.9!important;--tw-scale-y:.9!important}.scale-90,.scale-\[0\.6\]{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))!important}.scale-\[0\.6\]{--tw-scale-x:0.6!important;--tw-scale-y:0.6!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-pointer{cursor:pointer!important}.cursor-text{cursor:text!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.resize{resize:both!important}.list-none{list-style-type:none!important}.appearance-none{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.flex-row{flex-direction:row!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.items-start{align-items:flex-start!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.justify-items-center{justify-items:center!important}.gap-2{gap:.5rem!important}.gap-3{gap:.75rem!important}.gap-4{gap:1rem!important}.gap-8{gap:2rem!important}.gap-x-4{-moz-column-gap:1rem!important;column-gap:1rem!important}.gap-y-2{row-gap:.5rem!important}.gap-y-3{row-gap:.75rem!important}.gap-y-4{row-gap:1rem!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.whitespace-normal{white-space:normal!important}.whitespace-nowrap{white-space:nowrap!important}.break-words{overflow-wrap:break-word!important}.rounded,.rounded-1{border-radius:.25rem!important}.rounded-1\.4{border-radius:.35rem!important}.rounded-10{border-radius:2.5rem!important}.rounded-2xl{border-radius:1rem!important}.rounded-circle{border-radius:50%!important}.rounded-full{border-radius:9999px!important}.rounded-lg{border-radius:.5rem!important}.rounded-none{border-radius:0!important}.rounded-xl{border-radius:.75rem!important}.rounded-b{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-b-lg{border-bottom-left-radius:.5rem!important}.rounded-b-lg,.rounded-r-lg{border-bottom-right-radius:.5rem!important}.rounded-r-lg{border-top-right-radius:.5rem!important}.rounded-t{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-t-2xl{border-top-left-radius:1rem!important;border-top-right-radius:1rem!important}.rounded-t-lg{border-top-left-radius:.5rem!important;border-top-right-radius:.5rem!important}.border{border-width:1px!important}.border-0{border-width:0!important}.border-2{border-width:2px!important}.border-b{border-bottom-width:1px!important}.border-b-0{border-bottom-width:0!important}.border-l{border-left-width:1px!important}.border-r{border-right-width:1px!important}.border-t{border-top-width:1px!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-gray-100{--tw-border-opacity:1!important;border-color:rgb(235 239 244/var(--tw-border-opacity))!important}.border-gray-100\/50{border-color:#ebeff480!important}.border-gray-200{--tw-border-opacity:1!important;border-color:rgb(233 236 239/var(--tw-border-opacity))!important}.border-gray-300{--tw-border-opacity:1!important;border-color:rgb(210 214 218/var(--tw-border-opacity))!important}.border-gray-400{--tw-border-opacity:1!important;border-color:rgb(206 212 218/var(--tw-border-opacity))!important}.border-gray-700{--tw-border-opacity:1!important;border-color:rgb(73 80 87/var(--tw-border-opacity))!important}.border-primary{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.bg-blue-500{--tw-bg-opacity:1!important;background-color:rgb(94 114 228/var(--tw-bg-opacity))!important}.bg-emerald-500{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.bg-emerald-500\/80{background-color:#2dce89cc!important}.bg-gray-100{background-color:rgb(235 239 244/var(--tw-bg-opacity))!important}.bg-gray-100,.bg-gray-200{--tw-bg-opacity:1!important}.bg-gray-200{background-color:rgb(233 236 239/var(--tw-bg-opacity))!important}.bg-gray-300{background-color:rgb(210 214 218/var(--tw-bg-opacity))!important}.bg-gray-300,.bg-gray-50{--tw-bg-opacity:1!important}.bg-gray-50{background-color:rgb(248 249 250/var(--tw-bg-opacity))!important}.bg-gray-50\/10{background-color:#f8f9fa1a!important}.bg-gray-500{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.bg-gray-500\/80{background-color:#adb5bdcc!important}.bg-gray-600{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.bg-gray-600\/50{background-color:#6c757d80!important}.bg-gray-600\/80{background-color:#6c757dcc!important}.bg-green-500{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.bg-green-500\/80{background-color:#22c55ecc!important}.bg-orange-500{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.bg-orange-500\/80{background-color:#fb6340cc!important}.bg-primary{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}.bg-primary\/10{background-color:#0b55771a!important}.bg-red-500{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.bg-red-500\/80{background-color:#f53939cc!important}.bg-secondary{background-color:rgb(46 172 104/var(--tw-bg-opacity))!important}.bg-secondary,.bg-sky-500{--tw-bg-opacity:1!important}.bg-sky-500{background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.bg-sky-500\/80{background-color:#0ea5e9cc!important}.bg-slate-800\/10{background-color:#3a416f1a!important}.bg-transparent{background-color:initial!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.bg-white,.bg-yellow-400{--tw-bg-opacity:1!important}.bg-yellow-400{background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.bg-yellow-400\/80{background-color:#fbcf33cc!important}.bg-yellow-500{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.bg-yellow-500\/80{background-color:#fbb140cc!important}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))!important}.bg-gradient-to-tl{background-image:linear-gradient(to top left,var(--tw-gradient-stops))!important}.bg-none{background-image:none!important}.from-\[\#075577\]{--tw-gradient-from:#075577 var(--tw-gradient-from-position)!important;--tw-gradient-to:#07557700 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.from-\[\#0b5577\]{--tw-gradient-from:#0b5577 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0b557700 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.via-black\/40{--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to)!important}.to-\[\#116D70\]{--tw-gradient-to:#116d70 var(--tw-gradient-to-position)!important}.to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important}.bg-150{background-size:150%!important}.bg-contain{background-size:contain!important}.bg-clip-border{background-clip:initial!important}.bg-clip-padding{background-clip:padding-box!important}.bg-center{background-position:50%!important}.bg-left{background-position:0!important}.bg-x-25{background-position:25% 0!important}.bg-no-repeat{background-repeat:no-repeat!important}.fill-blue-500{fill:#5e72e4!important}.fill-gray-500{fill:#adb5bd!important}.fill-gray-600{fill:#6c757d!important}.fill-gray-700{fill:#495057!important}.fill-green-500{fill:#22c55e!important}.fill-primary{fill:#0b5577!important}.fill-red-500{fill:#f53939!important}.fill-sky-500{fill:#0ea5e9!important}.fill-slate-800{fill:#3a416f!important}.fill-white{fill:#fff!important}.fill-yellow-500{fill:#fbb140!important}.stroke-amber-500{stroke:#f59e0b!important}.stroke-blue-400{stroke:#60a5fa!important}.stroke-blue-500{stroke:#5e72e4!important}.stroke-emerald-600{stroke:#059669!important}.stroke-gray-100{stroke:#ebeff4!important}.stroke-gray-100\/50{stroke:#ebeff480!important}.stroke-gray-600{stroke:#6c757d!important}.stroke-gray-700{stroke:#495057!important}.stroke-gray-800{stroke:#252f40!important}.stroke-green-700{stroke:#15803d!important}.stroke-orange-500{stroke:#fb6340!important}.stroke-pink-600{stroke:#db2777!important}.stroke-red-500{stroke:#f53939!important}.stroke-sky-500{stroke:#0ea5e9!important}.stroke-stone-500{stroke:#78716c!important}.stroke-white{stroke:#fff!important}.stroke-yellow-400{stroke:#fbcf33!important}.stroke-yellow-500{stroke:#fbb140!important}.stroke-0{stroke-width:0!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:.75rem!important}.p-4{padding:1rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-0\.5{padding-left:.125rem!important;padding-right:.125rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-1\.5{padding-left:.375rem!important;padding-right:.375rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-28{padding-left:7rem!important;padding-right:7rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-8{padding-left:2rem!important;padding-right:2rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-0\.5{padding-top:.125rem!important;padding-bottom:.125rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.py-10{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.py-12{padding-top:3rem!important;padding-bottom:3rem!important}.py-16{padding-top:4rem!important;padding-bottom:4rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-2\.5{padding-top:.625rem!important;padding-bottom:.625rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.py-8{padding-top:2rem!important;padding-bottom:2rem!important}.pb-0{padding-bottom:0!important}.pb-10{padding-bottom:2.5rem!important}.pb-16{padding-bottom:4rem!important}.pb-2{padding-bottom:.5rem!important}.pb-24{padding-bottom:6rem!important}.pb-28{padding-bottom:7rem!important}.pb-4{padding-bottom:1rem!important}.pb-6{padding-bottom:1.5rem!important}.pb-8{padding-bottom:2rem!important}.pl-0{padding-left:0!important}.pl-2{padding-left:.5rem!important}.pl-3{padding-left:.75rem!important}.pl-6{padding-left:1.5rem!important}.pt-1{padding-top:.25rem!important}.pt-10{padding-top:2.5rem!important}.pt-2{padding-top:.5rem!important}.pt-20{padding-top:5rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.pt-6{padding-top:1.5rem!important}.pt-8{padding-top:2rem!important}.pt-9{padding-top:2.25rem!important}.text-left{text-align:left!important}.text-center{text-align:center!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.font-sans{font-family:Open Sans!important}.text-2xl{font-size:1.5rem!important;line-height:2rem!important}.text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.text-5xl{font-size:3rem!important}.text-5xl,.text-6xl{line-height:1!important}.text-6xl{font-size:3.75rem!important}.text-7xl{font-size:4.5rem!important}.text-7xl,.text-9xl{line-height:1!important}.text-9xl{font-size:6rem!important}.text-\[0\.7rem\]{font-size:.7rem!important}.text-\[1\.1rem\]{font-size:1.1rem!important}.text-base{font-size:1rem!important;line-height:1.5rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.5rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-medium{font-weight:500!important}.font-normal{font-weight:400!important}.font-semibold{font-weight:600!important}.uppercase{text-transform:uppercase!important}.capitalize{text-transform:capitalize!important}.italic{font-style:italic!important}.ordinal{--tw-ordinal:ordinal!important;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)!important}.leading-5{line-height:1.25rem!important}.leading-5\.6{line-height:1.4rem!important}.leading-6{line-height:1.5rem!important}.leading-default{line-height:1.6!important}.leading-none{line-height:1!important}.leading-normal{line-height:1.5!important}.leading-tight{line-height:1.25!important}.tracking-\[0\.20rem\]{letter-spacing:.2rem!important}.tracking-normal{letter-spacing:0!important}.tracking-tight-rem{letter-spacing:-.025rem!important}.tracking-wide{letter-spacing:.025em!important}.tracking-wider{letter-spacing:.05em!important}.tracking-widest{letter-spacing:.1em!important}.text-blue-500{--tw-text-opacity:1!important;color:rgb(94 114 228/var(--tw-text-opacity))!important}.text-gray-100{--tw-text-opacity:1!important;color:rgb(235 239 244/var(--tw-text-opacity))!important}.text-gray-100\/50{color:#ebeff480!important}.text-gray-300{--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}.text-gray-50{--tw-text-opacity:1!important;color:rgb(248 249 250/var(--tw-text-opacity))!important}.text-gray-500{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}.text-gray-700{--tw-text-opacity:1!important;color:rgb(73 80 87/var(--tw-text-opacity))!important}.text-gray-700\/80{color:#495057cc!important}.text-gray-800{--tw-text-opacity:1!important;color:rgb(37 47 64/var(--tw-text-opacity))!important}.text-green-500{--tw-text-opacity:1!important;color:rgb(34 197 94/var(--tw-text-opacity))!important}.text-primary{color:rgb(11 85 119/var(--tw-text-opacity))!important}.text-primary,.text-red-500{--tw-text-opacity:1!important}.text-red-500{color:rgb(245 57 57/var(--tw-text-opacity))!important}.text-secondary{--tw-text-opacity:1!important;color:rgb(46 172 104/var(--tw-text-opacity))!important}.text-sky-500{--tw-text-opacity:1!important;color:rgb(14 165 233/var(--tw-text-opacity))!important}.text-slate-500{--tw-text-opacity:1!important;color:rgb(103 116 142/var(--tw-text-opacity))!important}.text-slate-700{color:rgb(52 71 103/var(--tw-text-opacity))!important}.text-slate-700,.text-white{--tw-text-opacity:1!important}.text-white{color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-yellow-400{--tw-text-opacity:1!important;color:rgb(251 207 51/var(--tw-text-opacity))!important}.text-yellow-500{--tw-text-opacity:1!important;color:rgb(251 177 64/var(--tw-text-opacity))!important}.underline{text-decoration-line:underline!important}.antialiased{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.opacity-0{opacity:0!important}.opacity-100{opacity:1!important}.opacity-50{opacity:.5!important}.opacity-60{opacity:.6!important}.opacity-80{opacity:.8!important}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important}.shadow,.shadow-3xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-3xl{--tw-shadow:0 8px 26px -4px #14141426,0 8px 9px -5px #1414140f!important;--tw-shadow-colored:0 8px 26px -4px var(--tw-shadow-color),0 8px 9px -5px var(--tw-shadow-color)!important}.shadow-\[8px_8px_12px_rgb\(0\2c 0\2c 0\2c 0\.2\)\]{--tw-shadow:8px 8px 12px #0003!important;--tw-shadow-colored:8px 8px 12px var(--tw-shadow-color)!important}.shadow-\[8px_8px_12px_rgb\(0\2c 0\2c 0\2c 0\.2\)\],.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014!important;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)!important}.shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.shadow-none,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 .25rem .375rem -.0625rem #1414141f,0 .125rem .25rem -.0625rem #14141412!important;--tw-shadow-colored:0 .25rem .375rem -.0625rem var(--tw-shadow-color),0 .125rem .25rem -.0625rem var(--tw-shadow-color)!important}.shadow-xl{--tw-shadow:0 0 2rem 0 #8898aa26!important;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color)!important}.shadow-xl,.shadow-xs{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-xs{--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014!important;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color)!important}.outline-none{outline:2px solid #0000!important;outline-offset:2px!important}.outline{outline-style:solid!important}.outline-secondary{outline-color:#2eac68!important}.blur{--tw-blur:blur(8px)!important}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-timing-function:ease!important;transition-duration:.15s!important}.transition-all{transition-property:all!important;transition-timing-function:ease!important;transition-duration:.15s!important}.transition-transform{transition-property:transform!important;transition-timing-function:ease!important;transition-duration:.15s!important}.delay-200{transition-delay:.2s!important}.duration-200{transition-duration:.2s!important}.duration-250{transition-duration:.25s!important}.duration-300{transition-duration:.3s!important}.duration-700{transition-duration:.7s!important}.ease-in{transition-timing-function:ease-in!important}.ease-in-out{transition-timing-function:ease-in-out!important}.flex-wrap-inherit{flex-wrap:inherit!important}@font-face{font-family:Open Sans;src:url(../webfonts/OpenSans.ttf)}*{font-family:Open Sans,sans-serif}.ace_editor,.ace_editor *{font-family:Monaco,Menlo,Ubuntu Mono,Droid Sans Mono,Consolas,monospace!important;font-weight:400!important;letter-spacing:0!important}.sr-only{display:none}.separator{margin:.75rem 0 .5rem;height:1px;background-color:initial;--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.separator,:is(.dark .separator){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:is(.dark .separator){--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.close-btn{display:inline-block;cursor:pointer;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(245 57 57/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.close-btn,.close-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.close-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.close-btn:focus,.close-btn:hover{background-color:#fffc}.close-btn:active{opacity:.85}.close-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.close-btn:disabled,.close-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.close-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .close-btn){--tw-bg-opacity:1;background-color:rgb(233 236 239/var(--tw-bg-opacity));--tw-brightness:brightness(.9)}:is(.dark .close-btn),:is(.dark .close-btn:hover){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)}:is(.dark .close-btn:hover){--tw-brightness:brightness(.75)}:is(.dark .close-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .close-btn:disabled),:is(.dark .close-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .close-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.close-btn{padding:.625rem 1.25rem}}.valid-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.valid-btn,.valid-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.valid-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.valid-btn:focus,.valid-btn:hover{background-color:#22c55ecc}.valid-btn:active{opacity:.85}.valid-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.valid-btn:disabled,.valid-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.valid-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .valid-btn){--tw-brightness:brightness(.9);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)}:is(.dark .valid-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .valid-btn:disabled),:is(.dark .valid-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .valid-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.valid-btn{padding:.625rem 1.25rem}}.delete-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(245 57 57/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.delete-btn,.delete-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.delete-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.delete-btn:focus,.delete-btn:hover{background-color:#f53939cc}.delete-btn:active{opacity:.85}.delete-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.delete-btn:disabled,.delete-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.delete-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .delete-btn){--tw-brightness:brightness(.9);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)}:is(.dark .delete-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .delete-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}@media (min-width:768px){.delete-btn{padding:.625rem 1.25rem}}.edit-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.edit-btn,.edit-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.edit-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.edit-btn:focus,.edit-btn:hover{background-color:#fbb140cc}.edit-btn:active{opacity:.85}.edit-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.edit-btn:disabled,.edit-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.edit-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .edit-btn){--tw-brightness:brightness(.9);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)}:is(.dark .edit-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .edit-btn:disabled),:is(.dark .edit-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .edit-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.edit-btn{padding:.625rem 1.25rem}}.info-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.info-btn,.info-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.info-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.info-btn:focus,.info-btn:hover{background-color:#0ea5e9cc}.info-btn:active{opacity:.85}.info-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.info-btn:disabled,.info-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.info-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .info-btn){--tw-brightness:brightness(.9);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)}:is(.dark .info-btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .info-btn:disabled),:is(.dark .info-btn:hover:disabled){border-color:#49505700;background-color:rgb(73 80 87/var(--tw-bg-opacity))}:is(.dark .info-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}@media (min-width:768px){.info-btn{padding:.625rem 1.25rem}}.checkbox{position:relative;z-index:10;float:left;margin-top:.25rem;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.35rem;border-width:1px;border-color:rgb(210 214 218/var(--tw-border-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:top;font-size:1rem;line-height:1.5rem;transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.25s}.checkbox,.checkbox:disabled{--tw-border-opacity:1;--tw-bg-opacity:1}.checkbox:disabled{cursor:default;border-color:rgb(206 212 218/var(--tw-border-opacity));background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.checkbox[data-checked=true]{z-index:0;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}.checkbox:disabled[data-checked=true]{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .checkbox:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .checkbox[data-checked=true]){--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}:is(.dark .checkbox:disabled[data-checked=true]){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.custom-select-btn{display:flex;width:100%;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:padding-box;padding:.25rem .375rem;text-align:left;vertical-align:middle;font-size:.875rem;font-weight:400;line-height:1.4rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}.custom-select-btn::-moz-placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.custom-select-btn::placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.custom-select-btn:focus{--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}.custom-select-btn:disabled{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}:is(.dark .custom-select-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .custom-select-btn:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}@media (min-width:768px){.custom-select-btn{padding:.5rem .75rem}}.custom-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;min-height:38px;cursor:pointer;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.custom-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .custom-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.active.custom-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;min-height:38px;cursor:pointer;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.active.custom-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .active.custom-dropdown-btn){border-color:rgb(98 117 148/var(--tw-border-opacity));background-color:rgb(11 85 119/var(--tw-bg-opacity));color:rgb(233 236 239/var(--tw-text-opacity))}.regular-input,:is(.dark .active.custom-dropdown-btn){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1}.regular-input{display:block;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.5rem;border-width:1px;border-style:solid;border-color:rgb(210 214 218/var(--tw-border-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:padding-box;padding:.25rem .375rem;font-size:.875rem;font-weight:400;line-height:1.4rem;color:rgb(73 80 87/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;transition-property:none;transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.regular-input::-moz-placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.regular-input::placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.regular-input:focus{border-color:#d2d6da00;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.regular-input:valid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.regular-input:invalid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))}.regular-input:disabled{--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}:is(.dark .regular-input){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .regular-input:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}@media (min-width:768px){.regular-input{padding:.5rem .75rem}}.invalid.regular-input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.input-title{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .input-title){--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.popover-settings-container{position:fixed;z-index:1000;height:-moz-fit-content;height:fit-content;max-width:250px;--tw-translate-y:-1.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:.375rem;padding:.75rem;transition-property:all;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.5s}:is(.dark .popover-settings-container){--tw-brightness:brightness(.9);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)}.info.popover-settings-container{--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity))}.multisite.popover-settings-container{--tw-bg-opacity:1;background-color:rgb(251 99 64/var(--tw-bg-opacity))}.popover-tab{position:absolute;left:0;bottom:0;z-index:50;--tw-translate-y:-1.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity));padding:.75rem;transition-property:all;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.5s}:is(.dark .popover-tab){--tw-brightness:brightness(.9);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)}.popover-settings-text{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}.popover-settings-text,:is(.dark .popover-settings-text){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.popover-settings-svg{margin-left:.5rem;height:1.25rem;width:1.25rem;cursor:pointer;fill:#5e72e4}.popover-settings-svg:hover{--tw-brightness:brightness(.75);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)}.popover-settings-svg-multiple{margin-left:.5rem;height:1.375rem;width:1.375rem;cursor:pointer;fill:#fb6340;stroke:#495057}.popover-settings-svg-multiple:hover{--tw-brightness:brightness(.75);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)}:is(.dark .popover-settings-svg-multiple){stroke:#adb5bd}.hidden-multiple{display:none!important}.active.tabs-tab-btn,.active.tabs-tab-btn:hover{--tw-bg-opacity:1;background-color:rgb(233 236 239/var(--tw-bg-opacity))}:is(.dark .active.tabs-tab-btn),:is(.dark .active.tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}.tabs-tab-btn{position:relative;margin-top:.25rem;margin-bottom:.25rem;cursor:pointer;border-radius:0;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.75rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.tabs-tab-btn,.tabs-tab-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tabs-tab-btn:hover{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}:is(.dark .tabs-tab-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}.tabs-name{padding-left:.75rem;padding-right:.5rem;--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .tabs-name){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}.tabs-popover-container{position:absolute;top:60px;left:0;z-index:50;min-width:150px;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}:is(.dark .tabs-popover-container){--tw-brightness:brightness(.9);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)}.tabs-popover-text{margin:0;font-size:.875rem;line-height:1.5rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.settings-tabs-select-btn{margin-top:.25rem;margin-bottom:.25rem;display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.settings-tabs-select-btn:hover{--tw-translate-y:-1px;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));--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .settings-tabs-select-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .settings-tabs-select-btn:hover){--tw-brightness:brightness(.95);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)}@media (min-width:768px){.settings-tabs-select-btn{padding:.75rem 1.5rem}}.settings-tabs-select-btn-text{--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .settings-tabs-select-btn-text){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.active.settings-tabs-select-dropdown-btn{position:relative;z-index:1000;margin-top:0;margin-bottom:0;cursor:pointer;border-radius:0;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.active.settings-tabs-select-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .active.settings-tabs-select-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .active.settings-tabs-select-dropdown-btn:hover){--tw-brightness:brightness(.9);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)}.first.settings-tabs-select-dropdown-btn{border-top-left-radius:.25rem;border-top-right-radius:.25rem;border-width:1px}.last.settings-tabs-select-dropdown-btn{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.settings-tabs-select-dropdown-btn{position:relative;margin-top:0;margin-bottom:0;display:flex;cursor:pointer;justify-content:space-between;border-radius:0;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.5rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.settings-tabs-select-dropdown-btn:hover{--tw-brightness:brightness(.9);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)}:is(.dark .settings-tabs-select-dropdown-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .settings-tabs-select-dropdown-btn:hover){--tw-brightness:brightness(.9);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)}.home-card{grid-column:span 12/span 12;display:flex;width:100%;justify-content:space-between;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.home-card:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .home-card){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.home-card{max-height:7rem}}@media (min-width:768px){.home-card{grid-column:span 6/span 6}}@media (min-width:1320px){.home-card{grid-column:span 4/span 4}}.home-card-name{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5}:is(.dark .home-card-name){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.home-card-title{margin-bottom:.25rem;font-weight:700}:is(.dark .home-card-title){color:#ffffffe6}.home-card-subtitle{margin-left:.125rem;margin-right:.125rem;margin-bottom:0;font-size:.875rem;line-height:1.5rem;font-weight:700;line-height:1.5}.info.home-card-subtitle{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.error.home-card-subtitle{--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}.success.home-card-subtitle{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.warning.home-card-subtitle{--tw-text-opacity:1;color:rgb(251 177 64/var(--tw-text-opacity))}.home-card-svg-container{display:inline-block;height:3rem;width:3rem;border-radius:50%;text-align:center}:is(.dark .home-card-svg-container){--tw-brightness:brightness(.9);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)}.version.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity))}.version-number.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(45 206 137/var(--tw-bg-opacity))}.instances.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(108 117 125/var(--tw-bg-opacity))}.services.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 99 64/var(--tw-bg-opacity))}.plugins.home-card-svg-container{--tw-bg-opacity:1;background-color:rgb(251 207 51/var(--tw-bg-opacity))}.card-detail-container{margin-top:1rem;margin-bottom:1.5rem;margin-left:.25rem;display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.5rem}.card-detail-item{grid-column:span 1/span 1;display:flex;align-items:center;padding-top:.25rem;padding-bottom:.25rem}@media (min-width:576px){.card-detail-item{padding-top:0;padding-bottom:0}}.card-detail-item-title{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .card-detail-item-title){--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.card-detail-item-subtitle{grid-column:span 1/span 1;margin-bottom:0;word-break:break-all;padding-left:.5rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .card-detail-item-subtitle){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}.core-layout{grid-column:span 12/span 12;display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}.core-card{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card{grid-column:span 4/span 4}}@media (min-width:1920px){.core-card{grid-column:span 3/span 3}}.core-card-lg{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-lg:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-lg){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card-lg{grid-column:span 6/span 6}}.core-card-wrap{display:flex;justify-content:space-between}.core-card-wrap-logo{display:flex;align-items:center;justify-content:flex-start}.core-card-text{margin-bottom:0;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .core-card-text){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-text-doc{margin-top:1rem;margin-bottom:.5rem;padding-left:.25rem;padding-right:.25rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;line-height:1.5;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.3s;transition-timing-function:ease-in-out}:is(.dark .core-card-text-doc){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-text-doc-link{margin-top:.5rem;cursor:pointer;--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity));text-decoration-line:underline}.core-card-text-doc-link:hover{--tw-brightness:brightness(.9);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)}.center.core-card-text{text-align:center}.core-card-title{margin-bottom:.5rem;font-weight:700}:is(.dark .core-card-title){color:#ffffffe6}.core-card-svg-container{display:inline-block;height:3rem;width:3rem;border-radius:50%;text-align:center}:is(.dark .core-card-svg-container){--tw-brightness:brightness(.9);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)}.core-card-deactivated-title{font-weight:700}:is(.dark .core-card-deactivated-title){color:#ffffffe6}.core-card-deactivated-svg{position:relative;--tw-translate-y:-8px;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));fill:#fbb140;stroke:#fff;font-size:1.125rem;line-height:1.75rem;line-height:1}.core-card-text-container{margin:.75rem .25rem;display:flex;align-items:center;justify-content:flex-start}.core-card-status{position:relative;grid-column:span 12/span 12;margin:.5rem;height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;min-width:0;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-status:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-status){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.core-card-status{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card-status{grid-column:span 3/span 3}}@media (min-width:1920px){.core-card-status{grid-column:span 2/span 2}}.core-card-status-container{margin-left:.25rem;margin-right:.25rem;display:flex;align-items:center;justify-content:flex-start}.core-card-status-title{margin-bottom:0;margin-right:1rem;font-weight:700}:is(.dark .core-card-status-title){color:#ffffffe6}.core-card-status-svg{height:1.5rem;width:1.5rem}.info.core-card-status-svg{fill:#0ea5e9}.error.core-card-status-svg{fill:#f53939}.success.core-card-status-svg{fill:#22c55e}.core-layout-separator{grid-column:span 12/span 12}.core-card-list{position:relative;grid-column:span 12/span 12;margin:.5rem;display:grid;max-height:25rem;grid-template-columns:repeat(12,minmax(0,1fr));align-content:flex-start;overflow-y:auto;overflow-x:hidden;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color)}.core-card-list,:is(.dark .core-card-list){box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .core-card-list){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.core-card-list{max-height:31.25rem}}@media (min-width:768px){.core-card-list{grid-column:span 6/span 6}}.core-card-list.no-data{place-content:stretch}.core-card-list-no-data{margin-bottom:0;padding-bottom:2rem;text-align:center;font-size:1.5rem;line-height:2rem}@media (min-width:768px){.w-small.core-card-list{max-width:300px}.w-medium.core-card-list{max-width:400px}.w-large.core-card-list{max-width:550px}}.core-card-list-title-container{grid-column:span 12/span 12;display:flex}.core-card-list-title{margin:.5rem .5rem 1rem;font-weight:700}:is(.dark .core-card-list-title){color:#ffffffe6}.core-card-list-container{grid-column:span 12/span 12;overflow-x:auto;overflow-y:auto}.core-card-list-header{margin:0;height:2rem;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));padding-bottom:.5rem;font-size:.875rem;line-height:1.5rem;font-weight:700}:is(.dark .core-card-list-header){--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}.core-card-list-item{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity));padding-top:.625rem;padding-bottom:.625rem}.core-card-list-item-content{margin:.25rem 0;font-size:.875rem;line-height:1.5rem}:is(.dark .core-card-list-item-content){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.core-card-list-wrap{display:grid;width:100%;grid-template-columns:repeat(12,minmax(0,1fr));border-radius:.25rem;padding:.5rem}.w-small.core-card-list-wrap{min-width:200px}.w-medium.core-card-list-wrap{min-width:300px}.w-large.core-card-list-wrap{min-width:450px}.core-card-metrics{grid-column:span 12/span 12;margin:.5rem;display:flex;height:-moz-fit-content;height:fit-content;justify-content:space-between;overflow-wrap:break-word;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-clip:initial;padding:1rem;--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.core-card-metrics:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}:is(.dark .core-card-metrics){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity));--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:576px){.core-card-metrics{max-height:7rem}}@media (min-width:768px){.core-card-metrics{grid-column:span 6/span 6}}@media (min-width:1320px){.core-card-metrics{grid-column:span 4/span 4}}.core-card-metrics-name{margin-bottom:.5rem;font-family:Open Sans;font-size:.875rem;line-height:1.5rem;font-weight:600;text-transform:uppercase;line-height:1.5}:is(.dark .core-card-metrics-name){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}.core-card-metrics-subtitle{margin-bottom:0}:is(.dark .core-card-metrics-subtitle){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-metrics-subtitle-content{margin-left:.125rem;margin-right:.125rem;font-size:.875rem;line-height:1.5rem;font-weight:700;line-height:1.5}.error.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}.success.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.warning.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(251 177 64/var(--tw-text-opacity))}.info.core-card-metrics-subtitle-content{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.core-card-metrics-svg{position:relative;fill:#fff;font-size:1.125rem;line-height:1.75rem;line-height:1}.size-small.core-card-metrics-svg{--tw-scale-x:0.5;--tw-scale-y:0.5}.size-medium.core-card-metrics-svg,.size-small.core-card-metrics-svg{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))}.size-medium.core-card-metrics-svg{--tw-scale-x:0.6;--tw-scale-y:0.6}.size-base.core-card-metrics-svg{--tw-scale-x:0.75;--tw-scale-y:0.75;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))}.purple.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.green.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.red.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.orange.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(245 96 54/var(--tw-bg-opacity))}.blue.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(33 82 255/var(--tw-bg-opacity))}.yellow.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.gray.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(108 117 125/var(--tw-bg-opacity))}.dark.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(98 117 148/var(--tw-bg-opacity))}.amber.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.emerald.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.teal.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.indigo.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.cyan.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.sky.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.pink.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.lime.core-card-svg-container{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.core-separator{margin:.75rem 0 .5rem;height:1px;background-color:initial;--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.core-separator,:is(.dark .core-separator){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:is(.dark .core-separator){--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.core-card-test-container{margin-top:1rem;display:flex;justify-content:center}.core-card-test-btn{display:inline-block;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity));padding:.75rem 1.5rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.core-card-test-btn,.core-card-test-btn:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.core-card-test-btn:hover{--tw-translate-y:-1px;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));background-color:#fbb140cc;--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)}.core-card-test-btn:focus{background-color:#fbb140cc}.core-card-test-btn:active{opacity:.85}.core-card-test-btn:disabled{cursor:not-allowed;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.core-card-test-btn:disabled,.core-card-test-btn:hover:disabled{border-color:#ced4da00;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.core-card-test-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1}:is(.dark .core-card-test-btn){--tw-brightness:brightness(.9);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)}:is(.dark .core-card-test-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .core-card-test-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}.core-card-upload-btn{display:inline-block;width:-moz-fit-content;width:fit-content;cursor:pointer;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity));background-image:linear-gradient(to top left,var(--tw-gradient-stops));background-size:150%;background-position:25% 0;padding:.75rem 1.5rem;text-align:center;vertical-align:middle;font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.core-card-upload-btn:hover{--tw-translate-y:-1px;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));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-brightness:brightness(.75);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)}.core-card-upload-btn:active{opacity:.85}.core-card-upload-btn:disabled{cursor:not-allowed;--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity));opacity:.75}.core-card-upload-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(.dark .core-card-upload-btn){--tw-brightness:brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:is(.dark .core-card-upload-btn:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.core-card-test-status-container{margin-left:.25rem;margin-right:.25rem;display:flex;align-items:center;justify-content:center}.core-card-test-status-svg{margin-right:.5rem;height:1.5rem;width:1.5rem}.success.core-card-test-status-svg{fill:#22c55e}.error.core-card-test-status-svg{fill:#f53939}.info.core-card-test-status-svg{fill:#0ea5e9}.core-img-default{margin-right:1rem;height:3rem;width:3rem}.core-img-hor{margin-right:1rem;height:4rem;width:6rem}.file-manager-actions-item-btn{position:relative;margin:.25rem;cursor:pointer;white-space:nowrap;border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding:.75rem 1.25rem .625rem 1rem;text-align:center;vertical-align:middle;font-size:.875rem;line-height:1.5rem;font-weight:700;text-transform:uppercase;line-height:1.5;letter-spacing:-.025rem;--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity));--tw-shadow:0 7px 14px #32325d1a,0 3px 6px #00000014;--tw-shadow-colored:0 7px 14px var(--tw-shadow-color),0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.file-manager-actions-item-btn:hover{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity));--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.file-manager-actions-item-btn:disabled{cursor:not-allowed;border-color:#ced4da00;--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.file-manager-actions-item-btn:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#ced4da00;--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity))}:is(.dark .file-manager-actions-item-btn){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .file-manager-actions-item-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}:is(.dark .file-manager-actions-item-btn:disabled){border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .file-manager-actions-item-btn:hover:disabled){--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:#49505700;--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}@media (min-width:768px){.file-manager-actions-item-btn{display:block}}.first-letter\:absolute:first-letter{position:absolute!important}.first-letter\:w-full:first-letter{width:100%!important}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}.before\:float-left:before{content:var(--tw-content)!important;float:left!important}.before\:pr-2:before{content:var(--tw-content)!important;padding-right:.5rem!important}.before\:text-white:before{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.before\:content-\[\'\/\'\]:before{--tw-content:"/"!important;content:var(--tw-content)!important}.after\:absolute:after{content:var(--tw-content)!important;position:absolute!important}.after\:top-px:after{content:var(--tw-content)!important;top:1px!important}.after\:float-right:after{content:var(--tw-content)!important;float:right!important}.after\:h-4:after{content:var(--tw-content)!important;height:1rem!important}.after\:w-4:after{content:var(--tw-content)!important;width:1rem!important}.after\:translate-x-px:after{content:var(--tw-content)!important;--tw-translate-x:1px!important;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))!important}.after\:rounded-circle:after{content:var(--tw-content)!important;border-radius:50%!important}.after\:bg-white:after{content:var(--tw-content)!important;--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.after\:pl-2:after{content:var(--tw-content)!important;padding-left:.5rem!important}.after\:text-gray-600:after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}.after\:shadow-2xl:after{content:var(--tw-content)!important;--tw-shadow:0 .3125rem .625rem 0 #0000001f!important;--tw-shadow-colored:0 .3125rem .625rem 0 var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.after\:duration-300:after{content:var(--tw-content)!important;transition-duration:.3s!important}.after\:content-\[\'\'\]:after{--tw-content:""!important;content:var(--tw-content)!important}.after\:content-\[\'\/\'\]:after{--tw-content:"/"!important;content:var(--tw-content)!important}.checked\:z-0:checked{z-index:0!important}.checked\:border-primary:checked{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.checked\:bg-primary:checked{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}.checked\:bg-none:checked{background-image:none!important}.checked\:bg-right:checked{background-position:100%!important}.checked\:after\:translate-x-5:checked:after{--tw-translate-x:1.25rem!important}.checked\:after\:translate-x-5:checked:after,.checked\:after\:translate-x-5\.3:checked:after{content:var(--tw-content)!important;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))!important}.checked\:after\:translate-x-5\.3:checked:after{--tw-translate-x:1.3rem!important}.valid\:\!border-red-500:valid{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.hover\:-translate-y-0:hover{--tw-translate-y:-0px!important}.hover\:-translate-y-0:hover,.hover\:-translate-y-0\.4:hover{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))!important}.hover\:-translate-y-0\.4:hover{--tw-translate-y:-0.1rem!important}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem!important}.hover\:-translate-y-0\.5:hover,.hover\:-translate-y-px:hover{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))!important}.hover\:-translate-y-px:hover{--tw-translate-y:-1px!important}.hover\:scale-102:hover{--tw-scale-x:1.02!important;--tw-scale-y:1.02!important;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))!important}.hover\:rounded-lg:hover{border-radius:.5rem!important}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.hover\:bg-emerald-500\/80:hover{background-color:#2dce89cc!important}.hover\:bg-gray-100:hover{--tw-bg-opacity:1!important;background-color:rgb(235 239 244/var(--tw-bg-opacity))!important}.hover\:bg-gray-100\/10:hover{background-color:#ebeff41a!important}.hover\:bg-gray-300:hover{--tw-bg-opacity:1!important;background-color:rgb(210 214 218/var(--tw-bg-opacity))!important}.hover\:bg-gray-500:hover{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.hover\:bg-gray-500\/80:hover{background-color:#adb5bdcc!important}.hover\:bg-gray-600:hover{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.hover\:bg-gray-600\/80:hover{background-color:#6c757dcc!important}.hover\:bg-green-500:hover{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.hover\:bg-green-500\/80:hover{background-color:#22c55ecc!important}.hover\:bg-orange-500:hover{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.hover\:bg-orange-500\/80:hover{background-color:#fb6340cc!important}.hover\:bg-primary\/30:hover{background-color:#0b55774d!important}.hover\:bg-primary\/5:hover{background-color:#0b55770d!important}.hover\:bg-primary\/80:hover{background-color:#0b5577cc!important}.hover\:bg-red-500:hover{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.hover\:bg-red-500\/80:hover{background-color:#f53939cc!important}.hover\:bg-sky-500:hover{--tw-bg-opacity:1!important;background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.hover\:bg-sky-500\/80:hover{background-color:#0ea5e9cc!important}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1!important;background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.hover\:bg-yellow-400\/80:hover{background-color:#fbcf33cc!important}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.hover\:bg-yellow-500\/80:hover{background-color:#fbb140cc!important}.hover\:italic:hover{font-style:italic!important}.hover\:no-underline:hover{text-decoration-line:none!important}.hover\:opacity-80:hover{opacity:.8!important}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px #32325d1a,0 1px 3px #00000014!important;--tw-shadow-colored:0 4px 6px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)!important}.hover\:brightness-75:hover,.hover\:brightness-90:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.hover\:brightness-90:hover{--tw-brightness:brightness(.9)!important}.hover\:brightness-95:hover{--tw-brightness:brightness(.95)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.focus\:\!border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:border-green-500:focus{--tw-border-opacity:1!important;border-color:rgb(34 197 94/var(--tw-border-opacity))!important}.focus\:border-primary:focus{--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}.focus\:bg-emerald-500:focus{--tw-bg-opacity:1!important;background-color:rgb(45 206 137/var(--tw-bg-opacity))!important}.focus\:bg-emerald-500\/80:focus{background-color:#2dce89cc!important}.focus\:bg-gray-500:focus{--tw-bg-opacity:1!important;background-color:rgb(173 181 189/var(--tw-bg-opacity))!important}.focus\:bg-gray-500\/80:focus{background-color:#adb5bdcc!important}.focus\:bg-gray-600:focus{--tw-bg-opacity:1!important;background-color:rgb(108 117 125/var(--tw-bg-opacity))!important}.focus\:bg-gray-600\/80:focus{background-color:#6c757dcc!important}.focus\:bg-green-500:focus{--tw-bg-opacity:1!important;background-color:rgb(34 197 94/var(--tw-bg-opacity))!important}.focus\:bg-green-500\/80:focus{background-color:#22c55ecc!important}.focus\:bg-orange-500:focus{--tw-bg-opacity:1!important;background-color:rgb(251 99 64/var(--tw-bg-opacity))!important}.focus\:bg-orange-500\/80:focus{background-color:#fb6340cc!important}.focus\:bg-primary\/80:focus{background-color:#0b5577cc!important}.focus\:bg-red-500:focus{--tw-bg-opacity:1!important;background-color:rgb(245 57 57/var(--tw-bg-opacity))!important}.focus\:bg-red-500\/80:focus{background-color:#f53939cc!important}.focus\:bg-sky-500:focus{--tw-bg-opacity:1!important;background-color:rgb(14 165 233/var(--tw-bg-opacity))!important}.focus\:bg-sky-500\/80:focus{background-color:#0ea5e9cc!important}.focus\:bg-yellow-400:focus{--tw-bg-opacity:1!important;background-color:rgb(251 207 51/var(--tw-bg-opacity))!important}.focus\:bg-yellow-400\/80:focus{background-color:#fbcf33cc!important}.focus\:bg-yellow-500:focus{--tw-bg-opacity:1!important;background-color:rgb(251 177 64/var(--tw-bg-opacity))!important}.focus\:bg-yellow-500\/80:focus{background-color:#fbb140cc!important}.focus\:outline:focus{outline-style:solid!important}.focus\:\!ring-red-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.focus\:valid\:\!border-red-500:valid:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:valid\:border-green-500:valid:focus{--tw-border-opacity:1!important;border-color:rgb(34 197 94/var(--tw-border-opacity))!important}.focus\:valid\:\!ring-red-500:valid:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(245 57 57/var(--tw-ring-opacity))!important}.focus\:invalid\:border-red-500:invalid:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.focus\:file\:invalid\:border-red-500:invalid::file-selector-button:focus{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.active\:\!border-red-500:active{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.active\:opacity-85:active{opacity:.85!important}.active\:valid\:\!border-red-500:valid:active{--tw-border-opacity:1!important;border-color:rgb(245 57 57/var(--tw-border-opacity))!important}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed!important}.disabled\:border-gray-400:disabled{--tw-border-opacity:1!important;border-color:rgb(206 212 218/var(--tw-border-opacity))!important}.disabled\:border-gray-400\/0:disabled{border-color:#ced4da00!important}.disabled\:bg-gray-400:disabled{--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}.disabled\:text-gray-700:disabled{--tw-text-opacity:1!important;color:rgb(73 80 87/var(--tw-text-opacity))!important}.disabled\:opacity-75:disabled{opacity:.75!important}.disabled\:hover\:translate-y-0:hover:disabled{--tw-translate-y:0px!important;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))!important}.disabled\:hover\:border-gray-400\/0:hover:disabled{border-color:#ced4da00!important}.disabled\:hover\:bg-gray-400:hover:disabled{--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}.group:hover .group-hover\:z-10{z-index:10!important}.group:hover .group-hover\:opacity-100{opacity:1!important}:is(.dark .dark\:inline){display:inline!important}:is(.dark .dark\:hidden){display:none!important}:is(.dark .dark\:border-gray-200){--tw-border-opacity:1!important;border-color:rgb(233 236 239/var(--tw-border-opacity))!important}:is(.dark .dark\:border-gray-300){--tw-border-opacity:1!important;border-color:rgb(210 214 218/var(--tw-border-opacity))!important}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1!important;border-color:rgb(73 80 87/var(--tw-border-opacity))!important}:is(.dark .dark\:border-slate-600){--tw-border-opacity:1!important;border-color:rgb(98 117 148/var(--tw-border-opacity))!important}:is(.dark .dark\:border-slate-800){--tw-border-opacity:1!important;border-color:rgb(58 65 111/var(--tw-border-opacity))!important}:is(.dark .dark\:bg-gray-400){--tw-bg-opacity:1!important;background-color:rgb(206 212 218/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1!important;background-color:rgb(37 47 64/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-green-500\/90){background-color:#22c55ee6!important}:is(.dark .dark\:bg-primary){--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-primary\/50){background-color:#0b557780!important}:is(.dark .dark\:bg-red-500\/90){background-color:#f53939e6!important}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1!important;background-color:rgb(52 71 103/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-700\/50){background-color:#34476780!important}:is(.dark .dark\:bg-slate-800){--tw-bg-opacity:1!important;background-color:rgb(58 65 111/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-850){--tw-bg-opacity:1!important;background-color:rgb(17 28 68/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity:1!important;background-color:rgb(5 17 57/var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-slate-900\/30){background-color:#0511394d!important}:is(.dark .dark\:bg-gradient-to-r){background-image:linear-gradient(to right,var(--tw-gradient-stops))!important}:is(.dark .dark\:from-transparent){--tw-gradient-from:#0000 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}:is(.dark .dark\:via-white){--tw-gradient-to:#fff0 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to)!important}:is(.dark .dark\:to-transparent){--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important}:is(.dark .dark\:fill-blue-500){fill:#5e72e4!important}:is(.dark .dark\:fill-gray-300){fill:#d2d6da!important}:is(.dark .dark\:fill-gray-500){fill:#adb5bd!important}:is(.dark .dark\:fill-gray-600){fill:#6c757d!important}:is(.dark .dark\:stroke-amber-500){stroke:#f59e0b!important}:is(.dark .dark\:stroke-gray-300){stroke:#d2d6da!important}:is(.dark .dark\:stroke-gray-400){stroke:#ced4da!important}:is(.dark .dark\:stroke-gray-600){stroke:#6c757d!important}:is(.dark .dark\:stroke-red-500){stroke:#f53939!important}:is(.dark .dark\:stroke-white\/90){stroke:#ffffffe6!important}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1!important;color:rgb(235 239 244/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1!important;color:rgb(233 236 239/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1!important;color:rgb(206 212 218/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-50){--tw-text-opacity:1!important;color:rgb(248 249 250/var(--tw-text-opacity))!important}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}:is(.dark .dark\:text-white){--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}:is(.dark .dark\:text-white\/80){color:#fffc!important}:is(.dark .dark\:text-white\/90){color:#ffffffe6!important}:is(.dark .dark\:opacity-100){opacity:1!important}:is(.dark .dark\:opacity-60){opacity:.6!important}:is(.dark .dark\:opacity-80){opacity:.8!important}:is(.dark .dark\:opacity-90){opacity:.9!important}:is(.dark .dark\:shadow-dark-xl){--tw-shadow:0 2px 2px 0 #00000024,0 3px 1px -2px #0003,0 1px 5px 0 #0000001f!important;--tw-shadow-colored:0 2px 2px 0 var(--tw-shadow-color),0 3px 1px -2px var(--tw-shadow-color),0 1px 5px 0 var(--tw-shadow-color)!important}:is(.dark .dark\:shadow-dark-xl),:is(.dark .dark\:shadow-none){box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}:is(.dark .dark\:shadow-none){--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}:is(.dark .dark\:brightness-110){--tw-brightness:brightness(1.1)!important}:is(.dark .dark\:brightness-110),:is(.dark .dark\:brightness-125){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:brightness-125){--tw-brightness:brightness(1.25)!important}:is(.dark .dark\:brightness-90){--tw-brightness:brightness(.9)!important}:is(.dark .dark\:brightness-90),:is(.dark .dark\:brightness-95){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:brightness-95){--tw-brightness:brightness(.95)!important}:is(.dark .dark\:brightness-\[0\.885\]){--tw-brightness:brightness(0.885)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:placeholder\:text-gray-600)::-moz-placeholder{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}:is(.dark .dark\:placeholder\:text-gray-600)::placeholder{--tw-text-opacity:1!important;color:rgb(108 117 125/var(--tw-text-opacity))!important}:is(.dark .dark\:after\:text-gray-300):after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:after\:text-gray-500):after{content:var(--tw-content)!important;--tw-text-opacity:1!important;color:rgb(173 181 189/var(--tw-text-opacity))!important}:is(.dark .dark\:checked\:border-primary:checked){--tw-border-opacity:1!important;border-color:rgb(11 85 119/var(--tw-border-opacity))!important}:is(.dark .dark\:checked\:bg-primary:checked){--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:bg-primary\/20:hover){background-color:#0b557733!important}:is(.dark .dark\:hover\:bg-primary\/60:hover){background-color:#0b557799!important}:is(.dark .dark\:hover\:bg-slate-700\/50:hover){background-color:#34476780!important}:is(.dark .dark\:hover\:bg-slate-800:hover){--tw-bg-opacity:1!important;background-color:rgb(58 65 111/var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:brightness-100:hover){--tw-brightness:brightness(1)!important}:is(.dark .dark\:hover\:brightness-100:hover),:is(.dark .dark\:hover\:brightness-105:hover){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:hover\:brightness-105:hover){--tw-brightness:brightness(1.05)!important}:is(.dark .dark\:hover\:brightness-110:hover){--tw-brightness:brightness(1.1)!important}:is(.dark .dark\:hover\:brightness-110:hover),:is(.dark .dark\:hover\:brightness-90:hover){filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:hover\:brightness-90:hover){--tw-brightness:brightness(.9)!important}:is(.dark .dark\:disabled\:border-gray-700\/0:disabled){border-color:#49505700!important}:is(.dark .dark\:disabled\:border-gray-800:disabled){--tw-border-opacity:1!important;border-color:rgb(37 47 64/var(--tw-border-opacity))!important}:is(.dark .dark\:disabled\:bg-gray-700:disabled){--tw-bg-opacity:1!important;background-color:rgb(73 80 87/var(--tw-bg-opacity))!important}:is(.dark .dark\:disabled\:bg-gray-800:disabled){--tw-bg-opacity:1!important;background-color:rgb(37 47 64/var(--tw-bg-opacity))!important}:is(.dark .dark\:disabled\:text-gray-300:disabled){--tw-text-opacity:1!important;color:rgb(210 214 218/var(--tw-text-opacity))!important}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1!important;color:rgb(206 212 218/var(--tw-text-opacity))!important}:is(.dark .dark\:disabled\:hover\:translate-y-0:hover:disabled){--tw-translate-y:0px!important;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))!important}:is(.dark .dark\:disabled\:hover\:border-gray-700\/0:hover:disabled){border-color:#49505700!important}:is(.dark .dark\:disabled\:hover\:bg-gray-700:hover:disabled){--tw-bg-opacity:1!important;background-color:rgb(73 80 87/var(--tw-bg-opacity))!important}@media (min-width:576px){.sm\:right-24{right:6rem!important}.sm\:right-40{right:10rem!important}.sm\:right-6{right:1.5rem!important}.sm\:top-2{top:.5rem!important}.sm\:top-8{top:2rem!important}.sm\:top-\[4\.5rem\]{top:4.5rem!important}.sm\:col-span-4{grid-column:span 4/span 4!important}.sm\:col-span-6{grid-column:span 6/span 6!important}.sm\:col-start-5{grid-column-start:5!important}.sm\:mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.sm\:mx-6{margin-left:1.5rem!important;margin-right:1.5rem!important}.sm\:my-0{margin-top:0!important;margin-bottom:0!important}.sm\:mb-2{margin-bottom:.5rem!important}.sm\:ml-1{margin-left:.25rem!important}.sm\:ml-4{margin-left:1rem!important}.sm\:mr-16{margin-right:4rem!important}.sm\:block{display:block!important}.sm\:inline{display:inline!important}.sm\:flex{display:flex!important}.sm\:h-10{height:2.5rem!important}.sm\:h-14{height:3.5rem!important}.sm\:h-7{height:1.75rem!important}.sm\:max-h-125{max-height:31.25rem!important}.sm\:w-36{width:9rem!important}.sm\:w-50{width:12.5rem!important}.sm\:w-7{width:1.75rem!important}.sm\:min-w-\[250px\]{min-width:250px!important}.sm\:min-w-\[500px\]{min-width:500px!important}.sm\:max-w-\[350px\]{max-width:350px!important}.sm\:translate-x-0{--tw-translate-x:0px!important}.sm\:scale-100,.sm\:translate-x-0{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))!important}.sm\:scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important}.sm\:flex-row{flex-direction:row!important}.sm\:items-center{align-items:center!important}.sm\:justify-end{justify-content:flex-end!important}.sm\:justify-items-start{justify-items:start!important}.sm\:gap-4{gap:1rem!important}.sm\:p-3{padding:.75rem!important}.sm\:px-12{padding-left:3rem!important;padding-right:3rem!important}.sm\:px-4{padding-left:1rem!important;padding-right:1rem!important}.sm\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.sm\:pt-6{padding-top:1.5rem!important}.sm\:text-left{text-align:left!important}.sm\:text-2xl{font-size:1.5rem!important;line-height:2rem!important}.sm\:text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.sm\:text-7xl{font-size:4.5rem!important;line-height:1!important}.sm\:text-base{font-size:1rem!important}.sm\:text-base,.sm\:text-sm{line-height:1.5rem!important}.sm\:text-sm{font-size:.875rem!important}}@media (min-width:768px){.md\:absolute{position:absolute!important}.md\:right-8{right:2rem!important}.md\:right-\[3\.75rem\]{right:3.75rem!important}.md\:top-\[40\%\]{top:40%!important}.md\:top-\[53\%\]{top:53%!important}.md\:col-span-4{grid-column:span 4/span 4!important}.md\:col-span-6{grid-column:span 6/span 6!important}.md\:col-span-7{grid-column:span 7/span 7!important}.md\:col-span-8{grid-column:span 8/span 8!important}.md\:mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.md\:mx-4{margin-left:1rem!important;margin-right:1rem!important}.md\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.md\:mb-0{margin-bottom:0!important}.md\:mb-3{margin-bottom:.75rem!important}.md\:mr-3{margin-right:.75rem!important}.md\:mt-0{margin-top:0!important}.md\:mt-6{margin-top:1.5rem!important}.md\:hidden{display:none!important}.md\:h-16{height:4rem!important}.md\:max-h-\[90vh\]{max-height:90vh!important}.md\:min-h-50-screen{min-height:50vh!important}.md\:w-1\/2{width:50%!important}.md\:w-60{width:15rem!important}.md\:max-w-\[700px\]{max-width:700px!important}.md\:-translate-y-20{--tw-translate-y:-5rem!important;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))!important}.md\:flex-row{flex-direction:row!important}.md\:items-end{align-items:flex-end!important}.md\:gap-x-4{-moz-column-gap:1rem!important;column-gap:1rem!important}.md\:gap-x-6{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.md\:px-1{padding-left:.25rem!important;padding-right:.25rem!important}.md\:px-3{padding-left:.75rem!important;padding-right:.75rem!important}.md\:px-4{padding-left:1rem!important;padding-right:1rem!important}.md\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.md\:py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.md\:text-base{font-size:1rem!important;line-height:1.5rem!important}}@media (min-width:992px){.lg\:relative{position:relative!important}.lg\:bottom-2{bottom:.5rem!important}.lg\:left-48{left:12rem!important}.lg\:top-24{top:6rem!important}.lg\:order-1{order:1!important}.lg\:order-2{order:2!important}.lg\:col-span-1{grid-column:span 1/span 1!important}.lg\:col-span-4{grid-column:span 4/span 4!important}.lg\:col-span-5{grid-column:span 5/span 5!important}.lg\:col-span-6{grid-column:span 6/span 6!important}.lg\:col-span-8{grid-column:span 8/span 8!important}.lg\:mx-0{margin-left:0!important;margin-right:0!important}.lg\:mx-4{margin-left:1rem!important;margin-right:1rem!important}.lg\:mx-8{margin-left:2rem!important;margin-right:2rem!important}.lg\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.lg\:mt-0{margin-top:0!important}.lg\:mt-4{margin-top:1rem!important}.lg\:mt-8{margin-top:2rem!important}.lg\:block{display:block!important}.lg\:inline{display:inline!important}.lg\:flex{display:flex!important}.lg\:hidden{display:none!important}.lg\:h-24{height:6rem!important}.lg\:h-36{height:9rem!important}.lg\:h-9{height:2.25rem!important}.lg\:max-h-\[550px\]{max-height:550px!important}.lg\:w-36{width:9rem!important}.lg\:w-80{width:20rem!important}.lg\:w-9{width:2.25rem!important}.lg\:w-\[400px\]{width:400px!important}.lg\:max-w-\[700px\]{max-width:700px!important}.lg\:translate-x-0{--tw-translate-x:0px!important}.lg\:translate-x-0,.lg\:translate-y-0{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))!important}.lg\:translate-y-0{--tw-translate-y:0px!important}.lg\:flex-row{flex-direction:row!important}.lg\:flex-nowrap{flex-wrap:nowrap!important}.lg\:justify-start{justify-content:flex-start!important}.lg\:justify-end{justify-content:flex-end!important}.lg\:justify-between{justify-content:space-between!important}.lg\:gap-6{gap:1.5rem!important}.lg\:bg-gray-50{--tw-bg-opacity:1!important;background-color:rgb(248 249 250/var(--tw-bg-opacity))!important}.lg\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.lg\:pb-1{padding-bottom:.25rem!important}.lg\:pb-28{padding-bottom:7rem!important}.lg\:pt-6{padding-top:1.5rem!important}.lg\:text-left{text-align:left!important}.lg\:text-base{font-size:1rem!important}.lg\:text-base,.lg\:text-sm{line-height:1.5rem!important}.lg\:text-sm{font-size:.875rem!important}}@media (min-width:1200px){.xl\:left-0{left:0!important}.xl\:right-24{right:6rem!important}.xl\:right-6{right:1.5rem!important}.xl\:ml-6{margin-left:1.5rem!important}.xl\:ml-68{margin-left:17rem!important}.xl\:hidden{display:none!important}.xl\:h-44{height:11rem!important}.xl\:max-h-\[550px\]{max-height:550px!important}.xl\:w-1\/3{width:33.333333%!important}.xl\:w-44{width:11rem!important}.xl\:w-\[500px\]{width:500px!important}.xl\:max-w-\[1200px\]{max-width:1200px!important}.xl\:translate-x-0{--tw-translate-x:0px!important;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))!important}.xl\:p-1{padding:.25rem!important}.xl\:p-1\.5{padding:.375rem!important}.xl\:pl-75{padding-left:18.75rem!important}.xl\:text-base{font-size:1rem!important;line-height:1.5rem!important}}@media (min-width:1320px){.\32xl\:col-span-4{grid-column:span 4/span 4!important}.\32xl\:col-span-6{grid-column:span 6/span 6!important}.\32xl\:my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.\32xl\:max-w-\[1500px\]{max-width:1500px!important}.\32xl\:text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.\32xl\:text-5xl{font-size:3rem!important;line-height:1!important}.\32xl\:text-8xl{font-size:5rem!important;line-height:1!important}.\32xl\:text-lg{font-size:1.125rem!important;line-height:1.75rem!important}}@media (min-width:1920px){.\33xl\:col-span-3{grid-column:span 3/span 3!important}.\33xl\:col-span-4{grid-column:span 4/span 4!important}.\33xl\:col-span-5{grid-column:span 5/span 5!important}.\33xl\:inline{display:inline!important}.\33xl\:max-w-none{max-width:none!important}.\33xl\:translate-x-60{--tw-translate-x:15rem!important;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))!important}.\33xl\:text-6xl{font-size:3.75rem!important;line-height:1!important}.\33xl\:text-9xl{font-size:6rem!important;line-height:1!important}.\33xl\:text-xl{font-size:1.25rem!important;line-height:1.75rem!important}}@media (min-width:340px){.xs\:flex-row{flex-direction:row!important}.xs\:items-center{align-items:center!important}.xs\:justify-start{justify-content:flex-start!important}.xs\:pl-2{padding-left:.5rem!important}.xs\:text-base{font-size:1rem!important}.xs\:text-base,.xs\:text-sm{line-height:1.5rem!important}.xs\:text-sm{font-size:.875rem!important}}.\[\&\>\*\]\:bg-primary>*{--tw-bg-opacity:1!important;background-color:rgb(11 85 119/var(--tw-bg-opacity))!important}
\ No newline at end of file
diff --git a/src/ui/static/js/services.js b/src/ui/static/js/services.js
index 4d5f3f8ef..b5c1dfabe 100644
--- a/src/ui/static/js/services.js
+++ b/src/ui/static/js/services.js
@@ -6,8 +6,6 @@ import {
CheckNoMatchFilter,
showInvalid,
SettingsAdvanced,
- SettingsSimple,
- SettingsSwitch,
} from "./utils/settings.js";
class SettingsService {
@@ -24,12 +22,6 @@ class SettingsService {
this.settingsMultiple,
"services",
);
- this.simpleSettings = new SettingsSimple(
- document.querySelector("[data-simple][data-services-modal-form]"),
- this.settingsMultiple,
- "services",
- );
-
this.initSettingsService();
}
@@ -117,133 +109,6 @@ class SettingsService {
forceEnabled,
emptyServerName,
);
-
- // Click on right security level dropdown btn
- // This will fire security level event listener
- this.simpleSettings.updateData(
- action,
- oldServName,
- operation,
- settings,
- forceEnabled,
- setMethodUI,
- emptyServerName,
- );
- const modeBtn = document.querySelector(
- "button[data-toggle-settings-mode-btn]",
- );
- const mode = modeBtn.getAttribute("data-toggle-settings-mode-btn");
- if (action === "new") {
- mode !== "simple" ? modeBtn.click() : null;
- document
- .querySelector(
- `button[data-setting-select-dropdown-btn="security-level"][value="standard"]`,
- )
- .click();
- document
- .querySelector(
- `button[data-setting-select-dropdown-btn="security-level"][value="custom"]`,
- )
- .setAttribute("disabled", "true");
- } else {
- mode !== "advanced" ? modeBtn.click() : null;
- document
- .querySelector(
- `button[data-setting-select-dropdown-btn="security-level"][value="custom"]`,
- )
- .removeAttribute("disabled");
- document
- .querySelector(
- `button[data-setting-select-dropdown-btn="security-level"][value="custom"]`,
- )
- .click();
- }
- }
- } catch (err) {}
- // security level
- try {
- if (
- e.target
- .closest("button")
- .getAttribute("data-setting-select-dropdown-btn") ==
- "security-level"
- ) {
- // get current common values
- const action = this.simpleSettings.currAction;
- const oldServName = this.simpleSettings.oldServName;
- const operation = this.simpleSettings.operation;
- const forceEnabled = this.simpleSettings.forceEnabled;
- const setMethodUI = this.simpleSettings.setMethodUI;
- const emptyServerName = this.simpleSettings.emptyServerName;
- // get custom security level settings of service if custom choose
- const value = e.target.closest("button").getAttribute("value");
-
- // mainSettings is the settings of the service
- let mainSettings;
-
- // Try to get settings in a valid format
- try {
- mainSettings = JSON.parse(
- document
- .querySelector(`[data-old-name][data-value="${oldServName}"]`)
- .closest("[data-services-service]")
- .getAttribute("data-settings"),
- );
- } catch (err) {}
-
- try {
- if (!settings) {
- mainSettings = JSON.parse(
- document
- .querySelector(`[data-old-name][data-value="${oldServName}"]`)
- .closest("[data-services-service]")
- .getAttribute("data-settings")
- .replaceAll(`'`, `"`),
- );
- }
- } catch (err) {}
-
- // In case we want a security level, we need to get the settings of the security level
- // In order to filter and merge both to avoid overriding disabled settings (method != ui|default)
- let compareSettings = null;
- if (value !== "custom") {
- // Try to get settings in a valid format
- try {
- compareSettings = JSON.parse(
- document
- .querySelector(`input#security-level-${value}`)
- .getAttribute("data-settings"),
- );
- } catch (err) {}
-
- try {
- if (!compareSettings) {
- compareSettings = JSON.parse(
- document
- .querySelector(`input#security-level-${value}`)
- .getAttribute("data-settings")
- .replaceAll(`'`, `"`),
- );
- }
- } catch (err) {}
- }
- // No main settings if new
- if (action === "new") {
- mainSettings = JSON.parse(JSON.stringify(compareSettings));
- compareSettings = null;
- }
-
- this.simpleSettings.setSimple(
- action,
- oldServName,
- operation,
- mainSettings,
- compareSettings,
- setMethodUI,
- forceEnabled,
- emptyServerName,
- true,
- );
}
} catch (err) {}
});
@@ -260,9 +125,6 @@ class ServiceModal {
"[data-services-tabs-select-header]",
]);
this.modalCard = this.modal.querySelector("[data-services-modal-card]");
- this.switchModeBtn = this.modal.querySelector(
- "[data-toggle-settings-mode-btn]",
- );
//modal forms
this.formNewEdit = this.modal.querySelector(
"[data-advanced][data-services-modal-form]",
@@ -270,9 +132,7 @@ class ServiceModal {
this.formDelete = this.modal.querySelector(
"[data-services-modal-form-delete]",
);
- this.simpleForm = this.modal.querySelector(
- "[data-simple][data-services-modal-form]",
- );
+
//container
this.container = document.querySelector("main");
this.currAction = "";
@@ -370,10 +230,9 @@ class ServiceModal {
this.setCardViewportHeight(action === "delete" ? false : true);
this.setHeaderActionsVisible(action === "delete" ? false : true);
this.SetSelectTabsVisible(action === "delete" ? false : true);
- this.setModeVisible(action);
+ this.resetFilterSettings();
if (action === "edit" || action === "new" || action === "clone") {
this.formNewEdit.classList.remove("hidden");
- this.simpleForm.classList.remove("hidden");
const oldNameValue = action === "edit" ? oldServName : "";
@@ -401,6 +260,20 @@ class ServiceModal {
this.openModal();
}
+ resetFilterSettings() {
+ // Reset select
+ const selectTypeAll = document
+ .querySelector("#filter-type[data-services-setting-select-dropdown]")
+ .querySelector(
+ 'button[value="all"][data-services-setting-select-dropdown-btn="type"]',
+ );
+ selectTypeAll.click();
+ const inpKeyword = this.modal.querySelector("input#settings-filter");
+ inpKeyword.value = "";
+ // dispatch event input
+ inpKeyword.dispatchEvent(new Event("input"));
+ }
+
setIsDraft(isDraft, method) {
const draftVal = isDraft ? "yes" : "no";
@@ -437,18 +310,12 @@ class ServiceModal {
this.modal
.querySelector("[data-toggle-draft-btn]")
.classList.remove("hidden");
- this.modal
- .querySelector("[data-toggle-settings-mode-btn]")
- .classList.remove("hidden");
}
if (!setVisible) {
this.modal
.querySelector("[data-toggle-draft-btn]")
.classList.add("hidden");
- this.modal
- .querySelector("[data-toggle-settings-mode-btn]")
- .classList.add("hidden");
}
}
@@ -464,29 +331,8 @@ class ServiceModal {
}
}
- switchMode(mode) {
- if (mode === "advanced") {
- this.formNewEdit.classList.remove("hidden");
- this.simpleForm.classList.add("hidden");
- }
-
- if (mode === "simple") {
- this.formNewEdit.classList.add("hidden");
- this.simpleForm.classList.remove("hidden");
- }
- }
-
- setModeVisible(action) {
- if (action === "new" || action === "clone" || action === "edit") {
- this.switchModeBtn.classList.remove("hidden");
- } else {
- this.switchModeBtn.classList.add("hidden");
- }
- }
-
hideForms() {
this.formNewEdit.classList.add("hidden");
- this.simpleForm.classList.add("hidden");
this.formDelete.classList.add("hidden");
}
@@ -842,13 +688,6 @@ const setFilterGlobal = new FilterSettings(
const settings = new SettingsService();
-const switchSettings = new SettingsSwitch(
- document.querySelector("[data-toggle-settings-mode-btn]"),
- document.querySelector("main"),
- ["advanced", "simple"],
- "services",
-);
-
const checkServiceModalKeyword = new CheckNoMatchFilter(
document.querySelector("input#settings-filter"),
"input",
diff --git a/src/ui/static/js/utils/settings.js b/src/ui/static/js/utils/settings.js
index 3ff0fe5d3..db1bcf01d 100644
--- a/src/ui/static/js/utils/settings.js
+++ b/src/ui/static/js/utils/settings.js
@@ -13,7 +13,7 @@ class Popover {
this.hidePopover(this.relateBtn);
} catch (e) {}
},
- true
+ true,
);
window.addEventListener("pointerover", (e) => {
@@ -48,7 +48,7 @@ class Popover {
const popoverName = btn.getAttribute("data-popover-btn");
//toggle curr popover
const popover = btn.parentElement.querySelector(
- `[data-popover-content=${popoverName}]`
+ `[data-popover-content=${popoverName}]`,
);
popover.classList.add("transition-all", "delay-200", "opacity-0");
@@ -70,7 +70,7 @@ class Popover {
const popoverName = btn.getAttribute("data-popover-btn");
//toggle curr popover
const popover = btn.parentElement.querySelector(
- `[data-popover-content=${popoverName}]`
+ `[data-popover-content=${popoverName}]`,
);
popover.classList.add("hidden");
popover.classList.remove("transition-all", "delay-200");
@@ -127,7 +127,7 @@ class TabsSelect {
window.history.replaceState(
null,
"",
- `${window.location.pathname}#${tabAtt}`
+ `${window.location.pathname}#${tabAtt}`,
);
}
}
@@ -153,7 +153,7 @@ class TabsSelect {
const fragment = window.location.hash.substring(1);
if (fragment) {
const tab = this.tabContainer.querySelector(
- `button[data-tab-select-handler='${fragment}']`
+ `button[data-tab-select-handler='${fragment}']`,
);
tab.click();
// Scroll to the top of the page (with a delay to ensure the tab is clicked first)
@@ -167,7 +167,7 @@ class TabsSelect {
resetTabsStyle() {
const tabsEl = this.tabContainer.querySelectorAll(
- "button[data-tab-select-handler]"
+ "button[data-tab-select-handler]",
);
tabsEl.forEach((tab) => {
tab.classList.remove("active");
@@ -176,7 +176,7 @@ class TabsSelect {
highlightClicked(tabAtt) {
const tabMobile = this.tabContainer.querySelector(
- `button[data-tab-select-handler='${tabAtt}']`
+ `button[data-tab-select-handler='${tabAtt}']`,
);
tabMobile.classList.add("active");
}
@@ -191,14 +191,14 @@ class TabsSelect {
showSettingClicked(tabAtt) {
const plugin = this.contentContainer.querySelector(
- `[data-plugin-item='${tabAtt}']`
+ `[data-plugin-item='${tabAtt}']`,
);
plugin.classList.remove("hidden");
}
setDropBtnText(tabAtt, text) {
const dropBtn = this.tabContainer.querySelector(
- "[data-tab-select-dropdown-btn]"
+ "[data-tab-select-dropdown-btn]",
);
dropBtn.setAttribute("data-tab-id", tabAtt);
dropBtn.querySelector("span").textContent = text;
@@ -206,7 +206,7 @@ class TabsSelect {
closeDropdown() {
const dropdown = this.tabContainer.querySelector(
- "[data-tab-select-dropdown]"
+ "[data-tab-select-dropdown]",
);
dropdown.classList.add("hidden");
dropdown.classList.remove("flex");
@@ -216,7 +216,7 @@ class TabsSelect {
toggleDropdown() {
const dropdown = this.tabContainer.querySelector(
- "[data-tab-select-dropdown]"
+ "[data-tab-select-dropdown]",
);
const combobox = dropdown.querySelector("[data-combobox]");
if (combobox) {
@@ -241,7 +241,7 @@ class TabsSelect {
updateTabArrow() {
const dropdown = this.tabContainer.querySelector(
- "[data-tab-select-dropdown]"
+ "[data-tab-select-dropdown]",
);
if (dropdown.classList.contains("hidden")) {
@@ -275,24 +275,24 @@ class FilterSettings {
inputID,
tabContainer,
contentContainer,
- prefix = "global-config"
+ prefix = "global-config",
) {
this.input = document.querySelector(`input#${inputID}`);
this.prefix = prefix;
this.contextTxtEl = document.querySelector(
- `span[data-${this.prefix}-setting-select-text="context"]`
+ `span[data-${this.prefix}-setting-select-text="context"]`,
);
this.typeTxtEl = document.querySelector(
- `span[data-${this.prefix}-setting-select-text="type"]`
+ `span[data-${this.prefix}-setting-select-text="type"]`,
);
this.comboboxEl = document.querySelector(
- `[data-${this.prefix}-tabs-select] [data-combobox]`
+ `[data-${this.prefix}-tabs-select] [data-combobox]`,
);
this.isComboCheck = false;
this.tabContainer = tabContainer;
this.contentContainer = contentContainer;
this.tabsEls = this.tabContainer.querySelectorAll(
- `[data-tab-select-handler]`
+ `[data-tab-select-handler]`,
);
this.comboboxEl = this.tabContainer
.querySelector("[data-tab-select-dropdown]")
@@ -325,16 +325,16 @@ class FilterSettings {
try {
if (
(e.target.hasAttribute(
- `data-${this.prefix}-setting-select-dropdown-btn`
+ `data-${this.prefix}-setting-select-dropdown-btn`,
) &&
e.target.getAttribute(
- `data-${this.prefix}-setting-select-dropdown-btn`
+ `data-${this.prefix}-setting-select-dropdown-btn`,
) === `context`) ||
(e.target.hasAttribute(
- `data-${this.prefix}-setting-select-dropdown-btn`
+ `data-${this.prefix}-setting-select-dropdown-btn`,
) &&
e.target.getAttribute(
- `data-${this.prefix}-setting-select-dropdown-btn`
+ `data-${this.prefix}-setting-select-dropdown-btn`,
) === `type`)
) {
return this.runFilter();
@@ -531,7 +531,7 @@ class FilterSettings {
const multGroups = this.contentContainer
.querySelector(`[data-plugin-item=${tabName}]`)
.querySelectorAll(
- `[data-${this.prefix}-settings-multiple^="${multHandlerName}"]`
+ `[data-${this.prefix}-settings-multiple^="${multHandlerName}"]`,
);
// check for each if all settings are hidden
@@ -539,7 +539,7 @@ class FilterSettings {
const multGroup = multGroups[j];
let isAllMultSettingHidden = true;
const settings = multGroup.querySelectorAll(
- `[data-setting-container]`
+ `[data-setting-container]`,
);
for (let k = 0; k < settings.length; k++) {
if (!settings[k].classList.contains("hidden")) {
@@ -632,7 +632,7 @@ class FilterSettings {
.querySelector("[data-tab-select-dropdown-btn]")
.setAttribute("data-tab-id", "no-match");
this.tabContainer.querySelector(
- "[data-tab-select-dropdown-btn] span"
+ "[data-tab-select-dropdown-btn] span",
).textContent = "No match";
// we want to close dropdown in case open previously
this.toggleDropdown(true, true, false);
@@ -641,7 +641,7 @@ class FilterSettings {
// case at least one match
const currTabBtn = this.tabContainer.querySelector(
- `[data-tab-select-handler='${tabNameBeforeFilter}']`
+ `[data-tab-select-handler='${tabNameBeforeFilter}']`,
);
// case the previous plugin is still visible, set is as active by clicking it again
@@ -661,7 +661,7 @@ class FilterSettings {
return;
const hiddenTabsEl = this.tabContainer.querySelectorAll(
- `[data-tab-select-handler][class*="!hidden"]`
+ `[data-tab-select-handler][class*="!hidden"]`,
);
if (hiddenTabsEl.length < this.tabsEls.length - 1)
@@ -672,15 +672,15 @@ class FilterSettings {
toggleDropdown(
avoidComboFocus = false,
disableOpen = false,
- disableClose = false
+ disableClose = false,
) {
// avoid this on mobile
if (window.innerWidth < 768) return;
const dropdownEl = this.tabContainer.querySelector(
- "[data-tab-select-dropdown]"
+ "[data-tab-select-dropdown]",
);
const dropdownBtn = this.tabContainer.querySelector(
- "[data-tab-select-dropdown-btn]"
+ "[data-tab-select-dropdown-btn]",
);
if (this.comboboxEl && avoidComboFocus)
this.comboboxEl.setAttribute("data-focus", "false");
@@ -736,7 +736,7 @@ class FilterSettings {
const multGroups = this.contentContainer
.querySelector(`[data-plugin-item=${tabName}]`)
.querySelectorAll(
- `[data-${this.prefix}-settings-multiple^="${multHandlerName}"]`
+ `[data-${this.prefix}-settings-multiple^="${multHandlerName}"]`,
);
// check for each if all settings are hidden
for (let j = 0; j < multGroups.length; j++) {
@@ -751,7 +751,7 @@ class FilterSettings {
multGroup.classList.remove("hidden");
const settings = multGroup.querySelectorAll(
- `[data-setting-container]`
+ `[data-setting-container]`,
);
for (let k = 0; k < settings.length; k++) {
settings[k].classList.remove("hidden");
@@ -768,7 +768,7 @@ class FilterSettings {
.querySelector(`[data-plugin-item="${tabName}"]`)
.querySelector(`[data-plugin-settings]`);
const settings = settingContainer.querySelectorAll(
- "[data-setting-container]"
+ "[data-setting-container]",
);
return settings;
}
@@ -790,7 +790,7 @@ class FilterSettings {
)
continue;
const settingsContainer = settingMultipleGroup.querySelectorAll(
- `[data-setting-container]`
+ `[data-setting-container]`,
);
settingsContainer.forEach((setting) => {
@@ -859,7 +859,7 @@ class CheckNoMatchFilter {
elsToCheck,
elContainer,
noMatchEl,
- classToCheck = "hidden"
+ classToCheck = "hidden",
) {
this.input = input;
this.type = type;
@@ -989,11 +989,11 @@ class Settings {
this.mode = mode;
this.serverNameInps = this.container.querySelectorAll(
- 'input[name="SERVER_NAME"][data-setting-input]'
+ 'input[name="SERVER_NAME"][data-setting-input]',
);
this.submitBtn = this.container.querySelector(
- `button[data-${this.prefix}-modal-submit]`
+ `button[data-${this.prefix}-modal-submit]`,
);
this.currAction = "";
this.currMethod = "";
@@ -1091,7 +1091,7 @@ class Settings {
parentEl = this.container,
attMethodName = "data-default-method",
attValueName = "data-default-value",
- avoidMultiple = true
+ avoidMultiple = true,
) {
// Start with input-like (input, checkbox)
const inps = avoidMultiple
@@ -1122,7 +1122,7 @@ class Settings {
"select",
select,
select.getAttribute("name"),
- parentEl
+ parentEl,
)
)
return;
@@ -1132,15 +1132,15 @@ class Settings {
//click the custom select dropdown to update select value
select.parentElement
.querySelector(
- `button[data-setting-select-dropdown-btn][value='${defaultVal}']`
+ `button[data-setting-select-dropdown-btn][value='${defaultVal}']`,
)
.click();
//set state to custom visible el
const btnCustom = document.querySelector(
`[data-setting-select=${select.getAttribute(
- "data-setting-select-default"
- )}]`
+ "data-setting-select-default",
+ )}]`,
);
this.setDisabledByMethod(btnCustom, defaultMethod);
@@ -1162,7 +1162,7 @@ class Settings {
settings,
setMethodUI,
forceEnabled,
- emptyServerName
+ emptyServerName,
) {
// Get global needed data
this.currAction = action;
@@ -1179,7 +1179,7 @@ class Settings {
updateOldNameValue() {
const oldNameInps = this.container.querySelectorAll(
- 'input[name="OLD_SERVER_NAME"]'
+ 'input[name="OLD_SERVER_NAME"]',
);
oldNameInps.forEach((inp) => {
@@ -1191,7 +1191,7 @@ class Settings {
updateOperation() {
// update operation and other hidden inputs for all mode in modal
const operationInps = this.container.querySelectorAll(
- 'input[name="operation"]'
+ 'input[name="operation"]',
);
operationInps.forEach((inp) => {
inp.setAttribute("value", this.operation);
@@ -1263,7 +1263,7 @@ class Settings {
if (inp.tagName === "SELECT") {
inp.parentElement
.querySelector(
- `button[data-setting-select-dropdown-btn][value='${value}']`
+ `button[data-setting-select-dropdown-btn][value='${value}']`,
)
.click();
inp.setAttribute("data-method", method);
@@ -1323,7 +1323,7 @@ class SettingsMultiple extends Settings {
const attName = btn.getAttribute(`data-${this.prefix}-multiple-add`);
//get all multiple groups
const multipleEls = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple*="${attName}"]`
+ `[data-${this.prefix}-settings-multiple*="${attName}"]`,
);
//case no schema
if (multipleEls.length <= 0) return;
@@ -1335,7 +1335,7 @@ class SettingsMultiple extends Settings {
//and keep the highest num
multipleEls.forEach((container) => {
const ctnrName = container.getAttribute(
- `data-${this.prefix}-settings-multiple`
+ `data-${this.prefix}-settings-multiple`,
);
const [containerSuffix, containerIsNum, containerName] =
this.getSuffixData(ctnrName);
@@ -1348,7 +1348,7 @@ class SettingsMultiple extends Settings {
const setNum = +currNum === 0 ? `` : `_${currNum}`;
//the default (schema) group is the last group
const schema = this.container.querySelector(
- `[data-${this.prefix}-settings-multiple="${attName}_SCHEMA"]`
+ `[data-${this.prefix}-settings-multiple="${attName}_SCHEMA"]`,
);
//clone schema to create a group with new num
const schemaClone = schema.cloneNode(true);
@@ -1388,12 +1388,12 @@ class SettingsMultiple extends Settings {
// We are not removing it really, just hiding it and update values to default
// By setting default value, group will be send to server and delete (because a setting with default value is useless to keep)
const multContainer = e.target.closest(
- `[data-${this.prefix}-settings-multiple]`
+ `[data-${this.prefix}-settings-multiple]`,
);
multContainer.classList.add("hidden-multiple");
// get setting container
const settings = multContainer.querySelectorAll(
- `[data-setting-container]`
+ `[data-setting-container]`,
);
settings.forEach((setting) => {
// for regular input
@@ -1420,7 +1420,7 @@ class SettingsMultiple extends Settings {
// for select
try {
const selects = setting.querySelectorAll(
- "button[data-setting-select]"
+ "button[data-setting-select]",
);
selects.forEach((select) => {
const defaultVal = select.getAttribute("data-default") || "";
@@ -1431,8 +1431,8 @@ class SettingsMultiple extends Settings {
defaultVal;
const dropdown = this.container.querySelector(
`[data-setting-select-dropdown="${select.getAttribute(
- "data-setting-select"
- )}"]`
+ "data-setting-select",
+ )}"]`,
);
dropdown.querySelector(`button[value=${defaultVal}]`).click();
});
@@ -1446,7 +1446,7 @@ class SettingsMultiple extends Settings {
removePrevMultiples() {
const multiPlugins = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple]`
+ `[data-${this.prefix}-settings-multiple]`,
);
multiPlugins.forEach((multiGrp) => {
if (
@@ -1477,11 +1477,11 @@ class SettingsMultiple extends Settings {
setMultipleToDOM(sortMultObj) {
// We want to loop on each schema container
for (const [schemaCtnrName, multGroupBySuffix] of Object.entries(
- sortMultObj
+ sortMultObj,
)) {
//we need to access the DOM schema container
const schemaCtnr = this.container.querySelector(
- `[data-${this.prefix}-settings-multiple="${schemaCtnrName}"]`
+ `[data-${this.prefix}-settings-multiple="${schemaCtnrName}"]`,
);
//now we have to loop on each multiple settings group
for (const [suffix, settings] of Object.entries(multGroupBySuffix)) {
@@ -1497,7 +1497,7 @@ class SettingsMultiple extends Settings {
for (const [name, data] of Object.entries(settings)) {
//get setting container of clone container
const settingContainer = schemaCtnrClone.querySelector(
- `[data-setting-container="${name}"]`
+ `[data-setting-container="${name}"]`,
);
}
//send schema clone to DOM and show it
@@ -1520,7 +1520,7 @@ class SettingsMultiple extends Settings {
const multiples = {};
const schemaSettings = this.container.querySelectorAll(
- `[data-setting-container$="SCHEMA"]`
+ `[data-setting-container$="SCHEMA"]`,
);
// loop on every schema settings
@@ -1547,13 +1547,13 @@ class SettingsMultiple extends Settings {
addOneMultGroup() {
const multAddBtns = this.container.querySelectorAll(
- `[data-${this.prefix}-multiple-add]`
+ `[data-${this.prefix}-multiple-add]`,
);
multAddBtns.forEach((btn) => {
const att = btn.getAttribute(`data-${this.prefix}-multiple-add`);
//check if already one (SCHEMA exclude so length >= 2)
const multGroups = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple^="${att}"]`
+ `[data-${this.prefix}-settings-multiple^="${att}"]`,
);
if (multGroups.length >= 2) return;
@@ -1570,7 +1570,7 @@ class SettingsMultiple extends Settings {
hiddenIfNoMultiples() {
//hide multiple btn if no multiple exist on a plugin
const multiples = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple]`
+ `[data-${this.prefix}-settings-multiple]`,
);
multiples.forEach((container) => {
if (container.querySelectorAll(`[data-setting-container]`).length <= 0)
@@ -1582,7 +1582,7 @@ class SettingsMultiple extends Settings {
showMultByAtt(att) {
const multContainers = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple^=${att}]`
+ `[data-${this.prefix}-settings-multiple^=${att}]`,
);
multContainers.forEach((container) => {
if (
@@ -1596,7 +1596,7 @@ class SettingsMultiple extends Settings {
toggleMultByAtt(att) {
const multContainers = this.container.querySelectorAll(
- `[data-${this.prefix}-settings-multiple^=${att}]`
+ `[data-${this.prefix}-settings-multiple^=${att}]`,
);
multContainers.forEach((container) => {
if (
@@ -1631,10 +1631,10 @@ class SettingsMultiple extends Settings {
selects.forEach((select) => {
const method = select.getAttribute("data-default-method");
const name = select.getAttribute(
- `data-${this.prefix}-setting-select-default`
+ `data-${this.prefix}-setting-select-default`,
);
const selDOM = this.container.querySelector(
- `button[data-${this.prefix}-setting-select='${name}']`
+ `button[data-${this.prefix}-setting-select='${name}']`,
);
if (method === "ui" || method === "default") {
selDOM.removeAttribute("disabled", "");
@@ -1659,14 +1659,14 @@ class SettingsMultiple extends Settings {
? name.replace(`_${splitName[splitName.length - 1]}`, "").trim()
: name.trim();
const relateSetting = this.container.querySelector(
- `[data-setting-container=${nameSuffixLess}_SCHEMA]`
+ `[data-setting-container=${nameSuffixLess}_SCHEMA]`,
);
if (!relateSetting) continue;
const relateCtnr = relateSetting.closest(
- `[data-${this.prefix}-settings-multiple]`
+ `[data-${this.prefix}-settings-multiple]`,
);
const relateCtnrName = relateCtnr.getAttribute(
- `data-${this.prefix}-settings-multiple`
+ `data-${this.prefix}-settings-multiple`,
);
//then we sort the setting on the right container name by suffixe number
if (!(relateCtnrName in sortMultiples)) {
@@ -1687,7 +1687,7 @@ class SettingsMultiple extends Settings {
`data-${this.prefix}-settings-multiple`,
schemaCtnrClone
.getAttribute(`data-${this.prefix}-settings-multiple`)
- .replace("_SCHEMA", suffix)
+ .replace("_SCHEMA", suffix),
);
// Get all elemennts by attribute to update _SCHEMA by suffix
@@ -1706,7 +1706,7 @@ class SettingsMultiple extends Settings {
attEls.forEach((attEl) => {
attEl.setAttribute(
att,
- attEl.getAttribute(att).replace("_SCHEMA", suffix)
+ attEl.getAttribute(att).replace("_SCHEMA", suffix),
);
});
});
@@ -1793,7 +1793,7 @@ class SettingsEditor extends SettingsMultiple {
addDefaultEditorIfNone() {
// get containers with _SCHEMA
const editorContainers = this.container.querySelectorAll(
- "[data-editor-container$='_SCHEMA']"
+ "[data-editor-container$='_SCHEMA']",
);
editorContainers.forEach((editorContainer) => {
// Check if others editor exists with same base name
@@ -1801,7 +1801,7 @@ class SettingsEditor extends SettingsMultiple {
.getAttribute("data-editor-container")
.replace("_SCHEMA", "");
const otherEditors = this.container.querySelectorAll(
- `[data-editor-container*='${editorName}']`
+ `[data-editor-container*='${editorName}']`,
);
if (otherEditors.length > 1) return;
// Add default editor
@@ -1819,7 +1819,7 @@ class SettingsEditor extends SettingsMultiple {
// reset previous editors
this.editorEls.forEach((editor) => {
const editorContainer = editor.container.closest(
- "[data-editor-container]"
+ "[data-editor-container]",
);
editorContainer.remove();
editor.destroy();
@@ -1828,7 +1828,7 @@ class SettingsEditor extends SettingsMultiple {
this.editorEls = [];
// get only container ending with _SCHEMA
const editorContainers = this.container.querySelectorAll(
- "[data-editor-container$='_SCHEMA']"
+ "[data-editor-container$='_SCHEMA']",
);
const configsSettings = this.getEditorSettings();
// Create instances on the right containers
@@ -1849,7 +1849,7 @@ class SettingsEditor extends SettingsMultiple {
editorType,
editorName,
num,
- editorValue
+ editorValue,
);
}
});
@@ -1868,11 +1868,11 @@ class SettingsEditor extends SettingsMultiple {
editor.setAttribute("name", `${contName}_${num}`);
}
const filenameInp = containerClone.querySelector(
- `input[data-editor-filename]`
+ `input[data-editor-filename]`,
);
if (filenameInp) filenameInp.value = name;
const hiddenInp = containerClone.querySelector(
- `textarea[data-editor-input]`
+ `textarea[data-editor-input]`,
);
if (hiddenInp) {
hiddenInp.setAttribute("data-config-type", type);
@@ -1931,7 +1931,7 @@ class SettingsAdvanced extends SettingsEditor {
settings,
setMethodUI = false,
forceEnabled = false,
- emptyServerName = false
+ emptyServerName = false,
) {
this.updateData(
action,
@@ -1940,7 +1940,7 @@ class SettingsAdvanced extends SettingsEditor {
settings,
setMethodUI,
forceEnabled,
- emptyServerName
+ emptyServerName,
);
this.setSettingsAdvanced();
this.resetServerName();
@@ -1956,7 +1956,7 @@ class SettingsAdvanced extends SettingsEditor {
checkVisibleInpsValidity() {
try {
const inps = this.container.querySelectorAll(
- "[data-plugin-item]:not(.hidden) input[data-setting-input], [data-plugin-item][class*='hidden'] input[data-setting-input]"
+ "[data-plugin-item]:not(.hidden) input[data-setting-input], [data-plugin-item][class*='hidden'] input[data-setting-input]",
);
// merge input with visible and not visible
@@ -1982,7 +1982,7 @@ class SettingsAdvanced extends SettingsEditor {
) {
// Case conflict with another server name
const serverNames = document.querySelectorAll(
- "[data-services-service]"
+ "[data-services-service]",
);
const serverNameValue = inps[i].getAttribute("value");
serverNames.forEach((serverName) => {
@@ -1997,7 +1997,7 @@ class SettingsAdvanced extends SettingsEditor {
}
const errMsg = this.container.querySelector(
- "[data-services-modal-error-msg]"
+ "[data-services-modal-error-msg]",
);
if (!isAllValid) {
invalidInp.classList.add("invalid");
@@ -2028,436 +2028,6 @@ class SettingsAdvanced extends SettingsEditor {
}
}
-class SettingsSimple extends SettingsEditor {
- constructor(formEl, multSettingsName, prefix = "services") {
- super("simple", formEl, multSettingsName, prefix);
- this.nextBtn = this.container.querySelector("button[data-simple-next]");
- this.backBtn = this.container.querySelector("button[data-simple-back]");
- this.initSimple();
- }
-
- initSimple() {
- window.addEventListener("DOMContentLoaded", () => {
- this.container.addEventListener("input", (e) => {
- this.checkVisibleInpsValidity();
- });
- });
-
- // SIMPLE MODE ACTIONS
- this.nextBtn.addEventListener("click", () => {
- this.nextSimpleStep();
- });
-
- this.backBtn.addEventListener("click", () => {
- this.prevSimpleStep();
- });
- }
-
- setSimple(
- action = this.currAction,
- oldServName = this.oldServName,
- operation = this.operation,
- mainSettings,
- compareSettings = null,
- setMethodUI = false,
- forceEnabled = false,
- emptyServerName = false,
- resetSteps = false
- ) {
- const settings =
- compareSettings && Object.keys(compareSettings).length > 0
- ? this.filterSettings(mainSettings, compareSettings)
- : mainSettings;
-
- this.updateData(
- action,
- oldServName,
- operation,
- settings,
- setMethodUI,
- forceEnabled,
- emptyServerName
- );
- this.setSettingsSimple();
- this.setEditorSettings();
- this.resetServerName();
- if (resetSteps) this.resetSimpleMode();
- this.checkVisibleInpsValidity();
- }
-
- filterSettings(mainSettings, compareSettings) {
- const mergeSettings = {};
- // handle custom configs, we only keep security level config on new, else we get only service configs
- const configsToGetFrom =
- this.currAction === "new" ? compareSettings : mainSettings;
- const customConfSettings = []; // Allow to delete custom configs
- for (const [key, value] of Object.entries(configsToGetFrom)) {
- if (key.startsWith("CUSTOM_CONFIG")) {
- mergeSettings[key] = value;
- customConfSettings.push(key);
- }
- }
-
- // Delete merged custom configs
- for (let i = 0; i < customConfSettings.length; i++) {
- try {
- delete mainSettings[customConfSettings[i]];
- } catch (e) {}
-
- try {
- delete compareSettings[customConfSettings[i]];
- } catch (e) {}
- }
-
- // get the highest suffix number in mainSettings
- let highestMainSuffix = 0;
- let highestCompareSuffix = 0;
- // This will allow
- const settingsConflicts = [];
- for (const [key, value] of Object.entries(mainSettings)) {
- const [mainSuffix, mainIsSuffixe, mainName] = this.getSuffixData(key);
- // Case same key (same setting) and not a multiple
- // Keep the one with a method != than ui or default if exists
- // Else keep the one from compareSettings that is the securityLevel
- if (key in compareSettings && !mainName.includes(this.multSettingsName)) {
- const method = mainSettings[key]["method"];
- if (method !== "ui" && method !== "default") {
- mergeSettings[key] = value;
- } else {
- highestMainSuffix = mergeSettings[key] = compareSettings[key];
- }
- settingsConflicts.push(key);
- continue;
- }
- // Need to check if is a multiple from a list because we can have custom configs with suffixe too
- if (this.multSettingsName.includes(mainName)) {
- highestMainSuffix = mainIsSuffixe
- ? Math.max(highestMainSuffix, suffixeNum)
- : highestMainSuffix;
- settingsConflicts.push(key);
- }
- const [compareSuffix, compareIsSuffixe, compareName] =
- this.getSuffixData(key);
-
- // Need to check if is a multiple from a list because we can have custom configs with suffixe too
- if (this.multSettingsName.includes(compareName)) {
- highestCompareSuffix = compareIsSuffixe
- ? Math.max(highestCompareSuffix, suffixeNum)
- : highestCompareSuffix;
- settingsConflicts.push(key);
- }
- }
-
- // Case highest main suffixe is higher than compare suffixe
- // Start updating starting from the highest suffix looping on all suffixed
- // Until we reached the highest compare suffixe
- if (highestCompareSuffix >= highestMainSuffix) {
- highestMainSuffix++;
- for (let i = 0; i <= highestCompareSuffix; i++) {
- // Check if the setting is a multiple and match the current suffixe
- for (const [key, value] of Object.entries(compareSettings)) {
- const [compareSuffix, compareIsSuffixe, compareName] =
- this.getSuffixData(key);
- // Need to check if is a multiple from a list because we can have custom configs with suffixe too
- if (!this.multSettingsName.includes(compareName)) continue;
- // Case multiple, update suffixe to the highest available if needed
- const newNameSuffixe = key.replace(
- `_${compareName}`,
- `_${highestMainSuffix}`
- );
- mergeSettings[newNameSuffixe] = value;
- }
- // Update for the next loop to get the next suffixe
- highestMainSuffix++;
- }
- }
- // Else, add compare settings without changing anything
- else {
- for (const [key, value] of Object.entries(compareSettings)) {
- const [compareSuffix, compareIsSuffixe, compareName] =
- this.getSuffixData(key);
- // Need to check if is a multiple from a list because we can have custom configs with suffixe too
- if (!this.multSettingsName.includes(compareName)) continue;
- mergeSettings[key] = value;
- }
- }
-
- // Delete conflicts settings in order to merge the rest
- for (let i = 0; i < settingsConflicts.length; i++) {
- try {
- delete mainSettings[settingsConflicts[i]];
- } catch (e) {}
- try {
- delete compareSettings[settingsConflicts[i]];
- } catch (e) {}
- }
-
- // Merge the rest of the settings
- const mergeAllSettings = {
- ...mergeSettings,
- ...mainSettings,
- ...compareSettings,
- };
- return mergeAllSettings;
- }
-
- setSettingsSimple() {
- this.setRegularInps();
- this.setMultipleInps();
- }
-
- resetSimpleMode() {
- // reset button
- this.backBtn.setAttribute("disabled", "");
- this.nextBtn.removeAttribute("disabled");
- // hidden all steps and show first one
- const steps = this.container.querySelectorAll("[data-step]");
- steps.forEach((step) => {
- step.classList.add("hidden");
- });
- const firstStep = this.container.querySelector("[data-step='1']");
- firstStep.classList.remove("hidden");
- this.updateSimpleActions();
- }
-
- nextSimpleStep() {
- // get current step
- const currStep = this.container.querySelector("[data-step]:not(.hidden)");
- const currStepNum = currStep.getAttribute("data-step");
- // get next step and next step + 1 to determine if continue or save
- const nextStep = this.container.querySelector(
- `[data-step="${+currStepNum + 1}"]`
- );
- // hide current step and show next one
- currStep.classList.add("hidden");
- nextStep.classList.remove("hidden");
-
- this.checkVisibleInpsValidity();
- this.updateSimpleActions();
- }
-
- prevSimpleStep() {
- // get current step
- const currStep = this.container.querySelector("[data-step]:not(.hidden)");
- const currStepNum = currStep.getAttribute("data-step");
- // get next step and next step + 1 to determine if continue or save
- const prevStep = this.container.querySelector(
- `[data-step="${+currStepNum - 1}"]`
- );
-
- // hide current step and show next one
- currStep.classList.add("hidden");
- prevStep.classList.remove("hidden");
-
- this.checkVisibleInpsValidity();
- this.updateSimpleActions();
- }
-
- updateSimpleActions() {
- const currStep = this.container.querySelector("[data-step]:not(.hidden)");
- const currStepNum = currStep.getAttribute("data-step");
- // get next step and next step + 1 to determine if continue or save
- const prevStep = this.container.querySelector(
- `[data-step="${+currStepNum - 1}"]`
- );
-
- const nextStep = this.container.querySelector(
- `[data-step="${+currStepNum + 1}"]`
- );
-
- // Handle case last step or not
- if (nextStep) {
- this.nextBtn.classList.remove("hidden");
- this.submitBtn.classList.add("hidden");
- }
-
- if (!nextStep) {
- this.nextBtn.classList.add("hidden");
- this.submitBtn.classList.remove("hidden");
- }
-
- if (prevStep) {
- this.backBtn.removeAttribute("disabled");
- }
-
- if (!prevStep) {
- this.backBtn.setAttribute("disabled", "");
- }
- }
-
- checkVisibleInpsValidity() {
- try {
- const inps = this.container.querySelectorAll(
- "[data-step]:not(.hidden) input[data-setting-input]"
- );
- // merge input with visible and not visible
- if (inps.length <= 0) return;
-
- let isAllValid = true;
- let invalidInpName = "";
- let invalidInp = null;
-
- for (let i = 0; i < inps.length; i++) {
- // for all inputs
- if (!inps[i].validity.valid) {
- invalidInp = inps[i];
- isAllValid = false;
- invalidInpName = inps[i].getAttribute("name");
- break;
- }
-
- // special case for SERVER_NAME
- if (
- inps[i].getAttribute("name") === "SERVER_NAME" &&
- inps[i].value !== ""
- ) {
- // Case conflict with another server name
- const serverNames = document.querySelectorAll(
- "[data-services-service]"
- );
- const serverNameValue = inps[i].getAttribute("value");
- serverNames.forEach((serverName) => {
- const name = serverName.getAttribute("data-services-service");
- if (name === serverNameValue) return;
- if (name === inps[i].value) {
- invalidInpName = inps[i]?.getAttribute("name");
- isAllValid = false;
- }
- });
- }
- }
-
- const errMsg = this.container.querySelector(
- "[data-services-modal-error-msg]"
- );
- if (!isAllValid) {
- invalidInp.classList.add("invalid");
- const invalidEl = invalidInp
- .closest("form")
- .querySelector(`[data-invalid=${invalidInp.getAttribute("id")}]`);
- invalidEl.classList.remove("hidden", "md:hidden");
- // Wait a little that modal is fully open to focus on invalid input, because not working when element is hidden
- setTimeout(() => {
- // only focus if not another input is focus
- if (document.activeElement.tagName !== "INPUT") invalidInp.focus();
- }, 30);
-
- errMsg.textContent = `${invalidInpName} must be valid to submit`;
- errMsg.classList.remove("hidden");
- this.nextBtn.setAttribute("disabled", "");
- }
-
- if (isAllValid) {
- errMsg.classList.add("hidden");
- this.nextBtn.removeAttribute("disabled");
- }
- } catch (e) {}
- }
-}
-
-class SettingsRaw extends SettingsMultiple {
- constructor(mode, formEl, multSettingsName, prefix = "services") {
- super(mode, formEl, multSettingsName, prefix);
- this.initRaw();
- }
-
- initRaw() {
- window.addEventListener("DOMContentLoaded", () => {
- this.container.addEventListener("input", (e) => {
- this.checkVisibleInpsValidity();
- });
- });
- }
-
- setRaw(
- action,
- oldServName,
- operation,
- settings,
- setMethodUI = false,
- forceEnabled = false,
- emptyServerName = false
- ) {
- this.updateData(
- action,
- oldServName,
- operation,
- settings,
- setMethodUI,
- forceEnabled,
- emptyServerName
- );
- this.setSettingsRaw(settings, setMethodUI, forceEnabled, emptyServerName);
- }
-
- setSettingsRaw(settings, setMethodUI = false, forceEnabled = false) {}
-}
-
-class SettingsSwitch {
- constructor(
- switchBtn,
- container = document.querySelector("main"),
- modes = ["advanced", "simple"],
- prefix = "services"
- ) {
- this.prefix = prefix;
- this.modes = modes;
- this.switchModeBtn = switchBtn;
- // dict with mode as key and form element as value
- this.container = container;
- this.init();
- }
-
- init() {
- this.switchModeBtn.addEventListener("click", () => {
- // Get
- const currMode = this.switchModeBtn.getAttribute(
- "data-toggle-settings-mode-btn"
- );
- // Get current mode index in this.modes to get next one or first element if no next
- const currModeIndex = this.modes.indexOf(currMode);
- const nextMode = this.modes[currModeIndex + 1] || this.modes[0];
- this.setSettingMode(nextMode);
- });
- }
-
- // Switch settings mode and update button
- setSettingMode(mode) {
- const currMode = this.switchModeBtn.getAttribute(
- "data-toggle-settings-mode-btn"
- );
-
- if (currMode === mode) return;
- if (!this.switchModeBtn) return;
-
- const elsToShow =
- mode === "advanced"
- ? this.container.querySelectorAll("[data-advanced]")
- : this.container.querySelectorAll("[data-simple]");
-
- const elsToHide =
- mode === "advanced"
- ? this.container.querySelectorAll("[data-simple]")
- : this.container.querySelectorAll("[data-advanced]");
- elsToHide.forEach((setting) => {
- setting.classList.add("!hidden");
- });
- elsToShow.forEach((setting) => {
- setting.classList.remove("!hidden");
- });
- // button
- this.switchModeBtn.setAttribute("data-toggle-settings-mode-btn", mode);
- const switchEls = this.switchModeBtn.querySelectorAll(
- "[data-toggle-settings-mode]"
- );
- switchEls.forEach((el) => {
- el.getAttribute("data-toggle-settings-mode") === mode
- ? el.classList.remove("hidden")
- : el.classList.add("hidden");
- });
- }
-}
-
export {
Popover,
Tabs,
@@ -2469,6 +2039,4 @@ export {
Settings,
SettingsMultiple,
SettingsAdvanced,
- SettingsSimple,
- SettingsSwitch,
};
diff --git a/src/ui/styles.css b/src/ui/styles.css
index 632b65acb..7e7b79f14 100644
--- a/src/ui/styles.css
+++ b/src/ui/styles.css
@@ -92,7 +92,15 @@
}
.popover-settings-container {
- @apply z-[1000] h-fit max-w-[250px] transition-all duration-500 dark:brightness-90 transition rounded-md p-3 -translate-y-7 fixed bg-blue-500;
+ @apply z-[1000] h-fit max-w-[250px] transition-all duration-500 dark:brightness-90 transition rounded-md p-3 -translate-y-7 fixed;
+}
+
+.info.popover-settings-container {
+ @apply bg-blue-500;
+}
+
+.multisite.popover-settings-container {
+ @apply bg-orange-500;
}
.popover-tab {
diff --git a/src/ui/templates/services_modal.html b/src/ui/templates/services_modal.html
index 5a147d529..b8afe0485 100644
--- a/src/ui/templates/services_modal.html
+++ b/src/ui/templates/services_modal.html
@@ -31,19 +31,6 @@
{{ setting_simple['subtitle'] }}
-{{ config['subtitle'] }}
-- .conf -
-