diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 107954b79..baee1ba60 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,6 +1,6 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
-exclude: (^LICENSE.md$|^src/VERSION$|^src/(bw/misc/root-ca.pem$|deps/src/|common/core/modsecurity/files|ui/static/js/(editor/|utils/purify/|tsparticles\.bundle\.min\.js))|\.(svg|drawio|patch\d?|ascii|tf|tftpl)$)
+exclude: (^LICENSE.md$|^src/VERSION$|^env/|^src/(bw/misc/root-ca.pem$|deps/src/|common/core/modsecurity/files|ui/static/js/(editor/|utils/purify/|tsparticles\.bundle\.min\.js))|\.(svg|drawio|patch\d?|ascii|tf|tftpl|key)$)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: c4a0b883114b00d8d76b479c820ce7950211c99b # frozen: v4.5.0
@@ -16,8 +16,8 @@ repos:
args: ["--allow-multiple-documents"]
- id: check-case-conflict
- - repo: https://github.com/ambv/black
- rev: 2a1c67e0b2f81df602ec1f6e7aeb030b9709dc7c # frozen: 23.11.0
+ - repo: https://github.com/psf/black
+ rev: ec91a2be3c44d88e1a3960a4937ad6ed3b63464e # frozen: 23.12.1
hooks:
- id: black
name: Black Python Formatter
@@ -36,21 +36,21 @@ repos:
exclude: ^src/(bw/lua/middleclass.lua|common/core/antibot/captcha.lua)$
- repo: https://github.com/lunarmodules/luacheck
- rev: ababb6d403d634eb74d2c541035e9ede966e710d # frozen: v1.1.1
+ rev: 418f48976c73be697fe64b0eba9ea9821ac9bca8 # frozen: v1.1.2
hooks:
- id: luacheck
exclude: ^src/(bw/lua/middleclass.lua|common/core/antibot/captcha.lua)$
args: ["--std", "min", "--codes", "--ranges", "--no-cache"]
- repo: https://github.com/pycqa/flake8
- rev: 10f4af6dbcf93456ba7df762278ae61ba3120dc6 # frozen: 6.1.0
+ rev: 7d37d9032d0d161634be4554273c30efd4dea0b3 # frozen: 7.0.0
hooks:
- id: flake8
name: Flake8 Python Linter
args: ["--max-line-length=250", "--ignore=E266,E402,E722,W503"]
- repo: https://github.com/dosisod/refurb
- rev: a25b5d6087bba1509f96654c583efcd7796452cd # frozen: v1.24.0
+ rev: a7c461fcfaa2ca3248d489cdf7fed8e2d4fd8520 # frozen: v1.26.0
hooks:
- id: refurb
name: Refurb Python Refactoring Tool
diff --git a/docs/json2md.py b/docs/json2md.py
index 7ea963260..cca38729a 100755
--- a/docs/json2md.py
+++ b/docs/json2md.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from io import StringIO
from json import loads
diff --git a/docs/settings.md b/docs/settings.md
index 3aed4b61b..143108788 100644
--- a/docs/settings.md
+++ b/docs/settings.md
@@ -243,7 +243,7 @@ Manage default error pages
| Setting | Default | Context |Multiple| Description |
|-------------------------|-------------------------------------------------|---------|--------|------------------------------------------------------------------------------------------------------------------------|
|`ERRORS` | |multisite|no |List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).|
-|`INTERCEPTED_ERROR_CODES`|`400 401 403 404 405 413 429 500 501 502 503 504`|multisite|no |List of HTTP error code intercepted by Bunkerweb |
+|`INTERCEPTED_ERROR_CODES`|`400 401 403 404 405 413 429 500 501 502 503 504`|multisite|no |List of HTTP error code intercepted by BunkerWeb |
### Greylist
@@ -550,4 +550,3 @@ Allow access based on internal and external IP/network/rDNS/ASN whitelists.
|`WHITELIST_USER_AGENT_URLS`| |global |no |List of URLs, separated with spaces, containing good User-Agent to whitelist. |
|`WHITELIST_URI` | |multisite|no |List of URI (PCRE regex), separated with spaces, to whitelist. |
|`WHITELIST_URI_URLS` | |global |no |List of URLs, separated with spaces, containing bad URI to whitelist. |
-
diff --git a/docs/web-ui.md b/docs/web-ui.md
index 2beb9f9fe..4e6170092 100644
--- a/docs/web-ui.md
+++ b/docs/web-ui.md
@@ -44,7 +44,7 @@ The setup wizard is a feature that helps you to **configure** and **install the
Account section of the setup wizard
-Choose your administator username and password. Please note that password must have at least 8 chars with 1 lower case letter, 1 upper case letter, 1 digit and 1 special char.
+Choose your administrator username and password. Please note that password must have at least 8 chars with 1 lower case letter, 1 upper case letter, 1 digit and 1 special char.
{ align=center, width="350" }
diff --git a/examples/behind-reverse-proxy/setup-linux.sh b/examples/behind-reverse-proxy/setup-linux.sh
index f93c7e24a..f6e7edd25 100755
--- a/examples/behind-reverse-proxy/setup-linux.sh
+++ b/examples/behind-reverse-proxy/setup-linux.sh
@@ -24,6 +24,7 @@ if [ -f /lib/systemd/system/haproxy.service ] ; then
systemctl daemon-reload
fi
systemctl start haproxy
+# shellcheck disable=SC2181
if [ $? -ne 0 ] ; then
systemctl status haproxy
journalctl -u haproxy.service
diff --git a/src/autoconf/Config.py b/src/autoconf/Config.py
index 23f5a81a2..edf0bb60e 100644
--- a/src/autoconf/Config.py
+++ b/src/autoconf/Config.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv
from time import sleep
diff --git a/src/autoconf/Controller.py b/src/autoconf/Controller.py
index 8754ea07f..616793c03 100644
--- a/src/autoconf/Controller.py
+++ b/src/autoconf/Controller.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from abc import abstractmethod
from os import getenv
diff --git a/src/autoconf/DockerController.py b/src/autoconf/DockerController.py
index 491850baf..4529e176d 100644
--- a/src/autoconf/DockerController.py
+++ b/src/autoconf/DockerController.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from typing import Any, Dict, List
from docker import DockerClient
diff --git a/src/autoconf/IngressController.py b/src/autoconf/IngressController.py
index d7a01f633..2e9db4a77 100644
--- a/src/autoconf/IngressController.py
+++ b/src/autoconf/IngressController.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from time import sleep
from traceback import format_exc
diff --git a/src/autoconf/SwarmController.py b/src/autoconf/SwarmController.py
index 8772b320f..d0976620b 100644
--- a/src/autoconf/SwarmController.py
+++ b/src/autoconf/SwarmController.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from time import sleep
from traceback import format_exc
diff --git a/src/autoconf/main.py b/src/autoconf/main.py
index c70e27307..042f4fd7a 100644
--- a/src/autoconf/main.py
+++ b/src/autoconf/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import _exit, getenv, sep
from os.path import join
diff --git a/src/bw/lua/bunkerweb/api.lua b/src/bw/lua/bunkerweb/api.lua
index 2c4962228..9c2f9a2a8 100644
--- a/src/bw/lua/bunkerweb/api.lua
+++ b/src/bw/lua/bunkerweb/api.lua
@@ -1,14 +1,14 @@
local ngx = ngx
local ngx_req = ngx.req
+local cdatastore = require "bunkerweb.datastore"
local cjson = require "cjson"
local class = require "middleclass"
-local cdatastore = require "bunkerweb.datastore"
local clogger = require "bunkerweb.logger"
+local helpers = require "bunkerweb.helpers"
local process = require "ngx.process"
local rsignal = require "resty.signal"
local upload = require "resty.upload"
local utils = require "bunkerweb.utils"
-local helpers = require "bunkerweb.helpers"
local api = class("api")
@@ -287,13 +287,14 @@ function api:do_api_call()
return false, resp["msg"], HTTP_INTERNAL_SERVER_ERROR, encode(resp)
end
for _, plugin in ipairs(list) do
- local plugin_lua, err = require_plugin(plugin.id)
+ local plugin_lua, _ = require_plugin(plugin.id)
if plugin_lua and plugin_lua.api ~= nil then
local ok, plugin_obj = new_plugin(plugin_lua, self.ctx)
if not ok then
logger:log(ERR, "can't instantiate " .. plugin.id .. " : " .. plugin_obj)
else
- local ok, ret = call_plugin(plugin_obj, "api")
+ local ret
+ ok, ret = call_plugin(plugin_obj, "api")
if not ok then
logger:log(ERR, "error while executing " .. plugin.id .. ":api() : " .. ret)
else
diff --git a/src/bw/lua/bunkerweb/cachestore.lua b/src/bw/lua/bunkerweb/cachestore.lua
index 172838f4e..c20349274 100644
--- a/src/bw/lua/bunkerweb/cachestore.lua
+++ b/src/bw/lua/bunkerweb/cachestore.lua
@@ -1,7 +1,7 @@
local ngx = ngx
local class = require "middleclass"
-local clusterstore = require "bunkerweb.clusterstore"
local clogger = require "bunkerweb.logger"
+local clusterstore = require "bunkerweb.clusterstore"
local mlcache = require "resty.mlcache"
local utils = require "bunkerweb.utils"
local cachestore = class("cachestore")
@@ -184,10 +184,12 @@ function cachestore:del_redis(key)
return true
end
+-- luacheck: ignore 212
function cachestore:purge()
return cache:purge(true)
end
+-- luacheck: ignore 212
function cachestore:update()
return cache:update()
end
diff --git a/src/bw/lua/bunkerweb/clusterstore.lua b/src/bw/lua/bunkerweb/clusterstore.lua
index 3486ed9f3..ec7545afe 100644
--- a/src/bw/lua/bunkerweb/clusterstore.lua
+++ b/src/bw/lua/bunkerweb/clusterstore.lua
@@ -33,7 +33,7 @@ function clusterstore:initialize(pool)
["REDIS_SENTINEL_HOSTS"] = "",
["REDIS_SENTINEL_USERNAME"] = "",
["REDIS_SENTINEL_PASSWORD"] = "",
- ["REDIS_SENTINEL_MASTER"] = ""
+ ["REDIS_SENTINEL_MASTER"] = "",
}
-- Set them for later use
self.variables = {}
@@ -57,7 +57,6 @@ function clusterstore:initialize(pool)
keepalive_poolsize = tonumber(self.variables["REDIS_KEEPALIVE_POOL"]),
connection_options = {
ssl = self.variables["REDIS_SSL"] == "yes",
-
},
host = self.variables["REDIS_HOST"],
port = tonumber(self.variables["REDIS_PORT"]),
@@ -68,7 +67,7 @@ function clusterstore:initialize(pool)
sentinel_password = self.variables["REDIS_SENTINEL_PASSWORD"],
master_name = self.variables["REDIS_SENTINEL_MASTER"],
role = "master",
- sentinels = {}
+ sentinels = {},
}
self.pool = pool == nil or pool
if self.pool then
@@ -83,7 +82,7 @@ function clusterstore:initialize(pool)
else
sport = tonumber(sport)
end
- table.insert(options.sentinel, {host = shost, port = sport})
+ table.insert(options.sentinel, { host = shost, port = sport })
end
end
self.options = options
@@ -110,12 +109,13 @@ function clusterstore:connect(readonly)
-- Connect to sentinels if needed
local redis_client, err
if #self.options.sentinels > 0 then
- local redis_sentinel, err = self.redis_connector:connect()
+ local redis_sentinel
+ redis_sentinel, err = self.redis_connector:connect()
if not redis_sentinel then
return false, "error while connecting to sentinels : " .. err
end
if readonly then
- local redis_clients, err = rs.get_slaves(redis_sentinel, self.options.master_name)
+ local redis_clients, _ = rs.get_slaves(redis_sentinel, self.options.master_name)
if redis_clients then
redis_client = redis_clients[random(#redis_clients)]
else
@@ -124,7 +124,7 @@ function clusterstore:connect(readonly)
else
redis_client, err = rs.get_master(redis_sentinel, self.options.master_name)
end
- -- Classic connection
+ -- Classic connection
else
redis_client, err = self.redis_connector:connect()
end
@@ -155,7 +155,7 @@ function clusterstore:close()
local ok, err
if self.pool then
ok, err = self.redis_connector:set_keepalive(self.redis_client)
- -- No pool
+ -- No pool
else
ok, err = self.redis_client:close()
end
diff --git a/src/bw/lua/bunkerweb/ctx.lua b/src/bw/lua/bunkerweb/ctx.lua
index 1a63d95a4..f0ecf0801 100644
--- a/src/bw/lua/bunkerweb/ctx.lua
+++ b/src/bw/lua/bunkerweb/ctx.lua
@@ -13,16 +13,13 @@
-- * allow passing of context
-- * updated to work with new 1.19.x apis
-local ffi = require "ffi"
local base = require "resty.core.base"
+local ffi = require "ffi"
require "resty.core.ctx"
-
local C = ffi.C
local ngx = ngx
local var = ngx.var
-local ngx_log = ngx.log
-local ngx_WARN = ngx.WARN
local tonumber = tonumber
local registry = debug.getregistry()
local subsystem = ngx.config.subsystem
@@ -34,75 +31,69 @@ local ngx_ERR = ngx.ERR
local ngx_lua_ffi_get_ctx_ref
if subsystem == "http" then
- ngx_lua_ffi_get_ctx_ref = C.ngx_http_lua_ffi_get_ctx_ref
+ ngx_lua_ffi_get_ctx_ref = C.ngx_http_lua_ffi_get_ctx_ref
elseif subsystem == "stream" then
- ngx_lua_ffi_get_ctx_ref = C.ngx_stream_lua_ffi_get_ctx_ref
+ ngx_lua_ffi_get_ctx_ref = C.ngx_stream_lua_ffi_get_ctx_ref
end
-
local in_ssl_phase = ffi.new("int[1]")
local ssl_ctx_ref = ffi.new("int[1]")
-
local FFI_NO_REQ_CTX = base.FFI_NO_REQ_CTX
-
local _M = {}
-
function _M.stash_ref(ctx)
- local r = get_request()
- if not r then
- logger:log(ngx_ERR, "could not stash ngx.ctx ref: no request found")
- return
- end
+ local r = get_request()
+ if not r then
+ logger:log(ngx_ERR, "could not stash ngx.ctx ref: no request found")
+ return
+ end
- do
- local ctx_ref = var.ctx_ref
- if not ctx_ref or ctx_ref ~= "" then
- return
- end
+ do
+ local ctx_ref = var.ctx_ref
+ if not ctx_ref or ctx_ref ~= "" then
+ return
+ end
- if not ctx then
- local _ = ngx.ctx -- load context if not previously loaded
- end
- end
- local ctx_ref = ngx_lua_ffi_get_ctx_ref(r, in_ssl_phase, ssl_ctx_ref)
- if ctx_ref == FFI_NO_REQ_CTX then
- logger:log(ngx_ERR, "could not stash ngx.ctx ref: no ctx found")
- return
- end
+ if not ctx then
+ local _ = ngx.ctx -- load context if not previously loaded
+ end
+ end
+ local ctx_ref = ngx_lua_ffi_get_ctx_ref(r, in_ssl_phase, ssl_ctx_ref)
+ if ctx_ref == FFI_NO_REQ_CTX then
+ logger:log(ngx_ERR, "could not stash ngx.ctx ref: no ctx found")
+ return
+ end
- var.ctx_ref = ctx_ref
+ var.ctx_ref = ctx_ref
end
-
function _M.apply_ref()
- local r = get_request()
- if not r then
- logger:log(ngx_ERR, "could not apply ngx.ctx: no request found")
- return
- end
+ local r = get_request()
+ if not r then
+ logger:log(ngx_ERR, "could not apply ngx.ctx: no request found")
+ return
+ end
- local ctx_ref = var.ctx_ref
- if not ctx_ref or ctx_ref == "" then
- return
- end
+ local ctx_ref = var.ctx_ref
+ if not ctx_ref or ctx_ref == "" then
+ return
+ end
- ctx_ref = tonumber(ctx_ref)
- if not ctx_ref then
- return
- end
+ ctx_ref = tonumber(ctx_ref)
+ if not ctx_ref then
+ return
+ end
- local orig_ctx = registry.ngx_lua_ctx_tables[ctx_ref]
- if not orig_ctx then
- logger:log(ngx_ERR, "could not apply ngx.ctx: no ctx found")
- return
- end
+ local orig_ctx = registry.ngx_lua_ctx_tables[ctx_ref]
+ if not orig_ctx then
+ logger:log(ngx_ERR, "could not apply ngx.ctx: no ctx found")
+ return
+ end
- ngx.ctx = orig_ctx
- var.ctx_ref = ""
+ ngx.ctx = orig_ctx
+ var.ctx_ref = ""
end
-
return _M
diff --git a/src/bw/lua/bunkerweb/helpers.lua b/src/bw/lua/bunkerweb/helpers.lua
index 58fa74c69..f417f2e04 100644
--- a/src/bw/lua/bunkerweb/helpers.lua
+++ b/src/bw/lua/bunkerweb/helpers.lua
@@ -1,8 +1,8 @@
-local ngx = ngx
+local ngx = ngx
+local base = require "resty.core.base"
+local bwctx = require "bunkerweb.ctx"
local cjson = require "cjson"
local utils = require "bunkerweb.utils"
-local bwctx = require "bunkerweb.ctx"
-local base = require "resty.core.base"
local open = io.open
local decode = cjson.decode
diff --git a/src/bw/lua/bunkerweb/plugin.lua b/src/bw/lua/bunkerweb/plugin.lua
index 4f8282b4d..3db038311 100644
--- a/src/bw/lua/bunkerweb/plugin.lua
+++ b/src/bw/lua/bunkerweb/plugin.lua
@@ -26,7 +26,7 @@ function plugin:initialize(id, ctx)
"header_filter",
"body_filter",
"log",
- "preread"
+ "preread",
} do
if current_phase == check_phase then
is_request = true
@@ -44,8 +44,7 @@ function plugin:initialize(id, ctx)
if self.is_request then
self.ctx = ctx or ngx.ctx
self.datastore = get_ctx_obj("datastore", self.ctx) or datastore:new()
- self.cachestore = get_ctx_obj("cachestore", self.ctx)
- or cachestore:new(use_redis == "yes", self.ctx)
+ self.cachestore = get_ctx_obj("cachestore", self.ctx) or cachestore:new(use_redis == "yes", self.ctx)
self.clusterstore = get_ctx_obj("clusterstore", self.ctx) or clusterstore:new()
self.cachestore_local = get_ctx_obj("cachestore_local", self.ctx) or cachestore:new(false, self.ctx)
else
diff --git a/src/bw/lua/bunkerweb/utils.lua b/src/bw/lua/bunkerweb/utils.lua
index e3ab870c2..9b381c680 100644
--- a/src/bw/lua/bunkerweb/utils.lua
+++ b/src/bw/lua/bunkerweb/utils.lua
@@ -769,7 +769,7 @@ utils.get_phases = function()
"log",
"preread",
"log_stream",
- "log_default"
+ "log_default",
}
end
@@ -780,7 +780,7 @@ utils.is_cosocket_available = function()
"access",
"content",
"ssl_certificate",
- "preread"
+ "preread",
}
local current_phase = get_phase()
for _, phase in ipairs(phases) do
@@ -808,4 +808,17 @@ utils.get_ctx_obj = function(obj, ctx)
return nil
end
+utils.read_files = function(files)
+ local data = {}
+ for _, file in ipairs(files) do
+ local f, err = open(file, "r")
+ if not f then
+ return false, file .. " = " .. err
+ end
+ table.insert(data, f:read("*a"))
+ f:close()
+ end
+ return true, data
+end
+
return utils
diff --git a/src/common/api/API.py b/src/common/api/API.py
index 4a94f5474..b5aa3218b 100644
--- a/src/common/api/API.py
+++ b/src/common/api/API.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from typing import Literal, Optional, Union
from requests import request
diff --git a/src/common/cli/CLI.py b/src/common/cli/CLI.py
index d71c45a64..b8b6cf754 100644
--- a/src/common/cli/CLI.py
+++ b/src/common/cli/CLI.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from dotenv import dotenv_values
from os import getenv, sep
@@ -6,7 +6,7 @@ from os.path import join
from pathlib import Path
from redis import StrictRedis
from sys import path as sys_path
-from typing import Tuple
+from typing import Optional, Tuple
for deps_path in [join(sep, "usr", "share", "bunkerweb", *paths) for paths in (("utils",), ("db",))]:
@@ -15,7 +15,6 @@ for deps_path in [join(sep, "usr", "share", "bunkerweb", *paths) for paths in ((
from API import API # type: ignore
from ApiCaller import ApiCaller # type: ignore
-from Database import Database # type: ignore
from logger import setup_logger # type: ignore
@@ -47,28 +46,35 @@ class CLI(ApiCaller):
if variables_path.is_file():
self.__variables = dotenv_values(variables_path)
- db = Database(self.__logger, sqlalchemy_string=self.__variables.get("DATABASE_URI", None))
- self.__variables = db.get_config()
+ if Path(sep, "usr", "share", "bunkerweb", "db").exists():
+ from Database import Database # type: ignore
+
+ db = Database(self.__logger, sqlalchemy_string=self.__get_variable("DATABASE_URI", None))
+ self.__variables = db.get_config()
+
+ assert isinstance(self.__variables, dict), "Failed to get variables from database"
self.__integration = self.__detect_integration()
- self.__use_redis = self.__variables.get("USE_REDIS", "no") == "yes"
+ self.__use_redis = self.__get_variable("USE_REDIS", "no") == "yes"
self.__redis = None
if self.__use_redis:
- redis_host = self.__variables.get("REDIS_HOST")
+ redis_host = self.__get_variable("REDIS_HOST")
if redis_host:
- redis_port = self.__variables.get("REDIS_PORT", "6379")
+ redis_port = self.__get_variable("REDIS_PORT", "6379")
+ assert isinstance(redis_port, str), "REDIS_PORT is not a string"
if not redis_port.isdigit():
self.__logger.error(f"REDIS_PORT is not a valid port number: {redis_port}, defaulting to 6379")
redis_port = "6379"
redis_port = int(redis_port)
- redis_db = self.__variables.get("REDIS_DB", "0")
+ redis_db = self.__get_variable("REDIS_DB", "0")
+ assert isinstance(redis_db, str), "REDIS_DB is not a string"
if not redis_db.isdigit():
self.__logger.error(f"REDIS_DB is not a valid database number: {redis_db}, defaulting to 0")
redis_db = "0"
redis_db = int(redis_db)
- redis_timeout = self.__variables.get("REDIS_TIMEOUT", "1000.0")
+ redis_timeout = self.__get_variable("REDIS_TIMEOUT", "1000.0")
if redis_timeout:
try:
redis_timeout = float(redis_timeout)
@@ -76,7 +82,8 @@ class CLI(ApiCaller):
self.__logger.error(f"REDIS_TIMEOUT is not a valid timeout: {redis_timeout}, defaulting to 1000 ms")
redis_timeout = 1000.0
- redis_keepalive_pool = self.__variables.get("REDIS_KEEPALIVE_POOL", "10")
+ redis_keepalive_pool = self.__get_variable("REDIS_KEEPALIVE_POOL", "10")
+ assert isinstance(redis_keepalive_pool, str), "REDIS_KEEPALIVE_POOL is not a string"
if not redis_keepalive_pool.isdigit():
self.__logger.error(f"REDIS_KEEPALIVE_POOL is not a valid number of connections: {redis_keepalive_pool}, defaulting to 10")
redis_keepalive_pool = "10"
@@ -90,7 +97,7 @@ class CLI(ApiCaller):
socket_connect_timeout=redis_timeout,
socket_keepalive=True,
max_connections=redis_keepalive_pool,
- ssl=self.__variables.get("REDIS_SSL", "no") == "yes",
+ ssl=self.__get_variable("REDIS_SSL", "no") == "yes",
)
else:
self.__logger.error("USE_REDIS is set to yes but REDIS_HOST is not set, disabling redis")
@@ -100,8 +107,8 @@ class CLI(ApiCaller):
super().__init__(
[
API(
- f"http://127.0.0.1:{self.__variables.get('API_HTTP_PORT', '5000')}",
- host=self.__variables.get("API_SERVER_NAME", "bwapi"),
+ f"http://127.0.0.1:{self.__get_variable('API_HTTP_PORT', '5000')}",
+ host=self.__get_variable("API_SERVER_NAME", "bwapi"),
)
]
)
@@ -109,14 +116,20 @@ class CLI(ApiCaller):
super().__init__()
self.auto_setup(self.__integration)
+ def __get_variable(self, variable: str, default: Optional[str] = None) -> Optional[str]:
+ return getenv(variable, self.__variables.get(variable, default))
+
def __detect_integration(self) -> str:
+ if Path(sep, "usr", "sbin", "nginx").exists():
+ return "linux"
+
integration_path = Path(sep, "usr", "share", "bunkerweb", "INTEGRATION")
os_release_path = Path(sep, "etc", "os-release")
- if self.__variables.get("KUBERNETES_MODE", "no").lower() == "yes":
+ if self.__get_variable("KUBERNETES_MODE", "no").lower() == "yes": # type: ignore
return "kubernetes"
- elif self.__variables.get("SWARM_MODE", "no").lower() == "yes":
+ elif self.__get_variable("SWARM_MODE", "no").lower() == "yes": # type: ignore
return "swarm"
- elif self.__variables.get("AUTOCONF_MODE", "no").lower() == "yes":
+ elif self.__get_variable("AUTOCONF_MODE", "no").lower() == "yes": # type: ignore
return "autoconf"
elif integration_path.is_file():
return integration_path.read_text(encoding="utf-8").strip().lower()
@@ -137,19 +150,12 @@ class CLI(ApiCaller):
def ban(self, ip: str, exp: float) -> Tuple[bool, str]:
if self.__redis:
- ok = self.__redis.set(
- f"bans_ip_{ip}",
- "manual",
- ex=exp,
- )
+ ok = self.__redis.set(f"bans_ip_{ip}", "manual", ex=exp)
if not ok:
self.__logger.error(f"Failed to ban {ip} in redis")
if self.send_to_apis("POST", "/ban", data={"ip": ip, "exp": exp}):
- return (
- True,
- f"IP {ip} has been banned for {format_remaining_time(exp)}",
- )
+ return (True, f"IP {ip} has been banned for {format_remaining_time(exp)}")
return False, "error"
def bans(self) -> Tuple[bool, str]:
@@ -167,13 +173,7 @@ class CLI(ApiCaller):
for key in self.__redis.scan_iter("bans_ip_*"):
ip = key.decode("utf-8").replace("bans_ip_", "")
exp = self.__redis.ttl(key)
- servers["redis"].append(
- {
- "ip": ip,
- "exp": exp,
- "reason": "manual",
- }
- )
+ servers["redis"].append({"ip": ip, "exp": exp, "reason": "manual"})
cli_str = ""
for server, bans in servers.items():
diff --git a/src/common/cli/main.py b/src/common/cli/main.py
index ad019711e..92473b7c7 100644
--- a/src/common/cli/main.py
+++ b/src/common/cli/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from argparse import ArgumentParser
from os import _exit, getenv, sep
diff --git a/src/common/confs/api.conf b/src/common/confs/api.conf
index bd627dcf5..61efdd377 100644
--- a/src/common/confs/api.conf
+++ b/src/common/confs/api.conf
@@ -18,7 +18,7 @@ server {
-- Instantiate objects and import required modules
local logger = require "bunkerweb.logger":new("API")
local helpers = require "bunkerweb.helpers"
-
+
local ngx = ngx
local INFO = ngx.INFO
local ERR = ngx.ERR
diff --git a/src/common/core/antibot/antibot.lua b/src/common/core/antibot/antibot.lua
index 255dbb57c..14cab8f9e 100644
--- a/src/common/core/antibot/antibot.lua
+++ b/src/common/core/antibot/antibot.lua
@@ -26,7 +26,7 @@ local to_hex = str.to_hex
local http_new = http.new
local decode = cjson.decode
-local template = nil
+local template
local render = nil
if subsystem == "http" then
template = require "resty.template"
diff --git a/src/common/core/badbehavior/badbehavior.lua b/src/common/core/badbehavior/badbehavior.lua
index 4e3f2f8c1..8c0c7e971 100644
--- a/src/common/core/badbehavior/badbehavior.lua
+++ b/src/common/core/badbehavior/badbehavior.lua
@@ -65,7 +65,7 @@ function badbehavior.increase(premature, ip, count_time, ban_time, threshold, us
-- Instantiate objects
local logger = require "bunkerweb.logger":new("badbehavior")
local datastore = require "bunkerweb.datastore":new()
-
+
-- Declare counter
local counter = false
-- Redis case
diff --git a/src/common/core/blacklist/blacklist.lua b/src/common/core/blacklist/blacklist.lua
index 8c84c7b61..63136ed5c 100644
--- a/src/common/core/blacklist/blacklist.lua
+++ b/src/common/core/blacklist/blacklist.lua
@@ -348,6 +348,7 @@ function blacklist:is_blacklisted_ua()
return false, "ok"
end
+-- luacheck: ignore 212
function blacklist:get_data(blacklisted)
local data = {}
if blacklisted == "ip" then
diff --git a/src/common/core/blacklist/jobs/blacklist-download.py b/src/common/core/blacklist/jobs/blacklist-download.py
index 29eee550f..2bc5434b8 100755
--- a/src/common/core/blacklist/jobs/blacklist-download.py
+++ b/src/common/core/blacklist/jobs/blacklist-download.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from ipaddress import ip_address, ip_network
diff --git a/src/common/core/bunkernet/bunkernet.lua b/src/common/core/bunkernet/bunkernet.lua
index cc154b513..fb030b0af 100644
--- a/src/common/core/bunkernet/bunkernet.lua
+++ b/src/common/core/bunkernet/bunkernet.lua
@@ -199,9 +199,11 @@ function bunkernet:log(bypass_checks)
elseif data then
return self:ret(true, "already reported recently")
end
+ local ok, err
-- luacheck: ignore 212 431
local function report_callback(premature, obj, ip, reason, reason_data, method, url, headers, use_redis)
- local ok, err, status, _ = obj:report(ip, reason, reason_data, method, url, headers)
+ local status, _
+ ok, err, status, _ = obj:report(ip, reason, reason_data, method, url, headers)
if status == 429 then
obj.logger:log(WARN, "bunkernet API is rate limiting us")
elseif not ok then
diff --git a/src/common/core/bunkernet/jobs/bunkernet-data.py b/src/common/core/bunkernet/jobs/bunkernet-data.py
index b307b4f24..d79b3377e 100755
--- a/src/common/core/bunkernet/jobs/bunkernet-data.py
+++ b/src/common/core/bunkernet/jobs/bunkernet-data.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import _exit, getenv, sep
from os.path import join
diff --git a/src/common/core/bunkernet/jobs/bunkernet-register.py b/src/common/core/bunkernet/jobs/bunkernet-register.py
index 3abe90149..b9803e84f 100755
--- a/src/common/core/bunkernet/jobs/bunkernet-register.py
+++ b/src/common/core/bunkernet/jobs/bunkernet-register.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import _exit, getenv, sep
from os.path import join
diff --git a/src/common/core/bunkernet/jobs/bunkernet.py b/src/common/core/bunkernet/jobs/bunkernet.py
index e976b4555..23983afba 100644
--- a/src/common/core/bunkernet/jobs/bunkernet.py
+++ b/src/common/core/bunkernet/jobs/bunkernet.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv, sep
from pathlib import Path
diff --git a/src/common/core/cors/cors.lua b/src/common/core/cors/cors.lua
index b50fbb523..814d1150e 100644
--- a/src/common/core/cors/cors.lua
+++ b/src/common/core/cors/cors.lua
@@ -106,7 +106,7 @@ function cors:access()
nil,
{
id = "origin",
- origin = self.ctx.bw.http_origin
+ origin = self.ctx.bw.http_origin,
}
)
end
diff --git a/src/common/core/country/country.lua b/src/common/core/country/country.lua
index fe547aa84..8bb767fd6 100644
--- a/src/common/core/country/country.lua
+++ b/src/common/core/country/country.lua
@@ -5,7 +5,6 @@ local utils = require "bunkerweb.utils"
local country = class("country", plugin)
-local ngx = ngx
local get_country = utils.get_country
local get_deny_status = utils.get_deny_status
local decode = cjson.decode
@@ -46,7 +45,7 @@ function country:access()
nil,
{
id = "country",
- country = data.country
+ country = data.country,
}
)
end
@@ -93,7 +92,7 @@ function country:access()
nil,
{
id = "country",
- country = country_data
+ country = country_data,
}
)
end
@@ -113,7 +112,7 @@ function country:access()
nil,
{
id = "country",
- country = country_data
+ country = country_data,
}
)
end
diff --git a/src/common/core/customcert/customcert.lua b/src/common/core/customcert/customcert.lua
index 7a05262ae..76655c1f9 100644
--- a/src/common/core/customcert/customcert.lua
+++ b/src/common/core/customcert/customcert.lua
@@ -1,7 +1,7 @@
local class = require "middleclass"
local plugin = require "bunkerweb.plugin"
-local utils = require "bunkerweb.utils"
local ssl = require "ngx.ssl"
+local utils = require "bunkerweb.utils"
local customcert = class("customcert", plugin)
@@ -13,7 +13,7 @@ local ssl_server_name = ssl.server_name
local get_variable = utils.get_variable
local get_multiple_variables = utils.get_multiple_variables
local has_variable = utils.has_variable
-local open = io.open
+local read_files = utils.read_files
function customcert:initialize(ctx)
-- Call parent initialize
@@ -22,25 +22,29 @@ end
function customcert:init()
local ret_ok, ret_err = true, "success"
- if has_variable("USE_CUSTOM_SSL", "yes") then
+ if has_variable("USE_CUSTOM_SSL", "yes") then
local multisite, err = get_variable("MULTISITE", false)
if not multisite then
return self:ret(false, "can't get MULTISITE variable : " .. err)
end
if multisite == "yes" then
- local vars, err = get_multiple_variables({"USE_CUSTOM_SSL", "SERVER_NAME"})
+ local vars
+ vars, err = get_multiple_variables({ "USE_CUSTOM_SSL", "SERVER_NAME" })
if not vars then
return self:ret(false, "can't get USE_CUSTOM_SSL variables : " .. err)
end
for server_name, multisite_vars in pairs(vars) do
if multisite_vars["USE_CUSTOM_SSL"] == "yes" and server_name ~= "global" then
- local check, data = self:read_files(server_name)
+ local check, data = read_files({
+ "/var/cache/bunkerweb/customcert/" .. server_name .. "/cert.pem",
+ "/var/cache/bunkerweb/customcert/" .. server_name .. "/key.pem",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
+ check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -50,17 +54,21 @@ function customcert:init()
end
end
else
- local server_name, err = get_variable("SERVER_NAME", false)
+ local server_name
+ server_name, err = get_variable("SERVER_NAME", false)
if not server_name then
return self:ret(false, "can't get SERVER_NAME variable : " .. err)
end
- local check, data = self:read_files(server_name:match("%S+"))
+ local check, data = read_files({
+ "/var/cache/bunkerweb/customcert/" .. server_name:match("%S+") .. "/cert.pem",
+ "/var/cache/bunkerweb/customcert/" .. server_name:match("%S+") .. "/key.pem",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, server_name)
+ check, err = self:load_data(data, server_name)
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -70,7 +78,7 @@ function customcert:init()
end
else
ret_err = "custom cert is not used"
- end
+ end
return self:ret(ret_ok, ret_err)
end
@@ -79,31 +87,18 @@ function customcert:ssl_certificate()
if not server_name then
return self:ret(false, "can't get server_name : " .. err)
end
- if self.variables["USE_CUSTOM_SSL"] == "yes" then
- local data, err = self.datastore:get("plugin_customcert_" .. server_name, true)
+ if self.variables["USE_CUSTOM_SSL"] == "yes" then
+ local data
+ data, err = self.datastore:get("plugin_customcert_" .. server_name, true)
if not data then
- return self:ret(false, "error while getting plugin_customcert_" .. server_name .. " from datastore : " .. err)
+ return self:ret(
+ false,
+ "error while getting plugin_customcert_" .. server_name .. " from datastore : " .. err
+ )
end
- return self:ret(true, "certificate/key data found", data)
- end
- return self:ret(true, "custom certificate is not used")
-end
-
-function customcert:read_files(server_name)
- local files = {
- "/var/cache/bunkerweb/customcert/" .. server_name .. "/cert.pem",
- "/var/cache/bunkerweb/customcert/" .. server_name .. "/key.pem"
- }
- local data = {}
- for i, file in ipairs(files) do
- local f, err = open(file, "r")
- if not f then
- return false, file .. " = " .. err
- end
- table.insert(data, f:read("*a"))
- f:close()
+ return self:ret(true, "certificate/key data found", data)
end
- return true, data
+ return self:ret(true, "custom certificate is not used")
end
function customcert:load_data(data, server_name)
@@ -120,7 +115,8 @@ function customcert:load_data(data, server_name)
-- Cache data
for key in server_name:gmatch("%S+") do
local cache_key = "plugin_customcert_" .. key
- local ok, err = self.datastore:set(cache_key, {cert_chain, priv_key}, nil, true)
+ local ok
+ ok, err = self.datastore:set(cache_key, { cert_chain, priv_key }, nil, true)
if not ok then
return false, "error while setting data into datastore : " .. err
end
diff --git a/src/common/core/customcert/jobs/custom-cert.py b/src/common/core/customcert/jobs/custom-cert.py
index d57f71fb2..7377305b9 100644
--- a/src/common/core/customcert/jobs/custom-cert.py
+++ b/src/common/core/customcert/jobs/custom-cert.py
@@ -1,11 +1,10 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv, sep
from os.path import join, normpath
from pathlib import Path
from sys import exit as sys_exit, path as sys_path
from traceback import format_exc
-from typing import Optional
from base64 import b64decode
for deps_path in [
@@ -103,7 +102,7 @@ try:
cert_data = b64decode(getenv("CUSTOM_SSL_CERT_DATA", ""))
key_data = b64decode(getenv("CUSTOM_SSL_KEY_DATA", ""))
- for file, data in [("cert.pem", cert_data), ("key.pem", key_data)]:
+ for file, data in (("cert.pem", cert_data), ("key.pem", key_data)):
if data != b"":
file_path = Path(sep, "var", "tmp", "bunkerweb", "customcert", first_server, file)
file_path.parent.mkdir(parents=True, exist_ok=True)
@@ -140,7 +139,7 @@ try:
cert_data = b64decode(getenv(f"{first_server}_CUSTOM_SSL_CERT_DATA", ""))
key_data = b64decode(getenv(f"{first_server}_CUSTOM_SSL_KEY_DATA", ""))
- for file, data in [("cert.pem", cert_data), ("key.pem", key_data)]:
+ for file, data in (("cert.pem", cert_data), ("key.pem", key_data)):
if data != b"":
file_path = Path(sep, "var", "tmp", "bunkerweb", "customcert", first_server, file)
file_path.parent.mkdir(parents=True, exist_ok=True)
diff --git a/src/common/core/dnsbl/dnsbl.lua b/src/common/core/dnsbl/dnsbl.lua
index b5159405d..545c9a1b9 100644
--- a/src/common/core/dnsbl/dnsbl.lua
+++ b/src/common/core/dnsbl/dnsbl.lua
@@ -98,7 +98,7 @@ function dnsbl:access()
nil,
{
id = "dnsbl",
- dnsbl = cached
+ dnsbl = cached,
}
)
end
@@ -161,7 +161,13 @@ function dnsbl:access()
if not ok then
return self:ret(false, "error while adding element to cache : " .. err)
end
- return self:ret(true, "IP is blacklisted by " .. ret_server, get_deny_status(), nil, {id = "dnsbl", dnsbl = ret_server})
+ return self:ret(
+ true,
+ "IP is blacklisted by " .. ret_server,
+ get_deny_status(),
+ nil,
+ { id = "dnsbl", dnsbl = ret_server }
+ )
end
-- Error case
return self:ret(false, ret_err)
diff --git a/src/common/core/errors/errors.lua b/src/common/core/errors/errors.lua
index 6e3023bf5..8692d3a3d 100644
--- a/src/common/core/errors/errors.lua
+++ b/src/common/core/errors/errors.lua
@@ -4,7 +4,7 @@ local plugin = require "bunkerweb.plugin"
local ngx = ngx
local subsystem = ngx.config.subsystem
-local template = nil
+local template
local render = nil
if subsystem == "http" then
template = require "resty.template"
diff --git a/src/common/core/errors/files/error.html b/src/common/core/errors/files/error.html
index ee854ea5b..7b76f4f56 100644
--- a/src/common/core/errors/files/error.html
+++ b/src/common/core/errors/files/error.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/common/core/greylist/jobs/greylist-download.py b/src/common/core/greylist/jobs/greylist-download.py
index 7b3fbb6aa..7684d47ae 100755
--- a/src/common/core/greylist/jobs/greylist-download.py
+++ b/src/common/core/greylist/jobs/greylist-download.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from ipaddress import ip_address, ip_network
diff --git a/src/common/core/jobs/jobs/download-plugins.py b/src/common/core/jobs/jobs/download-plugins.py
index b2bf471fe..2a66ac6e2 100644
--- a/src/common/core/jobs/jobs/download-plugins.py
+++ b/src/common/core/jobs/jobs/download-plugins.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from hashlib import sha256
from io import BytesIO
diff --git a/src/common/core/jobs/jobs/mmdb-asn.py b/src/common/core/jobs/jobs/mmdb-asn.py
index 21a9ecef3..d11e705c2 100755
--- a/src/common/core/jobs/jobs/mmdb-asn.py
+++ b/src/common/core/jobs/jobs/mmdb-asn.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from datetime import date
from gzip import decompress
diff --git a/src/common/core/jobs/jobs/mmdb-country.py b/src/common/core/jobs/jobs/mmdb-country.py
index 9728e7856..d305748b2 100755
--- a/src/common/core/jobs/jobs/mmdb-country.py
+++ b/src/common/core/jobs/jobs/mmdb-country.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from datetime import date
from gzip import decompress
diff --git a/src/common/core/letsencrypt/jobs/certbot-auth.py b/src/common/core/letsencrypt/jobs/certbot-auth.py
index 245056711..d01ac6eff 100755
--- a/src/common/core/letsencrypt/jobs/certbot-auth.py
+++ b/src/common/core/letsencrypt/jobs/certbot-auth.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv, sep
from os.path import join
diff --git a/src/common/core/letsencrypt/jobs/certbot-cleanup.py b/src/common/core/letsencrypt/jobs/certbot-cleanup.py
index ddfeccb87..7c811b911 100755
--- a/src/common/core/letsencrypt/jobs/certbot-cleanup.py
+++ b/src/common/core/letsencrypt/jobs/certbot-cleanup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv, sep
from os.path import join
diff --git a/src/common/core/letsencrypt/jobs/certbot-deploy.py b/src/common/core/letsencrypt/jobs/certbot-deploy.py
index 12ad34608..d68e0ab27 100755
--- a/src/common/core/letsencrypt/jobs/certbot-deploy.py
+++ b/src/common/core/letsencrypt/jobs/certbot-deploy.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from io import BytesIO
from os import getenv, sep
diff --git a/src/common/core/letsencrypt/jobs/certbot-new.py b/src/common/core/letsencrypt/jobs/certbot-new.py
index 35593dd1f..17a0df5e6 100755
--- a/src/common/core/letsencrypt/jobs/certbot-new.py
+++ b/src/common/core/letsencrypt/jobs/certbot-new.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import _exit, environ, getenv, sep
from os.path import join
diff --git a/src/common/core/letsencrypt/jobs/certbot-renew.py b/src/common/core/letsencrypt/jobs/certbot-renew.py
index 425f76222..63b9a585d 100755
--- a/src/common/core/letsencrypt/jobs/certbot-renew.py
+++ b/src/common/core/letsencrypt/jobs/certbot-renew.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import _exit, environ, getenv, sep
from os.path import join
diff --git a/src/common/core/letsencrypt/letsencrypt.lua b/src/common/core/letsencrypt/letsencrypt.lua
index d7cad3caf..dcd1fcc78 100644
--- a/src/common/core/letsencrypt/letsencrypt.lua
+++ b/src/common/core/letsencrypt/letsencrypt.lua
@@ -1,8 +1,8 @@
local cjson = require "cjson"
local class = require "middleclass"
local plugin = require "bunkerweb.plugin"
-local utils = require "bunkerweb.utils"
local ssl = require "ngx.ssl"
+local utils = require "bunkerweb.utils"
local letsencrypt = class("letsencrypt", plugin)
@@ -20,6 +20,7 @@ local ssl_server_name = ssl.server_name
local get_variable = utils.get_variable
local get_multiple_variables = utils.get_multiple_variables
local has_variable = utils.has_variable
+local read_files = utils.read_files
local open = io.open
local sub = string.sub
local match = string.match
@@ -34,25 +35,29 @@ end
function letsencrypt:init()
local ret_ok, ret_err = true, "success"
- if has_variable("AUTO_LETS_ENCRYPT", "yes") then
+ if has_variable("AUTO_LETS_ENCRYPT", "yes") then
local multisite, err = get_variable("MULTISITE", false)
if not multisite then
return self:ret(false, "can't get MULTISITE variable : " .. err)
end
if multisite == "yes" then
- local vars, err = get_multiple_variables({"AUTO_LETS_ENCRYPT", "SERVER_NAME"})
+ local vars
+ vars, err = get_multiple_variables({ "AUTO_LETS_ENCRYPT", "SERVER_NAME" })
if not vars then
return self:ret(false, "can't get AUTO_LETS_ENCRYPT variables : " .. err)
end
for server_name, multisite_vars in pairs(vars) do
if multisite_vars["AUTO_LETS_ENCRYPT"] == "yes" and server_name ~= "global" then
- local check, data = self:read_files(server_name)
+ local check, data = read_files({
+ "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name .. "/fullchain.pem",
+ "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name .. "/privkey.pem",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
+ check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -62,17 +67,21 @@ function letsencrypt:init()
end
end
else
- local server_name, err = get_variable("SERVER_NAME", false)
+ local server_name
+ server_name, err = get_variable("SERVER_NAME", false)
if not server_name then
return self:ret(false, "can't get SERVER_NAME variable : " .. err)
end
- local check, data = self:read_files(server_name:match("%S+"))
+ local check, data = read_files({
+ "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name:match("%S+") .. "/fullchain.pem",
+ "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name:match("%S+") .. "/privkey.pem",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, server_name)
+ check, err = self:load_data(data, server_name)
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -82,7 +91,7 @@ function letsencrypt:init()
end
else
ret_err = "let's encrypt is not used"
- end
+ end
return self:ret(ret_ok, ret_err)
end
@@ -91,31 +100,18 @@ function letsencrypt:ssl_certificate()
if not server_name then
return self:ret(false, "can't get server_name : " .. err)
end
- if self.variables["AUTO_LETS_ENCRYPT"] == "yes" then
- local data, err = self.datastore:get("plugin_letsencrypt_" .. server_name, true)
+ if self.variables["AUTO_LETS_ENCRYPT"] == "yes" then
+ local data
+ data, err = self.datastore:get("plugin_letsencrypt_" .. server_name, true)
if not data then
- return self:ret(false, "error while getting plugin_letsencrypt_" .. server_name .. " from datastore : " .. err)
+ return self:ret(
+ false,
+ "error while getting plugin_letsencrypt_" .. server_name .. " from datastore : " .. err
+ )
end
- return self:ret(true, "certificate/key data found", data)
- end
- return self:ret(true, "let's encrypt is not used")
-end
-
-function letsencrypt:read_files(server_name)
- local files = {
- "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name .. "/fullchain.pem",
- "/var/cache/bunkerweb/letsencrypt/etc/live/" .. server_name .. "/privkey.pem"
- }
- local data = {}
- for i, file in ipairs(files) do
- local f, err = open(file, "r")
- if not f then
- return false, file .. " = " .. err
- end
- table.insert(data, f:read("*a"))
- f:close()
+ return self:ret(true, "certificate/key data found", data)
end
- return true, data
+ return self:ret(true, "let's encrypt is not used")
end
function letsencrypt:load_data(data, server_name)
@@ -125,14 +121,16 @@ function letsencrypt:load_data(data, server_name)
return false, "error while parsing pem cert : " .. err
end
-- Load key
- local priv_key, err = parse_pem_priv_key(data[2])
+ local priv_key
+ priv_key, err = parse_pem_priv_key(data[2])
if not priv_key then
return false, "error while parsing pem priv key : " .. err
end
-- Cache data
for key in server_name:gmatch("%S+") do
local cache_key = "plugin_letsencrypt_" .. key
- local ok, err = self.datastore:set(cache_key, {cert_chain, priv_key}, nil, true)
+ local ok
+ ok, err = self.datastore:set(cache_key, { cert_chain, priv_key }, nil, true)
if not ok then
return false, "error while setting data into datastore : " .. err
end
@@ -172,7 +170,7 @@ function letsencrypt:api()
file:write(data.validation)
file:close()
return self:ret(true, "validation token written", HTTP_OK)
- elseif ctx.bw.request_method == "DELETE" then
+ elseif self.ctx.bw.request_method == "DELETE" then
local ok, err = remove(acme_folder .. data.token)
if not ok then
return self:ret(true, "can't remove validation token : " .. err, HTTP_INTERNAL_SERVER_ERROR)
diff --git a/src/common/core/misc/files/default.html b/src/common/core/misc/files/default.html
index 4f86b9361..e91e10d33 100644
--- a/src/common/core/misc/files/default.html
+++ b/src/common/core/misc/files/default.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/common/core/misc/jobs/anonymous-report.py b/src/common/core/misc/jobs/anonymous-report.py
index b1787b470..c4cea39c5 100644
--- a/src/common/core/misc/jobs/anonymous-report.py
+++ b/src/common/core/misc/jobs/anonymous-report.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from json import dumps
from os import getenv, sep
diff --git a/src/common/core/misc/jobs/default-server-cert.py b/src/common/core/misc/jobs/default-server-cert.py
index 0e894cf50..61708a136 100644
--- a/src/common/core/misc/jobs/default-server-cert.py
+++ b/src/common/core/misc/jobs/default-server-cert.py
@@ -1,6 +1,6 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
-from os import _exit, getenv, sep
+from os import getenv, sep
from os.path import join
from pathlib import Path
from subprocess import DEVNULL, run
diff --git a/src/common/core/misc/jobs/update-check.py b/src/common/core/misc/jobs/update-check.py
index 465f89aea..3c60f4927 100644
--- a/src/common/core/misc/jobs/update-check.py
+++ b/src/common/core/misc/jobs/update-check.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getenv, sep
from os.path import basename, join
diff --git a/src/common/core/realip/jobs/realip-download.py b/src/common/core/realip/jobs/realip-download.py
index 578b30e35..9423510eb 100755
--- a/src/common/core/realip/jobs/realip-download.py
+++ b/src/common/core/realip/jobs/realip-download.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from ipaddress import ip_address, ip_network
diff --git a/src/common/core/selfsigned/jobs/self-signed.py b/src/common/core/selfsigned/jobs/self-signed.py
index 93d3b27f3..1c0fb9acd 100755
--- a/src/common/core/selfsigned/jobs/self-signed.py
+++ b/src/common/core/selfsigned/jobs/self-signed.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from datetime import timedelta
from os import getenv, sep
diff --git a/src/common/core/selfsigned/selfsigned.lua b/src/common/core/selfsigned/selfsigned.lua
index bf5fab29a..fa0deb411 100644
--- a/src/common/core/selfsigned/selfsigned.lua
+++ b/src/common/core/selfsigned/selfsigned.lua
@@ -1,7 +1,7 @@
local class = require "middleclass"
local plugin = require "bunkerweb.plugin"
-local utils = require "bunkerweb.utils"
local ssl = require "ngx.ssl"
+local utils = require "bunkerweb.utils"
local selfsigned = class("selfsigned", plugin)
@@ -13,7 +13,7 @@ local ssl_server_name = ssl.server_name
local get_variable = utils.get_variable
local get_multiple_variables = utils.get_multiple_variables
local has_variable = utils.has_variable
-local open = io.open
+local read_files = utils.read_files
function selfsigned:initialize(ctx)
-- Call parent initialize
@@ -22,25 +22,29 @@ end
function selfsigned:init()
local ret_ok, ret_err = true, "success"
- if has_variable("GENERATE_SELF_SIGNED_SSL", "yes") then
+ if has_variable("GENERATE_SELF_SIGNED_SSL", "yes") then
local multisite, err = get_variable("MULTISITE", false)
if not multisite then
return self:ret(false, "can't get MULTISITE variable : " .. err)
end
if multisite == "yes" then
- local vars, err = get_multiple_variables({"GENERATE_SELF_SIGNED_SSL", "SERVER_NAME"})
+ local vars
+ vars, err = get_multiple_variables({ "GENERATE_SELF_SIGNED_SSL", "SERVER_NAME" })
if not vars then
return self:ret(false, "can't get GENERATE_SELF_SIGNED_SSL variables : " .. err)
end
for server_name, multisite_vars in pairs(vars) do
if multisite_vars["GENERATE_SELF_SIGNED_SSL"] == "yes" and server_name ~= "global" then
- local check, data = self:read_files(server_name)
+ local check, data = read_files({
+ "/var/cache/bunkerweb/selfsigned/" .. server_name .. ".pem",
+ "/var/cache/bunkerweb/selfsigned/" .. server_name .. ".key",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
+ check, err = self:load_data(data, multisite_vars["SERVER_NAME"])
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -50,17 +54,21 @@ function selfsigned:init()
end
end
else
- local server_name, err = get_variable("SERVER_NAME", false)
+ local server_name
+ server_name, err = get_variable("SERVER_NAME", false)
if not server_name then
return self:ret(false, "can't get SERVER_NAME variable : " .. err)
end
- local check, data = self:read_files(server_name:match("%S+"))
+ local check, data = read_files({
+ "/var/cache/bunkerweb/selfsigned/" .. server_name:match("%S+") .. ".pem",
+ "/var/cache/bunkerweb/selfsigned/" .. server_name:match("%S+") .. ".key",
+ })
if not check then
self.logger:log(ERR, "error while reading files : " .. data)
ret_ok = false
ret_err = "error reading files"
else
- local check, err = self:load_data(data, server_name)
+ check, err = self:load_data(data, server_name)
if not check then
self.logger:log(ERR, "error while loading data : " .. err)
ret_ok = false
@@ -70,7 +78,7 @@ function selfsigned:init()
end
else
ret_err = "self signed is not used"
- end
+ end
return self:ret(ret_ok, ret_err)
end
@@ -79,31 +87,18 @@ function selfsigned:ssl_certificate()
if not server_name then
return self:ret(false, "can't get server_name : " .. err)
end
- if self.variables["GENERATE_SELF_SIGNED_SSL"] == "yes" then
- local data, err = self.datastore:get("plugin_selfsigned_" .. server_name, true)
+ if self.variables["GENERATE_SELF_SIGNED_SSL"] == "yes" then
+ local data
+ data, err = self.datastore:get("plugin_selfsigned_" .. server_name, true)
if not data then
- return self:ret(false, "error while getting plugin_selfsigned_" .. server_name .. " from datastore : " .. err)
+ return self:ret(
+ false,
+ "error while getting plugin_selfsigned_" .. server_name .. " from datastore : " .. err
+ )
end
- return self:ret(true, "certificate/key data found", data)
- end
- return self:ret(true, "selfsigned is not used")
-end
-
-function selfsigned:read_files(server_name)
- local files = {
- "/var/cache/bunkerweb/selfsigned/" .. server_name .. ".pem",
- "/var/cache/bunkerweb/selfsigned/" .. server_name .. ".key"
- }
- local data = {}
- for i, file in ipairs(files) do
- local f, err = open(file, "r")
- if not f then
- return false, file .. " = " .. err
- end
- table.insert(data, f:read("*a"))
- f:close()
+ return self:ret(true, "certificate/key data found", data)
end
- return true, data
+ return self:ret(true, "selfsigned is not used")
end
function selfsigned:load_data(data, server_name)
@@ -120,7 +115,8 @@ function selfsigned:load_data(data, server_name)
-- Cache data
for key in server_name:gmatch("%S+") do
local cache_key = "plugin_selfsigned_" .. key
- local ok, err = self.datastore:set(cache_key, {cert_chain, priv_key}, nil, true)
+ local ok
+ ok, err = self.datastore:set(cache_key, { cert_chain, priv_key }, nil, true)
if not ok then
return false, "error while setting data into datastore : " .. err
end
diff --git a/src/common/core/sessions/sessions.lua b/src/common/core/sessions/sessions.lua
index 41d8f420b..386a26f02 100644
--- a/src/common/core/sessions/sessions.lua
+++ b/src/common/core/sessions/sessions.lua
@@ -66,7 +66,7 @@ function sessions:init()
["REDIS_SENTINEL_HOSTS"] = "",
["REDIS_SENTINEL_USERNAME"] = "",
["REDIS_SENTINEL_PASSWORD"] = "",
- ["REDIS_SENTINEL_MASTER"] = ""
+ ["REDIS_SENTINEL_MASTER"] = "",
}
for k, _ in pairs(redis_vars) do
local value, err = get_variable(k, false)
@@ -124,7 +124,7 @@ function sessions:init()
pool = "bw-redis",
pool_size = tonumber(redis_vars["REDIS_KEEPALIVE_POOL"]),
ssl = redis_vars["REDIS_SSL"] == "yes",
- database = tonumber(redis_vars["REDIS_DATABASE"])
+ database = tonumber(redis_vars["REDIS_DATABASE"]),
}
if redis_vars["REDIS_SENTINEL_HOSTS"] ~= nil then
config.redis.master = redis_vars["REDIS_SENTINEL_MASTER"]
@@ -139,7 +139,7 @@ function sessions:init()
else
sport = tonumber(sport)
end
- table.insert(config.redis.sentinels, {host = shost, port = sport})
+ table.insert(config.redis.sentinels, { host = shost, port = sport })
end
else
config.redis.host = redis_vars["REDIS_HOST"]
diff --git a/src/common/core/whitelist/jobs/whitelist-download.py b/src/common/core/whitelist/jobs/whitelist-download.py
index cb242567c..dbb67ee10 100755
--- a/src/common/core/whitelist/jobs/whitelist-download.py
+++ b/src/common/core/whitelist/jobs/whitelist-download.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from ipaddress import ip_address, ip_network
diff --git a/src/common/db/Database.py b/src/common/db/Database.py
index 994a25bf6..1751bad55 100644
--- a/src/common/db/Database.py
+++ b/src/common/db/Database.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import contextmanager, suppress
from copy import deepcopy
diff --git a/src/common/db/model.py b/src/common/db/model.py
index b207c241a..87a146d11 100644
--- a/src/common/db/model.py
+++ b/src/common/db/model.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from sqlalchemy import (
Boolean,
diff --git a/src/common/gen/Configurator.py b/src/common/gen/Configurator.py
index ebdf40de5..86f72c90b 100644
--- a/src/common/gen/Configurator.py
+++ b/src/common/gen/Configurator.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from glob import glob
from hashlib import sha256
diff --git a/src/common/gen/Templator.py b/src/common/gen/Templator.py
index 3b567b09e..6d9882b5d 100644
--- a/src/common/gen/Templator.py
+++ b/src/common/gen/Templator.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from glob import glob
from importlib import import_module
diff --git a/src/common/gen/main.py b/src/common/gen/main.py
index 35d724120..65ef64ec0 100644
--- a/src/common/gen/main.py
+++ b/src/common/gen/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from argparse import ArgumentParser
from glob import glob
diff --git a/src/common/gen/save_config.py b/src/common/gen/save_config.py
index 605cc4363..820f4bf0c 100644
--- a/src/common/gen/save_config.py
+++ b/src/common/gen/save_config.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from argparse import ArgumentParser
from os import R_OK, X_OK, access, environ, getenv, sep
diff --git a/src/common/gen/utils.py b/src/common/gen/utils.py
index 8cdd6495d..9d56a2fe7 100644
--- a/src/common/gen/utils.py
+++ b/src/common/gen/utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import getegid, geteuid
from pathlib import Path
diff --git a/src/common/utils/ApiCaller.py b/src/common/utils/ApiCaller.py
index 54387989a..1523d0f72 100644
--- a/src/common/utils/ApiCaller.py
+++ b/src/common/utils/ApiCaller.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from io import BytesIO
from os import getenv, sep
diff --git a/src/common/utils/ConfigCaller.py b/src/common/utils/ConfigCaller.py
index 996d63b9b..54a4a147b 100644
--- a/src/common/utils/ConfigCaller.py
+++ b/src/common/utils/ConfigCaller.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from glob import glob
from json import JSONDecodeError, loads
diff --git a/src/common/utils/jobs.py b/src/common/utils/jobs.py
index e559eca8c..9397f555d 100644
--- a/src/common/utils/jobs.py
+++ b/src/common/utils/jobs.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from datetime import datetime
diff --git a/src/scheduler/Dockerfile b/src/scheduler/Dockerfile
index 9d9d48e58..7f257f4ed 100644
--- a/src/scheduler/Dockerfile
+++ b/src/scheduler/Dockerfile
@@ -50,7 +50,6 @@ WORKDIR /usr/share/bunkerweb
# Add scheduler user, drop bwcli, install runtime dependencies, create data folders and set permissions
RUN apk add --no-cache bash libgcc libstdc++ libpq openssl libmagic && \
- ln -s /usr/local/bin/python3 /usr/bin/python3 && \
addgroup -g 101 scheduler && \
adduser -h /var/cache/nginx -g scheduler -s /bin/sh -G scheduler -D -H -u 101 scheduler && \
cp helpers/bwcli /usr/bin/ && \
diff --git a/src/scheduler/JobScheduler.py b/src/scheduler/JobScheduler.py
index e8e77d9a2..0792828ac 100644
--- a/src/scheduler/JobScheduler.py
+++ b/src/scheduler/JobScheduler.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from copy import deepcopy
from functools import partial
diff --git a/src/scheduler/main.py b/src/scheduler/main.py
index 28f59049f..2bbc2a590 100644
--- a/src/scheduler/main.py
+++ b/src/scheduler/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from argparse import ArgumentParser
from copy import deepcopy
@@ -6,16 +6,7 @@ from glob import glob
from hashlib import sha256
from io import BytesIO
from json import load as json_load
-from os import (
- _exit,
- chmod,
- environ,
- getenv,
- getpid,
- listdir,
- sep,
- walk,
-)
+from os import _exit, chmod, environ, getenv, getpid, listdir, sep, walk
from os.path import basename, dirname, join, normpath
from pathlib import Path
from shutil import copy, rmtree
@@ -322,11 +313,7 @@ if __name__ == "__main__":
content = Path(join(root, file)).read_text(encoding="utf-8")
custom_conf = {
"value": content,
- "exploded": (
- f"{path_exploded.pop()}" if path_exploded[-1] not in root_dirs else None,
- path_exploded[-1],
- file.replace(".conf", ""),
- ),
+ "exploded": (path_exploded.pop() if path_exploded[-1] not in root_dirs else None, path_exploded[-1], file.replace(".conf", "")),
}
saving = True
@@ -674,7 +661,6 @@ if __name__ == "__main__":
env = db.get_config()
env["DATABASE_URI"] = db.database_uri
-
except:
logger.error(
f"Exception while executing scheduler : {format_exc()}",
diff --git a/src/ui/main.py b/src/ui/main.py
index b33eae62f..8b2209fc0 100755
--- a/src/ui/main.py
+++ b/src/ui/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from contextlib import suppress
from os import _exit, getenv, listdir, sep, urandom
@@ -1132,11 +1132,11 @@ def plugins():
except (TarError, OSError) as e:
errors += 1
error = 1
- flash(f"{e}", "error")
+ flash(str(e), "error")
except Exception as e:
errors += 1
error = 1
- flash(f"{e}", "error")
+ flash(str(e), "error")
finally:
if error != 1:
flash(f"Successfully created plugin: {folder_name}")
diff --git a/src/ui/src/Config.py b/src/ui/src/Config.py
index ecc1dcf0c..eb79a5c8b 100644
--- a/src/ui/src/Config.py
+++ b/src/ui/src/Config.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from copy import deepcopy
from os import sep
diff --git a/src/ui/src/ConfigFiles.py b/src/ui/src/ConfigFiles.py
index 96aa23b6e..beb30a90b 100644
--- a/src/ui/src/ConfigFiles.py
+++ b/src/ui/src/ConfigFiles.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from glob import glob
from os import listdir, replace, sep, walk
@@ -62,11 +62,7 @@ class ConfigFiles:
custom_configs.append(
{
"value": f.read(),
- "exploded": (
- f"{path_exploded.pop()}" if path_exploded[-1] not in root_dirs else None,
- path_exploded[-1],
- file.replace(".conf", ""),
- ),
+ "exploded": (path_exploded.pop() if path_exploded[-1] not in root_dirs else None, path_exploded[-1], file.replace(".conf", "")),
}
)
diff --git a/src/ui/src/Instances.py b/src/ui/src/Instances.py
index 04e3a8ecf..76fef8f0a 100644
--- a/src/ui/src/Instances.py
+++ b/src/ui/src/Instances.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from os import sep
from os.path import join
diff --git a/src/ui/src/ReverseProxied.py b/src/ui/src/ReverseProxied.py
index deeae4350..29dbc1606 100644
--- a/src/ui/src/ReverseProxied.py
+++ b/src/ui/src/ReverseProxied.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from werkzeug.middleware.proxy_fix import ProxyFix
diff --git a/src/ui/src/User.py b/src/ui/src/User.py
index 237c60c1f..cce2247c7 100644
--- a/src/ui/src/User.py
+++ b/src/ui/src/User.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from typing import Optional
diff --git a/src/ui/static/css/dashboard.css b/src/ui/static/css/dashboard.css
index 9d02581ce..a98fa3c6a 100644
--- a/src/ui/static/css/dashboard.css
+++ b/src/ui/static/css/dashboard.css
@@ -1 +1,4141 @@
-/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e9ecef}:after,:before{--tw-content:""}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}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-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-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}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;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-y-0{top:0;bottom:0}.-left-full{left:-100%}.-right-0{right:0}.-right-1{right:-.25rem}.bottom-0{bottom:0}.left-0{left:0}.left-auto{left:auto}.left-full{left:100%}.right-0{right:0}.right-12{right:3rem}.right-2{right:.5rem}.right-20{right:5rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-6{right:1.5rem}.right-7{right:1.75rem}.right-8{right:2rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-16{top:4rem}.top-2{top:.5rem}.top-4{top:1rem}.top-\[38\%\]{top:38%}.top-\[4\.5rem\]{top:4.5rem}.top-\[55\%\]{top:55%}.top-\[8\.2rem\]{top:8.2rem}.top-\[53\%\]{top:53%}.top-\[52\%\]{top:52%}.right-14{right:3.5rem}.right-\[2\.25rem\]{right:2.25rem}.right-\[3\.25rem\]{right:3.25rem}.-z-10{z-index:-10}.z-10{z-index:10}.z-100{z-index:100}.z-110{z-index:110}.z-20{z-index:20}.z-50{z-index:50}.z-990{z-index:990}.z-\[10000\]{z-index:10000}.z-\[1000\]{z-index:1000}.z-\[1001\]{z-index:1001}.z-\[20\]{z-index:20}.z-sticky{z-index:1020}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-9{grid-column:span 9/span 9}.float-right{float:right}.float-left{float:left}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-12{margin-right:3rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[4\.5rem\]{margin-top:4.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\/3{height:33.333333%}.h-12{height:3rem}.h-14{height:3.5rem}.h-19{height:4.75rem}.h-3{height:.75rem}.h-4{height:1rem}.h-4\.5{height:1.125rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-5\.5{height:1.375rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[2\.5rem\]{height:2.5rem}.h-\[3\.5rem\]{height:3.5rem}.h-\[4rem\]{height:4rem}.h-\[90vh\]{height:90vh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-sidenav{height:calc(100vh - 360px)}.max-h-100{max-height:25rem}.max-h-135{max-height:33.75rem}.max-h-30{max-height:7.5rem}.max-h-80{max-height:20rem}.max-h-90{max-height:22.5rem}.max-h-screen{max-height:100vh}.min-h-12{min-height:3rem}.min-h-20{min-height:5rem}.min-h-50-screen{min-height:50vh}.min-h-52{min-height:13rem}.min-h-6{min-height:1.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[350px\]{min-height:350px}.min-h-\[55vh\]{min-height:55vh}.min-h-\[75px\]{min-height:75px}.min-h-\[85vh\]{min-height:85vh}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-28{width:7rem}.w-3{width:.75rem}.w-4{width:1rem}.w-4\.5{width:1.125rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\.5{width:1.375rem}.w-50{width:12.5rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-80{width:20rem}.w-90{width:22.5rem}.w-\[2\.5rem\]{width:2.5rem}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[900px\]{min-width:900px}.max-w-180{max-width:45rem}.max-w-40{max-width:10rem}.max-w-60{max-width:15rem}.max-w-64{max-width:16rem}.max-w-\[1920px\]{max-width:1920px}.max-w-\[300px\]{max-width:300px}.max-w-\[400px\]{max-width:400px}.max-w-\[550px\]{max-width:550px}.max-w-full{max-width:100%}.flex-auto{flex:1 1 auto}.grow{flex-grow:1}.basis-full{flex-basis:100%}.-translate-x-1{--tw-translate-x:-0.25rem}.-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))}.-translate-x-1\.5{--tw-translate-x:-0.375rem}.-translate-x-full{--tw-translate-x:-100%}.-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))}.-translate-y-0{--tw-translate-y:-0px}.-translate-y-0\.4{--tw-translate-y:-0.1rem}.-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))}.-translate-y-0\.5{--tw-translate-y:-0.125rem}.-translate-y-1{--tw-translate-y:-0.25rem}.-translate-y-1,.-translate-y-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))}.-translate-y-1\.5{--tw-translate-y:-0.375rem}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-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))}.translate-x-0\.5{--tw-translate-x:0.125rem}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-1,.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))}.translate-x-2{--tw-translate-x:0.5rem}.translate-x-90{--tw-translate-x:22.5rem}.translate-x-90,.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))}.translate-y-0{--tw-translate-y:0px}.translate-y-0\.5{--tw-translate-y:0.125rem}.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))}.translate-y-1{--tw-translate-y:0.25rem}.translate-y-16{--tw-translate-y:4rem}.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))}.translate-y-2{--tw-translate-y:0.5rem}.-rotate-12{--tw-rotate:-12deg}.-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))}.rotate-12{--tw-rotate:12deg}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-105{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))}.scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-110,.scale-50{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))}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.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))}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.gap-y-4{row-gap:1rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded,.rounded-1{border-radius:.25rem}.rounded-1\.4{border-radius:.35rem}.rounded-10{border-radius:2.5rem}.rounded-2xl{border-radius:1rem}.rounded-circle{border-radius:50%}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-lg{border-bottom-left-radius:.5rem}.rounded-b-lg,.rounded-r-lg{border-bottom-right-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-gray-200{--tw-border-opacity:1;border-color:rgb(233 236 239/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(210 214 218/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity))}.border-primary{--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(94 114 228/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(233 236 239/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(210 214 218/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity))}.bg-gray-600\/50{background-color:#6c757d80}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(251 99 64/var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}.bg-primary\/20{background-color:#0b557733}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(245 57 57/var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity:1;background-color:rgb(46 172 104/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-slate-800\/10{background-color:#3a416f1a}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(251 177 64/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tl{background-image:linear-gradient(to top left,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-black\/40{--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0006 var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.bg-150{background-size:150%}.bg-contain{background-size:contain}.bg-clip-border{background-clip:initial}.bg-clip-padding{background-clip:padding-box}.bg-center{background-position:50%}.bg-left{background-position:0}.bg-x-25{background-position:25% 0}.bg-no-repeat{background-repeat:no-repeat}.fill-amber-500{fill:#f59e0b}.fill-blue-500{fill:#5e72e4}.fill-gray-400{fill:#ced4da}.fill-gray-500{fill:#adb5bd}.fill-gray-600{fill:#6c757d}.fill-green-500{fill:#22c55e}.fill-primary{fill:#0b5577}.fill-red-500{fill:#f53939}.fill-sky-500{fill:#0ea5e9}.fill-slate-800{fill:#3a416f}.fill-white{fill:#fff}.fill-yellow-500{fill:#fbb140}.stroke-blue-400{stroke:#60a5fa}.stroke-blue-500{stroke:#5e72e4}.stroke-emerald-600{stroke:#059669}.stroke-gray-100{stroke:#ebeff4}.stroke-gray-600{stroke:#6c757d}.stroke-green-700{stroke:#15803d}.stroke-orange-500{stroke:#fb6340}.stroke-pink-600{stroke:#db2777}.stroke-red-500{stroke:#f53939}.stroke-sky-500{stroke:#0ea5e9}.stroke-teal-600{stroke:#0d9488}.stroke-yellow-500{stroke:#fbb140}.stroke-gray-800{stroke:#252f40}.stroke-gray-700{stroke:#495057}.stroke-0{stroke-width:0}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-0\.4{padding:.1rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-0{padding-right:0}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-20{padding-top:5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-sans{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-5\.6{line-height:1.4rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.leading-default{line-height:1.6}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-tight-rem{letter-spacing:-.025rem}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-blue-500{--tw-text-opacity:1;color:rgb(94 114 228/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(45 206 137/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(108 117 125/var(--tw-text-opacity))}.text-gray-600\/90{color:#6c757de6}.text-gray-700{--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.text-gray-700\/80{color:#495057cc}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:rgb(11 85 119/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(62 161 236/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(103 116 142/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(52 71 103/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(251 177 64/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-3xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-3xl{--tw-shadow:0 8px 26px -4px #14141426,0 8px 9px -5px #1414140f;--tw-shadow-colored:0 8px 26px -4px var(--tw-shadow-color),0 8px 9px -5px var(--tw-shadow-color)}.shadow-md{--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)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 .25rem .375rem -.0625rem #1414141f,0 .125rem .25rem -.0625rem #14141412;--tw-shadow-colored:0 .25rem .375rem -.0625rem var(--tw-shadow-color),0 .125rem .25rem -.0625rem var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 0 2rem 0 #8898aa26;--tw-shadow-colored:0 0 2rem 0 var(--tw-shadow-color)}.shadow-xs{--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)}.outline-none{outline:2px solid #0000;outline-offset:2px}.blur{--tw-blur:blur(8px)}.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:ease;transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:ease;transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:ease;transition-duration:.15s}.delay-200{transition-delay:.2s}.duration-200{transition-duration:.2s}.duration-250{transition-duration:.25s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in{transition-timing-function:ease-in}.ease-in-out{transition-timing-function:ease-in-out}.flex-wrap-inherit{flex-wrap:inherit}@font-face{font-family:Open Sans;src:url(../webfonts/OpenSans.ttf)}*{font-family:Open Sans,sans-serif!important}.ace_content,.ace_editor,.ace_editor div{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace!important;font-size:16px!important;font-weight:400!important}.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:.75rem 1.5rem;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}: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)}.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:.75rem 1.5rem;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}: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)}.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:.75rem 1.5rem;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}: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)}.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:.75rem 1.5rem;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}: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)}.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:.75rem 1.5rem;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}: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)}.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: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){border-color:rgb(98 117 148/var(--tw-border-opacity));background-color:rgb(52 71 103/var(--tw-bg-opacity));opacity:.9}:is(.dark .custom-select-btn),:is(.dark .custom-select-btn:disabled){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .custom-select-btn:disabled){border-color:rgb(37 47 64/var(--tw-border-opacity));background-color:rgb(37 47 64/var(--tw-bg-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: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){border-color:rgb(98 117 148/var(--tw-border-opacity));background-color:rgb(52 71 103/var(--tw-bg-opacity))}.active.custom-dropdown-btn,:is(.dark .custom-dropdown-btn){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/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;border-color:rgb(210 214 218/var(--tw-border-opacity));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;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(210 214 218/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: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){border-color:rgb(98 117 148/var(--tw-border-opacity));background-color:rgb(52 71 103/var(--tw-bg-opacity));opacity:.9}:is(.dark .regular-input),:is(.dark .regular-input:disabled){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .regular-input:disabled){border-color:rgb(37 47 64/var(--tw-border-opacity));background-color:rgb(37 47 64/var(--tw-bg-opacity))}@media (min-width:768px){.regular-input{padding:.5rem .75rem}}.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(210 214 218/var(--tw-text-opacity));opacity:.9}.popover-settings-container{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-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-settings-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));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 .popover-settings-text){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity));opacity:.9}.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)}.active.settings-tabs-tab-btn{position:relative;z-index:10;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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--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);transition-property:all;transition-timing-function:ease;transition-duration:.15s;transition-timing-function:ease-in}.active.settings-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .active.settings-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 .active.settings-tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}.settings-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);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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .settings-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 .settings-tabs-tab-btn:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}.settings-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 .settings-tabs-name){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));opacity:.9}.settings-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 .settings-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)}.settings-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-mobile-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:.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:-.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-mobile-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-mobile-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-mobile-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)}.settings-tabs-mobile-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-mobile-btn-text){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity));opacity:.9}.active.settings-tabs-mobile-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-mobile-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-mobile-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(210 214 218/var(--tw-text-opacity))}:is(.dark .active.settings-tabs-mobile-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-mobile-dropdown-btn{border-top-left-radius:.25rem;border-top-right-radius:.25rem;border-width:1px}.settings-tabs-mobile-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-mobile-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-mobile-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(210 214 218/var(--tw-text-opacity))}:is(.dark .settings-tabs-mobile-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-letter\:absolute:first-letter{position:absolute}.first-letter\:w-full:first-letter{width:100%}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}.before\:float-left:before{content:var(--tw-content);float:left}.before\:pr-2:before{content:var(--tw-content);padding-right:.5rem}.before\:text-white:before{content:var(--tw-content);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.before\:content-\[\'\/\'\]:before{--tw-content:"/";content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-px:after{content:var(--tw-content);top:1px}.after\:float-right:after{content:var(--tw-content);float:right}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:translate-x-px:after{content:var(--tw-content);--tw-translate-x: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))}.after\:rounded-circle:after{content:var(--tw-content);border-radius:50%}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:pl-2:after{content:var(--tw-content);padding-left:.5rem}.after\:text-gray-600:after{content:var(--tw-content);--tw-text-opacity:1;color:rgb(108 117 125/var(--tw-text-opacity))}.after\:shadow-2xl:after{content:var(--tw-content);--tw-shadow:0 .3125rem .625rem 0 #0000001f;--tw-shadow-colored:0 .3125rem .625rem 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)}.after\:duration-300:after{content:var(--tw-content);transition-duration:.3s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'\/\'\]:after{--tw-content:"/";content:var(--tw-content)}.checked\:z-0:checked{z-index:0}.checked\:border-primary:checked{--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}.checked\:bg-primary:checked{--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}.checked\:bg-none:checked{background-image:none}.checked\:bg-right:checked{background-position:100%}.checked\:after\:translate-x-5:checked:after{--tw-translate-x:1.25rem}.checked\:after\:translate-x-5:checked:after,.checked\:after\:translate-x-5\.3:checked:after{content:var(--tw-content);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))}.checked\:after\:translate-x-5\.3:checked:after{--tw-translate-x:1.3rem}.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}.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))}.hover\:-translate-y-0\.4:hover{--tw-translate-y:-0.1rem}.hover\:-translate-y-px:hover{--tw-translate-y:-1px}.hover\:-translate-y-px:hover,.hover\:scale-102: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))}.hover\:scale-102:hover{--tw-scale-x:1.02;--tw-scale-y:1.02}.hover\:rounded-lg:hover{border-radius:.5rem}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(235 239 244/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(210 214 218/var(--tw-bg-opacity))}.hover\:bg-green-500\/80:hover{background-color:#22c55ecc}.hover\:bg-primary\/30:hover{background-color:#0b55774d}.hover\:bg-primary\/5:hover{background-color:#0b55770d}.hover\:bg-primary\/80:hover{background-color:#0b5577cc}.hover\:bg-red-500\/80:hover{background-color:#f53939cc}.hover\:bg-sky-500\/80:hover{background-color:#0ea5e9cc}.hover\:bg-yellow-500\/80:hover{background-color:#fbb140cc}.hover\:italic:hover{font-style:italic}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--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)}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)}.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)}.hover\:brightness-90:hover{--tw-brightness:brightness(.9)}.hover\:brightness-95: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)}.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;border-color:rgb(34 197 94/var(--tw-border-opacity))}.focus\:border-primary:focus{--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}.focus\:bg-green-500\/80:focus{background-color:#22c55ecc}.focus\:bg-primary\/80:focus{background-color:#0b5577cc}.focus\:bg-red-500\/80:focus{background-color:#f53939cc}.focus\:bg-sky-500\/80:focus{background-color:#0ea5e9cc}.focus\:bg-yellow-500\/80:focus{background-color:#fbb140cc}.focus\:\!outline-red-500:focus{outline-color:#f53939!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;border-color:rgb(34 197 94/var(--tw-border-opacity))}.focus\:valid\:\!outline-red-500:valid:focus{outline-color:#f53939!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;border-color:rgb(245 57 57/var(--tw-border-opacity))}.focus\:file\:invalid\:border-red-500:invalid::file-selector-button:focus{--tw-border-opacity:1;border-color:rgb(245 57 57/var(--tw-border-opacity))}.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}.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}.disabled\:border-gray-400:disabled{--tw-border-opacity:1;border-color:rgb(206 212 218/var(--tw-border-opacity))}.disabled\:bg-gray-400:disabled{--tw-bg-opacity:1;background-color:rgb(206 212 218/var(--tw-bg-opacity))}.disabled\:text-gray-700:disabled{--tw-text-opacity:1;color:rgb(73 80 87/var(--tw-text-opacity))}.disabled\:opacity-75:disabled{opacity:.75}.disabled\:hover\:translate-y-0: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 .dark\:inline){display:inline}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgb(73 80 87/var(--tw-border-opacity))}:is(.dark .dark\:border-slate-600){--tw-border-opacity:1;border-color:rgb(98 117 148/var(--tw-border-opacity))}:is(.dark .dark\:border-slate-800){--tw-border-opacity:1;border-color:rgb(58 65 111/var(--tw-border-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-500\/90){background-color:#22c55ee6}:is(.dark .dark\:bg-primary){--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary\/50){background-color:#0b557780}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1;background-color:rgb(52 71 103/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-700\/50){background-color:#34476780}:is(.dark .dark\:bg-slate-850){--tw-bg-opacity:1;background-color:rgb(17 28 68/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity:1;background-color:rgb(5 17 57/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-900\/30){background-color:#0511394d}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(108 117 125/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-600){--tw-bg-opacity:1;background-color:rgb(98 117 148/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-800){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gradient-to-r){background-image:linear-gradient(to right,var(--tw-gradient-stops))}:is(.dark .dark\:from-transparent){--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:via-white){--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)}:is(.dark .dark\:to-transparent){--tw-gradient-to:#0000 var(--tw-gradient-to-position)}:is(.dark .dark\:fill-blue-500){fill:#5e72e4}:is(.dark .dark\:fill-gray-300){fill:#d2d6da}:is(.dark .dark\:fill-gray-500){fill:#adb5bd}:is(.dark .dark\:fill-gray-600){fill:#6c757d}:is(.dark .dark\:fill-gray-50){fill:#f8f9fa}:is(.dark .dark\:stroke-gray-600){stroke:#6c757d}:is(.dark .dark\:stroke-gray-50){stroke:#f8f9fa}:is(.dark .dark\:stroke-gray-400){stroke:#ced4da}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(235 239 244/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgb(233 236 239/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(206 212 218/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}:is(.dark .dark\:text-red-500){--tw-text-opacity:1;color:rgb(245 57 57/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/80){color:#fffc}:is(.dark .dark\:text-white\/90){color:#ffffffe6}:is(.dark .dark\:opacity-60){opacity:.6}:is(.dark .dark\:opacity-75){opacity:.75}:is(.dark .dark\:opacity-80){opacity:.8}:is(.dark .dark\:opacity-90){opacity:.9}:is(.dark .dark\:shadow-dark-xl){--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)}: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)}:is(.dark .dark\:shadow-none){--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}:is(.dark .dark\:brightness-110){--tw-brightness:brightness(1.1)}: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)}:is(.dark .dark\:brightness-125){--tw-brightness:brightness(1.25)}:is(.dark .dark\:brightness-150){--tw-brightness:brightness(1.5)}:is(.dark .dark\:brightness-150),:is(.dark .dark\:brightness-90){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 .dark\:brightness-90){--tw-brightness:brightness(.9)}:is(.dark .dark\:brightness-95){--tw-brightness:brightness(.95)}:is(.dark .dark\:brightness-95),:is(.dark .dark\:brightness-\[0\.885\]){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 .dark\:brightness-\[0\.885\]){--tw-brightness:brightness(0.885)}:is(.dark .dark\:after\:text-gray-500):after{content:var(--tw-content);--tw-text-opacity:1;color:rgb(173 181 189/var(--tw-text-opacity))}:is(.dark .dark\:checked\:border-primary:checked){--tw-border-opacity:1;border-color:rgb(11 85 119/var(--tw-border-opacity))}:is(.dark .dark\:checked\:bg-primary:checked){--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-primary\/20:hover){background-color:#0b557733}:is(.dark .dark\:hover\:bg-primary\/60:hover){background-color:#0b557799}:is(.dark .dark\:hover\:bg-slate-700\/50:hover){background-color:#34476780}:is(.dark .dark\:hover\:bg-slate-800:hover){--tw-bg-opacity:1;background-color:rgb(58 65 111/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:brightness-100:hover){--tw-brightness:brightness(1)}: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)}:is(.dark .dark\:hover\:brightness-105:hover){--tw-brightness:brightness(1.05)}:is(.dark .dark\:hover\:brightness-90: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 .dark\:disabled\:border-gray-800:disabled){--tw-border-opacity:1;border-color:rgb(37 47 64/var(--tw-border-opacity))}:is(.dark .dark\:disabled\:bg-gray-800:disabled){--tw-bg-opacity:1;background-color:rgb(37 47 64/var(--tw-bg-opacity))}:is(.dark .dark\:disabled\:text-gray-300:disabled){--tw-text-opacity:1;color:rgb(210 214 218/var(--tw-text-opacity))}@media (min-width:576px){.sm\:right-24{right:6rem}.sm\:right-40{right:10rem}.sm\:right-6{right:1.5rem}.sm\:top-2{top:.5rem}.sm\:top-\[4\.5rem\]{top:4.5rem}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-start-5{grid-column-start:5}.sm\:mx-4{margin-left:1rem;margin-right:1rem}.sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-16{margin-right:4rem}.sm\:h-10{height:2.5rem}.sm\:h-14{height:3.5rem}.sm\:h-7{height:1.75rem}.sm\:max-h-125{max-height:31.25rem}.sm\:max-h-28{max-height:7rem}.sm\:w-36{width:9rem}.sm\:w-50{width:12.5rem}.sm\:w-7{width:1.75rem}.sm\:min-w-\[500px\]{min-width:500px}.sm\:scale-100{--tw-scale-x:1;--tw-scale-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))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:justify-items-start{justify-items:start}.sm\:gap-4{gap:1rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-0{padding-top:0;padding-bottom:0}.sm\:pt-6{padding-top:1.5rem}.sm\:text-left{text-align:left}}@media (min-width:768px){.md\:right-8{right:2rem}.md\:top-\[40\%\]{top:40%}.md\:right-12{right:3rem}.md\:right-16{right:4rem}.md\:right-14{right:3.5rem}.md\:right-\[3\.75rem\]{right:3.75rem}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.md\:my-3{margin-top:.75rem;margin-bottom:.75rem}.md\:mb-0{margin-bottom:0}.md\:mb-3{margin-bottom:.75rem}.md\:mb-8{margin-bottom:2rem}.md\:mr-3{margin-right:.75rem}.md\:mt-0{margin-top:0}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:max-h-160{max-height:40rem}.md\:min-h-75-screen{min-height:75vh}.md\:w-1\/2{width:50%}.md\:w-60{width:15rem}.md\:max-w-\[600px\]{max-width:600px}.md\:justify-end{justify-content:flex-end}.md\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:text-base{font-size:1rem;line-height:1.5rem}}@media (min-width:992px){.lg\:relative{position:relative}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:my-3{margin-top:.75rem;margin-bottom:.75rem}.lg\:mt-0{margin-top:0}.lg\:mt-4{margin-top:1rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-24{height:6rem}.lg\:h-9{height:2.25rem}.lg\:w-80{width:20rem}.lg\:w-9{width:2.25rem}.lg\:flex-row{flex-direction:row}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:gap-6{gap:1.5rem}.lg\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity))}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-1{padding-bottom:.25rem}.lg\:text-left{text-align:left}}@media (min-width:1200px){.xl\:left-0{left:0}.xl\:right-24{right:6rem}.xl\:right-6{right:1.5rem}.xl\:ml-6{margin-left:1.5rem}.xl\:ml-68{margin-left:17rem}.xl\:hidden{display:none}.xl\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.xl\:p-1{padding:.25rem}.xl\:p-1\.5{padding:.375rem}.xl\:pl-75{padding-left:18.75rem}.xl\:text-base{font-size:1rem;line-height:1.5rem}}@media (min-width:1320px){.\32xl\:col-span-4{grid-column:span 4/span 4}.\32xl\:col-span-6{grid-column:span 6/span 6}.\32xl\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.\32xl\:my-3{margin-top:.75rem;margin-bottom:.75rem}}@media (min-width:1920px){.\33xl\:col-span-3{grid-column:span 3/span 3}.\33xl\:col-span-4{grid-column:span 4/span 4}.\33xl\:col-span-5{grid-column:span 5/span 5}}@media (min-width:340px){.xs\:flex{display:flex}.xs\:flex-row{flex-direction:row}.xs\:items-center{align-items:center}.xs\:justify-start{justify-content:flex-start}.xs\:pl-2{padding-left:.5rem}.xs\:text-sm{font-size:.875rem;line-height:1.5rem}}.\[\&\>\*\]\:bg-primary>*{--tw-bg-opacity:1;background-color:rgb(11 85 119/var(--tw-bg-opacity))}
\ No newline at end of file
+/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/
+*,
+:after,
+:before {
+ box-sizing: border-box;
+ border: 0 solid #e9ecef;
+}
+:after,
+:before {
+ --tw-content: "";
+}
+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;
+}
+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-size: 1em;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: initial;
+}
+sub {
+ bottom: -0.25em;
+}
+sup {
+ top: -0.5em;
+}
+table {
+ text-indent: 0;
+ border-color: inherit;
+ border-collapse: collapse;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: 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;
+}
+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: -0.025rem;
+}
+hr {
+ margin: 1rem 0;
+ border: 0;
+ opacity: 0.25;
+}
+img {
+ max-width: none;
+}
+label {
+ display: inline-block;
+}
+p {
+ line-height: 1.625;
+ font-weight: 400;
+ margin-bottom: 1rem;
+}
+small {
+ font-size: 0.875em;
+}
+svg {
+ display: inline;
+}
+table {
+ border-collapse: inherit;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-bottom: 0.5rem;
+ color: #344767;
+}
+h1,
+h2,
+h3,
+h4 {
+ letter-spacing: -0.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;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0;
+}
+.pointer-events-none {
+ pointer-events: none;
+}
+.visible {
+ visibility: visible;
+}
+.invisible {
+ visibility: hidden;
+}
+.collapse {
+ visibility: collapse;
+}
+.static {
+ position: static;
+}
+.fixed {
+ position: fixed;
+}
+.absolute {
+ position: absolute;
+}
+.relative {
+ position: relative;
+}
+.inset-y-0 {
+ top: 0;
+ bottom: 0;
+}
+.-left-full {
+ left: -100%;
+}
+.-right-0 {
+ right: 0;
+}
+.-right-1 {
+ right: -0.25rem;
+}
+.bottom-0 {
+ bottom: 0;
+}
+.left-0 {
+ left: 0;
+}
+.left-auto {
+ left: auto;
+}
+.left-full {
+ left: 100%;
+}
+.right-0 {
+ right: 0;
+}
+.right-12 {
+ right: 3rem;
+}
+.right-2 {
+ right: 0.5rem;
+}
+.right-20 {
+ right: 5rem;
+}
+.right-4 {
+ right: 1rem;
+}
+.right-5 {
+ right: 1.25rem;
+}
+.right-6 {
+ right: 1.5rem;
+}
+.right-7 {
+ right: 1.75rem;
+}
+.right-8 {
+ right: 2rem;
+}
+.top-0 {
+ top: 0;
+}
+.top-1 {
+ top: 0.25rem;
+}
+.top-1\.5 {
+ top: 0.375rem;
+}
+.top-16 {
+ top: 4rem;
+}
+.top-2 {
+ top: 0.5rem;
+}
+.top-4 {
+ top: 1rem;
+}
+.top-\[38\%\] {
+ top: 38%;
+}
+.top-\[4\.5rem\] {
+ top: 4.5rem;
+}
+.top-\[55\%\] {
+ top: 55%;
+}
+.top-\[8\.2rem\] {
+ top: 8.2rem;
+}
+.top-\[53\%\] {
+ top: 53%;
+}
+.top-\[52\%\] {
+ top: 52%;
+}
+.right-14 {
+ right: 3.5rem;
+}
+.right-\[2\.25rem\] {
+ right: 2.25rem;
+}
+.right-\[3\.25rem\] {
+ right: 3.25rem;
+}
+.-z-10 {
+ z-index: -10;
+}
+.z-10 {
+ z-index: 10;
+}
+.z-100 {
+ z-index: 100;
+}
+.z-110 {
+ z-index: 110;
+}
+.z-20 {
+ z-index: 20;
+}
+.z-50 {
+ z-index: 50;
+}
+.z-990 {
+ z-index: 990;
+}
+.z-\[10000\] {
+ z-index: 10000;
+}
+.z-\[1000\] {
+ z-index: 1000;
+}
+.z-\[1001\] {
+ z-index: 1001;
+}
+.z-\[20\] {
+ z-index: 20;
+}
+.z-sticky {
+ z-index: 1020;
+}
+.order-1 {
+ order: 1;
+}
+.order-2 {
+ order: 2;
+}
+.col-span-1 {
+ grid-column: span 1 / span 1;
+}
+.col-span-10 {
+ grid-column: span 10 / span 10;
+}
+.col-span-11 {
+ grid-column: span 11 / span 11;
+}
+.col-span-12 {
+ grid-column: span 12 / span 12;
+}
+.col-span-2 {
+ grid-column: span 2 / span 2;
+}
+.col-span-3 {
+ grid-column: span 3 / span 3;
+}
+.col-span-9 {
+ grid-column: span 9 / span 9;
+}
+.float-right {
+ float: right;
+}
+.float-left {
+ float: left;
+}
+.m-0 {
+ margin: 0;
+}
+.m-1 {
+ margin: 0.25rem;
+}
+.m-2 {
+ margin: 0.5rem;
+}
+.m-4 {
+ margin: 1rem;
+}
+.mx-0 {
+ margin-left: 0;
+ margin-right: 0;
+}
+.mx-0\.5 {
+ margin-left: 0.125rem;
+ margin-right: 0.125rem;
+}
+.mx-1 {
+ margin-left: 0.25rem;
+ margin-right: 0.25rem;
+}
+.mx-2 {
+ margin-left: 0.5rem;
+ margin-right: 0.5rem;
+}
+.mx-2\.5 {
+ margin-left: 0.625rem;
+ margin-right: 0.625rem;
+}
+.mx-3 {
+ margin-left: 0.75rem;
+ margin-right: 0.75rem;
+}
+.mx-4 {
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+.mx-auto {
+ margin-left: auto;
+ margin-right: auto;
+}
+.my-0 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.my-1 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+.my-2 {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+}
+.my-3 {
+ margin-top: 0.75rem;
+ margin-bottom: 0.75rem;
+}
+.my-4 {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+}
+.mb-0 {
+ margin-bottom: 0;
+}
+.mb-0\.5 {
+ margin-bottom: 0.125rem;
+}
+.mb-1 {
+ margin-bottom: 0.25rem;
+}
+.mb-2 {
+ margin-bottom: 0.5rem;
+}
+.mb-3 {
+ margin-bottom: 0.75rem;
+}
+.mb-4 {
+ margin-bottom: 1rem;
+}
+.mb-6 {
+ margin-bottom: 1.5rem;
+}
+.mb-7 {
+ margin-bottom: 1.75rem;
+}
+.mb-8 {
+ margin-bottom: 2rem;
+}
+.ml-0 {
+ margin-left: 0;
+}
+.ml-1 {
+ margin-left: 0.25rem;
+}
+.ml-12 {
+ margin-left: 3rem;
+}
+.ml-2 {
+ margin-left: 0.5rem;
+}
+.ml-3 {
+ margin-left: 0.75rem;
+}
+.ml-4 {
+ margin-left: 1rem;
+}
+.ml-6 {
+ margin-left: 1.5rem;
+}
+.ml-auto {
+ margin-left: auto;
+}
+.mr-1 {
+ margin-right: 0.25rem;
+}
+.mr-12 {
+ margin-right: 3rem;
+}
+.mr-2 {
+ margin-right: 0.5rem;
+}
+.mr-3 {
+ margin-right: 0.75rem;
+}
+.mr-4 {
+ margin-right: 1rem;
+}
+.mr-6 {
+ margin-right: 1.5rem;
+}
+.mt-0 {
+ margin-top: 0;
+}
+.mt-0\.5 {
+ margin-top: 0.125rem;
+}
+.mt-1 {
+ margin-top: 0.25rem;
+}
+.mt-10 {
+ margin-top: 2.5rem;
+}
+.mt-16 {
+ margin-top: 4rem;
+}
+.mt-2 {
+ margin-top: 0.5rem;
+}
+.mt-3 {
+ margin-top: 0.75rem;
+}
+.mt-4 {
+ margin-top: 1rem;
+}
+.mt-6 {
+ margin-top: 1.5rem;
+}
+.mt-8 {
+ margin-top: 2rem;
+}
+.mt-\[4\.5rem\] {
+ margin-top: 4.5rem;
+}
+.block {
+ display: block;
+}
+.inline-block {
+ display: inline-block;
+}
+.inline {
+ display: inline;
+}
+.flex {
+ display: flex;
+}
+.table {
+ display: table;
+}
+.grid {
+ display: grid;
+}
+.hidden {
+ display: none;
+}
+.h-1\/3 {
+ height: 33.333333%;
+}
+.h-12 {
+ height: 3rem;
+}
+.h-14 {
+ height: 3.5rem;
+}
+.h-19 {
+ height: 4.75rem;
+}
+.h-3 {
+ height: 0.75rem;
+}
+.h-4 {
+ height: 1rem;
+}
+.h-4\.5 {
+ height: 1.125rem;
+}
+.h-40 {
+ height: 10rem;
+}
+.h-48 {
+ height: 12rem;
+}
+.h-5 {
+ height: 1.25rem;
+}
+.h-5\.5 {
+ height: 1.375rem;
+}
+.h-6 {
+ height: 1.5rem;
+}
+.h-8 {
+ height: 2rem;
+}
+.h-\[2\.5rem\] {
+ height: 2.5rem;
+}
+.h-\[3\.5rem\] {
+ height: 3.5rem;
+}
+.h-\[4rem\] {
+ height: 4rem;
+}
+.h-\[90vh\] {
+ height: 90vh;
+}
+.h-full {
+ height: 100%;
+}
+.h-px {
+ height: 1px;
+}
+.h-screen {
+ height: 100vh;
+}
+.h-sidenav {
+ height: calc(100vh - 360px);
+}
+.max-h-100 {
+ max-height: 25rem;
+}
+.max-h-135 {
+ max-height: 33.75rem;
+}
+.max-h-30 {
+ max-height: 7.5rem;
+}
+.max-h-80 {
+ max-height: 20rem;
+}
+.max-h-90 {
+ max-height: 22.5rem;
+}
+.max-h-screen {
+ max-height: 100vh;
+}
+.min-h-12 {
+ min-height: 3rem;
+}
+.min-h-20 {
+ min-height: 5rem;
+}
+.min-h-50-screen {
+ min-height: 50vh;
+}
+.min-h-52 {
+ min-height: 13rem;
+}
+.min-h-6 {
+ min-height: 1.5rem;
+}
+.min-h-\[100px\] {
+ min-height: 100px;
+}
+.min-h-\[350px\] {
+ min-height: 350px;
+}
+.min-h-\[55vh\] {
+ min-height: 55vh;
+}
+.min-h-\[75px\] {
+ min-height: 75px;
+}
+.min-h-\[85vh\] {
+ min-height: 85vh;
+}
+.min-h-screen {
+ min-height: 100vh;
+}
+.w-1 {
+ width: 0.25rem;
+}
+.w-10 {
+ width: 2.5rem;
+}
+.w-11\/12 {
+ width: 91.666667%;
+}
+.w-12 {
+ width: 3rem;
+}
+.w-28 {
+ width: 7rem;
+}
+.w-3 {
+ width: 0.75rem;
+}
+.w-4 {
+ width: 1rem;
+}
+.w-4\.5 {
+ width: 1.125rem;
+}
+.w-40 {
+ width: 10rem;
+}
+.w-48 {
+ width: 12rem;
+}
+.w-5 {
+ width: 1.25rem;
+}
+.w-5\.5 {
+ width: 1.375rem;
+}
+.w-50 {
+ width: 12.5rem;
+}
+.w-6 {
+ width: 1.5rem;
+}
+.w-8 {
+ width: 2rem;
+}
+.w-80 {
+ width: 20rem;
+}
+.w-90 {
+ width: 22.5rem;
+}
+.w-\[2\.5rem\] {
+ width: 2.5rem;
+}
+.w-auto {
+ width: auto;
+}
+.w-fit {
+ width: -moz-fit-content;
+ width: fit-content;
+}
+.w-full {
+ width: 100%;
+}
+.w-screen {
+ width: 100vw;
+}
+.min-w-0 {
+ min-width: 0;
+}
+.min-w-\[900px\] {
+ min-width: 900px;
+}
+.max-w-180 {
+ max-width: 45rem;
+}
+.max-w-40 {
+ max-width: 10rem;
+}
+.max-w-60 {
+ max-width: 15rem;
+}
+.max-w-64 {
+ max-width: 16rem;
+}
+.max-w-\[1920px\] {
+ max-width: 1920px;
+}
+.max-w-\[300px\] {
+ max-width: 300px;
+}
+.max-w-\[400px\] {
+ max-width: 400px;
+}
+.max-w-\[550px\] {
+ max-width: 550px;
+}
+.max-w-full {
+ max-width: 100%;
+}
+.flex-auto {
+ flex: 1 1 auto;
+}
+.grow {
+ flex-grow: 1;
+}
+.basis-full {
+ flex-basis: 100%;
+}
+.-translate-x-1 {
+ --tw-translate-x: -0.25rem;
+}
+.-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));
+}
+.-translate-x-1\.5 {
+ --tw-translate-x: -0.375rem;
+}
+.-translate-x-full {
+ --tw-translate-x: -100%;
+}
+.-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));
+}
+.-translate-y-0 {
+ --tw-translate-y: -0px;
+}
+.-translate-y-0\.4 {
+ --tw-translate-y: -0.1rem;
+}
+.-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));
+}
+.-translate-y-0\.5 {
+ --tw-translate-y: -0.125rem;
+}
+.-translate-y-1 {
+ --tw-translate-y: -0.25rem;
+}
+.-translate-y-1,
+.-translate-y-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));
+}
+.-translate-y-1\.5 {
+ --tw-translate-y: -0.375rem;
+}
+.translate-x-0 {
+ --tw-translate-x: 0px;
+}
+.translate-x-0,
+.translate-x-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));
+}
+.translate-x-0\.5 {
+ --tw-translate-x: 0.125rem;
+}
+.translate-x-1 {
+ --tw-translate-x: 0.25rem;
+}
+.translate-x-1,
+.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));
+}
+.translate-x-2 {
+ --tw-translate-x: 0.5rem;
+}
+.translate-x-90 {
+ --tw-translate-x: 22.5rem;
+}
+.translate-x-90,
+.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));
+}
+.translate-y-0 {
+ --tw-translate-y: 0px;
+}
+.translate-y-0\.5 {
+ --tw-translate-y: 0.125rem;
+}
+.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));
+}
+.translate-y-1 {
+ --tw-translate-y: 0.25rem;
+}
+.translate-y-16 {
+ --tw-translate-y: 4rem;
+}
+.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));
+}
+.translate-y-2 {
+ --tw-translate-y: 0.5rem;
+}
+.-rotate-12 {
+ --tw-rotate: -12deg;
+}
+.-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));
+}
+.rotate-12 {
+ --tw-rotate: 12deg;
+}
+.rotate-180 {
+ --tw-rotate: 180deg;
+}
+.rotate-180,
+.scale-105 {
+ 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));
+}
+.scale-105 {
+ --tw-scale-x: 1.05;
+ --tw-scale-y: 1.05;
+}
+.scale-110 {
+ --tw-scale-x: 1.1;
+ --tw-scale-y: 1.1;
+}
+.scale-110,
+.scale-50 {
+ 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));
+}
+.scale-50 {
+ --tw-scale-x: 0.5;
+ --tw-scale-y: 0.5;
+}
+.scale-90 {
+ --tw-scale-x: 0.9;
+ --tw-scale-y: 0.9;
+}
+.scale-90,
+.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));
+}
+.cursor-pointer {
+ cursor: pointer;
+}
+.select-none {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+.resize {
+ resize: both;
+}
+.list-none {
+ list-style-type: none;
+}
+.appearance-none {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+.grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+}
+.grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+}
+.grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+.flex-col {
+ flex-direction: column;
+}
+.flex-wrap {
+ flex-wrap: wrap;
+}
+.items-start {
+ align-items: flex-start;
+}
+.items-end {
+ align-items: flex-end;
+}
+.items-center {
+ align-items: center;
+}
+.justify-start {
+ justify-content: flex-start;
+}
+.justify-end {
+ justify-content: flex-end;
+}
+.justify-center {
+ justify-content: center;
+}
+.justify-between {
+ justify-content: space-between;
+}
+.justify-items-center {
+ justify-items: center;
+}
+.gap-2 {
+ gap: 0.5rem;
+}
+.gap-3 {
+ gap: 0.75rem;
+}
+.gap-8 {
+ gap: 2rem;
+}
+.gap-x-4 {
+ -moz-column-gap: 1rem;
+ column-gap: 1rem;
+}
+.gap-y-2 {
+ row-gap: 0.5rem;
+}
+.gap-y-4 {
+ row-gap: 1rem;
+}
+.overflow-auto {
+ overflow: auto;
+}
+.overflow-hidden {
+ overflow: hidden;
+}
+.overflow-x-auto {
+ overflow-x: auto;
+}
+.overflow-y-auto {
+ overflow-y: auto;
+}
+.overflow-x-hidden {
+ overflow-x: hidden;
+}
+.whitespace-nowrap {
+ white-space: nowrap;
+}
+.break-words {
+ overflow-wrap: break-word;
+}
+.rounded,
+.rounded-1 {
+ border-radius: 0.25rem;
+}
+.rounded-1\.4 {
+ border-radius: 0.35rem;
+}
+.rounded-10 {
+ border-radius: 2.5rem;
+}
+.rounded-2xl {
+ border-radius: 1rem;
+}
+.rounded-circle {
+ border-radius: 50%;
+}
+.rounded-full {
+ border-radius: 9999px;
+}
+.rounded-lg {
+ border-radius: 0.5rem;
+}
+.rounded-none {
+ border-radius: 0;
+}
+.rounded-xl {
+ border-radius: 0.75rem;
+}
+.rounded-b {
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+.rounded-b-lg {
+ border-bottom-left-radius: 0.5rem;
+}
+.rounded-b-lg,
+.rounded-r-lg {
+ border-bottom-right-radius: 0.5rem;
+}
+.rounded-r-lg {
+ border-top-right-radius: 0.5rem;
+}
+.rounded-t {
+ border-top-left-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+.rounded-t-2xl {
+ border-top-left-radius: 1rem;
+ border-top-right-radius: 1rem;
+}
+.rounded-t-lg {
+ border-top-left-radius: 0.5rem;
+ border-top-right-radius: 0.5rem;
+}
+.border {
+ border-width: 1px;
+}
+.border-0 {
+ border-width: 0;
+}
+.border-2 {
+ border-width: 2px;
+}
+.border-b {
+ border-bottom-width: 1px;
+}
+.border-b-0 {
+ border-bottom-width: 0;
+}
+.border-l {
+ border-left-width: 1px;
+}
+.border-r {
+ border-right-width: 1px;
+}
+.border-t {
+ border-top-width: 1px;
+}
+.border-solid {
+ border-style: solid;
+}
+.border-dashed {
+ border-style: dashed;
+}
+.border-gray-200 {
+ --tw-border-opacity: 1;
+ border-color: rgb(233 236 239 / var(--tw-border-opacity));
+}
+.border-gray-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(210 214 218 / var(--tw-border-opacity));
+}
+.border-gray-400 {
+ --tw-border-opacity: 1;
+ border-color: rgb(206 212 218 / var(--tw-border-opacity));
+}
+.border-primary {
+ --tw-border-opacity: 1;
+ border-color: rgb(11 85 119 / var(--tw-border-opacity));
+}
+.bg-blue-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(94 114 228 / var(--tw-bg-opacity));
+}
+.bg-gray-100 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(235 239 244 / var(--tw-bg-opacity));
+}
+.bg-gray-200 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(233 236 239 / var(--tw-bg-opacity));
+}
+.bg-gray-300 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(210 214 218 / var(--tw-bg-opacity));
+}
+.bg-gray-50 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(248 249 250 / var(--tw-bg-opacity));
+}
+.bg-gray-600\/50 {
+ background-color: #6c757d80;
+}
+.bg-green-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(34 197 94 / var(--tw-bg-opacity));
+}
+.bg-orange-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(251 99 64 / var(--tw-bg-opacity));
+}
+.bg-primary {
+ --tw-bg-opacity: 1;
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+}
+.bg-primary\/20 {
+ background-color: #0b557733;
+}
+.bg-red-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(245 57 57 / var(--tw-bg-opacity));
+}
+.bg-secondary {
+ --tw-bg-opacity: 1;
+ background-color: rgb(46 172 104 / var(--tw-bg-opacity));
+}
+.bg-sky-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(14 165 233 / var(--tw-bg-opacity));
+}
+.bg-slate-800\/10 {
+ background-color: #3a416f1a;
+}
+.bg-transparent {
+ background-color: initial;
+}
+.bg-white {
+ --tw-bg-opacity: 1;
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
+}
+.bg-yellow-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(251 177 64 / var(--tw-bg-opacity));
+}
+.bg-gray-400 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(206 212 218 / var(--tw-bg-opacity));
+}
+.bg-gradient-to-r {
+ background-image: linear-gradient(to right, var(--tw-gradient-stops));
+}
+.bg-gradient-to-tl {
+ background-image: linear-gradient(to top left, var(--tw-gradient-stops));
+}
+.bg-none {
+ background-image: none;
+}
+.from-transparent {
+ --tw-gradient-from: #0000 var(--tw-gradient-from-position);
+ --tw-gradient-to: #0000 var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
+}
+.via-black\/40 {
+ --tw-gradient-to: #0000 var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from),
+ #0006 var(--tw-gradient-via-position), var(--tw-gradient-to);
+}
+.to-transparent {
+ --tw-gradient-to: #0000 var(--tw-gradient-to-position);
+}
+.bg-150 {
+ background-size: 150%;
+}
+.bg-contain {
+ background-size: contain;
+}
+.bg-clip-border {
+ background-clip: initial;
+}
+.bg-clip-padding {
+ background-clip: padding-box;
+}
+.bg-center {
+ background-position: 50%;
+}
+.bg-left {
+ background-position: 0;
+}
+.bg-x-25 {
+ background-position: 25% 0;
+}
+.bg-no-repeat {
+ background-repeat: no-repeat;
+}
+.fill-amber-500 {
+ fill: #f59e0b;
+}
+.fill-blue-500 {
+ fill: #5e72e4;
+}
+.fill-gray-400 {
+ fill: #ced4da;
+}
+.fill-gray-500 {
+ fill: #adb5bd;
+}
+.fill-gray-600 {
+ fill: #6c757d;
+}
+.fill-green-500 {
+ fill: #22c55e;
+}
+.fill-primary {
+ fill: #0b5577;
+}
+.fill-red-500 {
+ fill: #f53939;
+}
+.fill-sky-500 {
+ fill: #0ea5e9;
+}
+.fill-slate-800 {
+ fill: #3a416f;
+}
+.fill-white {
+ fill: #fff;
+}
+.fill-yellow-500 {
+ fill: #fbb140;
+}
+.stroke-blue-400 {
+ stroke: #60a5fa;
+}
+.stroke-blue-500 {
+ stroke: #5e72e4;
+}
+.stroke-emerald-600 {
+ stroke: #059669;
+}
+.stroke-gray-100 {
+ stroke: #ebeff4;
+}
+.stroke-gray-600 {
+ stroke: #6c757d;
+}
+.stroke-green-700 {
+ stroke: #15803d;
+}
+.stroke-orange-500 {
+ stroke: #fb6340;
+}
+.stroke-pink-600 {
+ stroke: #db2777;
+}
+.stroke-red-500 {
+ stroke: #f53939;
+}
+.stroke-sky-500 {
+ stroke: #0ea5e9;
+}
+.stroke-teal-600 {
+ stroke: #0d9488;
+}
+.stroke-yellow-500 {
+ stroke: #fbb140;
+}
+.stroke-gray-800 {
+ stroke: #252f40;
+}
+.stroke-gray-700 {
+ stroke: #495057;
+}
+.stroke-0 {
+ stroke-width: 0;
+}
+.object-cover {
+ -o-object-fit: cover;
+ object-fit: cover;
+}
+.p-0 {
+ padding: 0;
+}
+.p-1 {
+ padding: 0.25rem;
+}
+.p-2 {
+ padding: 0.5rem;
+}
+.p-3 {
+ padding: 0.75rem;
+}
+.p-4 {
+ padding: 1rem;
+}
+.p-0\.4 {
+ padding: 0.1rem;
+}
+.px-0 {
+ padding-left: 0;
+ padding-right: 0;
+}
+.px-0\.5 {
+ padding-left: 0.125rem;
+ padding-right: 0.125rem;
+}
+.px-1 {
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+}
+.px-1\.5 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+}
+.px-2 {
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+}
+.px-3 {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem;
+}
+.px-4 {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+.px-6 {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+}
+.px-8 {
+ padding-left: 2rem;
+ padding-right: 2rem;
+}
+.py-1 {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+}
+.py-1\.5 {
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
+}
+.py-16 {
+ padding-top: 4rem;
+ padding-bottom: 4rem;
+}
+.py-2 {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+}
+.py-2\.5 {
+ padding-top: 0.625rem;
+ padding-bottom: 0.625rem;
+}
+.py-3 {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+}
+.py-4 {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+}
+.py-6 {
+ padding-top: 1.5rem;
+ padding-bottom: 1.5rem;
+}
+.pb-0 {
+ padding-bottom: 0;
+}
+.pb-2 {
+ padding-bottom: 0.5rem;
+}
+.pb-4 {
+ padding-bottom: 1rem;
+}
+.pb-8 {
+ padding-bottom: 2rem;
+}
+.pl-0 {
+ padding-left: 0;
+}
+.pl-2 {
+ padding-left: 0.5rem;
+}
+.pl-3 {
+ padding-left: 0.75rem;
+}
+.pl-4 {
+ padding-left: 1rem;
+}
+.pl-6 {
+ padding-left: 1.5rem;
+}
+.pr-0 {
+ padding-right: 0;
+}
+.pr-8 {
+ padding-right: 2rem;
+}
+.pt-1 {
+ padding-top: 0.25rem;
+}
+.pt-10 {
+ padding-top: 2.5rem;
+}
+.pt-20 {
+ padding-top: 5rem;
+}
+.pt-3 {
+ padding-top: 0.75rem;
+}
+.pt-4 {
+ padding-top: 1rem;
+}
+.text-left {
+ text-align: left;
+}
+.text-center {
+ text-align: center;
+}
+.align-top {
+ vertical-align: top;
+}
+.align-middle {
+ vertical-align: middle;
+}
+.align-bottom {
+ vertical-align: bottom;
+}
+.font-sans {
+ font-family: Open Sans;
+}
+.text-2xl {
+ font-size: 1.5rem;
+ line-height: 2rem;
+}
+.text-3xl {
+ font-size: 1.875rem;
+ line-height: 2.25rem;
+}
+.text-base {
+ font-size: 1rem;
+ line-height: 1.5rem;
+}
+.text-lg {
+ font-size: 1.125rem;
+ line-height: 1.75rem;
+}
+.text-sm {
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+}
+.text-xl {
+ font-size: 1.25rem;
+ line-height: 1.75rem;
+}
+.text-xs {
+ font-size: 0.75rem;
+ line-height: 1rem;
+}
+.font-bold {
+ font-weight: 700;
+}
+.font-medium {
+ font-weight: 500;
+}
+.font-normal {
+ font-weight: 400;
+}
+.font-semibold {
+ font-weight: 600;
+}
+.uppercase {
+ text-transform: uppercase;
+}
+.capitalize {
+ text-transform: capitalize;
+}
+.italic {
+ font-style: italic;
+}
+.ordinal {
+ --tw-ordinal: ordinal;
+ font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero)
+ var(--tw-numeric-figure) var(--tw-numeric-spacing)
+ var(--tw-numeric-fraction);
+}
+.leading-5 {
+ line-height: 1.25rem;
+}
+.leading-5\.6 {
+ line-height: 1.4rem;
+}
+.leading-6 {
+ line-height: 1.5rem;
+}
+.leading-8 {
+ line-height: 2rem;
+}
+.leading-default {
+ line-height: 1.6;
+}
+.leading-none {
+ line-height: 1;
+}
+.leading-normal {
+ line-height: 1.5;
+}
+.leading-tight {
+ line-height: 1.25;
+}
+.tracking-tight-rem {
+ letter-spacing: -0.025rem;
+}
+.tracking-wide {
+ letter-spacing: 0.025em;
+}
+.tracking-widest {
+ letter-spacing: 0.1em;
+}
+.text-blue-500 {
+ --tw-text-opacity: 1;
+ color: rgb(94 114 228 / var(--tw-text-opacity));
+}
+.text-emerald-500 {
+ --tw-text-opacity: 1;
+ color: rgb(45 206 137 / var(--tw-text-opacity));
+}
+.text-gray-100 {
+ --tw-text-opacity: 1;
+ color: rgb(235 239 244 / var(--tw-text-opacity));
+}
+.text-gray-300 {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+}
+.text-gray-600 {
+ --tw-text-opacity: 1;
+ color: rgb(108 117 125 / var(--tw-text-opacity));
+}
+.text-gray-600\/90 {
+ color: #6c757de6;
+}
+.text-gray-700 {
+ --tw-text-opacity: 1;
+ color: rgb(73 80 87 / var(--tw-text-opacity));
+}
+.text-gray-700\/80 {
+ color: #495057cc;
+}
+.text-green-500 {
+ --tw-text-opacity: 1;
+ color: rgb(34 197 94 / var(--tw-text-opacity));
+}
+.text-primary {
+ --tw-text-opacity: 1;
+ color: rgb(11 85 119 / var(--tw-text-opacity));
+}
+.text-red-500 {
+ --tw-text-opacity: 1;
+ color: rgb(245 57 57 / var(--tw-text-opacity));
+}
+.text-sky-600 {
+ --tw-text-opacity: 1;
+ color: rgb(62 161 236 / var(--tw-text-opacity));
+}
+.text-slate-500 {
+ --tw-text-opacity: 1;
+ color: rgb(103 116 142 / var(--tw-text-opacity));
+}
+.text-slate-700 {
+ --tw-text-opacity: 1;
+ color: rgb(52 71 103 / var(--tw-text-opacity));
+}
+.text-white {
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+}
+.text-yellow-500 {
+ --tw-text-opacity: 1;
+ color: rgb(251 177 64 / var(--tw-text-opacity));
+}
+.underline {
+ text-decoration-line: underline;
+}
+.antialiased {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.opacity-0 {
+ opacity: 0;
+}
+.opacity-100 {
+ opacity: 1;
+}
+.opacity-50 {
+ opacity: 0.5;
+}
+.opacity-60 {
+ opacity: 0.6;
+}
+.shadow {
+ --tw-shadow: 0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;
+ --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
+ 0 1px 2px -1px var(--tw-shadow-color);
+}
+.shadow,
+.shadow-3xl {
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+.shadow-3xl {
+ --tw-shadow: 0 8px 26px -4px #14141426, 0 8px 9px -5px #1414140f;
+ --tw-shadow-colored: 0 8px 26px -4px var(--tw-shadow-color),
+ 0 8px 9px -5px var(--tw-shadow-color);
+}
+.shadow-md {
+ --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);
+}
+.shadow-md,
+.shadow-none {
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+.shadow-none {
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+}
+.shadow-sm {
+ --tw-shadow: 0 0.25rem 0.375rem -0.0625rem #1414141f,
+ 0 0.125rem 0.25rem -0.0625rem #14141412;
+ --tw-shadow-colored: 0 0.25rem 0.375rem -0.0625rem var(--tw-shadow-color),
+ 0 0.125rem 0.25rem -0.0625rem var(--tw-shadow-color);
+}
+.shadow-sm,
+.shadow-xl {
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+.shadow-xl {
+ --tw-shadow: 0 0 2rem 0 #8898aa26;
+ --tw-shadow-colored: 0 0 2rem 0 var(--tw-shadow-color);
+}
+.shadow-xs {
+ --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);
+}
+.outline-none {
+ outline: 2px solid #0000;
+ outline-offset: 2px;
+}
+.blur {
+ --tw-blur: blur(8px);
+}
+.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);
+}
+.transition {
+ transition-property:
+ color,
+ background-color,
+ border-color,
+ text-decoration-color,
+ fill,
+ stroke,
+ opacity,
+ box-shadow,
+ transform,
+ filter,
+ -webkit-backdrop-filter;
+ transition-property: color, background-color, border-color,
+ text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
+ backdrop-filter;
+ transition-property:
+ color,
+ background-color,
+ border-color,
+ text-decoration-color,
+ fill,
+ stroke,
+ opacity,
+ box-shadow,
+ transform,
+ filter,
+ backdrop-filter,
+ -webkit-backdrop-filter;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+}
+.transition-all {
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+}
+.transition-transform {
+ transition-property: transform;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+}
+.delay-200 {
+ transition-delay: 0.2s;
+}
+.duration-200 {
+ transition-duration: 0.2s;
+}
+.duration-250 {
+ transition-duration: 0.25s;
+}
+.duration-300 {
+ transition-duration: 0.3s;
+}
+.duration-700 {
+ transition-duration: 0.7s;
+}
+.ease-in {
+ transition-timing-function: ease-in;
+}
+.ease-in-out {
+ transition-timing-function: ease-in-out;
+}
+.flex-wrap-inherit {
+ flex-wrap: inherit;
+}
+@font-face {
+ font-family: Open Sans;
+ src: url(../webfonts/OpenSans.ttf);
+}
+* {
+ font-family:
+ Open Sans,
+ sans-serif !important;
+}
+.ace_content,
+.ace_editor,
+.ace_editor div {
+ font-family:
+ Monaco,
+ Menlo,
+ Ubuntu Mono,
+ Consolas,
+ source-code-pro,
+ monospace !important;
+ font-size: 16px !important;
+ font-weight: 400 !important;
+}
+.close-btn {
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 0.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: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: -0.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: 0.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: 0.85;
+}
+:is(.dark .close-btn) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(233 236 239 / var(--tw-bg-opacity));
+ --tw-brightness: brightness(0.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(0.75);
+}
+.valid-btn {
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 0.5rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(34 197 94 / var(--tw-bg-opacity));
+ padding: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: 0.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: 0.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: 0.85;
+}
+:is(.dark .valid-btn) {
+ --tw-brightness: brightness(0.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);
+}
+.delete-btn {
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 0.5rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(245 57 57 / var(--tw-bg-opacity));
+ padding: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: 0.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: 0.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: 0.85;
+}
+:is(.dark .delete-btn) {
+ --tw-brightness: brightness(0.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);
+}
+.edit-btn {
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 0.5rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(251 177 64 / var(--tw-bg-opacity));
+ padding: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: 0.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: 0.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: 0.85;
+}
+:is(.dark .edit-btn) {
+ --tw-brightness: brightness(0.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-btn {
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 0.5rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(14 165 233 / var(--tw-bg-opacity));
+ padding: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: 0.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: 0.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: 0.85;
+}
+:is(.dark .info-btn) {
+ --tw-brightness: brightness(0.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);
+}
+.checkbox {
+ position: relative;
+ z-index: 10;
+ float: left;
+ margin-top: 0.25rem;
+ height: 1.25rem;
+ width: 1.25rem;
+ cursor: pointer;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: 0.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: all;
+ transition-timing-function: ease;
+ transition-duration: 0.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: 0.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: 0.25rem 0.375rem;
+ text-align: left;
+ vertical-align: middle;
+ font-size: 0.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: 0.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: 0.75;
+}
+:is(.dark .custom-select-btn) {
+ border-color: rgb(98 117 148 / var(--tw-border-opacity));
+ background-color: rgb(52 71 103 / var(--tw-bg-opacity));
+ opacity: 0.9;
+}
+:is(.dark .custom-select-btn),
+:is(.dark .custom-select-btn:disabled) {
+ --tw-border-opacity: 1;
+ --tw-bg-opacity: 1;
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+}
+:is(.dark .custom-select-btn:disabled) {
+ border-color: rgb(37 47 64 / var(--tw-border-opacity));
+ background-color: rgb(37 47 64 / var(--tw-bg-opacity));
+}
+@media (min-width: 768px) {
+ .custom-select-btn {
+ padding: 0.5rem 0.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: 0.5rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ line-height: 1.5;
+ letter-spacing: -0.025rem;
+ --tw-text-opacity: 1;
+ color: rgb(73 80 87 / var(--tw-text-opacity));
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+ transition-timing-function: ease-in;
+}
+.custom-dropdown-btn:hover {
+ --tw-brightness: brightness(0.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) {
+ border-color: rgb(98 117 148 / var(--tw-border-opacity));
+ background-color: rgb(52 71 103 / var(--tw-bg-opacity));
+}
+.active.custom-dropdown-btn,
+:is(.dark .custom-dropdown-btn) {
+ --tw-border-opacity: 1;
+ --tw-bg-opacity: 1;
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / 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;
+ border-color: rgb(210 214 218 / var(--tw-border-opacity));
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+ padding: 0.5rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ line-height: 1.5;
+ letter-spacing: -0.025rem;
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+ transition-timing-function: ease-in;
+}
+.active.custom-dropdown-btn:hover {
+ --tw-brightness: brightness(0.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(210 214 218 / 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: 0.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: 0.25rem 0.375rem;
+ font-size: 0.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: all;
+ transition-timing-function: ease;
+ transition-duration: 0.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: 0.75;
+}
+:is(.dark .regular-input) {
+ border-color: rgb(98 117 148 / var(--tw-border-opacity));
+ background-color: rgb(52 71 103 / var(--tw-bg-opacity));
+ opacity: 0.9;
+}
+:is(.dark .regular-input),
+:is(.dark .regular-input:disabled) {
+ --tw-border-opacity: 1;
+ --tw-bg-opacity: 1;
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+}
+:is(.dark .regular-input:disabled) {
+ border-color: rgb(37 47 64 / var(--tw-border-opacity));
+ background-color: rgb(37 47 64 / var(--tw-bg-opacity));
+}
+@media (min-width: 768px) {
+ .regular-input {
+ padding: 0.5rem 0.75rem;
+ }
+}
+.input-title {
+ margin: 0;
+ font-size: 0.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: 0.3s;
+ transition-timing-function: ease-in-out;
+}
+:is(.dark .input-title) {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+ opacity: 0.9;
+}
+.popover-settings-container {
+ 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: 0.375rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(94 114 228 / var(--tw-bg-opacity));
+ padding: 0.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: 0.5s;
+}
+:is(.dark .popover-settings-container) {
+ --tw-brightness: brightness(0.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: 0.875rem;
+ line-height: 1.5rem;
+ font-weight: 700;
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+ transition-property:
+ color,
+ background-color,
+ border-color,
+ text-decoration-color,
+ fill,
+ stroke,
+ 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: 0.3s;
+ transition-timing-function: ease-in-out;
+}
+:is(.dark .popover-settings-text) {
+ --tw-text-opacity: 1;
+ color: rgb(235 239 244 / var(--tw-text-opacity));
+ opacity: 0.9;
+}
+.popover-settings-svg {
+ margin-left: 0.5rem;
+ height: 1.25rem;
+ width: 1.25rem;
+ cursor: pointer;
+ fill: #5e72e4;
+}
+.popover-settings-svg:hover {
+ --tw-brightness: brightness(0.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);
+}
+.active.settings-tabs-tab-btn {
+ position: relative;
+ z-index: 10;
+ margin-top: 0.25rem;
+ margin-bottom: 0.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: 0.75rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: -0.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);
+ --tw-brightness: brightness(0.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);
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+ transition-timing-function: ease-in;
+}
+.active.settings-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);
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+:is(.dark .active.settings-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 .active.settings-tabs-tab-btn:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(58 65 111 / var(--tw-bg-opacity));
+}
+.settings-tabs-tab-btn {
+ position: relative;
+ margin-top: 0.25rem;
+ margin-bottom: 0.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: 0.75rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: -0.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: 0.15s;
+ transition-timing-function: ease-in;
+}
+.settings-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);
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+:is(.dark .settings-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 .settings-tabs-tab-btn:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(58 65 111 / var(--tw-bg-opacity));
+}
+.settings-tabs-name {
+ padding-left: 0.75rem;
+ padding-right: 0.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: 0.3s;
+ transition-timing-function: ease-in-out;
+}
+:is(.dark .settings-tabs-name) {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+ opacity: 0.9;
+}
+.settings-tabs-popover-container {
+ position: absolute;
+ top: 60px;
+ left: 0;
+ z-index: 50;
+ min-width: 150px;
+ border-radius: 0.375rem;
+ --tw-bg-opacity: 1;
+ background-color: rgb(94 114 228 / var(--tw-bg-opacity));
+ padding: 0.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: 0.15s;
+}
+:is(.dark .settings-tabs-popover-container) {
+ --tw-brightness: brightness(0.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);
+}
+.settings-tabs-popover-text {
+ margin: 0;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ font-weight: 700;
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+}
+.settings-tabs-mobile-btn {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+ display: flex;
+ width: 100%;
+ cursor: pointer;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 0.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: 0.75rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ line-height: 1.5;
+ letter-spacing: -0.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: 0.15s;
+ transition-timing-function: ease-in;
+}
+.settings-tabs-mobile-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-mobile-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-mobile-btn:hover) {
+ --tw-brightness: brightness(0.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);
+}
+.settings-tabs-mobile-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: 0.3s;
+ transition-timing-function: ease-in-out;
+}
+:is(.dark .settings-tabs-mobile-btn-text) {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+ opacity: 0.9;
+}
+.active.settings-tabs-mobile-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: 0.5rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ line-height: 1.5;
+ letter-spacing: -0.025rem;
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+ transition-timing-function: ease-in;
+}
+.active.settings-tabs-mobile-dropdown-btn:hover {
+ --tw-brightness: brightness(0.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-mobile-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(210 214 218 / var(--tw-text-opacity));
+}
+:is(.dark .active.settings-tabs-mobile-dropdown-btn:hover) {
+ --tw-brightness: brightness(0.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-mobile-dropdown-btn {
+ border-top-left-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+ border-width: 1px;
+}
+.settings-tabs-mobile-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: 0.5rem 1.5rem;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ line-height: 1.5;
+ letter-spacing: -0.025rem;
+ --tw-text-opacity: 1;
+ color: rgb(73 80 87 / var(--tw-text-opacity));
+ transition-property: all;
+ transition-timing-function: ease;
+ transition-duration: 0.15s;
+ transition-timing-function: ease-in;
+}
+.settings-tabs-mobile-dropdown-btn:hover {
+ --tw-brightness: brightness(0.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-mobile-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(210 214 218 / var(--tw-text-opacity));
+}
+:is(.dark .settings-tabs-mobile-dropdown-btn:hover) {
+ --tw-brightness: brightness(0.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-letter\:absolute:first-letter {
+ position: absolute;
+}
+.first-letter\:w-full:first-letter {
+ width: 100%;
+}
+.placeholder\:text-gray-500::-moz-placeholder {
+ --tw-text-opacity: 1;
+ color: rgb(173 181 189 / var(--tw-text-opacity));
+}
+.placeholder\:text-gray-500::placeholder {
+ --tw-text-opacity: 1;
+ color: rgb(173 181 189 / var(--tw-text-opacity));
+}
+.before\:float-left:before {
+ content: var(--tw-content);
+ float: left;
+}
+.before\:pr-2:before {
+ content: var(--tw-content);
+ padding-right: 0.5rem;
+}
+.before\:text-white:before {
+ content: var(--tw-content);
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+}
+.before\:content-\[\'\/\'\]:before {
+ --tw-content: "/";
+ content: var(--tw-content);
+}
+.after\:absolute:after {
+ content: var(--tw-content);
+ position: absolute;
+}
+.after\:top-px:after {
+ content: var(--tw-content);
+ top: 1px;
+}
+.after\:float-right:after {
+ content: var(--tw-content);
+ float: right;
+}
+.after\:h-4:after {
+ content: var(--tw-content);
+ height: 1rem;
+}
+.after\:w-4:after {
+ content: var(--tw-content);
+ width: 1rem;
+}
+.after\:translate-x-px:after {
+ content: var(--tw-content);
+ --tw-translate-x: 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));
+}
+.after\:rounded-circle:after {
+ content: var(--tw-content);
+ border-radius: 50%;
+}
+.after\:bg-white:after {
+ content: var(--tw-content);
+ --tw-bg-opacity: 1;
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
+}
+.after\:pl-2:after {
+ content: var(--tw-content);
+ padding-left: 0.5rem;
+}
+.after\:text-gray-600:after {
+ content: var(--tw-content);
+ --tw-text-opacity: 1;
+ color: rgb(108 117 125 / var(--tw-text-opacity));
+}
+.after\:shadow-2xl:after {
+ content: var(--tw-content);
+ --tw-shadow: 0 0.3125rem 0.625rem 0 #0000001f;
+ --tw-shadow-colored: 0 0.3125rem 0.625rem 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);
+}
+.after\:duration-300:after {
+ content: var(--tw-content);
+ transition-duration: 0.3s;
+}
+.after\:content-\[\'\'\]:after {
+ --tw-content: "";
+ content: var(--tw-content);
+}
+.after\:content-\[\'\/\'\]:after {
+ --tw-content: "/";
+ content: var(--tw-content);
+}
+.checked\:z-0:checked {
+ z-index: 0;
+}
+.checked\:border-primary:checked {
+ --tw-border-opacity: 1;
+ border-color: rgb(11 85 119 / var(--tw-border-opacity));
+}
+.checked\:bg-primary:checked {
+ --tw-bg-opacity: 1;
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+}
+.checked\:bg-none:checked {
+ background-image: none;
+}
+.checked\:bg-right:checked {
+ background-position: 100%;
+}
+.checked\:after\:translate-x-5:checked:after {
+ --tw-translate-x: 1.25rem;
+}
+.checked\:after\:translate-x-5:checked:after,
+.checked\:after\:translate-x-5\.3:checked:after {
+ content: var(--tw-content);
+ 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));
+}
+.checked\:after\:translate-x-5\.3:checked:after {
+ --tw-translate-x: 1.3rem;
+}
+.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;
+}
+.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));
+}
+.hover\:-translate-y-0\.4:hover {
+ --tw-translate-y: -0.1rem;
+}
+.hover\:-translate-y-px:hover {
+ --tw-translate-y: -1px;
+}
+.hover\:-translate-y-px:hover,
+.hover\:scale-102: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));
+}
+.hover\:scale-102:hover {
+ --tw-scale-x: 1.02;
+ --tw-scale-y: 1.02;
+}
+.hover\:rounded-lg:hover {
+ border-radius: 0.5rem;
+}
+.hover\:bg-gray-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(235 239 244 / var(--tw-bg-opacity));
+}
+.hover\:bg-gray-300:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(210 214 218 / var(--tw-bg-opacity));
+}
+.hover\:bg-green-500\/80:hover {
+ background-color: #22c55ecc;
+}
+.hover\:bg-primary\/30:hover {
+ background-color: #0b55774d;
+}
+.hover\:bg-primary\/5:hover {
+ background-color: #0b55770d;
+}
+.hover\:bg-primary\/80:hover {
+ background-color: #0b5577cc;
+}
+.hover\:bg-red-500\/80:hover {
+ background-color: #f53939cc;
+}
+.hover\:bg-sky-500\/80:hover {
+ background-color: #0ea5e9cc;
+}
+.hover\:bg-yellow-500\/80:hover {
+ background-color: #fbb140cc;
+}
+.hover\:italic:hover {
+ font-style: italic;
+}
+.hover\:no-underline:hover {
+ text-decoration-line: none;
+}
+.hover\:opacity-80:hover {
+ opacity: 0.8;
+}
+.hover\:shadow-md:hover {
+ --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);
+}
+.hover\:brightness-75:hover {
+ --tw-brightness: brightness(0.75);
+}
+.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);
+}
+.hover\:brightness-90:hover {
+ --tw-brightness: brightness(0.9);
+}
+.hover\:brightness-95:hover {
+ --tw-brightness: brightness(0.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);
+}
+.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;
+ border-color: rgb(34 197 94 / var(--tw-border-opacity));
+}
+.focus\:border-primary:focus {
+ --tw-border-opacity: 1;
+ border-color: rgb(11 85 119 / var(--tw-border-opacity));
+}
+.focus\:bg-green-500\/80:focus {
+ background-color: #22c55ecc;
+}
+.focus\:bg-primary\/80:focus {
+ background-color: #0b5577cc;
+}
+.focus\:bg-red-500\/80:focus {
+ background-color: #f53939cc;
+}
+.focus\:bg-sky-500\/80:focus {
+ background-color: #0ea5e9cc;
+}
+.focus\:bg-yellow-500\/80:focus {
+ background-color: #fbb140cc;
+}
+.focus\:\!outline-red-500:focus {
+ outline-color: #f53939 !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;
+ border-color: rgb(34 197 94 / var(--tw-border-opacity));
+}
+.focus\:valid\:\!outline-red-500:valid:focus {
+ outline-color: #f53939 !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;
+ border-color: rgb(245 57 57 / var(--tw-border-opacity));
+}
+.focus\:file\:invalid\:border-red-500:invalid::file-selector-button:focus {
+ --tw-border-opacity: 1;
+ border-color: rgb(245 57 57 / var(--tw-border-opacity));
+}
+.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: 0.85;
+}
+.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;
+}
+.disabled\:border-gray-400:disabled {
+ --tw-border-opacity: 1;
+ border-color: rgb(206 212 218 / var(--tw-border-opacity));
+}
+.disabled\:bg-gray-400:disabled {
+ --tw-bg-opacity: 1;
+ background-color: rgb(206 212 218 / var(--tw-bg-opacity));
+}
+.disabled\:text-gray-700:disabled {
+ --tw-text-opacity: 1;
+ color: rgb(73 80 87 / var(--tw-text-opacity));
+}
+.disabled\:opacity-75:disabled {
+ opacity: 0.75;
+}
+.disabled\:hover\:translate-y-0: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 .dark\:inline) {
+ display: inline;
+}
+:is(.dark .dark\:hidden) {
+ display: none;
+}
+:is(.dark .dark\:border-gray-700) {
+ --tw-border-opacity: 1;
+ border-color: rgb(73 80 87 / var(--tw-border-opacity));
+}
+:is(.dark .dark\:border-slate-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(98 117 148 / var(--tw-border-opacity));
+}
+:is(.dark .dark\:border-slate-800) {
+ --tw-border-opacity: 1;
+ border-color: rgb(58 65 111 / var(--tw-border-opacity));
+}
+:is(.dark .dark\:bg-gray-800) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(37 47 64 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-green-500\/90) {
+ background-color: #22c55ee6;
+}
+:is(.dark .dark\:bg-primary) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-primary\/50) {
+ background-color: #0b557780;
+}
+:is(.dark .dark\:bg-slate-700) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(52 71 103 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-slate-700\/50) {
+ background-color: #34476780;
+}
+:is(.dark .dark\:bg-slate-850) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(17 28 68 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-slate-900) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(5 17 57 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-slate-900\/30) {
+ background-color: #0511394d;
+}
+:is(.dark .dark\:bg-gray-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(108 117 125 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-slate-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(98 117 148 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-slate-800) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(58 65 111 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:bg-gradient-to-r) {
+ background-image: linear-gradient(to right, var(--tw-gradient-stops));
+}
+:is(.dark .dark\:from-transparent) {
+ --tw-gradient-from: #0000 var(--tw-gradient-from-position);
+ --tw-gradient-to: #0000 var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
+}
+:is(.dark .dark\:via-white) {
+ --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);
+}
+:is(.dark .dark\:to-transparent) {
+ --tw-gradient-to: #0000 var(--tw-gradient-to-position);
+}
+:is(.dark .dark\:fill-blue-500) {
+ fill: #5e72e4;
+}
+:is(.dark .dark\:fill-gray-300) {
+ fill: #d2d6da;
+}
+:is(.dark .dark\:fill-gray-500) {
+ fill: #adb5bd;
+}
+:is(.dark .dark\:fill-gray-600) {
+ fill: #6c757d;
+}
+:is(.dark .dark\:fill-gray-50) {
+ fill: #f8f9fa;
+}
+:is(.dark .dark\:stroke-gray-600) {
+ stroke: #6c757d;
+}
+:is(.dark .dark\:stroke-gray-50) {
+ stroke: #f8f9fa;
+}
+:is(.dark .dark\:stroke-gray-400) {
+ stroke: #ced4da;
+}
+:is(.dark .dark\:text-gray-100) {
+ --tw-text-opacity: 1;
+ color: rgb(235 239 244 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-gray-200) {
+ --tw-text-opacity: 1;
+ color: rgb(233 236 239 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-gray-300) {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-gray-400) {
+ --tw-text-opacity: 1;
+ color: rgb(206 212 218 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-gray-500) {
+ --tw-text-opacity: 1;
+ color: rgb(173 181 189 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-red-500) {
+ --tw-text-opacity: 1;
+ color: rgb(245 57 57 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-white) {
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:text-white\/80) {
+ color: #fffc;
+}
+:is(.dark .dark\:text-white\/90) {
+ color: #ffffffe6;
+}
+:is(.dark .dark\:opacity-60) {
+ opacity: 0.6;
+}
+:is(.dark .dark\:opacity-75) {
+ opacity: 0.75;
+}
+:is(.dark .dark\:opacity-80) {
+ opacity: 0.8;
+}
+:is(.dark .dark\:opacity-90) {
+ opacity: 0.9;
+}
+:is(.dark .dark\:shadow-dark-xl) {
+ --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);
+}
+: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);
+}
+:is(.dark .dark\:shadow-none) {
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+}
+:is(.dark .dark\:brightness-110) {
+ --tw-brightness: brightness(1.1);
+}
+: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);
+}
+:is(.dark .dark\:brightness-125) {
+ --tw-brightness: brightness(1.25);
+}
+:is(.dark .dark\:brightness-150) {
+ --tw-brightness: brightness(1.5);
+}
+:is(.dark .dark\:brightness-150),
+:is(.dark .dark\:brightness-90) {
+ 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 .dark\:brightness-90) {
+ --tw-brightness: brightness(0.9);
+}
+:is(.dark .dark\:brightness-95) {
+ --tw-brightness: brightness(0.95);
+}
+:is(.dark .dark\:brightness-95),
+:is(.dark .dark\:brightness-\[0\.885\]) {
+ 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 .dark\:brightness-\[0\.885\]) {
+ --tw-brightness: brightness(0.885);
+}
+:is(.dark .dark\:after\:text-gray-500):after {
+ content: var(--tw-content);
+ --tw-text-opacity: 1;
+ color: rgb(173 181 189 / var(--tw-text-opacity));
+}
+:is(.dark .dark\:checked\:border-primary:checked) {
+ --tw-border-opacity: 1;
+ border-color: rgb(11 85 119 / var(--tw-border-opacity));
+}
+:is(.dark .dark\:checked\:bg-primary:checked) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:hover\:bg-primary\/20:hover) {
+ background-color: #0b557733;
+}
+:is(.dark .dark\:hover\:bg-primary\/60:hover) {
+ background-color: #0b557799;
+}
+:is(.dark .dark\:hover\:bg-slate-700\/50:hover) {
+ background-color: #34476780;
+}
+:is(.dark .dark\:hover\:bg-slate-800:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(58 65 111 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:hover\:brightness-100:hover) {
+ --tw-brightness: brightness(1);
+}
+: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);
+}
+:is(.dark .dark\:hover\:brightness-105:hover) {
+ --tw-brightness: brightness(1.05);
+}
+:is(.dark .dark\:hover\:brightness-90:hover) {
+ --tw-brightness: brightness(0.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 .dark\:disabled\:border-gray-800:disabled) {
+ --tw-border-opacity: 1;
+ border-color: rgb(37 47 64 / var(--tw-border-opacity));
+}
+:is(.dark .dark\:disabled\:bg-gray-800:disabled) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(37 47 64 / var(--tw-bg-opacity));
+}
+:is(.dark .dark\:disabled\:text-gray-300:disabled) {
+ --tw-text-opacity: 1;
+ color: rgb(210 214 218 / var(--tw-text-opacity));
+}
+@media (min-width: 576px) {
+ .sm\:right-24 {
+ right: 6rem;
+ }
+ .sm\:right-40 {
+ right: 10rem;
+ }
+ .sm\:right-6 {
+ right: 1.5rem;
+ }
+ .sm\:top-2 {
+ top: 0.5rem;
+ }
+ .sm\:top-\[4\.5rem\] {
+ top: 4.5rem;
+ }
+ .sm\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+ .sm\:col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+ .sm\:col-start-5 {
+ grid-column-start: 5;
+ }
+ .sm\:mx-4 {
+ margin-left: 1rem;
+ margin-right: 1rem;
+ }
+ .sm\:mx-6 {
+ margin-left: 1.5rem;
+ margin-right: 1.5rem;
+ }
+ .sm\:ml-1 {
+ margin-left: 0.25rem;
+ }
+ .sm\:mr-16 {
+ margin-right: 4rem;
+ }
+ .sm\:h-10 {
+ height: 2.5rem;
+ }
+ .sm\:h-14 {
+ height: 3.5rem;
+ }
+ .sm\:h-7 {
+ height: 1.75rem;
+ }
+ .sm\:max-h-125 {
+ max-height: 31.25rem;
+ }
+ .sm\:max-h-28 {
+ max-height: 7rem;
+ }
+ .sm\:w-36 {
+ width: 9rem;
+ }
+ .sm\:w-50 {
+ width: 12.5rem;
+ }
+ .sm\:w-7 {
+ width: 1.75rem;
+ }
+ .sm\:min-w-\[500px\] {
+ min-width: 500px;
+ }
+ .sm\:scale-100 {
+ --tw-scale-x: 1;
+ --tw-scale-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));
+ }
+ .sm\:flex-row {
+ flex-direction: row;
+ }
+ .sm\:justify-end {
+ justify-content: flex-end;
+ }
+ .sm\:justify-items-start {
+ justify-items: start;
+ }
+ .sm\:gap-4 {
+ gap: 1rem;
+ }
+ .sm\:px-12 {
+ padding-left: 3rem;
+ padding-right: 3rem;
+ }
+ .sm\:px-4 {
+ padding-left: 1rem;
+ padding-right: 1rem;
+ }
+ .sm\:px-6 {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ }
+ .sm\:py-0 {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+ .sm\:pt-6 {
+ padding-top: 1.5rem;
+ }
+ .sm\:text-left {
+ text-align: left;
+ }
+}
+@media (min-width: 768px) {
+ .md\:right-8 {
+ right: 2rem;
+ }
+ .md\:top-\[40\%\] {
+ top: 40%;
+ }
+ .md\:right-12 {
+ right: 3rem;
+ }
+ .md\:right-16 {
+ right: 4rem;
+ }
+ .md\:right-14 {
+ right: 3.5rem;
+ }
+ .md\:right-\[3\.75rem\] {
+ right: 3.75rem;
+ }
+ .md\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+ .md\:col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+ .md\:col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+ .md\:col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+ .md\:col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+ .md\:mx-6 {
+ margin-left: 1.5rem;
+ margin-right: 1.5rem;
+ }
+ .md\:my-3 {
+ margin-top: 0.75rem;
+ margin-bottom: 0.75rem;
+ }
+ .md\:mb-0 {
+ margin-bottom: 0;
+ }
+ .md\:mb-3 {
+ margin-bottom: 0.75rem;
+ }
+ .md\:mb-8 {
+ margin-bottom: 2rem;
+ }
+ .md\:mr-3 {
+ margin-right: 0.75rem;
+ }
+ .md\:mt-0 {
+ margin-top: 0;
+ }
+ .md\:mt-6 {
+ margin-top: 1.5rem;
+ }
+ .md\:block {
+ display: block;
+ }
+ .md\:hidden {
+ display: none;
+ }
+ .md\:h-16 {
+ height: 4rem;
+ }
+ .md\:max-h-160 {
+ max-height: 40rem;
+ }
+ .md\:min-h-75-screen {
+ min-height: 75vh;
+ }
+ .md\:w-1\/2 {
+ width: 50%;
+ }
+ .md\:w-60 {
+ width: 15rem;
+ }
+ .md\:max-w-\[600px\] {
+ max-width: 600px;
+ }
+ .md\:justify-end {
+ justify-content: flex-end;
+ }
+ .md\:gap-x-6 {
+ -moz-column-gap: 1.5rem;
+ column-gap: 1.5rem;
+ }
+ .md\:px-3 {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem;
+ }
+ .md\:px-4 {
+ padding-left: 1rem;
+ padding-right: 1rem;
+ }
+ .md\:px-6 {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ }
+ .md\:py-2 {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ }
+ .md\:py-4 {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ }
+ .md\:text-base {
+ font-size: 1rem;
+ line-height: 1.5rem;
+ }
+}
+@media (min-width: 992px) {
+ .lg\:relative {
+ position: relative;
+ }
+ .lg\:order-1 {
+ order: 1;
+ }
+ .lg\:order-2 {
+ order: 2;
+ }
+ .lg\:col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+ .lg\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+ .lg\:col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+ .lg\:col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+ .lg\:mx-0 {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ .lg\:mx-8 {
+ margin-left: 2rem;
+ margin-right: 2rem;
+ }
+ .lg\:my-3 {
+ margin-top: 0.75rem;
+ margin-bottom: 0.75rem;
+ }
+ .lg\:mt-0 {
+ margin-top: 0;
+ }
+ .lg\:mt-4 {
+ margin-top: 1rem;
+ }
+ .lg\:block {
+ display: block;
+ }
+ .lg\:flex {
+ display: flex;
+ }
+ .lg\:hidden {
+ display: none;
+ }
+ .lg\:h-24 {
+ height: 6rem;
+ }
+ .lg\:h-9 {
+ height: 2.25rem;
+ }
+ .lg\:w-80 {
+ width: 20rem;
+ }
+ .lg\:w-9 {
+ width: 2.25rem;
+ }
+ .lg\:flex-row {
+ flex-direction: row;
+ }
+ .lg\:flex-nowrap {
+ flex-wrap: nowrap;
+ }
+ .lg\:justify-start {
+ justify-content: flex-start;
+ }
+ .lg\:justify-end {
+ justify-content: flex-end;
+ }
+ .lg\:justify-between {
+ justify-content: space-between;
+ }
+ .lg\:gap-6 {
+ gap: 1.5rem;
+ }
+ .lg\:bg-gray-50 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(248 249 250 / var(--tw-bg-opacity));
+ }
+ .lg\:px-6 {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ }
+ .lg\:pb-1 {
+ padding-bottom: 0.25rem;
+ }
+ .lg\:text-left {
+ text-align: left;
+ }
+}
+@media (min-width: 1200px) {
+ .xl\:left-0 {
+ left: 0;
+ }
+ .xl\:right-24 {
+ right: 6rem;
+ }
+ .xl\:right-6 {
+ right: 1.5rem;
+ }
+ .xl\:ml-6 {
+ margin-left: 1.5rem;
+ }
+ .xl\:ml-68 {
+ margin-left: 17rem;
+ }
+ .xl\:hidden {
+ display: none;
+ }
+ .xl\:translate-x-0 {
+ --tw-translate-x: 0px;
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y))
+ rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
+ scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
+ }
+ .xl\:p-1 {
+ padding: 0.25rem;
+ }
+ .xl\:p-1\.5 {
+ padding: 0.375rem;
+ }
+ .xl\:pl-75 {
+ padding-left: 18.75rem;
+ }
+ .xl\:text-base {
+ font-size: 1rem;
+ line-height: 1.5rem;
+ }
+}
+@media (min-width: 1320px) {
+ .\32xl\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+ .\32xl\:col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+ .\32xl\:mx-6 {
+ margin-left: 1.5rem;
+ margin-right: 1.5rem;
+ }
+ .\32xl\:my-3 {
+ margin-top: 0.75rem;
+ margin-bottom: 0.75rem;
+ }
+}
+@media (min-width: 1920px) {
+ .\33xl\:col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+ .\33xl\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+ .\33xl\:col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+}
+@media (min-width: 340px) {
+ .xs\:flex {
+ display: flex;
+ }
+ .xs\:flex-row {
+ flex-direction: row;
+ }
+ .xs\:items-center {
+ align-items: center;
+ }
+ .xs\:justify-start {
+ justify-content: flex-start;
+ }
+ .xs\:pl-2 {
+ padding-left: 0.5rem;
+ }
+ .xs\:text-sm {
+ font-size: 0.875rem;
+ line-height: 1.5rem;
+ }
+}
+.\[\&\>\*\]\:bg-primary > * {
+ --tw-bg-opacity: 1;
+ background-color: rgb(11 85 119 / var(--tw-bg-opacity));
+}
diff --git a/src/ui/static/css/datepicker-foundation.css b/src/ui/static/css/datepicker-foundation.css
index d81e212ab..8831cf0c0 100644
--- a/src/ui/static/css/datepicker-foundation.css
+++ b/src/ui/static/css/datepicker-foundation.css
@@ -1,3 +1,3 @@
.datepicker{display:none}.datepicker.active{display:block}.datepicker-dropdown{position:absolute;top:0;left:0;z-index:100;padding-top:4px}.datepicker-dropdown.datepicker-orient-top{padding-top:0;padding-bottom:4px}.datepicker-picker{display:inline-block;border-radius:0;background-color:#fefefe}.datepicker-dropdown .datepicker-picker{box-shadow:0 0 0 1px #cacaca}.datepicker-picker span{display:block;flex:1;border:0;border-radius:0;cursor:default;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker-main{padding:2px}.datepicker-footer{box-shadow:inset 0 1px 1px rgba(10,10,10,.1);background-color:#e6e6e6}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap;width:15.75rem}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%;height:4.5rem;line-height:4.5rem}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-title{box-shadow:inset 0 -1px 1px rgba(10,10,10,.1);background-color:#e6e6e6;padding:.375rem .75rem;text-align:center;font-weight:700}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .button{margin:.4rem 0;background-color:#fefefe;color:#707070}.datepicker-controls .button:focus,.datepicker-controls .button:hover{background-color:#d8d8d8}.datepicker-controls .button:focus[disabled],.datepicker-controls .button:hover[disabled]{opacity:.25;background-color:#fefefe;margin-top:.4rem;margin-bottom:.4rem;color:#707070}.datepicker-header .datepicker-controls .button{border-color:transparent;font-weight:700}.datepicker-footer .datepicker-controls .button{margin:calc(.375rem - 1px) .375rem;border-radius:0;width:100%;font-size:.75rem}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .next-btn,.datepicker-controls .prev-btn{padding-right:.375rem;padding-left:.375rem;width:2.25rem}.datepicker-controls .next-btn.disabled,.datepicker-controls .prev-btn.disabled{visibility:hidden}.datepicker-view .dow{height:1.5rem;line-height:1.5rem;font-size:.875rem;font-weight:700;color:#064059}.datepicker-view .week{width:2.25rem;color:#8a8a8a;font-size:.75rem}@media (max-width:22.5rem){.datepicker-view .week{width:1.96875rem}.calendar-weeks+.days .datepicker-grid{width:13.78125rem}}.datepicker-cell:not(.disabled):hover{background-color:#f8f8f8;cursor:pointer}.datepicker-cell.focused:not(.selected),.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused,.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(
.disabled
-):hover{background-color:#f1f1f1}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#1779ba;color:#fefefe;font-weight:semibold}.datepicker-cell.disabled{color:#e6e6e6}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#cacaca}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e5e5e5}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){border-radius:0;background-color:#f7f7f7}.datepicker-cell.today:not(.selected){background-color:#d7ecfa}.datepicker-cell.today:not(.selected):not(.disabled){color:#8a8a8a}.datepicker-cell.today.focused:not(.selected){background-color:#cbe7f9}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#767676;color:#fefefe}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#707070}.datepicker-cell.range-end,.datepicker-cell.range-start{border-radius:0}.datepicker-cell.range{border-radius:0;background-color:#e6e6e6}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#e0e0e0}.datepicker-cell.range.disabled{color:#cdcdcd}.datepicker-cell.range.focused{background-color:#d9d9d9}.datepicker-cell.range.today{background-color:#b3dbf6}.datepicker-input.in-edit{border-color:#a4a4a4}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em rgba(164,164,164,.2)}
\ No newline at end of file
+):hover{background-color:#f1f1f1}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#1779ba;color:#fefefe;font-weight:semibold}.datepicker-cell.disabled{color:#e6e6e6}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#cacaca}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e5e5e5}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){border-radius:0;background-color:#f7f7f7}.datepicker-cell.today:not(.selected){background-color:#d7ecfa}.datepicker-cell.today:not(.selected):not(.disabled){color:#8a8a8a}.datepicker-cell.today.focused:not(.selected){background-color:#cbe7f9}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#767676;color:#fefefe}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#707070}.datepicker-cell.range-end,.datepicker-cell.range-start{border-radius:0}.datepicker-cell.range{border-radius:0;background-color:#e6e6e6}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#e0e0e0}.datepicker-cell.range.disabled{color:#cdcdcd}.datepicker-cell.range.focused{background-color:#d9d9d9}.datepicker-cell.range.today{background-color:#b3dbf6}.datepicker-input.in-edit{border-color:#a4a4a4}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em rgba(164,164,164,.2)}
diff --git a/src/ui/static/css/flatpickr.css b/src/ui/static/css/flatpickr.css
index 61628659e..2d0f7af19 100644
--- a/src/ui/static/css/flatpickr.css
+++ b/src/ui/static/css/flatpickr.css
@@ -1 +1 @@
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time,.numInputWrapper{height:auto}.flatpickr-calendar{background:0 0;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-box-shadow:0 3px 13px rgba(0,0,0,.08);box-shadow:0 3px 13px rgba(0,0,0,.08)}.flatpickr-wrapper,.numInputWrapper input,.numInputWrapper span{display:inline-block}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown;animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-innerContainer{border-bottom:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid rgba(72,72,72,.2);border:1px solid rgba(72,72,72,.2)}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i,.flatpickr-wrapper,.numInputWrapper{position:relative}.flatpickr-calendar.arrowRight:after,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar.arrowCenter:after,.flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:rgba(72,72,72,.2)}.flatpickr-calendar.arrowTop:after{border-bottom-color:#085577}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:rgba(72,72,72,.2)}.flatpickr-calendar.arrowBottom:after{border-top-color:#085577}.flatpickr-calendar:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month input.cur-year:focus,.flatpickr-days:focus{outline:0}.flatpickr-months,.flatpickr-weekdays{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{border-radius:5px 5px 0 0;background:#085577;color:#fff;fill:#fff;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#fff;fill:#fff}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#bbb}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#40bb6b}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(72,72,72,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(72,72,72,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(72,72,72,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(255,255,255,0.5)}.flatpickr-current-month .flatpickr-monthDropdown-months:hover,.flatpickr-current-month span.cur-month:hover,.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{color:inherit;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;padding:0 0 0 .5ch;vertical-align:initial}.flatpickr-current-month .numInputWrapper{width:6ch;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#fff}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#fff}.flatpickr-current-month input.cur-year{background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:text;margin:0;display:inline-block;border:0;border-radius:0;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(255,255,255,.5);background:0 0;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:#085577;border:none;border-radius:0;box-sizing:border-box;cursor:pointer;margin:-1px 0 0;outline:0;position:relative;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:#085577;outline:0;padding:0}.flatpickr-weekdays{background:#085577;text-align:center;overflow:hidden;width:100%;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:#085577;color:#fff;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;border-left:1px solid rgba(72,72,72,.2);border-right:1px solid rgba(72,72,72,.2)}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 rgba(72,72,72,.2);box-shadow:-1px 0 0 rgba(72,72,72,.2)}.flatpickr-day{background:0 0;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#484848;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e2e2e2;border-color:#e2e2e2}.flatpickr-day.today{border-color:#bbb}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#bbb;background:#bbb;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#40bb6b;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#40bb6b}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n + 1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n + 1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n + 1)){-webkit-box-shadow:-10px 0 0 #085577;box-shadow:-10px 0 0 #085577}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e2e2e2,5px 0 0 #e2e2e2;box-shadow:-5px 0 0 #e2e2e2,5px 0 0 #e2e2e2}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(72,72,72,.3);background:0 0;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(72,72,72,.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #085577,5px 0 0 #085577;box-shadow:-5px 0 0 #085577,5px 0 0 #085577}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;border-left:1px solid rgba(72,72,72,.2)}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(72,72,72,.3);background:0 0;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;background:#fff;border-bottom:1px solid rgba(72,72,72,.2)}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:#fff;border-radius:0 0 5px 5px}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#484848}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#484848}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#484848;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:#484848;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eaeaea}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
\ No newline at end of file
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time,.numInputWrapper{height:auto}.flatpickr-calendar{background:0 0;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-box-shadow:0 3px 13px rgba(0,0,0,.08);box-shadow:0 3px 13px rgba(0,0,0,.08)}.flatpickr-wrapper,.numInputWrapper input,.numInputWrapper span{display:inline-block}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown;animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-innerContainer{border-bottom:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid rgba(72,72,72,.2);border:1px solid rgba(72,72,72,.2)}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i,.flatpickr-wrapper,.numInputWrapper{position:relative}.flatpickr-calendar.arrowRight:after,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar.arrowCenter:after,.flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:rgba(72,72,72,.2)}.flatpickr-calendar.arrowTop:after{border-bottom-color:#085577}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:rgba(72,72,72,.2)}.flatpickr-calendar.arrowBottom:after{border-top-color:#085577}.flatpickr-calendar:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month input.cur-year:focus,.flatpickr-days:focus{outline:0}.flatpickr-months,.flatpickr-weekdays{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{border-radius:5px 5px 0 0;background:#085577;color:#fff;fill:#fff;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#fff;fill:#fff}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#bbb}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#40bb6b}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(72,72,72,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(72,72,72,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(72,72,72,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(255,255,255,0.5)}.flatpickr-current-month .flatpickr-monthDropdown-months:hover,.flatpickr-current-month span.cur-month:hover,.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{color:inherit;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;padding:0 0 0 .5ch;vertical-align:initial}.flatpickr-current-month .numInputWrapper{width:6ch;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#fff}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#fff}.flatpickr-current-month input.cur-year{background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:text;margin:0;display:inline-block;border:0;border-radius:0;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(255,255,255,.5);background:0 0;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:#085577;border:none;border-radius:0;box-sizing:border-box;cursor:pointer;margin:-1px 0 0;outline:0;position:relative;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:#085577;outline:0;padding:0}.flatpickr-weekdays{background:#085577;text-align:center;overflow:hidden;width:100%;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:#085577;color:#fff;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;border-left:1px solid rgba(72,72,72,.2);border-right:1px solid rgba(72,72,72,.2)}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 rgba(72,72,72,.2);box-shadow:-1px 0 0 rgba(72,72,72,.2)}.flatpickr-day{background:0 0;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#484848;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e2e2e2;border-color:#e2e2e2}.flatpickr-day.today{border-color:#bbb}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#bbb;background:#bbb;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#40bb6b;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#40bb6b}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n + 1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n + 1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n + 1)){-webkit-box-shadow:-10px 0 0 #085577;box-shadow:-10px 0 0 #085577}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e2e2e2,5px 0 0 #e2e2e2;box-shadow:-5px 0 0 #e2e2e2,5px 0 0 #e2e2e2}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(72,72,72,.3);background:0 0;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(72,72,72,.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #085577,5px 0 0 #085577;box-shadow:-5px 0 0 #085577,5px 0 0 #085577}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;border-left:1px solid rgba(72,72,72,.2)}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(72,72,72,.3);background:0 0;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;background:#fff;border-bottom:1px solid rgba(72,72,72,.2)}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:#fff;border-radius:0 0 5px 5px}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#484848}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#484848}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#484848;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:#484848;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eaeaea}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
diff --git a/src/ui/static/css/flatpickr.dark.css b/src/ui/static/css/flatpickr.dark.css
index af890f028..8e93dd540 100644
--- a/src/ui/static/css/flatpickr.dark.css
+++ b/src/ui/static/css/flatpickr.dark.css
@@ -1 +1 @@
-.dark .flatpickr-calendar{background:#3f4458;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-box-shadow:1px 0 0 #20222c,-1px 0 0 #20222c,0 1px 0 #20222c,0 -1px 0 #20222c,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 0 #20222c,-1px 0 0 #20222c,0 1px 0 #20222c,0 -1px 0 #20222c,0 3px 13px rgba(0,0,0,.08)}.dark .flatpickr-calendar.inline,.dark .flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.dark .flatpickr-calendar.open{display:inline-block;z-index:99999}.dark .flatpickr-calendar.animate.open{-webkit-animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown;animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown}.dark .flatpickr-calendar.inline{display:block;position:relative;top:2px}.dark .flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.dark .flatpickr-calendar.static.open{z-index:999;display:block}.dark .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.dark .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.dark .flatpickr-calendar .hasTime .dayContainer,.dark .flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.dark .flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.dark .flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #20222c}.dark .flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.dark .flatpickr-calendar:after,.dark .flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.dark .flatpickr-calendar.arrowRight:after,.dark .flatpickr-calendar.arrowRight:before,.dark .flatpickr-calendar.rightMost:after,.dark .flatpickr-calendar.rightMost:before{left:auto;right:22px}.dark .flatpickr-calendar.arrowCenter:after,.dark .flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.dark .flatpickr-calendar:before{border-width:5px;margin:0 -5px}.dark .flatpickr-calendar:after{border-width:4px;margin:0 -4px}.dark .flatpickr-calendar.arrowTop:after,.dark .flatpickr-calendar.arrowTop:before{bottom:100%}.dark .flatpickr-calendar.arrowTop:before{border-bottom-color:#20222c}.dark .flatpickr-calendar.arrowTop:after{border-bottom-color:#3f4458}.dark .flatpickr-calendar.arrowBottom:after,.dark .flatpickr-calendar.arrowBottom:before{top:100%}.dark .flatpickr-calendar.arrowBottom:before{border-top-color:#20222c}.dark .flatpickr-calendar.arrowBottom:after{border-top-color:#3f4458}.dark .flatpickr-calendar:focus,.dark .flatpickr-current-month .flatpickr-monthDropdown-months:active,.dark .flatpickr-current-month .flatpickr-monthDropdown-months:focus,.dark .flatpickr-current-month input.cur-year:focus,.dark .flatpickr-days:focus{outline:0}.dark .flatpickr-wrapper{position:relative;display:inline-block}.dark .flatpickr-months,.dark .flatpickr-weekdays{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox}.dark .flatpickr-months{display:flex}.dark .flatpickr-months .flatpickr-month{background:#085577;color:#fff;fill:#fff;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.dark .flatpickr-months .flatpickr-next-month,.dark .flatpickr-months .flatpickr-prev-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#fff;fill:#fff}.dark .flatpickr-months .flatpickr-next-month.flatpickr-disabled,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.dark .flatpickr-months .flatpickr-next-month i,.dark .flatpickr-months .flatpickr-prev-month i{position:relative}.dark .flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.dark .flatpickr-months .flatpickr-next-month.flatpickr-next-month,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.dark .flatpickr-months .flatpickr-next-month:hover,.dark .flatpickr-months .flatpickr-prev-month:hover{color:#eee}.dark .flatpickr-months .flatpickr-prev-month:hover svg,.dark.flatpickr-months .flatpickr-next-month:hover svg{fill:#40bb6b}.dark .flatpickr-months .flatpickr-next-month svg,.dark .flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.dark .flatpickr-months .flatpickr-next-month svg path,.dark .flatpickr-months .flatpickr-prev-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.dark .numInputWrapper{position:relative;height:auto}.dark .numInputWrapper input,.dark .numInputWrapper span{display:inline-block}.dark .numInputWrapper input{width:100%}.dark .numInputWrapper input::-ms-clear{display:none}.dark .numInputWrapper input::-webkit-inner-spin-button,.dark .numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.dark .numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(255,255,255,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.dark .numInputWrapper span:hover{background:rgba(192,187,167,.1)}.dark .numInputWrapper span:active{background:rgba(192,187,167,.2)}.dark .numInputWrapper span:after{display:block;content:"";position:absolute}.dark .numInputWrapper span.arrowUp{top:0;border-bottom:0}.dark .numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(255,255,255,.6);top:26%}.dark .numInputWrapper span.arrowDown{top:50%}.dark .numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.6);top:40%}.dark .numInputWrapper span svg{width:inherit;height:auto}.dark .numInputWrapper span svg path{fill:rgba(255,255,255,0.5)}.dark .flatpickr-current-month .flatpickr-monthDropdown-months:hover,.dark .flatpickr-current-month span.cur-month:hover,.dark .numInputWrapper:hover{background:rgba(192,187,167,.05)}.dark .numInputWrapper:hover span{opacity:1}.dark .flatpickr-current-month{font-size:135%;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.dark .flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.dark .flatpickr-current-month .flatpickr-monthDropdown-months,.dark .flatpickr-current-month input.cur-year{color:inherit;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;padding:0 0 0 .5ch;vertical-align:initial}.dark .flatpickr-current-month .numInputWrapper{width:6ch;display:inline-block}.dark .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#fff}.dark .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#fff}.dark .flatpickr-current-month input.cur-year{background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:text;margin:0;display:inline-block;border:0;border-radius:0;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.dark .flatpickr-current-month input.cur-year[disabled],.dark .flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(255,255,255,.5);background:0 0;pointer-events:none}.dark .flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:#085577;border:none;border-radius:0;box-sizing:border-box;cursor:pointer;margin:-1px 0 0;outline:0;position:relative;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.dark .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:#085577;outline:0;padding:0}.dark .flatpickr-weekdays{background:#085577;text-align:center;overflow:hidden;width:100%;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.dark .flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.dark span.flatpickr-weekday{cursor:default;font-size:90%;background:#085577;color:#fff;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dark .dayContainer,.flatpickr-weeks{padding:1px 0 0}.dark .flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;border:none}.dark .dayContainer{background:#1e3969;padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dark .dayContainer+.dark .dayContainer{-webkit-box-shadow:-1px 0 0 #20222c;box-shadow:-1px 0 0 #20222c}.dark .flatpickr-day{background:0 0;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:rgba(255,255,255,.95);cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.dark .flatpickr-day.inRange,.dark .flatpickr-day.nextMonthDay.inRange,.dark .flatpickr-day.nextMonthDay.today.inRange,.dark .flatpickr-day.nextMonthDay:focus,.dark .flatpickr-day.nextMonthDay:hover,.dark .flatpickr-day.prevMonthDay.inRange,.dark .flatpickr-day.prevMonthDay.today.inRange,.dark .flatpickr-day.prevMonthDay:focus,.dark .flatpickr-day.prevMonthDay:hover,.dark .flatpickr-day.today.inRange,.dark .flatpickr-day:focus,.dark .flatpickr-day:hover{cursor:pointer;outline:0;background:#646c8c;border-color:#646c8c}.dark .flatpickr-day.today{border-color:#eee}.dark .flatpickr-day.today:focus,.dark .flatpickr-day.today:hover{border-color:#eee;background:#eee;color:#3f4458}.dark .flatpickr-day.endRange,.dark .flatpickr-day.endRange.inRange,.dark .flatpickr-day.endRange.nextMonthDay,.dark .flatpickr-day.endRange.prevMonthDay,.dark .flatpickr-day.endRange:focus,.dark .flatpickr-day.endRange:hover,.dark .flatpickr-day.selected,.dark .flatpickr-day.selected.inRange,.dark .flatpickr-day.selected.nextMonthDay,.dark .flatpickr-day.selected.prevMonthDay,.dark .flatpickr-day.selected:focus,.dark .flatpickr-day.selected:hover,.dark .flatpickr-day.startRange,.dark .flatpickr-day.startRange.inRange,.dark .flatpickr-day.startRange.nextMonthDay,.dark .flatpickr-day.startRange.prevMonthDay,.dark .flatpickr-day.startRange:focus,.dark .flatpickr-day.startRange:hover{background:#40bb6b;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#40bb6b}.dark .flatpickr-day.endRange.startRange,.dark .flatpickr-day.selected.startRange,.dark .flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.dark .flatpickr-day.endRange.endRange,.dark .flatpickr-day.selected.endRange,.dark .flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.dark .flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n + 1)),.dark .flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n + 1)),.dark .flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n + 1)){-webkit-box-shadow:-10px 0 0 #80cbc4;box-shadow:-10px 0 0 #80cbc4}.dark .flatpickr-day.endRange.startRange.endRange,.dark .flatpickr-day.selected.startRange.endRange,.dark .flatpickr-day.startRange.startRange.endRange{border-radius:50px}.dark .flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #646c8c,5px 0 0 #646c8c;box-shadow:-5px 0 0 #646c8c,5px 0 0 #646c8c}.dark .flatpickr-day.flatpickr-disabled,.dark .flatpickr-day.flatpickr-disabled:hover,.dark .flatpickr-day.nextMonthDay,.dark .flatpickr-day.notAllowed,.dark .flatpickr-day.notAllowed.nextMonthDay,.dark .flatpickr-day.notAllowed.prevMonthDay,.dark .flatpickr-day.prevMonthDay{color:rgba(255,255,255,.3);background:0 0;border-color:transparent;cursor:default}.dark .flatpickr-day.flatpickr-disabled,.dark .flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(255,255,255,.1)}.dark .flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #80cbc4,5px 0 0 #80cbc4;box-shadow:-5px 0 0 #80cbc4,5px 0 0 #80cbc4}.dark .flatpickr-day.hidden{visibility:hidden}.dark .rangeMode .flatpickr-day{margin-top:1px}.dark .flatpickr-weekwrapper{float:left}.dark .flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #20222c;box-shadow:1px 0 0 #20222c}.dark .flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.dark .flatpickr-weekwrapper span.flatpickr-day,.dark .flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(255,255,255,.3);background:0 0;cursor:default;border:none}.dark .flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;border-bottom:none}.dark .flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.dark .flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.dark .flatpickr-time:after{content:"";display:table;clear:both}.dark .flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.dark .flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(255,255,255,.95)}.dark .flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:rgba(255,255,255,.95)}.dark .flatpickr-time.hasSeconds .numInputWrapper{width:26%}.dark .flatpickr-time.time24hr .numInputWrapper{width:49%}.dark .flatpickr-time input{background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:rgba(255,255,255,.95);font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.dark .flatpickr-time input.flatpickr-hour{font-weight:700}.dark .flatpickr-time input.flatpickr-minute,.dark .flatpickr-time input.flatpickr-second{font-weight:400}.dark .flatpickr-time input:focus{outline:0;border:0}.dark .flatpickr-time .flatpickr-am-pm,.dark .flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:rgba(255,255,255,.95);font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.dark .flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.dark .flatpickr-time .flatpickr-am-pm:focus,.dark .flatpickr-time .flatpickr-am-pm:hover,.dark .flatpickr-time input:focus,.dark .flatpickr-time input:hover{background:#6a7395}.dark .flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
\ No newline at end of file
+.dark .flatpickr-calendar{background:#3f4458;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-box-shadow:1px 0 0 #20222c,-1px 0 0 #20222c,0 1px 0 #20222c,0 -1px 0 #20222c,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 0 #20222c,-1px 0 0 #20222c,0 1px 0 #20222c,0 -1px 0 #20222c,0 3px 13px rgba(0,0,0,.08)}.dark .flatpickr-calendar.inline,.dark .flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.dark .flatpickr-calendar.open{display:inline-block;z-index:99999}.dark .flatpickr-calendar.animate.open{-webkit-animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown;animation:.3s cubic-bezier(.23,1,.32,1) fpFadeInDown}.dark .flatpickr-calendar.inline{display:block;position:relative;top:2px}.dark .flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.dark .flatpickr-calendar.static.open{z-index:999;display:block}.dark .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.dark .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.dark .flatpickr-calendar .hasTime .dayContainer,.dark .flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.dark .flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.dark .flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #20222c}.dark .flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.dark .flatpickr-calendar:after,.dark .flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.dark .flatpickr-calendar.arrowRight:after,.dark .flatpickr-calendar.arrowRight:before,.dark .flatpickr-calendar.rightMost:after,.dark .flatpickr-calendar.rightMost:before{left:auto;right:22px}.dark .flatpickr-calendar.arrowCenter:after,.dark .flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.dark .flatpickr-calendar:before{border-width:5px;margin:0 -5px}.dark .flatpickr-calendar:after{border-width:4px;margin:0 -4px}.dark .flatpickr-calendar.arrowTop:after,.dark .flatpickr-calendar.arrowTop:before{bottom:100%}.dark .flatpickr-calendar.arrowTop:before{border-bottom-color:#20222c}.dark .flatpickr-calendar.arrowTop:after{border-bottom-color:#3f4458}.dark .flatpickr-calendar.arrowBottom:after,.dark .flatpickr-calendar.arrowBottom:before{top:100%}.dark .flatpickr-calendar.arrowBottom:before{border-top-color:#20222c}.dark .flatpickr-calendar.arrowBottom:after{border-top-color:#3f4458}.dark .flatpickr-calendar:focus,.dark .flatpickr-current-month .flatpickr-monthDropdown-months:active,.dark .flatpickr-current-month .flatpickr-monthDropdown-months:focus,.dark .flatpickr-current-month input.cur-year:focus,.dark .flatpickr-days:focus{outline:0}.dark .flatpickr-wrapper{position:relative;display:inline-block}.dark .flatpickr-months,.dark .flatpickr-weekdays{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox}.dark .flatpickr-months{display:flex}.dark .flatpickr-months .flatpickr-month{background:#085577;color:#fff;fill:#fff;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.dark .flatpickr-months .flatpickr-next-month,.dark .flatpickr-months .flatpickr-prev-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#fff;fill:#fff}.dark .flatpickr-months .flatpickr-next-month.flatpickr-disabled,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.dark .flatpickr-months .flatpickr-next-month i,.dark .flatpickr-months .flatpickr-prev-month i{position:relative}.dark .flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.dark .flatpickr-months .flatpickr-next-month.flatpickr-next-month,.dark .flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.dark .flatpickr-months .flatpickr-next-month:hover,.dark .flatpickr-months .flatpickr-prev-month:hover{color:#eee}.dark .flatpickr-months .flatpickr-prev-month:hover svg,.dark.flatpickr-months .flatpickr-next-month:hover svg{fill:#40bb6b}.dark .flatpickr-months .flatpickr-next-month svg,.dark .flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.dark .flatpickr-months .flatpickr-next-month svg path,.dark .flatpickr-months .flatpickr-prev-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.dark .numInputWrapper{position:relative;height:auto}.dark .numInputWrapper input,.dark .numInputWrapper span{display:inline-block}.dark .numInputWrapper input{width:100%}.dark .numInputWrapper input::-ms-clear{display:none}.dark .numInputWrapper input::-webkit-inner-spin-button,.dark .numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.dark .numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(255,255,255,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.dark .numInputWrapper span:hover{background:rgba(192,187,167,.1)}.dark .numInputWrapper span:active{background:rgba(192,187,167,.2)}.dark .numInputWrapper span:after{display:block;content:"";position:absolute}.dark .numInputWrapper span.arrowUp{top:0;border-bottom:0}.dark .numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(255,255,255,.6);top:26%}.dark .numInputWrapper span.arrowDown{top:50%}.dark .numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.6);top:40%}.dark .numInputWrapper span svg{width:inherit;height:auto}.dark .numInputWrapper span svg path{fill:rgba(255,255,255,0.5)}.dark .flatpickr-current-month .flatpickr-monthDropdown-months:hover,.dark .flatpickr-current-month span.cur-month:hover,.dark .numInputWrapper:hover{background:rgba(192,187,167,.05)}.dark .numInputWrapper:hover span{opacity:1}.dark .flatpickr-current-month{font-size:135%;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.dark .flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.dark .flatpickr-current-month .flatpickr-monthDropdown-months,.dark .flatpickr-current-month input.cur-year{color:inherit;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;padding:0 0 0 .5ch;vertical-align:initial}.dark .flatpickr-current-month .numInputWrapper{width:6ch;display:inline-block}.dark .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#fff}.dark .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#fff}.dark .flatpickr-current-month input.cur-year{background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:text;margin:0;display:inline-block;border:0;border-radius:0;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.dark .flatpickr-current-month input.cur-year[disabled],.dark .flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(255,255,255,.5);background:0 0;pointer-events:none}.dark .flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:#085577;border:none;border-radius:0;box-sizing:border-box;cursor:pointer;margin:-1px 0 0;outline:0;position:relative;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.dark .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:#085577;outline:0;padding:0}.dark .flatpickr-weekdays{background:#085577;text-align:center;overflow:hidden;width:100%;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.dark .flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.dark span.flatpickr-weekday{cursor:default;font-size:90%;background:#085577;color:#fff;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dark .dayContainer,.flatpickr-weeks{padding:1px 0 0}.dark .flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;border:none}.dark .dayContainer{background:#1e3969;padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dark .dayContainer+.dark .dayContainer{-webkit-box-shadow:-1px 0 0 #20222c;box-shadow:-1px 0 0 #20222c}.dark .flatpickr-day{background:0 0;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:rgba(255,255,255,.95);cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.dark .flatpickr-day.inRange,.dark .flatpickr-day.nextMonthDay.inRange,.dark .flatpickr-day.nextMonthDay.today.inRange,.dark .flatpickr-day.nextMonthDay:focus,.dark .flatpickr-day.nextMonthDay:hover,.dark .flatpickr-day.prevMonthDay.inRange,.dark .flatpickr-day.prevMonthDay.today.inRange,.dark .flatpickr-day.prevMonthDay:focus,.dark .flatpickr-day.prevMonthDay:hover,.dark .flatpickr-day.today.inRange,.dark .flatpickr-day:focus,.dark .flatpickr-day:hover{cursor:pointer;outline:0;background:#646c8c;border-color:#646c8c}.dark .flatpickr-day.today{border-color:#eee}.dark .flatpickr-day.today:focus,.dark .flatpickr-day.today:hover{border-color:#eee;background:#eee;color:#3f4458}.dark .flatpickr-day.endRange,.dark .flatpickr-day.endRange.inRange,.dark .flatpickr-day.endRange.nextMonthDay,.dark .flatpickr-day.endRange.prevMonthDay,.dark .flatpickr-day.endRange:focus,.dark .flatpickr-day.endRange:hover,.dark .flatpickr-day.selected,.dark .flatpickr-day.selected.inRange,.dark .flatpickr-day.selected.nextMonthDay,.dark .flatpickr-day.selected.prevMonthDay,.dark .flatpickr-day.selected:focus,.dark .flatpickr-day.selected:hover,.dark .flatpickr-day.startRange,.dark .flatpickr-day.startRange.inRange,.dark .flatpickr-day.startRange.nextMonthDay,.dark .flatpickr-day.startRange.prevMonthDay,.dark .flatpickr-day.startRange:focus,.dark .flatpickr-day.startRange:hover{background:#40bb6b;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#40bb6b}.dark .flatpickr-day.endRange.startRange,.dark .flatpickr-day.selected.startRange,.dark .flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.dark .flatpickr-day.endRange.endRange,.dark .flatpickr-day.selected.endRange,.dark .flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.dark .flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n + 1)),.dark .flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n + 1)),.dark .flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n + 1)){-webkit-box-shadow:-10px 0 0 #80cbc4;box-shadow:-10px 0 0 #80cbc4}.dark .flatpickr-day.endRange.startRange.endRange,.dark .flatpickr-day.selected.startRange.endRange,.dark .flatpickr-day.startRange.startRange.endRange{border-radius:50px}.dark .flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #646c8c,5px 0 0 #646c8c;box-shadow:-5px 0 0 #646c8c,5px 0 0 #646c8c}.dark .flatpickr-day.flatpickr-disabled,.dark .flatpickr-day.flatpickr-disabled:hover,.dark .flatpickr-day.nextMonthDay,.dark .flatpickr-day.notAllowed,.dark .flatpickr-day.notAllowed.nextMonthDay,.dark .flatpickr-day.notAllowed.prevMonthDay,.dark .flatpickr-day.prevMonthDay{color:rgba(255,255,255,.3);background:0 0;border-color:transparent;cursor:default}.dark .flatpickr-day.flatpickr-disabled,.dark .flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(255,255,255,.1)}.dark .flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #80cbc4,5px 0 0 #80cbc4;box-shadow:-5px 0 0 #80cbc4,5px 0 0 #80cbc4}.dark .flatpickr-day.hidden{visibility:hidden}.dark .rangeMode .flatpickr-day{margin-top:1px}.dark .flatpickr-weekwrapper{float:left}.dark .flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #20222c;box-shadow:1px 0 0 #20222c}.dark .flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.dark .flatpickr-weekwrapper span.flatpickr-day,.dark .flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(255,255,255,.3);background:0 0;cursor:default;border:none}.dark .flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;border-bottom:none}.dark .flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.dark .flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.dark .flatpickr-time:after{content:"";display:table;clear:both}.dark .flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.dark .flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(255,255,255,.95)}.dark .flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:rgba(255,255,255,.95)}.dark .flatpickr-time.hasSeconds .numInputWrapper{width:26%}.dark .flatpickr-time.time24hr .numInputWrapper{width:49%}.dark .flatpickr-time input{background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:rgba(255,255,255,.95);font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.dark .flatpickr-time input.flatpickr-hour{font-weight:700}.dark .flatpickr-time input.flatpickr-minute,.dark .flatpickr-time input.flatpickr-second{font-weight:400}.dark .flatpickr-time input:focus{outline:0;border:0}.dark .flatpickr-time .flatpickr-am-pm,.dark .flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:rgba(255,255,255,.95);font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.dark .flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.dark .flatpickr-time .flatpickr-am-pm:focus,.dark .flatpickr-time .flatpickr-am-pm:hover,.dark .flatpickr-time input:focus,.dark .flatpickr-time input:hover{background:#6a7395}.dark .flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
diff --git a/src/ui/static/js/global.js b/src/ui/static/js/global.js
index c9e946300..449ca8848 100644
--- a/src/ui/static/js/global.js
+++ b/src/ui/static/js/global.js
@@ -78,7 +78,7 @@ class News {
news.photo.url,
news.excerpt,
news.tags,
- news.date
+ news.date,
);
let cleanHTML = DOMPurify.sanitize(cardHTML);
//add to DOM
@@ -205,7 +205,7 @@ class darkMode {
};
const send = await fetch(
`${location.href.split("/").slice(0, -1).join("/")}/darkmode`,
- data
+ data,
);
}
}
@@ -245,7 +245,7 @@ class FlashMsg {
flashEl.remove();
//update count
this.flashCount.textContent = document.querySelectorAll(
- "[data-flash-message]"
+ "[data-flash-message]",
).length;
}
} catch (err) {}
@@ -338,7 +338,7 @@ class Banner {
this.bannerEl.querySelector(
`[role="listitem"][data-id="${
+visibleEl.getAttribute("data-id") + 1
- }"]`
+ }"]`,
) || this.bannerEl.querySelector(`[role="listitem"][data-id="0"]`);
// Hide current one
@@ -426,7 +426,7 @@ class Clipboard {
if (result.state === "granted" || result.state === "prompt") {
/* write to the clipboard now */
const copyEl = document.querySelector(
- e.target.getAttribute("data-clipboard-target")
+ e.target.getAttribute("data-clipboard-target"),
);
copyEl.select();
@@ -454,13 +454,13 @@ const setMenu = new Menu();
const setNewsSidebar = new Sidebar(
"[data-sidebar-info]",
"[data-sidebar-info-open]",
- "[data-sidebar-info-close]"
+ "[data-sidebar-info-close]",
);
const setFlashSidebar = new Sidebar(
"[data-flash-sidebar]",
"[data-flash-sidebar-open]",
- "[data-flash-sidebar-close]"
+ "[data-flash-sidebar-close]",
);
const setClipboard = new Clipboard();
diff --git a/src/ui/static/js/profile.js b/src/ui/static/js/profile.js
index 262e0cd48..34dcb83a6 100644
--- a/src/ui/static/js/profile.js
+++ b/src/ui/static/js/profile.js
@@ -45,7 +45,7 @@ class SubmitProfile {
"focus:valid:!ring-red-500",
"active:!border-red-500",
"active:valid:!border-red-500",
- "valid:!border-red-500"
+ "valid:!border-red-500",
);
this.pwAlertEl.classList.add("opacity-0");
this.pwAlertEl.setAttribute("aria-hidden", "true");
@@ -59,7 +59,7 @@ class SubmitProfile {
"focus:valid:!ring-red-500",
"active:!border-red-500",
"active:valid:!border-red-500",
- "valid:!border-red-500"
+ "valid:!border-red-500",
);
this.pwAlertEl.classList.remove("opacity-0");
this.pwAlertEl.setAttribute("aria-hidden", "false");
@@ -77,14 +77,14 @@ class PwBtn {
const passwordContainer = e.target.closest("[data-input-group]");
const inpEl = passwordContainer.querySelector("input");
const invBtn = passwordContainer.querySelector(
- '[data-setting-password="invisible"]'
+ '[data-setting-password="invisible"]',
);
const visBtn = passwordContainer.querySelector(
- '[data-setting-password="visible"]'
+ '[data-setting-password="visible"]',
);
inpEl.setAttribute(
"type",
- inpEl.getAttribute("type") === "password" ? "text" : "password"
+ inpEl.getAttribute("type") === "password" ? "text" : "password",
);
if (inpEl.getAttribute("type") === "password") {
diff --git a/src/ui/utils.py b/src/ui/utils.py
index 6df92c1cb..3c5032b99 100644
--- a/src/ui/utils.py
+++ b/src/ui/utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
from base64 import b64encode
from io import BytesIO
diff --git a/tests/ui/main.py b/tests/ui/main.py
index 0c42a57a3..a6019087e 100644
--- a/tests/ui/main.py
+++ b/tests/ui/main.py
@@ -1483,12 +1483,9 @@ location /hello {
username_input.send_keys("admin2")
password_input.send_keys("S$cr3tP@ssw0rd")
- access_page(
- driver,
- driver_wait,
- "//button[@value='login']",
- "profile",
- )
+ access_page(driver, driver_wait, "//button[@value='login']", "home")
+
+ access_page(driver, driver_wait, "/html/body/aside[1]/div[1]/div[2]/ul/li[10]/a", "profile")
username_input = safe_get_element(driver, By.ID, "admin_username")
@@ -1543,12 +1540,9 @@ location /hello {
username_input.send_keys("admin2")
password_input.send_keys("P@ssw0rd")
- access_page(
- driver,
- driver_wait,
- "//button[@value='login']",
- "profile",
- )
+ access_page(driver, driver_wait, "//button[@value='login']", "home")
+
+ access_page(driver, driver_wait, "/html/body/aside[1]/div[1]/div[2]/ul/li[10]/a", "profile")
print("Successfully logged in with new password, trying 2FA ...", flush=True)
@@ -1584,12 +1578,7 @@ location /hello {
password_input.send_keys("P@ssw0rd")
- access_page(
- driver,
- driver_wait,
- "//button[@id='totp-button' and @class='valid-btn']",
- "profile",
- )
+ access_page(driver, driver_wait, "//button[@id='totp-button' and @class='valid-btn']", "profile")
assert_button_click(driver, "//button[@data-tab-handler='totp']")